软件生存周期模型

 

目录

        软件生存周期过程

软件生存周期

软件生存周期过程

软件生存周期过程和模型的关系

经典模型介绍


软件生存周期过程

软件生存周期

   软件生存周期(software life circle)又称软件生命期,生存期。它是指从形成软件开发概念开始,到软件投入使用,再到软件失去价值而消亡的整个过程。

软件生存周期过程

   软件生存周期过程,是规定了获取供应开发操作维护软件时,要实施的过程活动任务(见下文)。它旨在提供一个公共的框架,方便使用“相同的语言”(可理解为相同的标准,规则)在自己的环境中创作和管理软件。

软件生存周期模型

软件生存周期过程和模型的关系

  从上文也应该知道了,软件生存周期模型是选取了软件生存周期过程中的部分活动。因为在实际软件开发过程中,不能一味地照搬模板,而是要根据项目和应用的性质,采用合适的方法与工具,对软件进行开发和维护。由此催生了各种软件生存周期模型。

经典模型介绍

  下方的所有图片都是来自老师给的PPT截图,不是原创。

瀑布模型(最经典的模型)

瀑布模型特点:

  1. 阶段间具有有序性和依赖性。阶段必须完成之后,才能进行下一阶段。瀑布模型提出之前,软件开发是无序化的,这就导致了开发效率低的问题,而瀑布模型的出现使得软件开发变得有序,软件的效率和质量都大大地提高。
  2. 推迟实现。其实真正编码之前,会进行大量的分析与设计工作。在构建大型应用时,软件的维护消耗的精力与物力远远超过开发。所以为了减少问题的产生,降低维护的代价,所以会做好分析与设计工作,推迟编码。
  3. 文档驱动。每一个阶段都会产生文档。这样有两个好处,第一,每个阶段结束前都会对文档进行审查,审查严格之后才会交给下一阶段,这样是质量得到了保证,也为以后维护提供了宝贵的资料。第二,每一个阶段开始前,开发人员可以参考前一阶段的文档,快速开始本阶段的工作。

瀑布模型缺点:

  1. 瀑布模型的缺点主要在于在实际开发中不可能不会出现问题,一旦出现问题之后,回溯到前面阶段的代价实在太大,有可能会终止项目。
  2. 由于产品是一次性交付给用户,如果用户的需求与实际的产品不符,同样会产生上述回溯到前面阶段代价太大的问题。

原型模型

  基于用户的需求和实际产品不相符的情况,那就出现了一种模型叫做原型模型。

原型模型特点:

  1. 不断快速修改系统,以期尽早用户见面,用户提出意见后,又快速修改,交付给用户查看。
  2. 不注重维护和质量。

原型模型的缺点:

  1. 基于原型模型的特点,它是不可能作为最终系统交付给用户的,原型系统最终可能会被废弃,可以认为它的作用只是为了不断明确用户的请求。
  2. 不适合小型项目。简单来说,用原型不断修改以满足用户是需要代价的,如果是小型项目,受众不广,资金不足,只搞个原型估计就让项目夭折了。

RAD模型

  基于前面两个模型,你就知道这个模型是干啥的了。我如果能集合原型模型和瀑布模型的优点,不是很好?

  RAD模型的基本思想是采用大量的人力物力对软件的每个组件进行开发,然后集成成最终的产品交互给用户。

所以,RAD模型具有如下特点:

  1. 开发周期短。(兼具原型快速的优势)
  2. 产品质量高。(每个组件的开发其实就看得出来瀑布模型的影子)

  但是,RAD模型就完美了吗?
  不是 ,RAD模型需要大量的人力和物力,软件开发过程不止注重技术更看重管理。如果有一个小组撂挑子,说我不干了,那么整个软件的开发不就得推迟?所以,RAD模型的这一个特点就不满足之前Boehm提出的开发人员应该小而精的观点。

  上面所述的模型都有一个显著的特征,即都是一次性交付给用户,这样做是具有风险的,因为技术有革新,市场有变化,当你的产品开发出来之后,可能就不符合时代的需求了。所以,又有另外的模型被相继地提出。

增量模型

增量模型的特点:

  1. 原型特点:由于是不开发增量,然后和客户见面,开发增量,然后和客户见面。这样就能符合客户的需求,顺应市场变化。
  2. RAD特点:每项工作都有相应的小组。这样就兼顾了快速的特点。
  3. 瀑布模型特点:这就不啰嗦了,基本每一个模型都能或多或少看到瀑布模型的影子。
  4. 不需要大量的人力:这里应该和前面的RAD做出区别,这里的增量并不是一次性共同开发,而是根据用户需求逐次开发,所以上一阶段个增量的开发小组仍可以接手下一个增量的开发。
  5. 代价低:即时开发的增量不满足用户需求,那么对一个增量进行修改,相比对整个软件进行修改的代价要小得多。

  但是增量模型有缺点没有?
  还是有的,我们要考虑增加一个增量时是否对原来的软件造成影响,如果影响过大,那么这个增量反而不好。
  但是,采用增量模型是可取的,为了规避开发不合适的增量,那么就得在设计上话功夫,但是这种牺牲是值得的。

螺旋模型

螺旋模型的特点:

  1. 风险驱动:每一个阶段(看图可理解为一圈为一个阶段)都会开发一个原型来进行风险分析,当风险分析合格时才会进行下一阶段。
  2. 瀑布模型特点:从环内到环外,可看到瀑布模型的特点。
  3. 增量模型特点:每一次螺旋可看做是一次增量。

螺旋模型的缺点:
  螺旋模型是风险驱动的,项目越大,风险越大。原型进行风险分析是需要代价的,如果砸在风险分析的钱太多,那么就可能导致项目终止。所以,螺旋模型适用于内部开发。

RUP模型

  RUP模型相当复杂,我简单写写。RUP可以看做是一个二维的图。横向划分了四个阶段:初始,细化,构造,交付。纵向是若干工作流。
  RUP的特点为迭代式增量开发,用例驱动,以体系架构为中心。如果体系架构做得不好,迭代式开发就不好开展。
  RUP的一个缺点就是整个模型比较麻烦,不好操作。想了解更多,可以参考百度百科RUP

  总之,针对不同的开发应用场景,应当采用合适的模型进行开发。
  点此到顶部TOP