软件生存周期与开发模型

1软件开发周期

  (1)软件定义阶段

      问题定义,可行性分析,立项或者签订合同。其中在可行性分析完成之后立项或者签订合同是题中应有之义。

  (2)软件开发阶段

 需求分析,概要设计,详细设计,编码,测试,软件发布或者安装验收。其中编码和测试在实际应用中应该是同时进行的。

   (3)软件维护阶段

     软件的额使用和运行,软件维护。

2.软件开发模型(software development model)

 (1)软件开发模型是对软件开发过程的概括,是软件工程思想的具体化,软件开发模型是跨越整个软件生命周期的各个阶段所需要的全部工作与任务的结构框架。

3.常见的软件开发模型

(1)瀑布模型(waterfall model)

瀑布模型是将软件生存周期的各项活动规定为按照固定顺序而连接的若干阶段工作,形如瀑布流水,最终的到产品。瀑布模型是最早出现的软件开发模型,其工作过程是从上一项活动接收本项工作的输入,并把本项工作的输出作为下一项工作的输入。同时在每个阶段结束时进行评审,如果通不过则返回。瀑布模型是线性的。

举例如下,我们要计算1+2+3+4的结果,瀑布模型就会先把整个过程按照+号分割,即 1+2,+3,+4一共三个阶段,首先第一阶段计算1+2,结果为3,对3这个结果进行评审,如果通过了那么作为第二阶段的输入,在计算3+3,假设结果为4,进行评审,发现不正确,那么返回,重新计算,即重复第二阶段的工作,计算结果为6,在进行评审,结果正确则往下依次进行。

瀑布模型有点有(1)为项目提供了按阶段划分的检查点(2)项目关注面比较小,只需要关注当前阶段,有点稳扎稳打的味道(3)瀑布模型核心是化繁为简,提供了结构化的分析与设计方法。

瀑布模型适合需求已经确定的软件项目

瀑布模型由于太过僵化有以下缺点(1)缺乏灵活性,难以适应需求不明晰或者需求灵活发生变化的场景。(2)开发早期存在的问题往往交付时才发现,维护成本大。(3)阶段划分完全固定,各个阶段产生大量冗余工作如文档,附属产物等,是工作量加大。(4)开始看不到结尾,无法清晰预见开发结果,使项目风险增加。

(2)演化模型(evolution model)

许多软件项目在开发早期对软件需求的认识是模糊的,不确定的,因此软件很难一次开发成功。在获取了一组基本的需求之后,通过快速分析构造出该软件的一个初始可运行的版本(原型),然后根据用户在试用原型的过程中提出的意见和建议、或者增加新的需求,对原型进行改造,获得原型的新版本,重复这一国政,最终得到令客户满意的软件产品。

演化模型可以理解为生物进化,而客户就属于进化论中的自然选择或者人工选择。也可以想想现在的小米手机

演化模型的好处在于(1)能够开发换成之后就进行测试,检验是否满足需求(2)帮助引导出高质量的产品需求(3)项目风险相对较小

演化模型的关键在于过程的管理,如果管理不好的话可能退化为原始的无计划的“试-错-该”模式。如果不加控制的让用户接触到尚未测试稳定的版本可能会产生负面影响。

典型的烟花模型有:增量模型、原型模型和螺旋模型

(3)增量模型

增量模型可以理解为瀑布模型和演化模型的结合,其中增量模型的每一个增量都是最终发布版本的可拆卸版,例如我们做一个导航软件,首先第一个版本只能有导航功能,这是第一个增量,然后新需求出现需要有音乐播放功能,此时对音乐播放功能按照瀑布模型的方法进行一系列的工程操作,然后结合在一起发布新版本,音乐播放功能就是增量模型的一个增量。

(4)原型模型

n  原型是预期系统的一个可执行版本,它反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。被开发的原型应交付给客户试用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。原型模型的起始点是开发方与客户在构建原型的需求上达成一致。

原型的类型:

探索型(exploratory prototyping)

   其目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。

实验型(experimental prototyping)

   其目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠。

演化型(evolutionary prototyping)

   其目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。

原型的使用策略:

废弃(throw away)策略

   主要用于探索型和实验型原型的开发。这些原型关注于目标系统的某些特性,而不是全部特性,这种原型通常被废丢,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统。

追加(add on)策略

    主要用于演化型原型的开发。这种原型通常是实现了目标系统中已明确定义的特性的一个子集,通过对它的不断修改和扩充,逐步追加新的要求,最后使其演化成最终的目标系统。

原型可作为单独的过程模型使用,它也常被作为一种方法或实现技术应用于其它的过程模型中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值