• 瀑布模型适用于需求比较稳定,很少需要变更的项目

        瀑布模型的核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即瀑布模型采用结构化分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护六个基本活动。

  • 演化模型: 它是一种全局软件生存周期模型,属于迭代开发风格。

       演化模型根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行的版本,这个初始的软件通常称为原型,然后根据用户在使用原型的过程中提出来的意见和建议对原型进行改进,获得原型的新版本。

        演化模型特别适用于对软件需求缺乏准确认识的情况。

  • 增量模型:它融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。

        螺旋模型:特别适合于大型复杂的系统

        螺旋模型:采用一种线性的方法来进行系统开发。该模型是快速原型法,以进化的开发方式为中心,螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动:

  • 制定计划——确定软件目标,选定实施方案,弄清项目开发的限制条件

  • 风险分析——分析所选方案,考虑如何识别和消除风险

  • 实施工程——实施软件开发

  • 客户评估——评价开发工作,提出修证建议。

        螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而作出应有的反应,因此特别适用于庞大的、复杂且具有高风险的系统。

        喷泉模型认为,软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙是指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限。

        V模型:它是瀑布模型的变种,说明测试活动是如何与分析和设计相联系的。

  • 需求分析

  • 概要设计:主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等事项事务。

  • 详细设计:对概要设计中表述的各模块进行深入分析。

  • 编码:按照详细设计好的模块功能表,编写出实际代码。

  • 单元测试:按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,目的是确保各单元模块被正确的编译,单元的具体划分按不同单元与不同软件有所不同。

  • 集成测试:经过了单元测试后,将各个单元组合成完整的体系,主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否、数据传递的正确性等。

  • 系统测试:按照软件规格说明书中的要求,测试软件的性能、功能等是否和用户需求相符合,在系统中运行是否存在漏洞等。

  • 验收测试:用户在拿到软件的时候,会根据之前提到的需求及规格说明书来做相应测试,以确定软件达到符合效果。

RUP

       RUP(Rational Unified Process,统一软件开发过程)是一个面向对象且基于网络的程序开发方法论。迭代模型是RUP推荐的周期模型。

       迭代模型的软件生命周期在时间上被分解为4个顺序阶段:初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束于一个主要里程碑;每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估,以确定这个阶段的目标是否已满足。如果评估结果令人满意的话,,允许项目进入下一阶段。

       初始阶段的目标是为系统建立商业案例并确定项目边界,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。初始阶段结束时是第一个重要里程碑——生命周期目标里程碑。

       细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险元素。同时它为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。细化阶段结束是第二个重要里程碑——生命周期结构里程碑。

       在构建阶段,所有剩余构件和应用程序功能被开发并集成为产品,所有功能被详细测试。构建阶段是一个制造过程,其重点放在管理资源和控制运作,以优化成本、进度和质量。构建阶段结束时是第三个重要里程碑——初始功能里程碑,此时的产品版本也常被称为bate版。

       交付阶段的重点是确保软件对最终用户是可用的。交付阶段的终点是第四个里程碑——产品发布里程碑。

敏捷开发模型的特点:

  • 快速迭代:软件通过知周期的迭代交付、完善产品。
  • 快速尝试:避免过长时间的需求分析和调研,快速尝试。
  • 快速改进:在迭代周期过后根据客户反馈快速改进。
  • 充分交流:团队成员无缝的交流。
  • 简化流程:拒绝一切形式化的东西,使用简单、易用的工具。

       Scrum:是一种敏捷开发方法,属于迭代增量软件开发。该方法假设开发软件就像开发新产品,无法确定成熟流程,开发过程需要创新、研发,因此没有一种固定流程可确保项目成功。

       Scrum有明确的最高目标;熟悉所需的最佳技术;高度自主、紧密合作,高度弹性解决各种问题;确保每天、每阶段都向目标明确的推进。

       Scrum的迭代周期通常为30天,开发团队尽力在一个迭代周期(一个Sprint)交付开发成果,团队每天用15分钟开会检查成员计划与进度,了解困难,决定第二天的任务。