软件工程第四章——软件过程

4.1过程

过程是一组将输入转化为输出的相互关联或相互作用的活动。
过程:涉及活动,约束和资源的一系列步骤,这些步骤产生某种预期的输出
过程是涉及的工具和技术的集合

4.1.2过程的重要性

对一系列活动强加一致性和结构性
指导我们了解,控制,检查和改进活动
使我们能够获得经验并一直传承

什么是软件过程?

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程描述为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的具体目标。

4.2.2过程方法

过程方法是系统地识别和管理组织内所使用的过程,保证更有效地获得期望的结果,包括:
管理过程
实现过程
支持过程

4.2.3软件过程

软件开发活动:
问题定义 、需求开发 、软件设计、 软件构造 、软件测试

  • 问题定义:人们通过开展技术探索和市场调査等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。
    问题提出->可行性研究->可行性分析报告
  • 需求开发:在可行性硏究之后,分析、整理和提炼所收集到的用户需求,建立完整的需求分析模型,编写软件需求规格说明。
  • 软件设计:根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。
    包括:体系结构设计、设计接口、组件设计、数据库设计
  • 软件构造:概括地说是将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。
  • 软件测试:检查和验证所开发的系统是否符合客户期望,主要包括单元测试、子系统测试、集成测试和验收测试等活动。
  • 软件维护:系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。

4.2.6软件开发管理

  1. 软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量和风险进行控制和管理的活动。
    包括:计划、领导 、组织、控制
  2. 软件配置管理是通过执行版本控制、变更控制的规程,并且使用合适的配置管理软件,来保证所有产品配置项的完整性和可跟踪性

4.3软件过程模型

软件过程模型是对软件过程的抽象描述
包括:有技能且受过训练的人员、工具和设备、定义任务之间关系和规程和方法。

4.3.3常见的软件过程模型

  1. 瀑布模型
    将基本的开发活动看成是一系列界限分明的独立阶段,这是一种计划驱动的软件过程,有利于规范软件开发活动。
瀑布模型
适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种**文档驱动**的模型。
**瀑布模型的特点和优点**
特点:
(1)阶段间具有顺序性和依赖性
(2)推迟实现的观点
(3)质量保证的观点
优点:
(1)可强迫开发人员采用规范的方法
(2)严格地规定了每个阶段必须提交的文档
(3)要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证
  1. 原型化模型
    原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略。

原型模型一快速原型模型:
在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求快速建造一个原型(可视化的软件样机,展示系统的主要功能和接口),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。

原型模型存在的问题:
(1)为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。
(2)为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。
(3)在需求没有完全弄清楚,过程管理不够严格时会影响最终产品的性能。
对原型实现模型的基本要求
体现主要的功能;提供基本的界面风格;展示比较模糊的部分,以便于确认或进一步明确,防患于未然;原型最好是可运行的,至少在各主要功能模块之间能够建立相互衔接

  1. 迭代式开发
    将描述、开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分部分地逐步交付。

包括:
增量模型:在毎—个新的发布中逐步増加功能直到构造全部功能。
迭代模型:一开始提交一个完整系统,在后续发布中补充完善各子系统功能。

增量模型的优点
1.在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。
2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。
逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品从而减少一个全新的软件可能给客户组织带来的冲击。
Δ.采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。

  1. 可转换模型
    利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统。

由于数学方法具有严密性和准确性,形式化方法所交付的系统具有较少的缺陷和较高的安全性。
特别适合于那些对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证。

  1. 螺旋模型( Spiral mode l)
    螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
    瀑布模型+快速原型+风险分析=螺旋模型
优点:

 - 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标
 - 减少了过多测试或测试不足
 - 维护和开发之间并没有本质区别

缺点:

 1. 风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大
 2. 主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险。
 3. 随着迭代次数的增加,工作量加大,软件开发成本增加。
 
  1. 喷泉模型( Fountain mode)l
    该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的。
    是一种以用户需求为动力,以对象作为驱动的模型,主要用于支持面向对象开发过程,体现了软件创建所固有的迭代和无间隙的特征。克服了瀑布模型不支持软件重用和多项开发活动集成的局限性

其特点如下:
1.开发过程有分析、系统设计、软件设计和实现4个阶段
2.各阶段相互重叠,它反映了软件过程并行性的特点
3.以分析为基础,资源消耗成塔型。
4.反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。
5.强调增量开发,整个过程是一个迭代的逐步提炼的过程。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值