文章目录
转载自博文:
软件开发的11种模式
https://blog.csdn.net/xi_gua_gua/article/details/53107283
软件开发流程与模式
https://blog.csdn.net/oscar999/article/details/79168778
1 边做边改模型(即兴模型)(Build-and-Fix Model)
最基本也是最常用的一种模型,在这种模式下,当开发人员与需求方进行交流后,立马进行开发,然后进行调试生成软件版本。如果客户有新的需求,就需要将代码进行修改,直到满足客户的需求为止。
下图来自:https://blog.csdn.net/xi_gua_gua/article/details/53107283
1.1 优点:
适用于一些较小的程序开发,可以快速实现功能
1.2 缺点:
①没有对客户的需求进行分析以及对客户的需求进行挖掘(有时候可能客户也不太清楚自己的真正需求),会造成后期不断根据客户需求进行修改,效率低下。
②没有一些整体设计以及规划的过程,随着软件复杂度的增加,会造成代码臃肿,耦合性增大,增加或者修改一些功能可能会影响另外的功能。这时候,要么进行重构,要么继续现有的代码架构进行编码,无论哪一种方法,都会造成效率的低下。
③没有相关的开发文档、需求文档、接口文档等,会造成可维护性比价差。
2 瀑布模型(Waterfall Model)
将软件生命周期划分为:制定需求、需求分析 —> 软件设计 —> 程序编写 —> 软件测试 —> 发布等六个基本流程。并且规划了他们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
2.1 优点
①严格遵循预先计划的步骤顺序进行,一切按部就班比较严谨。
②为项目提供了按阶段分的检查点
③当完成一个阶段后,只需要去关注后续阶段
④可在迭代模型中应用瀑布模型
2.2 缺点
①缺乏灵活性,太过线性理想化,不适合现代软件开发;
②各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量(阶段之间产生大量的文档,虽然增加了工作量,但是会使整个流程有据可依,方便整理与构思整个过程,也方便维护);
③由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
④早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果;
⑤各个软件生命周期衔接花费时间较长,团队人员交流成本大;
⑥瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。
3 快速原型模型(Rapid-Prototype-Model)
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。
快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
快速原型模型有点整合“边做边改”与“瀑布模型”优点的意味。
3.1 优点
①生命周期短
②整合“边做边改”与“瀑布模型”优点
③减少软件需求不明确带来的开发风险
④适用于小型、交互型的系统,大型系统的某些部分
3.2 缺点
①可能导致系统设计差、效率低、难以维护