软件过程

Posted by 令德湖周杰伦 on 02-25,2020

概述

软件的诞生和生命周期是一个过程,我们总体上称这个过程为软件过程。软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动,每一项活动又可以分为一系列的工程任务。任何一个软件开发组织,都可以规定自己的软件过程,所有这些过程共同构成了软件过程。
通常,使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分哪些阶段及各个阶段的执行顺序,因此也称为过程模型。

一、软件生命周期

任务事物都有一个从产生到消亡的过程,事物从其孕育开始,经过诞生、成长、成熟、衰退,到最终灭亡,就经历了一完整的生命周期。

软件生命周期

  1. 概念:从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试于验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。
  2. 作用:有利于人们更科学、更加有效地组织和管理软件生产;从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定相对对立的任务,在资源分配、时间把握和项目管理上都会比较容易控制。

阶段

  1. 可行性研究
  2. 需求分析
  3. 软件设计
  4. 编码
  5. 软件测试
  6. 软件维护

二、软件过程模型

在软件过程中,人们通过建立抽象的软件开发模型,把软件生命周期各个活动或步骤安排到一个框架中,将软件开发的全过程清晰且直观地表达出来。

瀑布模型

各个阶段之间通常是按固定的顺序连接的,前一阶段的输出往往就是后一阶段的输入。特点如下:

  1. 线性的开发模型,回溯性很差。
  2. 基于里程牌的阶段过程模型,能及时发现各个阶段产生的缺陷。
  3. 强调开发过程的阶段性,每个阶段完成特定的任务。
    所以适用于:需求不发生或者很少发生变化,开发人员有丰富的经验,项目风险较低。

快速原型模型

第一步就是快速建立一个能反映用户主要需求的原型系统(最终产品的子集),通常用户在试用之后会提出许多意见,开发人员然后再快速的修改...一旦用户确定后,便可根据产品写说明文档。
快速原型模式是不带反馈环的,这是主要的优点,软件产品的开发基本上是按线性顺序进行的,因为原型系统已经和用户交互而得到了验证,开发人员也学了系统不应该做什么(应做什么)。

增量模型

把待开发的软件系统模块化,将每个模块作为一个增量组建,从而分批次地分析、设计、编码、和测试这些增量组件,是一个递增式的过程。
最大的特点就是将待开发的软件系统模块化和组件化,有如下优点:

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

适用于:产品可以分批次交付,能够被模块化,开发人员对产品领域不熟悉,项目管理人员把握全局的水平较高。

螺旋模型

31582601991_.pic.jpg
该模型将瀑布模型与快速原型模式结合起来,并且加入了风险分析。
适用于:风险较大的大型软件项目的开发,它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险,但管理复杂,可操性不强,对管理人员要求较高。

喷泉模型

是一种过程模型,同时也支持面向对象开发。
21582601598_.pic.jpg
体现了面向对象方法的迭代和无间隙性,迭代是指各阶段需要多次重复,无间隙性指各个阶段之间没有明显的界限,并常常在时间上互相交叉,并行进行。

基于组件的开发模型

使用现有的组件以及系统框架进行产品的开发,由于现有组件可靠性相对比新开发组件高出很多。充分体现了软件复用的思想,降低了开发和成本,并且加快了产品开发。

统一软件开发过程模型

基于UML的一种面向对象软件和迭代思想的开发模型,解决了螺旋模型的可操性问题,采用迭代和增量递进的开发策略,并以用例驱动为特点,集中了多个软件开发模型的优点。
51582601993_.pic.jpg

敏捷模型

2001年2月,‘敏捷软件开发宣言’,该宣言给出了4个价值观:个体与交互高于过程和工具,可运行软件高于详尽的文档,与客户协作高于合同谈判,对变更及时响应高于遵循计划
特点:避免了传统的重量级软件开发过程复杂、文档繁琐和对变化的适应性弱等弊端,强调软件开发过程中团队成员之间的交流、过程的简洁性、用户反馈、对所做决定的信心以及人性化的特征。

XP

极限编程,是敏捷模型的实践方法。具体实践有:

  1. 完整的团队
  2. 计划对策
  3. 系统比喻
  4. 小发布
  5. 测试
  6. 简单设计
  7. 结对编程
  8. 设计改进
  9. 持续集成
  10. 代码全体共有
  11. 编码标准
  12. 可持续步调
    41582601992_.pic.jpg