软件支持过程

1.软件过程

定义:软件过程是指软件生命周期(Life Cycle)中的时间序列,有起始点和终止点。

过程与阶段(Phase)有关,阶段与里程碑(Milestone)有关。某些重要里程碑上的文档(通过评审和审计之后)又称为基线(Baseline)。

软件工程的支持过程,由支持软件生命周期各个阶段的生产工具所组成。(包括需求分析工具、概要设计工具、详细设计工具、编程工具、测试工具、维护工具、软件开发环境、软件工程环境)

2.CASE工具

CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段。

CASE工具主要包括:画图工具,报告生成工具,数据词典、数据库管理系统和规格说明检查工具,代码生成工具和文档资料生成工具等。

目前CASE的标准是UML。

传统的软件生命周期:可行性研究→需求分析→软件设计→编码→软件测试→软件维护

软件的管理过程

1.

软件中的过程,分为“基本过程、支持过程、组织过程”三种。

基本过程:需求、设计、实现、测试、验收。

支持过程:支持过程开发和过程管理的各种CASE工具。

组织过程:建立有关小组,如软件工程组、质量保证组、测试组、文档组。

2.

软件工程中主要存在的3类过程管理模型:

(1)ISO9000质量管理和质量保证体系

来源于国际标准化组织ISO,按20多个质量要素管理。

(2)CMM过程能力成熟度模型

来源于卡耐基梅隆大学软件工程研究所,按24个过程域PA,分阶段模型和连续模型两种方式管理,属于重载过程管理。

(3)企业文化(微软企业文化、敏捷文化现象、IBM企业文化等)

属于轻载过程管理。

软件生命周期与开发模型

软件的生命周期与选择的开发模型有关,不同的开发模型,对应不同的生命周期。

软件生命周期模型能清晰、直观地表达软件开发全过程,是软件开发过程应遵循的开发路线图

1.瀑布模型

瀑布模型(Waterfall Model)又称流水式过程模型。

在瀑布模型中,软件开发的各项活动严格按照线性方式进行。当前阶段的活动接受上一阶段活动的工作结果,实施完成所需的工作内容。

适用范围:

    早期的面向过程的结构化分析、结构化设计、结构化编程、结构化测试、结构化维护方法,很适合于瀑布模型。或者说,瀑布模型适合于结构化方法,即面向过程的软件开发方法

特点:

里程碑或基线驱动,或者说文档驱动。

过程逆转性很差或者说不可逆转,逆转将会延误工期,增加成本 ,造成重大损失。

选择模型的条件:

不是任何软件都可以采用瀑布模型的,软件项目或产品选择瀑布模型,必须满足下列条件:

(1)在开发时间内需求没有或很少变化。

(2)分析设计人员对应用领域很熟悉。

(3)低风险项目(对目标、环境很熟悉)。

(4)用户使用环境很稳定。

(5)用户除提出需求以外,很少参与开发工作。

尽管上述条件比较苛刻,但是,软件企业在开发新产品或新项目时,往往还是采用瀑布模型。系统软件和工具软件的开发,也常常采用瀑布模型。

模型的优点:

开发阶段清晰,便于评审、审计、跟踪、管理和控制。

2.增量模型

增量模型(Incremental Model)是遵循递增方式来进行软件开发的。

软件产品被作为一组增量构件(模块),每次需求分析、设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。

模型的本意:

要开发一个大的软件系统,先开发其中的一个核心模块(或子系统),然后再开发其他模块(或子系统),这样一个个模块(或子系统)地增加上去,就像搭积木一样,直至整个系统开发完毕为止。

在每增加一个模块前,先要对该模块进行模块测试。通过后再将此模块加入到系统中,然后还要进行系统集成测试。系统集成测试成功后,再增加新的模块。

这样多次循环,直到系统搭建完毕为止。

模型的特点:

任务或功能模块驱动,可以分阶段提交产品。有多个任务单,这些多个任务单的集合,构成项目的一个总《任务书》,或总《用 户需求报告》/《需求规格说明书》。

选择模型的条件:

(1)在整个项目开发过程中,需求都可能发生变化,客户接受分阶段交付。

(2)分析设计人员对应用领域不熟悉,难以一步到位。

(3)中等或高风险项目(工期过紧且可分阶段提交的系统或目标、环境不熟悉)。

(4)用户可参与到整个软件开发过程中。

(5)使用面向对象语言或第四代语言。

(6)软件公司自己有较好的类库、构件库。

模型的优点:

(1)由于将一个大系统分解为多个小系统,这就等于将一个大风险分解为多个小风险,从而降低了开发难度。

(2)人员分配灵活,刚开始不用投入大量人力资源。如果核心模块产品很受欢迎,则可 增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供 了一种先推出核心产品的途径。即可先发 布部分模块给客户,对客户起到镇静剂的  作用。

模型的缺点:

如果软件系统的组装和拆卸性不强,或开发人员全局把握水平不高(没有数据库设计专家进行系统集成),或者客户不同意分阶段提交产品,或者开发人员过剩,就不宜采用这种模型。

3.原型模型

原型模型(Prototype Model)的本意是:在初步需求分析之后,马上向客户展示一个软件产品原型(样品),对客户进行培训,让客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,反复循环几次,直到客户确认为止。

原型模型很适合于企业资源规划ERP(Enterprise Resource Planning)系统。

模型的特点:

原型驱动。开发者必须先有一个原型(样品),至少要有一个原型的核心。
原型模型与迭代模型相同点是:反复循环几次,直到客户确认为止。不同点是:原型模型事先有一个展示性的产品原型(样品),而迭代模型可能没有。

选择模型的条件:

(1)已有产品或产品的原型(样品),只需客户化的工程项目。

(2)简单而熟悉的行业或领域。

(3)有快速原型开发工具。

(4)进行产品移植或升级

由于上述条件不太苛刻,所以凡是有软件产品的IT企业,在他们熟悉的业务领域内,当客户招标时,他们都会以原型模型作为软件开发模型,去制作投标书,去讲解投标。

模型的优点:

开发速度快,用户意见反馈实时,有利于开发商在短时间内推广并实施多个客户

模型的缺点:

因为事先有一个展示性的产品原型,所以在一定程度上,不利于开发人员的创新。

快速原型法:

由于原型模型的开发速度较快,有时也将它称作快速原型法(Rapid Prototyping)。

在开发工具和开发环境迅速发展的今天,在信息系统开发中,原型法和快速原型法又被赋予新的内容:事先没有原型产品,也可以采取这种办法。

基本思路是:采用以面向元数据为主的方法,在需求分析的基础上,利用Power Designer等数据库分析和设计工具,快速建立信息系统的概念数据模型CDM和物理数据模型PDM;然后利用面向对象的编程工具,快速地实现需求分析中确认的流程、功能、性能和接口;之后交付给用户试用,反复循环几次,直到客户确认满意为止。

快速原型法选择的条件之一是:项目组中有数据库分析和设计的专家,有面向对象编程的专家,文档制作有成熟的模板,而且系统或项目又不是非常大。

快速原型法选择的条件之二是:项目组的开发环境为分行业的业务基础平台(例如用友业务基础平台),该业务基础平台又完全适合所需开发的系统或项目,而且系统或项目又不是非常大。

4.迭代模型

针对瀑布模型的缺陷,人们提出了迭代模型(Iterative Model)。

所谓迭代,是指活动的多次重复。从这个意义上讲,原型不断完善和增量不断产生,都是迭代的过程。但这里所讲的迭代模型是RUP推出的一种“逐步求精”的面向对象的软件开发过程模型,被认为软件界迄今为止最完善的、商品化的开发过程模型。

模型的特点:

迭代或迭代循环驱动,每一次迭代或迭代循环,均要走完初始(先启)、精化、构建、产品化(移交)这四个阶段。RUP的主要特征如下:

采用迭代的、增量式的开发过程; 采用UML语言描述软件开发过程;有功能强大的软件工具Rational Rose支撑。

面向对象的方法,尤其是面向对象的CASE工具Rational Rose,适合于迭代模型。

模型的选取条件:

(1)生命周期模型是以迭代为主要特征的。项目组的管理人员和核心成员,应对迭代的开发方式比较熟悉。

(2)管理人员和核心成员应对软件工程的核心过程:系统建模、需求分析、系统设计、系统实现、项目管理、配置管理、测试等比较熟悉。

(3) 采用面向对象技术(如OOA,OOD等)的项目 组,建议使用迭代式生命周期。

(4)项目组的核心设计人员,应具备一定程度的软件架构的知识,并熟练掌握软件架构设计技能。

(5)项目组全体成员应熟悉UML,并能利用建模工具 (如Rational Rose等)进行分析、策划、设计、测试等。

(6)项目组的管理人员应具备风险管理的知识和技能。

(7)拥有实施软件产品开发、组装的软件组织 。

模型的优点:

在开发早期或中期,用户需求可以变化;在迭代之初,它不要求有一个相近的产品原型;模型的适用范围很广,几乎适用于所有的项目开发。

模型的缺点:

传统的项目组织方法是按顺序(一次且仅一次)完成每个工作流程,即瀑布式生命周期。迭代模型是采取循环的工作方式,每次循环均使工作产品更靠近目标产品一次,这就要求项目组成员具有很高的水平并掌握先进的开发工具。

5.螺旋模型

螺旋模型基本做法是在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。

螺旋模型沿着螺线顺时针方向进行若干次迭代,图中的四个象限代表了以下迭代活动:

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施开发:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议

模型的特点:

(1)把软件开发过程组成为一个逐步细化的螺旋周期,每经历一个周期,系统就得到进 一步的细化和完善;

(2)整个模型紧密围绕开发中的风险分析,推动软件设计向深层扩展和求精;

(3)强调持续的判断、确定和修改用户的任务目标,并按成本、效益来分析候选的软件产品对任务目标的贡献。

选择模型的条件:

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统。

对于这些系统,风险是软件开发不可忽视且潜在的不利因素,它可能在不同程度上损害软件开发过程,影响软件产品的质量。

减小软件风险的目标是在造成危害之前,及时对风险进行识别及分析,决定采取何种对策,进而消除或减少风险的损害。           模型的优点:

(1)与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,从而降低了软件开发风险。

(2)螺旋模型对可选方案和约束条件的强调,有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。

(3)减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险。

(4)螺旋模型中维护只是模型的另一个周期,在维护 和开发之间并没有本质区别。

模型的缺点:

(1)很难让用户确信这种演化方法的结果是可以控制的。由于建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

(2)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。

(3)过多的迭代次数会增加开发成本,延迟提交时间

软件工程——软件开发模型相关推荐

  1. 软件设计师备考笔记(十)软件工程(开发模型、结构化设计、软件测试)

    目录 软件开发模型 信息系统开发方法 需求分类 结构化设计 软件测试 软件开发模型 瀑布模型 历史 盛极一时,但被淘汰:有重大缺陷,会导致项目失败(延期.超支.做不下去) 注意事项:每个阶段(绿框)末 ...

  2. 软件工程,开发模型,软件开发流程

    软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模 ...

  3. 软件工程-软件开发的工程思维

    软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...

  4. 【软考软件评测师】第十章节 软件工程之开发模型与方法

    [软考软件评测师]第十章节 软件工程之开发模型与方法 第十章节 软件工程之开发模型与方法 [软考软件评测师]第十章节 软件工程之开发模型与方法 第一部分 知识点集锦 1.瀑布模型 2.螺旋模型 3.增 ...

  5. 软件工程-软件生存周期模型

    软件工程-软件生存周期模型 软件工程-软件测试 软件工程-软件测试-测试方法 概念 同任何事物一样,一个软件产品或软件系统也要经过孕育.诞生.成长.成熟.衰亡的许多阶段,一般称为软件生存周期. 软件的 ...

  6. 软件测试之软件开发模型

    一. 软件开发模型 1 为什么学习软件开发模型 了解开发能够更好的有针对性的做好测试. 2 什么是软件开发模型 软件开发生命周期模型是软件产品从最初构思到退役的过程. 3 常见的开发模型  大爆炸模 ...

  7. 【软考点点】软件开发模型

    软件开发模型是软考上午题中必考的一个知识点.给出一定的条件,让我们判断属于哪一种开发模型.     典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型 ...

  8. 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动

    瀑布模型( waterfall model ): 又被称为经典生命周期(classic life cycle ),它提出了一个系统的.顺序的 软件开发方法. 瀑布模型是出现得比较早的软件开发模型. 在 ...

  9. 几种常见的软件开发模型:瀑布模型,快速原型模型、增量模型、螺旋模型、喷泉模型

    瀑布模型 瀑布模型是20世纪80年代之前最受推崇的软件开发模型,它是一种线性的开发模型,具有不可回溯性.开发人员必须等前一阶段的任务完成后,才能开始后一阶段的工作,并且前一阶段的输出往往就是后一阶段的 ...

  10. 【软件工程】几种常见的软件开发模型:(瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型)模型的概念特点优点缺点和不同。

    (瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型)各种模型的概念特点优点缺点和不同. (张海藩,吕云翔)著-软件工程 复习记录 文章目录 一.瀑布模型 二.快速原型模型 三.增量模型 四.螺旋模 ...

最新文章

  1. 打开别人Xamarin项目找不到android.jar文件
  2. oracle分页排序
  3. node+ejs模板引擎的应用
  4. IT-标准化-系列-14.用-博客三剑客-写博客
  5. VTK:InfoVis之KMeansClustering
  6. 洛谷p2234/BZOJ1588 [HNOI2002]营业额统计
  7. 工作项跟踪管理系统需求
  8. 不用ajax调用搞后台小技巧
  9. 椒盐噪声加噪的实现原理
  10. 光伏补贴新政出台 投资机会解析
  11. 原生js实现网站倒计时效果 给网站添加一个活动倒计时效果 线报活动结束提示效果
  12. 信息学奥赛一本通1364 二叉树遍历
  13. 基于matlab的彩色图像分割,基于Matlab的彩色图像分割
  14. 安时积分法的c语言程序,代码生成 | 安时积分法模型搭建
  15. 我在华为做外包的真实经历!
  16. 详细解读Xbox Series X:比起堆料,它其实更在乎效率
  17. java pacs上传服务_有没有办法将DICOM数据发送到远程PACS服务器上的特定目录?
  18. 0/0型极限等于多少_有限个极限运算及常见错误小结
  19. php获取小米手环数据,小米运动App数据提取
  20. 驾照科目一速过技巧--2023年

热门文章

  1. 扫雷win10_利用Python实现自动扫雷小脚本
  2. W10如何下载经典扫雷游戏
  3. 数字转换大写 python_数字转换
  4. 阿里安全SQL注入检测 前五名队伍分享
  5. 教育教学教师竞聘说课PPT模板
  6. java语言求101~200之间的质数(素数)
  7. php工具箱怎么换php版本,最新php程序员工具箱 v1.0版本介绍
  8. 或非门sr锁存器_问:或非门构成的基本SR锁存器当SR=10时,锁存器输出什么状态?...
  9. Could not find a version that satisfies the requirement pytz (from django)
  10. 无法绑定由多个部分组成的标识符 yvi312082007@163.com。