附加题1——我想搞懂的软工问题
1.教材第2章 2.1
我的问题是关于编写好程序软件中的单元测试,教材上说单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误,单元测试应该准确、快速地保证程序基本模块的正确性。
问题:编写好一个程序软件已经很费时了,为什么还要对其进行单元测试?
答:因为它浪费了太多的时间,所以一旦编码完成,开发人员总是会迫切希望进行软件的集成工作,而单元测试需要时间,会推迟了对整个系统进行联调工作启动的时间。在实践工作中,进行了完整计划的单元测试和编写实际的代码所花费的精力大致上是相同的。但是一旦完成了这些单元测试工作,很多bug将被纠正,在确信他们手头拥有稳定可靠的部件的情况下,开发人员能够进行更高效的系统集成工作。这才是真实意义上的进步,所以说完整计划下的单元测试是对时间的更高效的利用。因此,我认为对于程序员来说,如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平。要进行充分的单元测试,应专门编写测试代码,并与产品代码隔离。我认为,比较简单的办法是为产品工程建立对应的测试工程,为每个类建立对应的测试类,为每个函数(很简单的除外)建立测试函数。
2.教材第4章 4.3
我的问题是关于代码设计规范,教材上说一般所写的程序会被很多人使用,并且程序员还需要调试修改自己的程序,所以需要规范一下代码的设计。
问题:既然代码设计规范不光是程序书写上的格式问题,而且牵涉到程序设计、模块之间的关系、设计模块等等方面,而且有不少内容与具体程序设计与语言有关。那么我们如何利用函数来规范代码设计?
答:因为现代程序设计语言中的绝大部分功能都在程序的函数中实现,所以对于函数,需要“只做一件事,并且要做好”。所以结合教材应和资料,我认为要尽量避免在系 统初始化时运行过多的代码。(1)选用控制结构只准许一个入口和一个出口。
(2)程序语句组成容易识别的块,每块只有一个入口和一个出口。
(3)复杂的结构应该用基本控制结构进行组合嵌套来实现。
(4)语句中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统应前后一致。
(5)严格控制goto语句,仅在下列情形才可使用。1.用一个非结构化的程序设计语言去实现一个结构化的构造。
2.在某种可以改善而不是损害程序可读性的情况下。
3.教材第5章 5.3
我的问题是关于软件开发中的开发流程,教材上说软件开发流程即软件设计思路和方法的一般过程,它能够提高软件开发、运营和维护的效率,以提升用户的满意度,软件的可靠性和可维护性。
问题:开发软件,编写程序需要投入很多精力,只有按照一定合理的开发流程才能合理安排好人力、物力,并且在最短时间内又好又快的完成开发。那么我们应该采取哪种开发流程,从而获得最大的益处?
答:从前写程序就是拿了题目想一会就开始编写,写不出来就改写其他人的代码,跟教材中提到的“写了再改模式”一样,没有太大的实用价值。但是在真正的项目开发中,开发的软件是需要面向大众的,此时便需要一个有实际用户、解决实际需求的软件。结合教材,我认为来发出一个又实用价值的软件需要经过:1.进行业务建模;2.对开发人员和用户进行需求分析;3.设计软件的功能;4.编写程序实现算法并且调试运行;5.进行测试和系统维护;6.提交程序。
4.教材第8章 8.3
我的问题是关于软件开发前对用户进行的用户需求调查,教材上说用户需求分析指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。
问题:软件开发的过程,就是“用户最需要的东西”在这一链条中传送、转换、实现、扭曲或丢失的过程。对于这样一个软件开发过程中重要的环节,我们应该如何对进行用户调查?
答:进行用户调查有多种方法,比如成立焦点小组、与客户进行深入面谈、卡片分类、问卷调查等等。结合教材和实际,我认为对用户进行问卷调查能够合理且全面的对用户的需求进行分析,从而能够使开发者更好的分析用户需求,设计出更好的程序。虽然用户问卷看似容易但其实还需要一定的方法。第一,是确定要收集的资料和信息;第二,是要根据问卷的调查方式确定调查的内容;第三,是要决定问题形式;第四,要选择问题的用语;第五,决定问题的先后顺利;第六,要调整问卷的版面布局;第七,试着进行调查;第八,对问卷修订并最终定稿。
5.教材第16章 16.3
我的问题是关于IT行业的竞争,竞争一直是每个行业都要面临的问题
问题:对于IT这样一个更新快速的行业是必备的,竞争就很为激烈了,为了能过在竞争中取得优势,我们应该了解影响产品竞争力的因素有哪些?
答:影响产品竞争力的主要因素有:1.产品行业的因素:这是影响产品发展的最重要的因素,产业发展的成长期能给产品提供巨大的助理,相反的如果是在一个产业的衰 落期进入这个产业,那么就会面临巨大的发展阻力;
2.公司和市场因素:公司在目前目标用户中的号召力,公司现有市场的能力以及现有市场打开新领域的能力;
3.产品的价值因素:产品给用户带来的价值;
4.团队执行因素:根据产品特性的不同,商业模式的不同,团队的战略也会不一样。