软件过程:
为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务所需要的工作步骤。
软件生命周期的基本任务
软件的生命周期分多个阶段,现在从各个阶段开始分析每个阶段应该完成的基本任务:
1) 问题定义:
找出要解决的问题是什么,提出关于问题性质、工程目标和工程规模的书面报告。
2) 可行性分析:
考虑上一阶段的问题是否有行得通的解决办法。
3) 需要分析:
准确的回答“目标系统必须做什么”
4) 概要设计:
概括地回答“怎样实现目标系统”
5) 详细设计:
详细的设计每个模块,确定实现模块功能所需要的算法和数据结构
6) 编码和单元测试:
写出正确的容易理解、容易维护的程序模块。
7) 综合测试(包括集成测试和验收测试):
通过各种类型的测试,使软件达到预定的要求。
8) 软件维护:
通过各种必要的维护活动使系统持久的满足用户的需求。
我国国家标准:
可行性分析与计划、需求分析、概要设计、详细设计、实现(编码和单元测试)、组装测试(集成测试)、确认测试(验收测试)、使用和维护。
生命周期模型
瀑布模型
特点:
1、阶段具有顺序性和依赖性
1) 必须等前一阶段的工作完成之后,后一阶段的工作才能开始
2) 前一阶段的输出文档正好是下一阶段的输入文档
2、推迟实现
3、质量保证
优点:
可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点:
1)过于理想化,不可能每个阶段都不出问题。
2)用户在使用该软件后,关于软件应该做什么的想法可能会改变,最初提出的需要就变的不适用了。
快速原形模型
快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用,通过实践让用户去了解系统的概貌,用户会提出修改意见,开发人员按用户的意见快速的修改原型系统,然后再请用户试用,直到用户觉得该系统已经可以满足他们工作的需求,然后开发人员就可以按这个书写规格说明文档,开发软件了。
与瀑布模型区别:
获得需求的方法不一样。无反馈环(就是不会返回到前一阶段修正以前不完善的工作)。
增量模型(又称渐增模型)
先提供软件最基本最核心的功能,然后慢慢地加入构件,提供更多的功能。
优点:
1)逐步增加产品功能可以使用户有比较充裕的时间去学习和适应新产品,从而减少新软件可能带来的冲击。
2)回报快,易于维护
困难:
在把新的增量构件集成到现有系统上时,不会破坏原有系统。
螺旋模型
是一种快速原型模型的改进,只是在每个阶段加入了风险分析。
优点:
1)使风险降到最低。
2)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量做为其目标。
3)减少了过多测试或测试不足带来的风险
4)维护和开发没有区别。
适用:
企业内部的大规模软件项目
喷泉模型
体现了面向对象软件开发过程迭代和无缝的特性,就是经常对开发活动进行迭代或求精。