老师讲完几个开发模型候,我发现原来开发一个软件也是有步骤可寻的,并不是那种边做边改的模式。鉴于课上学习和网上浏览的资料我整理了几个典型的开发模型。

 

一、典型的开发模型有:

 1.瀑布模型(watermodel);

 2.渐增模型、或者称为演化、迭代(incremental model);

 3.原型模型(prototype model);

 4.螺旋模型(spiral model);

 5.喷泉模型(fountain model);

 6.智能模型(intelligent model);

 7.混合模型(hybrid model)。

 二、简介

   (1)边做边改模型:仅适用于少量代码的软件,毕竟这种模型没有格式说明,也没有经过设计,软件随着客户的需要一次又一次的被修改。基本不考虑的模型。

(2)瀑布模型:1970提出的,瀑布模型的生命周期分为制定计划,需求分析,软件设计,编写程序,软件测试和运行维护等6个基本活动。后来经过演化出现的“V”型结构的瀑布模型。

  特点:强调文档的作用,并要求每一阶段都要自习验证。

  缺点:a->要写大量的文档,耗费了大量的精力;

          b->用户在开发周期结束后才看到及体验到软件,从而增加了开发的风险;

          c->早期的错误可能等到开发后期才被发现,进而带来很大的后果。

(3)快速原型模型:建造一个快速原型,实行未来用户或者客户与系统的交互,通过客户和用户的反馈们进一步细化开发软件的需求。逐步满足客户的要求。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。  

    特点:克服了瀑布模型的缺点,减少软件需求带来的开发风险。

(4)增量模型:与建设大厦相同,软件需要一步一步的建造出来。第一个增量是软件的核心,进过评价后形成下一个增量的开发计划。

   特点:把软件作为一系列的增量构件(软件的一个子集)来设计、实现、集成和测试,每个构件是有多种相互作用的模块所形成的提供特定功能的代码片段构成。

   缺点:a->设计的软件应具有开放式体系结构;

           b->容易退化为边做边改的模型,从而使软件开发过程的控制失去整体性。

(5)螺旋模型:它是快速原型模型和瀑布模型的合体,强调了其他模型忽视的风险分析,特别适合大型复杂的系统。

特点:有风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。

缺点:a->要让客户接受并相信这种风险分析是不容易的。往往适用于内部的大规模软件开发。

         b->大大影响了项目的利润,是对项目是极其不利的,因此适用于大规模软件项目。

         c->要求软件开发人员要擅长寻求可能的风险,准确的分析风险,否则将会带来更大的风险。

(6)演化模型:主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。

特点: “演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

(7)喷泉模型:(面向对象的生存期模型,oo模型):喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

(8)智能模型(四代技术(4GL)):智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。

特点;限于事务信息系统的中小型应用程序的开发。

(9)混合模型:又叫过程开发模型,或者元模型。把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。

 

三、最后做一下总结 

    模型                           优点                                                                       缺点

a->瀑布模型                 文档驱动                                                     系统可能不满足客户的需求 
b->快速原型模型      关注满足客户需求                                           可能导致系统设计差、效率低,难于维护 
c->增量模型       开发早期反馈及时,易于维护                                需要开放式体系结构 可能会设计差、效率低 
d->螺旋模型                 风险驱动                                              风险分析人员需要有经验且经过充分训练