软件开发过程模型综述

一曲冷凌霜 提交于 2020-03-05 18:32:37

一.软件开发过程模型的含义

软件开发过程中,我们面对的是一个十分艰巨的任务,根据软件工程学科的分析,我们需要有一个详细的软件开发过程称之为软件过程。

软件过程可以根据不同的问题分出不同的模型。想要了解软件过程开发模型,就要对软件过程活动有所了解。真实的软件过程是围绕着开发目标,交织着技术、协作、管理等方面工作的活动序列。

软件过程活动是软件过程的基本构成部分,完成某一方面的特定任务。活动的描述分为四部分:成果(软件过程活动的产品)、角色(软件过程中的参与人及职责)、前置条件(活动开展的前提)和后置条件(活动完成后对软件开发系统的影响),之后软件活动包括对项目的可行性研究和需求分析(软件规约),项目的设计与实现,项目的验证与确认(软件测试等)以及软件进化(完善软件以更好地满足用户需求)。

由此产生了多种软件过程模型,软件过程模型是一个特定软件过程的简称,给出软件开发的全部过程、活动和任务的结构框架,明确规定要完成的主要活动、任务和开发策略。常见的软件过程模型有:瀑布模型、增量模型、原型模型、螺旋模型、RUP、敏捷开发等

二.典型软件开发过程模型介绍

1.瀑布模型

瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。

瀑布模型分为三个阶段,定义阶段、开发阶段和维护阶段。定义阶段对应可行性研究与计划,需求分析;开发阶段有设计、编码、测试;维护阶段是对软件的运行维护。每个阶段环环相扣,上一阶段为下面的开发奠定基础,下一阶段都上一阶段的成果进行完善、检查和反馈。

瀑布模型的主要优点:
1) 顺序性和依赖性:前结束,后开始;前输出,为后输入。
2) 推迟实现的观点:前阶段工作必须做扎实,方可开展后续工作。
3) 质量保证的观点:必须完成规定文档;必须对成的文档进行评审,以便尽早发现问题。

瀑布模型的主要缺点:
1) 不适应需求阶段
2) 最终才能见到可执行系统,风险高。

2.增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。

增量模型的主要优点:
1) 软件逐次交付,用户可以早日使用产品并从中获得收益。
2) 早期增量可作为原型使用,有助于获取后面增量需求。
4) 核心功能率先被开发,降低了项目失败的风险。

增量模型的主要缺点:系统的体系结构必须最先确定,并在增量式开发中保持稳定。

3.原型模型

原型模型是一个软件系统的初期版本,用于展示概念,验证设计方案,发现存在的问题和寻找可能的解决方法。原型模型又称快速原型,它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。它适用于实现不能完整定义需求的领域。

原型模型的主要优点:
1) 通过快速开发工具短时间构造出可运行“样品”。
2) 通过运行原型可更好解决开发中的不确定性因素:需求工程阶段有助于启发和验证系统需求;软件设计阶段有助于探索和验证设计方案。
3) 原型最终结局:被抛弃;作为最终产品发布。

原型模型的主要缺点:
1) 原型的快速开发往往忽略了非功能方面的因素,如性能、健壮性和可靠性等。
2) 缺乏必要的开发文档,不利于后期软件维护。

4.螺旋模型

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

螺旋模型主要优点:
1)设计上的灵活性,可以在项目的各个阶段进行变更。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

螺旋模型的主要缺点:螺旋模型强调风险分析,并做出相关反应是不容易的。往往仅适应于内部的大规模软件开发。软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。

5.RUP

RUP主要分为6个过程工作流和3个支持工作流。前6个工作流为商业建模、需求分析、实施、测试和部署,后3个工作流为配置和变更管理、项目管理和环境。除此之外,RUP还有4个阶段:初始阶段、细化阶段、构造阶段和交付阶段。

RUP的特点:
1) 面向对象:从技术角度,RUP的软件系统开发是基于面向对象技术的。RUP使用和支持面向对象,且建立的设计、实现模型均是对象模型。
2) Use Case驱动:系统开发从建立业务领域的用例模型开始。用例模型表达了系统的需求,后面的各种工作围绕如何实现用例模型展开。
3) 以体系结构为中心:系统开发过程中,体系结构用作开发的基石。系统的概念化、构造和管理均围绕系统的体系结构进行。
4) 迭代式、增量式的开发过程:RUP采迭代式、式的思想,开发过程由一连迭代增量构成。
5) 以质量控制和风险管理为目标:质量控制贯穿于软件开发的全过程。在每一次迭代周期,都要进行质量评估;在软件项目立项之初,就尽可能识别项目的开发风险,找出避免、克服或减少风险的对策。
6) 与UML配套:UML的概念和表示方法与RUP相结合形成一种高效的软件系统开发方法和技术。
7) 适用性强:RUP可适用于各类型和各种规模的软件开发。RUP采用管理与技术相结合的二维方法,特别适合处理需求变动比较大的高风险项目。

6.敏捷开发

敏捷开发提出在20世纪90年代,该方法以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,从而让开发团队将主要精力集中在软件本身而不是在设计和编写文档上。

敏捷开发原则:
1) 尽早、持续的(几周到几个月)交付有价值的软件。
2) 欢迎改变需求,保持客户的竞争优势。
3) 业务人员全程参与开发过程。
4) 最有效果的信息传达方式是面对面的交谈。
5) 可以工作的软件是进度的主要度量标准。
6) 敏捷过程提倡可持续开发。
7) 不断追求卓越技术与良好设计有助于提高敏捷性。
8) 简单——尽可能减少工作量的艺术至关重要。
9) 最好的架构、需求和设计都源自自我组织的团队。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!