软件工程 第二次作业(提问题)
问题一:
1.2软件工程是什么当中提出:
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
不理解什么是系统的、有序的、可量化的方法...我粗略的理解是:将实现软件的各个步骤分配给许多人,然后相互配合交流,共同维护系统,经过不断完善,最终达成目标的过程。
而我查到的资料:
在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品
这个就比较好理解了
问题二:
2.3个人开发流程的表2-4下面一段话中提到:
显然,从学生到职业程序员,并不是更加没完没了地写程序--花在写代码上的时间反而少了许多
我认为表2-4给出的是Time(%) Senior Student和Time(%) SDE个人项目耗时的对比记录图,虽然Senior Student花在具体编码上的时间是36%,SDE是21%。 项目不一样,总的时间不一样,应该不能直接对比吧?虽然从学生转为真正的软件开发人员,毋庸置疑,编写代码的能力会不断提升,但是我觉得,不能单纯说花在编码的时间上减少了吧?
问题三
第二章当中提到了:
单元测试应该集成到自动测试的框架中,另一个重要的措施是要把单元测试自动化,这样每个人都能随时、随地运行单元测试。
但是在网上的一篇博客中提到:
自动测试公式:缩短周期=手工测试时间-自动化测试时间
适合自动化的:
- 一个快速发展,变更频繁的项目不适合做过多的自动化,而处于后期维护阶段,自动>化收益会更高;
- 对于接口类的产品;
- 手工测试非常费时费力,甚至无法达到测试目的的项目,比如对于大数据量大并发>下的压力测试等.
或许有点道理,并不是所有的项目都适合做单元测试自动化。如果一个项目经常变更,那么自动化测试也要不断地变更,这种情况反而会浪费很多精力
问题四:
在4.2中提到的代码风格规范的分行中提到:
不要把多个变量定义在一行上,我认为要看程序的大小了,如果很清晰,可以直接放在一行,因为有的时候如果分行太多,反而不好看出来。我的认为是可以在变量要用的时候再定义。
(ps:这个可能不能算是问题,所以在后面补充了问题六)
问题五:
7.4 MSF过程模型当中提到:
MSF过程模型是从传统的软件开发瀑布模型和螺旋模型发展而来的,它把瀑布模型中增量迭代的长处结合起来了
这句话不太理解..在书中5.3.2中提到了瀑布模型,那我就归纳一下:这个模型意思就是说瀑布倒流是不可能存在的,就类似于返回修改最初的软件也是很困难的。所以这个模型要求在项目的流程中,每个阶段都需要循环测试反馈,确保无误之后再继续下一个流程,那么获得最后的产品将会是一个漫长的过程。如果用户试用这个产品又提出新的需求,那么这就很尴尬了,时间上就来不及调整(比如预定几个月内完成)。但我依然不理解瀑布增量迭代的长处是什么意思,所以我就上百度搜索了。
搜索结果
原来增量迭代是指很好的控制前期风险并解决这些风险(就是书上解释的东西),我觉得可以加上这个解释比较好理解
问题六:
17.4的萝卜与白菜的例子中:
阿超最后说了:我们要胡萝卜和大棒并用。我们的大棒就是“小强地狱”(Bug Hell)
这个我不懂,例子中提到萝卜做事很快,但是功能不够严谨,出现的“菜虫”多,后期花很多时间在修复“菜虫”。白菜做事慢,但是慢工出细活。我认为这两类人都需要再提升,胡萝卜个需要的是在写功能的同时不断测试功能,以减少不必要的困扰。白菜就需要提高速度,提高编程能力,可以请教胡萝卜,慢慢锻炼。这两类人不能绝对地说哪一方表现得更好。而阿超说的胡萝卜和“菜虫”一起又是什么意思?
这些问题可能都是小问题,对书中的内容还不是完全理解,自己的能力还有待提高。