软件工程学习笔记——软件过程模型

时间:2024-02-21 11:34:52

软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框图。
典型的软件过程模型有:

  • 瀑布模型
  • 增量模型
  • 演化模型(原型模型、螺旋模型)
  • 喷泉模型
  • 基于构建的开发模型
  • 形式化方法模型

等。

1. 瀑布模型

瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落,如图所示:

瀑布模型的一个变体是V模型。V模型描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。对着软件团队工作沿着V模型左侧步骤向下推进,基本问题续期逐步细化,形成问题及解决方案的技术描述。一旦编码结束,团队沿着V模型右侧的步骤向上推进工作,其实际上是执行了一些列测试(质量保证活动),这些测试验证了软对沿着V模型左侧步骤向下推进过程中所生成的每个模型。V模型提供了一种将验证确认活动应用于早期软件工程工作中的方法。

瀑布模型的有点事,容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。不足之处是,客户必须能够完整、正确和清晰地表达他们地需要;在开始地两个或3个阶段中,很难评估真正的进度状态;当接近项目结束时,出现了大量的继承和测试工作;知道项目结束之前,都不能演示系统地能力。在瀑布模型中,需求或设计中的错误往往只有到了项目后期才能后被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。

2. 增量模型

增量模型假设可以将需求分段为一系列产品,每一增量可以分别开发。
该模型采用随着七七时间的进展而交错地线性序列,每一个先行序列产生软件的一个可发布地“增量”:

增量模型未作瀑布模型地一个变体,具有瀑布模型的所有优点。此外,它还具有以下优点:第一个可交付版本所需要的成本和时间很少;开发由增量表示的小系统所承担的风险不大;由于很快发布了第一个版本,因此可以减少用户需求的变更;运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。
增量模型由一下不足之处:如果没有对用户的变更要求进行规划,那么产生的初始增量可能会早场后来增量的不稳定;如果需求不想早期思考的那样稳定和完整,呢么一些增量就可能需要重新开发,重新分布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

3. 演化模型(Evolutionary Model)

演化模型是迭代的过程模型,能够应对不断演变的软件产品的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。
演化模型特别适用于对软件需求缺乏准确认识的情况。典型的演化模型有原创模型和螺旋模型等。

1. 原型模型(Prototype Model)

原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

2. 螺旋模型(Spiral Model)

对于复杂地大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,介入了两种模型均忽略的风险分析,弥补了两种模型地不足。
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期分为如下4个工作步骤。

  1. 制定计划。确定软件的目标,选定实施方案,明确项目开发地限制条件。
  2. 风险分析。分析所选的方案,识别风险,消除风险。
  3. 实施工程。实施软件开发,验证阶段性产品。
  4. 用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型特别适用于庞大、复杂并且具有高风险的系统。
与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加开发成本,延迟提交时间。

4. 喷泉模型(Water Fountain Model)

喷泉模型允许各开发活动交叉、迭代地进行。
喷泉模型的各个阶段没有明显的界限,开发人员可以同步进行。其有点事可以提高软件项目的开发效率,节省开发实践。由于喷泉模型在各个开发阶段是重叠的,在开发过程中愮大量的开发人员,不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大。

5. 基于构建的开发模型(Component-based Development Model)

基于构建的开发是指利用预先包装的构件来构造应用系统。基于构件的开发模型采用预先打包的软件构件开发应用系统。
一种基于构件的开发模型如图所示,包括领域工程和应用系统工程两部分。
领域工程的目的是构件领域模型、领域基准体系结构和可复用构件库。
应用系统工程的目的是使用可复用构件组装应用系统。

6. 形式化方法模型(Formal Methods Model)

形式化方法是建立在严格数学基础上的一种软件开发方法,其主要活动hi生成计算机软件形式化的数学规格说明。
形式化方法用严格的舒徐而语言和语义描述功能和设计规约,通过数学的分析和推到,易于发现需求的歧义性、不完整性和不一致性,已于对分析模型、设计模型和程序进行验证。通过数学的演算,是的从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码的转换成为可能。
这种方法的一个变型是净室软件工程。