软件工程2:软件过程

一、软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,他规定了完成各项工作任务的工作步骤、运用方法的顺序、文档资料、管理措施、各个阶段的里程碑。

生命周期模型(过程模型):规定了把生命周期互粉成哪些阶段及各个阶段的执行顺序。

常见软件生命周期模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、统一过程及敏捷过程及极限编程。

二、常见软件的过程模型

1.典型的过程模型:

  • 瀑布模型
  • 快读原始开发模型
  • 增量模型
  • 螺旋模型

2.其他模型

  • 喷泉模型
  • 极限编程
  • RUP
  • 修造-修补模型

三、瀑布模型

在20世纪80年代之前,是唯一被广泛采用的生命周期模型,现在仍然是软件工程中应用最广泛的过程模型。

主要用于描述传统软件工程方法学的软件过程

3.1模型图

软件工程2:软件过程

3.2基本思想

“分而治之”

3.3 特点

  • 相邻阶段依赖性
  • 推迟实现的观点
  • 质量保证的观点(文档与评审)

3.4 优点

  • 迫使开发人员采用规范的方法
  • 严格规定了每阶段必须提交的文档
  • 要求各阶段的产品必须经过质量验证

3.5 缺点

  • 需求男开始就完全确定
  • 文档驱动,风险太大
  • 开发期长,一旦修改,则损失惨重
  • 不支持软件复用和集成技术

3.6 适用范围

  • 结构化方法,面向过程的软件开发方法
  • 需求变化少
  • 开发人员熟悉领域
  • 低风险项目
  • 使用环境稳定

瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。

四、快速原型模型

快速原型模型:快速构建起一个可在计算机上运行的原型系统,让用户适用原型并收集用户反馈意见的办法,获取用户的真实需求。

4.1模型图

软件工程2:软件过程

4.2基本思想:

系统的需求定义贯穿于真个开发过程,逐步精确与完善

4.3与瀑布模型的比较

瀑布模型视图题词就获得了正确的产品。快速原型平凡变化然后放弃。

4.4 原型分类

1.废弃型

也称为快速建立需求规格原型RSP法

软件工程2:软件过程

2.追加型

也称快速建立渐进原型RCP法

软件工程2:软件过程

4.5快速原型开发过程

  • 快速分析
  • 构造原型
  • 运行和评价原型
  • 修正与改进

软件工程2:软件过程

4.6 快速开发原型的途径

  • 模拟软件系统的人机界面和人机交互方式
  • 开发工作原型,实现软件系统的部分功能
  • 找来正在运行的类似软件

4.7特点

  • 线性开发模型(不带反馈)
  • 减少开发活动的盲目性和需求不确定
  • 开发的系统能满足需求,修改较小

4.8 优点

  • 处理模糊需求
  • 用户参与
  • 快速

4.9 缺点

  • 快速(弱功能)
  • 资源规划和管理较为困难
  • 对开发环境要求高

4.10 适用范围

  • 已有产品(原型)
  • 简单而熟悉的领域
  • 有快速原型开发工具
  • 进行产品移植或升级

用户需求不完全或不准确,有快速的原型开发工具项目投标时,可以以原型模型作为软件的开发模型,产品移植或升级或对已有产品原型进行客户化工作

4.11 软件开发的风险

产品交付给用户后用户可能不满意

到了预定的交付日期软件可能还未开发出来

实际的开发成本可能超预算

产品完成前一些关键的开发人员可能“跳槽”了

产品投入市场之前竞争对手发布了一个功能相近、价格更低的软件…

五、增量模型

软件模块化,把软件产品作为一系列增量组(构)件来设计、编码、继承和测试。

组(构)件:代码块,代码块来自多个相互作用的模块,完成特定的功能。

5.1 模型

软件工程2:软件过程

5.2 基本思想

递增式开发,先提供基本核心功能的增量组件,创建一个具备基本功能的子系统,然后对其完善。

5.3 特点

系统模块化和组件化

5.4 优点

  • 系统模块化,分批次地提交软件产品,使用户可以及时了解软件项目的进展
  • 已组建为单位进行开发降低了软件开发的风险
  • 开发顺序灵活

5.5 缺点

要求待开发的软件系统可以被模块化

5.6 使用范围

增量模型适用于具有以下特征的软件开发项目:

  • 软件可以分批次的进行交付
  • 待开发的软件系统能够被模块化
  • 软件开发人员对应用领域部署需,难以一次性地进行系统开发
  • 项目管理人员把握全局的水平较高

六、螺旋模型

6.1基本思想

使用原型及其他方法来尽量降低,在每个阶段之前都增加了风险分析过程的快速原型模型。

每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实事工程、客户评估。

6.2 优点

  • 风险驱动
  • 质量保证
  • 利于维护

6.3 缺点

  • 风险驱动
  • 对开发人员要求高
  • 要求客户参与阶段评价,对用户来说比较困难,不以取得好的效果

6.4 适用范围

  • 庞大、复杂、高风险的系统

  • 内部开发的大规模软件项目

七、其他模型

7.1 喷泉模型

1.基本思想

软件开发过程自下而上周期的各阶段是相互重复和多次反复的,可以并行工作。

2.特点

迭代、演进、无缝

7.2 统一过程模型

1.基本思想

根据时间和RUP的核心工作划分为二维空间

7.3 构件组装模型

利用模块化思想将整个系统模块化,并在一定构建模型的支持下复用构建库中一个或多个软件构建,同组装高效率、高质量的构造软件系统。构建组装模型本质上是演化的,开发过程是迭代的。

1.优点

  • 充分利用软件复用,提高了软件开发的效率
  • 允许多个吸纳灌木同时开发,降低了费用,提高了可维护性,可实现分布提交软件产品。

2.缺点

  • 缺乏通用的构建组装结构标准,风险较大
  • 构建可重用性和系统高效性之间不易协调
  • 由于过分依赖于构建,构建质量影响着最终产品的质量

7.4 快速应用开发

侧重于短开发周期增量过程模型,是批捕模型的高速变体,通过基于构件的构建方法实现快速开发。

多个团队并行开发,但启动时间又先后,县启动的团队的提交物将作为后启动团队的输入

八、软件生存周期模型的选择

  • 模型因符合软件本身的性质(规模、复杂性)
  • 模型应满足软件应用系统整体开发进度要求
  • 模型应有可能控制并消除软件开发风险
  • 模型应有可用的计算机辅助工具(如快速原型工具)的支持
  • 模型应与用户和软件开发人员的知识和技能相匹配
  • 模型应有利于软件开发的管理与控制

九、软件生存周期模型的剪裁

程模型,是批捕模型的高速变体,通过基于构件的构建方法实现快速开发。

多个团队并行开发,但启动时间又先后,县启动的团队的提交物将作为后启动团队的输入

八、软件生存周期模型的选择

  • 模型因符合软件本身的性质(规模、复杂性)
  • 模型应满足软件应用系统整体开发进度要求
  • 模型应有可能控制并消除软件开发风险
  • 模型应有可用的计算机辅助工具(如快速原型工具)的支持
  • 模型应与用户和软件开发人员的知识和技能相匹配
  • 模型应有利于软件开发的管理与控制

九、软件生存周期模型的剪裁

在一个成俗和的IT企业或软件组织内部,通常需要根据各种软件开发模型的忒安,结合本单位的开发经验和行业特点的具体实际,还需要定制适合本单位的“生存周期模型裁剪指南”,有正对性的对选定的软件开发模型中定义的生存周期,进行适当裁剪,使他完全适合于本单位的需求。所谓裁剪,就是对元模型中定义的内容进行增、改、删,去掉对本单位不适用的内容,同时进一步细化,从而构成了完全适合本单位的“软件生存周期模型裁剪指南”。该指南在软件组织内部,专门供高层经理和项目经理在软件策划中选取软件开发模型时使用。