软件开发模型或模式有哪些?
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任
务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护
阶段。
软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活
动和任务,用来作为软件项目工作的基础。
最早出现的软件开发模型是 1970 年 W·Royce 提出的瀑布模型。该模型给出了固
定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,
最终得到所开发的软件产品,投入使用。但计算拓广到统计分析、商业事务等领
域时,大多数程序采用高级语言(如 FORTRAN、COBOL 等)编写。瀑布模式模型也
存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求等缺点。
典型的开发模型有:①瀑布模型(waterfall model);②渐增模型/演化/迭代
(incremental model);③原型模型(prototype model);④螺旋模型(spiral
model);⑤喷泉模型(fountain model);⑥智能模型(intelligent model) ; ⑦
混合模型(hybrid model)
下面分别详细讲解:
①瀑布模型:(从本质来讲,瀑布模型是一个软件开发架构,重复应用)
(核心思想:按工序将问题化简,将功能的实现与设计分开,便于分工协作,采用结构化的分析与设计方
法将逻辑实现与物理实现分开,依照软件生命周期自上而下,相互衔接的次序<如同瀑布流水逐级下落>)
1970 年 Winston Royce 提出了著名的"瀑布模型",直到 80 年代早期,它一直是唯一被广泛采用的软件开发
模型。
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等
六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施
完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输
入,继续进行下一项活动,否则返回修改。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已
不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题详见下方缺点所述。
缺点:
1、 在项目各个阶段之间极少有反馈,各个阶段的划分完全固定,阶段之间产生大量的文档,增加了工作
量
2、 用户只有在项目生命周期的后期才能看到结果,增加了开发的风险
3、 需要过多的强制完成日期和里程碑来跟踪各个项目的阶段
4、 在每个阶段都会产生循环反馈
(如果有信息未被覆盖或是发现问题了,必须返回到上一个阶段<甚至更前面的活动>并进行适当的修改,