问题1:第一章的第1.2节中提出软件工程包括软件需求分析、软件设计、软件构建、软件测试和软件维护。我读到此处联系之前开发项目的经历发现自己也并没有严格的进行分析设计等,所以是不是可以为了快速完成项目而省略其中一个过程?

  在每次开始一个项目开发的时候,需求分析是必须的也是最容易被忽视的,记得当时做毕设的时候为了赶时间并没有详细进行需求分析,以至于做到后期的时候才发现有一个功能并不能满足题目的要求而且还理解错误了其中一个功能,从而使项目无法进行下去,不得不再次找到老师详细了解该项目的功能。所以最开始的需求分析是十分必要的。软件的设计,软件的构建是开发项目的基础,如果没有这几步项目肯定是杂乱无章的且功能也是混乱的。至于软件测试和维护的重要性不言而喻,没有这两步程序是会存在很大隐患的,甚至会出现无法正常运行的情况。因此,在今后的开发中要认真的做好每一阶段的工作,这样才能顺利高效的完成一个软件的开发。

问题2:第二章的第2.3节中提出卡内基梅隆大学的能力成熟度模型,是用来衡量一个团队能力的一套模型,什么是能力成熟度模型?

  能力成熟度模型是一套帮助软体业者,改善软体流程的流程成熟度的架构,它明确地定义了5个不同的“成熟度”等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。分别有成熟度等级1-5,分别为:初始级、可重复级、已定义级、已管理级和优化级。能力成熟度模型为软件的过程能力提供了一个阶梯式的改进框架,它基于以往软件工程的经验教训,提供了一个基于过程改进的框架图,它指出一个软件组织在软件开发方面需要哪些主要工作,这些工作之间的关系,以及开展工作的先后顺序,一步一步的做好这些工作而使软件组织走向成熟。

问题3:第五章的5.3.2节中提出温斯顿并不推崇严格意义上的瀑布模型,相反的指出了此模型的各种缺陷和改进办法。那么瀑布模型的缺点是什么?

  1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

  2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

  3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

  4)瀑布模型的突出缺点是不适应用户需求的变化。

问题4:第五章第5.3.4节提出分析和设计工作流将需求转化成系统的设计。那么怎样进行系统设计?

  系统的设计就是在需求分析成果的基础之上,运用软件设计的原则、模式、惯例和经验,提出问题的解决方案,并明确界定待建系统的结构、接口和界面。这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统"如何做"。这个阶段又分两个步骤:概要设计详细设计概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。这个阶段结束,要交付概要设计说明书和设计说明,也可以合并在一起,称为设计说明书。

问题5:第六章第6.1.2节提出在“敏捷”的大旗下面,我们可以看到好几种软件开发的方法论。那么除了该节介绍的Scrum方法论还有哪几个方法论?

  1)FDD(Feature-Driven Development)-特征驱动开发

  通过特征和特征集将传统的瀑布方法进行了横切,一切软件开发活动包括项目计划都是以特征为单位和特征驱动。

  2)DSDM-动态系统开发方法,也称业务中心框架开发方法

  DSDM 的基本观点是,任何事情都不可能一次性的圆满完成,应该用20%的时间完成80%的有用功能,以适合商业目的为准。

  3)Crystal Methods-水晶方法族

  水晶方法把开发看作是一系列的协作游戏,而写文档的目标就是只要能帮助团队在下一个游戏中取得胜利就行了。

  4)XP(极限编程)

  XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

  5)ASD(Adaptive Software Development)-自适应软件开发
  ASD强调的是速度和灵活性。它最适合这种场合: 公司需要应用软件能够迅速见效,还能随客户使用需求的增长而灵活变化。

(参考:http://blog.sina.com.cn/s/blog_493a84550100civ0.html)