一:软件过程概念

(1)定义

软件过程:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤。通常用软件生命周期模型来描述软件过程。常见模型有:

  • 瀑布模型
  • 快速原型模型
  • 增量模型
  • 螺旋模型
  • 喷泉模型
  • 其他模型

(2)构成

科学、有效的软件过程应该定义一-组适合于所承担的项目特点的任务集合。一个任务集合包括一组软件工程任务、里程碑和应该交付的产品

二:主要模型

(1)瀑布模型

A:定义

瀑布模型:将软件生命周期的各项活动规定为依照固定顺序连接的若干阶段工作,最终得到软件产品

在这里插入图片描述

B:特点

①阶段间具有顺序性依懒性

  • 必须等前一阶段的工作完成之后,才能开始后一阶段的工作;
  • 前一阶段的输出文档是后一阶段的输入文档
  • 只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果

推迟实现的观点

  • 瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
  • 清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一-条重要的指导思想。

质量保证的观点

  • 为了保证所开发的软件的质量,在瀑布模型的每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
  • 完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。
  • 越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。
  • 因此,及时审查,是保证软件质量、降低软件成本的重要措施。每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

C:优缺点

优点

  • 强迫开发人员使用规范的方法
  • 严格规定了每个阶段提交的文档
  • 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证
  • 对文档的约束,使软件维护变得容易一些,且能降低软件预算

缺点

  • 在软件开发的初期阶段就要求作出正确的、全面的、完整的需求分析对许多应用软件来说是极其困难的
  • 在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整
  • 作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护

D::适用范围

  • 用户的需求非常清楚全面,且在开发过程中没有或很少变化;
  • 开发人员对软件的应用领域很熟悉;
  • 用户的使用环境非常稳定;
  • 开发工作对用户参与的要求很低。.

E:实际的瀑布模型

在设计阶段可能发现规格说明文档中的错误,而设计上的缺陷或错误可能在实现过程中显现出来,在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。因此,实际的瀑布模型是带“反馈环”的,如下图所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。

在这里插入图片描述

(2)快速原型模型

A:定义

快速原型模型:快速建立可运行的程序,它完成的功能往往是最终产品功能的一个子集

在这里插入图片描述

B:原理

快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用,一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件便可以满足用户的真实需求。

C:优缺点

优点

  • 开发的软件产品通常满足用户需求
  • 软件产品开发基本是线性过程

缺点

  • 准确原型设计困难
  • 原型理解可能不同
  • 不利于开发人员创新

D:适用范围

  • 对所开发的领域比较熟悉而且有快速的原型开发工具;
  • 项目招投标时,可以以原型模型作为软件的开发模型;
  • 进行产品移植或升级时,或对已有产品原型进行客户化工作时。

(3)增量模型(了解)

A:定义

增量模型:先完成一个系统子集的开发,再按同样的开发步骤增加功能,如此递增下去直至满足全部系统需求

  • 每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,
    第一个增量构件往往实现软件的基本需求,提供最核心的功能。把软件产品分解成增量构件时,应该使构件的规模适中。分解时唯一必须遵守的约束条件是:当把新构件集成到现有软件中时,所形成的产品必须是可测试的

在这里插入图片描述

B:优缺点

优点

  • 短时间内可提交完成部分功能
  • 逐渐增加产品功能,用户适应产品快

缺点

  • 增量构件划分以及集成困难
  • 容易退化为边做边改模型

C:风险更大的增量模型

下图是一种风险更大的增量模型。用这种方式开发软件,不同的构件将并行地构建,因此有可能加快工程进度。但是,这种方法将有构件无法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可能毁于一旦。

在这里插入图片描述

(4)螺旋模型(了解)

A:定义

螺旋模型:在每个阶段之前都增加了风险分析过程的快速原型模型

在这里插入图片描述

B:优缺点

优点

  • 利于把软件质量作为软件的开发目标
  • 减少测试
  • 维护和开发不分开

缺点

  • 风险估计困难

(5)喷泉模型

喷泉模型:典型的面向对象软件过程模型。体现了迭代无缝的特性

在这里插入图片描述

(6)其他模型

  • Rational统一过程
  • 敏捷过程与极限编程
  • 微软过程
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐