软件生存周期的各个阶段(可作为软件开发流程使用)
软件生存周期包括软件定义阶段、软件开发阶段和软件使用、维护和更新换代阶段。系统分析师、设计师、编程人员、测试人员以及维护人员可以作为参考,了解软件整个生命周期的阶段。
1、软件定义阶段
软件定义阶段的基本任务是确定软件系统的工程需要,可分为两个阶段。
1.1、软件系统的可行性研究
-经济可行性研究
-技术可行性研究
-法律可行性研究
-开发方案的选择性研究
可行性研究的任务是了解用户的要求及实现的环境,从技术、经济和社会等各个方面进行研究,并从成功和风险两方面来论证软件系统的可行性。参与软件开发的分析人员应在用户配合下对用户要求及实现环境作深入细致的调查,写出调研报告,并进行可行性论证。
1.2、项目需求分析
-软件功能需求:系统必须完成的功能
-软件性能需求:安全性、可靠性、可维护性和用户培训等
-软件运行环境约束
-需求建模
-问题抽象、问题分解与多视点分析
-支持需求分析的快速原型技术
-需求规格说明与评审
软件需求是指用户对其目标软件系统的功能、行为、性能、设计约束等诸方面的期望。用过与用户反复交流,对应用问题及环境充分地理解与分析,为问题涉及的信息、功能及系统行为建立模型。去除无关的和使人误解的信息,寻找是否有对类似问题的解决办法,将用户需求精确化、完全化,最终形成需求规格说明,完成软件开发生存周期的需求分析阶段。
2、软件开发阶段
软件开发阶段包括概要设计、详细设计、实现、组装测试和确认测试5个阶段。
2.1、概要设计:根据软件需求规格说明进行
-建立系统总体结构和各模块之间的关系
-定义各功能模块的接口
-设计全局数据库或数据结构
-规定设计约束
-制定组装测试计划
2.2、详细设计
-对概要设计进行细化
-建立文档资料
2.3、实现
-选择何时的编程语言编写程序
-制定模块测试方案和测试数据
-制定模块预期测试结果
-制定组装测试方案和测试数据
-制定预期测试结果
-保存相应的文档资料
2.4、组装测试
-根据模块测试方案和测试数据进行模块测试
-根据组装测试方案和测试数据逐步进行组装测试
-系统各模块连接正确性测试
-软件系统或子系统的正确性和容错性能测试
-保存相应的文档资料
2.5、确认测试
-由专家、客户、开发人员组成系统测试评审小组
-向用户提供最终的用户手册、操作手册、源程序清单及其他软件文档资料
-三方共同根据组装测试方案和测试数据逐条严格进行组装测试,确认软件系统是否达到用户的系统需求
-确认系统测试结束时应建立确认系统测试报告、项目开发总结报告
-保存相应文档资料
由专家、客户、开发人员组成的软件测试评审小组在对软件确认报告、测试结果和软件经销评审通过以后,软件产品得到确认,就可以交付用户使用。另外需要强调说明的是,软件在开发过程中通常会有很多中方案可供人们选择,可以根据成本、进度、功能、性能、系统复杂性、时空开销、风险等诸方面进行折衷平衡,以便用较小的代价实现客户对软件总体目标的需求。
3、软件使用、维护和更新换代阶段
3.1、软件的使用
-推广软件的应用。使用软件的用户越多,其社会经济效果越大
-客户和系统维护人员必须认真收集软件使用时发现的软件错误
-定期撰写“软件问题报告”
3.2、系统维护
-对发现的软件产品中潜伏的错误进行修改维护
-对用户提出的软件需求进行修改维护
-软件运行环境发生变化时需要对软件进行修改维护
-对软件定义和软件开发各阶段生存的文档资料进行修改维护
软件维护需要花费大量劳动,软件维护的好坏直接影响到软件的应用和软件生存周期,而软件的可维护性又与软件设计密切相关,所以软件在开发过程中应当重视对软件可维护性的支持。
3.3、系统更新换代
软件生存周期的最后一个阶段。本软件已完成其历史使命,但软件中的一些构件或模块还可以复用,可以成为新系统的一个组成部分。
(以上摘自《面向对象技术导论-系统分析与设计》一书)