软件工程导论——2过程模型

过程模型

重点是各种实用的软件过程模型,以及不同过程模型的特点比较。掌握几种典型模型的优缺点和能依据项目特征选择使用不同的模型;理解为什么有不同的模型、不同模型的特征。主要知识点:

1、软件生命周期概念、软件过程概念、能力成熟度模型CMM概念

软件生命周期由软件定义(问题定义、可行性研究、需求分析)软件开发(总体设计、详细设计、编码和单元测试、综合测试)和运行维护3个时期组成,每个时期又进一步划分为若干个阶段。
1.问题定义
2.可行性研究
3.需求分析
4.总体设计
5.详细设计
6.编码和单元测试
7.综合测试
8.软件维护

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

CMM的基本思想是,因为问题是由我们管理软件过程的方法引起的,所以新软件技术的运用不会自动提高生产率和利润率。CMM有助于组织建立一个有规律的、成熟的软件过程。改进的过程将会生产出质量更好的软件,使更多的软件项目免受时间和费用的超支之苦。
软件过程包括各种活动、技术和用来生产软件的工具。因此,它实际上包括了软件生产的技术方面和管理方面。CMM策略力图改进软件过程的管理,而在技术上的改进是其必然的结果。

2、常见的几种软件过程模型:瀑布、增量、原型、螺旋、喷泉等,比较各自优缺点

瀑布模型

瀑布模型(经典生命周期)提出了软件开发的系统化的、顺序的方法。其流 程从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一 个完整的软件并提供持续的技术支持。

优点:

  1. 强调开发的阶段性,各阶段具有顺序性和依赖性

  2. 强调早期调研和需求分析,推迟编码实现的观点

  3. 提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以 在该摸板下有一个共同的指导

缺点:

  1. 文档驱动,用户无法及时了解产品的情况

  2. 依赖早期调研和需求分析,很难适应在许多项目开始阶段必然存在的不确定 性。

  3. 流程单一,必须要完成前一阶段的任务,才能进行下一阶段,开发过程中的 成功经验无法用于本产品。

  4. 测试在后期引入,对于系统存在的重大缺陷,如果在可执行程序评审之前没 有被发现,将可能造成重大损失。

  5. 组织庞大,人员闲置。
    适用范围:需求确定,工作能够采用线性的方式完成的软件。

瀑布模式的变型:V,W模型

步骤允许交叉。 步骤允许回溯。 测试贯穿全过程,减少缺陷修复成本,降低项目进度风险。

V模型的优点:

1.明确标明了测试过程中存在的不同级别

2.清楚地描述了测试阶段与开发过程各阶段的对应关系(引入检测机

制,需求分析做的好不好,看验收测试)

3.V模型的测试策略既包括了低层测试(代码级的测试),又包括了高层测试(需求级的测试)

V模型的缺点:

1.它仅仅把测试过程作为需求分析,概要设计,详细设计编码之后的

一个阶段,容易让人理解为测试是软件开发的最后一个阶段。

2.没有明确说明早期的测试,不符合越早测试和不断地进行测试的原

则(用户需求对不对要到验收测试才能发现)。

3.和瀑布模型一样,流程也是单向的,不可逆。

增量过程模型

增量过程模型包括增量模型、RAD 模型。

增量模型 增量过程模型以迭代的方式运用瀑布模型,把软件产品作为一系列的增量构件来设计、编码、集成和测试。

每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量往往是核心功能。
优点:

1.能在较短的时间内向用户提交可完成部分工作的产品。

2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。

  1. 规避技术风险

  2. 可并行开发构件,加快开发的进度

缺点:

  1. 没有考虑软件的整体质量和长期的可维护性。

  2. 大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工 具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

  3. 由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计
    适用范围:项目在既定的商业要求期限之前不可能找到足够的开发人员;

演化过程模型包括原型开发,螺旋模型,并发模型。

(一)原型开发 从需求收集开始,开发者和客户在一起定义软件的总体目标,标识已知的需求并且规划出需要进一步定义的区域。

然后是“快速设计”,它集中于软件中那些 对客户可见的部分的表示,这将导致原型的创建,并由客户评估并进一步精化待 开发软件的需求。

逐步调整原型使其满足客户的需求,这个过程是迭代的。其流 程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头 往复循环直到客户对原型满意为止。

由于这种模型可以让客户快速的感受到实际 的系统(虽然这个系统不带有任何质量的保证),所以客户和开发者都比较喜欢 这种过程模型(对于那些仅仅用来演示软件功能的公司而言或从来不考虑软件质

量和不害怕长期维护的公司而言)。

优点:

1、能让人(开发者或客户)很快见到产品,有成就感。

2、能渐进地启发客户提出新的要求或任务。

缺点:

1、 没有考虑软件的整体质量和长期的可维护性。

2、 大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

3、 由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。

(二)螺旋模型 螺旋模型是一种演进式软件过程模型,结合了原型的迭代性质和瀑布模型的系统性和可控性的特点,具有快速开发越来越完善软件版本的潜力。

开发步骤:沿螺线自内向外,每旋转一圈便开发出更为完善的一个新的软件版本。

例如,在第一圈,确定了初步的目标、方案和限制条件以后,转入右上象限,对风险进行识别和分析。

如果风险分析表明,需求有不确定性,那么在右下 的工程象限内,所建的原型会帮助开发人员和客户,考虑其它开发模型,并对需求做进一步修正。客户对工程成果做出评价之后,给出修正建议。

在此基础上需 再次计划,并进行风险分析。在每一圈螺线上,风险分析的终点做出是否继续下 去的判断。

假如风险过大,开发者和用户无法承受,项目有可能终止。多数情况 下沿螺线的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。

优点:

  1. 强调风险

  2. 强调阶段质量

  3. 提供纠错的机会

缺点:

  1. 每个阶段都要提出被选方案,进行风险分析,研发周期长,效率低

  2. 必须要转业的风险分析人员的参与

适用范围:大型项目

(三)协同开发模型 协同开发模型(协同工程),可以表示唯一系列的框架活动、软件工程动作和任务 以及相应的状态。

适用范围:所有类型的软件开发

专用过程模型

包括基于构件的开发、形式化方法模型、面向方面的软件开发。

(一)基于构件的开发基于构件的开发模型具有许多螺旋模型的特点,本质上是演化模型,需要以 迭代方式构建软件。不同之处在于,基于构件开发模型采用预先打包的软件构件 开发程序。

开发过程:对所需构件进行评估 → 考虑构件的集成 → 设计系统的软件框 架→将构件放入框架→进行测试

优点:

  1. 构件可复用。提高了开发效率。

  2. 采用了面向对象的技术

  3. 能够使软件复用

缺点:过分依赖于构件,构件库的质量影响着产品质量。

(二)形式化方法模型 形式化方法模型包含了一组活动,他们导致了计算机软件的数学规约。

形式化方法使得软件工程师们能够通过应用一个严格的数学符号体系来规约、开发、 和验证基于计算机的系统。

这种方法的一个变种,称为净室软件工程,已经被 一些组织所采用。

在开发中使用形式化方法时,它们提供了一种机制,能够消除 使用其它软件过程模型难以克服的很多问题。

二义性、不完整性、不一致性能被 更容易地发现和纠正,而不是通过专门的评审,是通过对应用的数学分析。

形式化方法提供了可以产生无缺陷软件的承诺。

优点:

1、形式化规约可直接作为程序验证的基础,可以尽早的发现和纠正错误(包括 那些其它情况下不能发现的错误)。

2、开发出来的软件具有很高的安全性和健壮性,特别适合安全部门或者软件错 误会造成经济损失的开发者。

3、能够开发出无缺陷软件。

缺点:

1、 开发费用昂贵,而且需要的时间较长。

2、 需要大量的培训。

3、 不能将这种模型作为对客户通信的机制,因为客户对这些数学语言一无所 知。

适用范围:不适用于技术水平不高的客户。

(三)面向方面的软件开发 将系统分成若干相对较独立的组成部分,这些部分称为方面。
优点:超越了子程序和继承的方法。 缺点:技术还不成熟

喷泉模型

喷泉模型主要用于采用对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。

1、喷泉模型的优点
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
2、喷泉模型的缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

发布了23 篇原创文章 · 获赞 2 · 访问量 477

猜你喜欢

转载自blog.csdn.net/weixin_42385782/article/details/103130339