边改边做模型
特点:既没有规格说明,也没有详细的设计,代码随用户需求的变化一次次地不断被修改。
缺点:
(
1
)缺少分析与设计环节,软件的结构将随着不断修改越来越糟;
(
2
)忽略需求环节,给软件开发带来很大风险;
(
3
)没有考虑测试和程序的可维护性,缺少完整的文档,软件的维护十分困难。
瀑布模型
特点:
(
1
)
强调阶段之间的顺序性和依赖性
:只有前一活动结束后,其工作成果应该能够清晰
地被审查,评审通过以后,后一项开发活动才可以开始,否则返回前面,甚至更前面的活动。
只有前一阶段的成果正确后,后一阶段的工作才能获得正确的结果。
(
2
)
强调推迟实现的观点
:对于规模较大的软件项目来说,往往编码开始的越早,最终
完成开发所需要的时间反而越长,
这是因为前面阶段的工作做得不扎实,
过早地考虑程序实现,
导致大量的返工,有是甚至陷入无法弥补的困境。强调把逻辑分析与物理设计分开,尽量推迟
程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。
(
3
)
强调“完备的文档”
,
“需求验证”
,
“阶段评审”
,对质量保证的作用
:软件工程的基
本目标是优质,高效。为了保证软件产品质量,
在瀑布模型的每个阶段都应坚持两个重要做法:
1
:每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整,
准确,合格的文档不仅是团队沟通的媒介,也是对软件维护的重要依据。
2
:每个阶段结束前都要对需求进行验证,并进行阶段性评审,以便尽早发现问题,改正错误。
事实上,越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所付出的代价
也越高。因此,及时审查是保证软件质量,降低开发成本的重要措施。
缺点:
(
1
)瀑布模型是由文档驱动的,用户只能通过文档来了解产品是什么样的。
(
2
)事实上,要求用户不经过实践就提出完整准确的需求,在许多情况下都是不切实际
的。总之,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品
不能真正满足用户的需求。
(
3
)各个阶段的划分完全固定,阶段之间产生大量的文档,增加了工作量。
(
4)
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加
了开发的风险。
(
5
)早期的错误可能要等到开发后期的测试阶段才能发现,进而造成严重的后果。
快速原型模型
特点:在初步了解用户的大致需求后,快速地建造一个初始原型。初始原型实现了多少功能并
不重要,是否真正实现了这些功能也不重要,也许仅实现了用户界面。目的是让用户试用过原
型以后,对原型进行评价,挖掘用户深层次的需求。在获得了初步的真正需求以后,项目进入
第二阶段。
在第一轮获得部分真正需求的基础上,经历一个需求分析,设计,编程,测试的开发过
程,得到软件原型的第二个版本,该版本的部分功能就是在上一轮获得的真实需求的基础上开
发出来的,同样经用户试用,评价,进一步挖掘新的需求。
重复上述过程,最终得到满足用户需求的软件。
原型法除了演化原型法外,还有抛弃原型法。
抛弃原型主要用于挖掘用户需求,
一旦确定
了用户的真正需求,所建造的原型就被丢弃。这种原型系统的内部结构并不重要,重要的是必
须迅速建立原型,修改原型,以挖掘需求为目的。
不难发现,快速原型是以需求为驱动的。
螺旋模型