软件工程第二章-软件过程
第2章 软件过程
Plan 软件规格说明 Do 软件开发 Check 软件确认 Action 软件演进
80年代后,软件能力成熟度模型已成为软件 过程改进的标准。
软件工程框架
目标 用 性 确 性 合 基 本 过 程 算 性 支 持 过 程
可
正
选取适宜的开发范型 原 采用合适的设计方法 则 提供高质量的工程支持
统一过程模型
• 统一过程模型(Rational Unified Process) 是种软件工程过程,它提供了如何在开发组织中 严格分配任务和职责的方法;统一过程模型是一 个过程产品,有自己的过程框架,捕获了现代软 件开发中的最佳实践。统一过程模型具有三大特 点:用例驱动,以架构为中心,迭代和增量开发。
(2) 需求分析
本阶段要回答的关键问题是“目标系统应当做什么?”
(3) 软件设计
设计是软件工程的技术核心。本阶段要回答的关键问题 是“如何实现目标系统?”
软件生存周期
各个阶段所要完成的基本任务
(4) 程序编码和单元测试
本阶段要解决的问题是“正确地实现已做的设计”,即 “如何编写正确的、可维护的程序代码?”
第二章 软件过程
2.1 软件过程概述
ISO 9000定义:软件工程过程是把输入转 化为输出的一组彼此相关的资源和活动。
从软件开发的观点看,它就是使用适当的 资源(包括人员、硬软件工具、时间等), 为开发软件进行的一组开发活动,在过程 结束时将输入(用户要求)转化为输出 (软件产品)。
软件工程过程定义了: 方法使用的顺序、 要求交付的 文档资料、为保证质量和适应变化所需要的管理、 软件开发各个阶段完成的里程碑。 软件工程过程包含四种基本的过程活动:
《软件工程与项目管理》2-2-软件过程(2)
初始阶段 为系统建立商业案例和确定项目的边界。 精化阶段 分析问题领域,建立健全的体系结构基础,编制项目计划,
淘汰项目中最高风险的元素。 构建阶段 管理资源和控制运作以优化成本、日程、质量的生产过程。 交付阶段 将软件产品交付给用户。
2.2 软件过程模型
专用过程模型
基于构件的开发模型:复用已有构件库中的软构件,逐步完 成系统设计及实现。
形式化系统开发模型:基于形式化数学变换的软件开发方法。 面向方面的开发模型:将系统的横切关注点和核心关注点分
开,避免横切关注点散乱分布在系统的多个类中。
2.2 软件过程模型
Rational统一过程
2.2 软件过程模型
软件过程模型
瀑布模型 演化过程模型 增量过程模型 专用过程模型 Rational统一过程
敏捷过程与极限编程 微软软件过程
2.2 软件过程模型
瀑布模型
瀑布模型(Waterfall Model)也称软件生存周期模型或线性顺序 过程模型。瀑布模型是一种线性模型。
2.2 软件过程模型
螺旋模型:将瀑布模型和快速原型模型结合,强调其他模型所忽视 的风险分析,吸收了“演化”的概念,可使开发人员和客户对每个 演化层的风险有所了解,继而做出应有反应。
将开发过程划分为制定计划、 风险分析、实施工程和客户评 估四类活动。将沿着螺旋线继 续进行,自内向外逐步延伸, 最终得到满意的软件产品。
加强开发者与用户的沟通需求,让客户全面参与软件的开发设计, 保证变化的需求及时得到修正。
主要目标在于降低因需求变更而带来的成本。 把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过
程。
02第二章:软件过程
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
软件生命周期的基本任务 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 Rational统一过程 敏捷过程与极限编程 能力成熟度模型
基本思想
使用原型及其他方法来尽量降低风险。 理解这种模型的一个简便方法,是把它 看做在每个阶段之前都增加了风险分析 过程的快速原型模型,如图2.5所示。图 中带箭头的点画线的长度代表当前累计 的开发费用,螺线旋过的角度值代表开 发进度。
图2.6 喷泉模型
为避免使用喷泉模型开发软件时开发过 程过分无序,应该把一个线性过程(例 如,快速原型模型或螺旋模型中的中心 垂线)作为总目标。但是,同时也应该 记住,面向对象范型本身要求经常对开 发活动进行迭代或求精。
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
第二章:软件过程
软件工程过程是为了获得高质量软件 所需要完成的一系列任务的框架,它规定 了完成各项任务的工作步骤。 本章讲述在软件生命周期全过程中应 该完成的基本任务,并介绍各种常用的过 程模型。
第二章:软件过程
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
图2.2 加入迭代过程的瀑布模型
瀑布模型的优点
可强迫开发人员采用规范的方法 严格地规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经 过质量保证小组的仔细验证
瀑布模型的缺点
瀑布模型是由文档驱动的”:在可运行 的软件产品交付给用户之前,用户只能 通过文档来了解产品是什么样的。
RUP核心元素
软件工程教案--第2章软件过程2019-精品文档
08:02:38
重庆理工大学计算机科学与工程学院 李梁(liliang@)
3
2.1 软件过程
概念 软件过程是为了开发出软件产品,或者是为了完成软件工程 项目而需要完成的有关软件工程的活动 通常使用生命周期模型简洁地描述软件过程 每项活动可分为一系列工程任务,科学的软件过程是一组适 Evaluation only. 合软件项目特点的任务集合,任务集合包括一组软件工程任 ated with Aspose.Slides for .NET 3.5 Client Profile 5.2 务、、里程碑、应交付的产品。
08:02:38
质量有保障
参考啤酒生产过程
8
Hale Waihona Puke 重庆理工大学计算机科学与工程学院 李梁(liliang@)
软件工程过程:一个软件机构针对某一类软件产品为自己规 定的工作步骤。 软件规格说明:规定软件的功能及其运行的限制 软件开发:产生满足规格说明的软件 Evaluation only. 软件确认:确认软件能够完成客户提出的要求 软件演进:为满足客户的变更要求,软件必须在使用的过 ated with Aspose.Slides for .NET 3.5 Client Profile 5.2 程中演进 Copyright 2019-2019 Aspose Pty Ltd.
什么是统一过程?——自学 什么是敏捷过程?有哪些模型?
——自学
什么是软件工程实践?
08:02:38 重庆理工大学计算机科学与工程学院 李梁(liliang@)
2
第2章 软件过程
2.1 什么是软件过程? 2.2 什么是软件生命周期? 2.3 软件过程评估:能力成熟度模型是什么?
第二章软件过程
渐增式开发
迭代式开发(螺旋式开发)
软件工程 - 2011 - 第二章 软件过程
27
阶段式开发(演化模型)
增量开发
迭代开发
增量和迭代模型
软件工程 - 2011 - 第二章 软件过程
28
增量模型
增量模型采用随着日程时间的进展而交错 的线性序列,每一个序列产生软件的一个 可发布的“增量”;
32
增量模型
风险更大的增量模型
软件工程 - 2011 - 第二章 软件过程
33
螺旋模型
软件项目中的风险:
人员; 硬件设备; 项目的生存能力等。
通过使用原型或其他手段降低风险,是螺旋模型 中蕴涵的基本思想;
可以把螺旋模型简单地理解为在每一个阶段之前 都增加了风险分析的瀑布模型(或快速原型模 型),如下图:
能有计划地管理技术风险; 每个增量都发布了一个高质量的可操作的版本,
用户能在较短时间内使用上部分功能; 逐步增加产品功能可以使用户有较充裕的时间
学习和适应新产品,减少一个全新的软件可能 给客户带来的冲击。
软件工程 - 2011 - 第二章 软件过程
30
增量模型
增量模型存在的困难:
要求每个新的增量构件能够无缝地集成到现有 的软件体系结构中,必须不破坏原来已经开发 的产品;
风险分析──分析所选 方案,考虑如何识别和 消除风险;
实施工程──实施软件 开发;
客户评估──评价开发 工作,提出修正建议, 并计划下一个阶段的任 务;
软件工程 - 2011 - 第二章 软件过程
37
螺旋模型的优点
实质上相当于在瀑布模型的每个阶段开始 前引入风险分析,并由客户对阶段性产品 做出评审,这对保证软件产品质量十分有 利;
软工程第二章软件过程
重复级的关键过程
项目策划:制定软件开发计划书 需求管理:管理和跟踪软件需求 项目跟踪和监督:开发进度管理,修订开发计划 质量保证:检查文档和工作产品存在的错误和偏
差 配置管理:项目的工作产品的标识和统一管理以
及变更控制 子合同管理:分包商的合同管理,产品检测和质
量评审
CMM的核心概念
面向对象的特征:对象惟一性;分类性;继承 性;多态性(多形性)。
统一过程模型
统一过程(Unified Process,UP) 是风险 驱动的、基于用例技术的、以架构为中心 的、迭代的、可配置的软件开发流程。
统一过程是以用例驱动的,以架构为中心, 迭代和增量的过程。
统一过程是一个软件开发过程,是一个通 用的过程框架:
原型(prototype)
软件需求框架描述
软件原型创建 软件需求细部定义
软件产品开发 软件有效性验证
软件产品 初始版本 中间版本 最终版本
原型的特点和方法
特点
通过实物获取真实的需求 通过实验澄清存在的问题 适应需求不明确,方向不确定的情况
构造原型的方法
模拟界面 实现主要业务流程 实现关键技术 DEMO版
概要设计(general Design)
我们到底要做成一个什么样的东西,要做到心中有谱。
详细设计(detail design)
这就是我们要做成的东西,心中有物了。
编码测试(coding & test)
把心中的物构造成实实在在的物。 测试是发现软件中存在的缺陷,而不是验证软件的正确性
瀑布型(V模型)
初始 细化 构造 移交
RUP的开发模式
统一过程准则
准则
迭代的开发软件 需求管理 基于构件的体系结构 可视化软件建模 验证软件质量 控制软件的变更
软件工程第二章软件过程
第二章:软件过程目标:软件工程和软件过程模型的概念;了解3个一般的软件过程模型及何时使用它们;了解软件需求工程,软件开发,测试和进化中所涉及的基本过程活动;理解为什么软件过程要有效地组织以应对软件需求和设计上的变更;了解Rational统一过程是如何集成好的软件过程实践来产生一个可适应的软件过程。
所有的软件过程都必须具有4种对软件工程来说是基本的活动。
它们是:1.软件描述:必须定义软件的功能以及软件操作上的约束。
2.软件设计和实现:必须生产符合描述的软件。
3.软件有效性验证:软件必须得到有效性验证,即确保软件是客户所想要的。
4.软件进化:软件必须进化以满足不断变化的客户需要。
2.1软件过程模型一软件过程模型一般有1.瀑布模型:该模型将基本的过程活动,描述,开发,有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段,软件设计阶段,实现阶段,测试阶段,等等。
2.增量式开发:该方法使得描述活动,开发活动和有效性验证活动交织在一起。
系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。
3.面向复用的软件工程:该方法使得描述活动,开发活动和有效性验证活动交织在一起。
系统开发过程着重于集成这些组件到新系统中,而非从头开发。
2.1.1瀑布模型一瀑布模型中的主要阶段直接映射基本的开发活动:1.需求分析和定义2.系统和软件设计3.实现和单元测试4.集成和系统测试5.运行和维护二适合采用瀑布模型的时候瀑布模型是与其他工程过程模型相一致的,在它的每个阶段都要生成文档。
这使得过程是可见的,项目经理能够根据项目计划监控项目的过程。
它的主要问题在于它将项目生硬地分解成这些清晰的阶段。
关于需求的责任和义务一定要在过程的早期阶段清晰界定,而这又意味它对用户需求变更的响应较困难。
所以只有在对需求了解的好,而且在系统开发过程中不太可能发生重大改变的时候,适合采用瀑布模型。
瀑布模型的一个重要变形是形式化系统开发。
软件工程2 软件过程
1
软件过程
软件过程概述 软件过程模型 敏捷开发过程
2
软件过程
过程是一组将输入转化为输出的相互关联或相互作用的活动。
用户需求
过程
客户满意 的产品
3
软件过程
软件开发活动
问题定义 需求开发 软件设计 软件构造 软件测试
• 构想文档 • 用户故事
• 分析模型
• 设计模型 • 软件详细设计文档
13
瀑布模型
原型化模型
迭代式开发
可转换模型
瀑布模型
需求定义与分析 软件设计 软件构造 软件测试 软件运行与维护
14
原型化模型
需求定义与分析 软件设计
确认 验证
软件构造 原型化 软件测试 软件运行与维护
15
迭代式开发--瀑布模型
16
迭代式开发
开发系统 构建发布1
开发人员 时间
构建发布2
构建发布3
成本 功能 进度
质量
20
敏捷宣言
敏捷宣言强调的敏捷软件开发的四个核心价值为: 个体和交互 可以工作的软件 客户合作 响应变化 胜过 胜过 胜过 胜过 过程和工具 面面俱到的文档 合同谈判 遵循计划
虽然右项也具有价值,但敏捷方法认为左项具有更大的价值 。
21
敏捷宣言的十二个基本准则
• 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
计划
领导
项目 管理
组建项目小组,明确 成员的分工和职责, 配置各种资源 控制项目的范围变更 ,监控项目进展,发 现并纠正问题
组织
控制
11
软件开发管理
软件配置管理是通过执行版本控制、变更控制的规程,并且使用合适的配置 管理软件,来保证所有产品配置项的完整性和可跟踪性。
软件工程教案--第2章软件过程PPT资料82页
什么是软件工程?
什么是工程化思想?
什么是软件E过v程alu?a有tio哪n些on过ly程. 模型? ated with如A何sp建os立e.过Sli程de模s 型fo?r .NET 3.5 Client Profile 5.2
Copyright 2019-2019 Aspose Pty Ltd.
✓ 技术及工具框架:实现过程活动的自动化及需要的设备与 工具
14:58:49
重庆理工大学计算机科学与工程学院 李梁(liliang@)
5
2.1 软件过程-软件工程目标
目标 可修改性 有效性
•基本目标: 付出较低的开发成本达到要求的软件 功能取得较好的软件性能 开发的软件易于移植需要较低的维护
Copyright 2019-2019 Aspose P工t具y Ltd.
方法 过程
层次
质量焦点
✓ 软件工程是一门建立在以质量焦点为基础,分过程、方法和 工具三个层次的综合技术(三要素)
14:58:49
重庆理工大学计算机科学与工程学院 李梁(liliang@)
3
2.1 软件过程
Copyright 2019-2019 Aspose Pty Ltd.
任务明确、组织有序、纪律严明、整体优化
14:58:49
重庆理工大学计算机科学与工程学院 李梁(liliang@)
8
2.1 软件过程-软件过程模型
✓ 软件过程模型:就是把软件生命周期中各项开发活动的流程 用一个合理的框架(开发模型)来规范描述。
可适应性 可移植性 可追踪性
➢从短期效益看,追求高质量会延长软件开 发时间并且增大费用,似乎降低了生产率。
➢对开发人员而言,如果非得在质量与生产 率之间分个主次不可,那么应该是质量第一,
第2章 软件过程
图2.8 喷泉模型
小结 软件过程是为了获得高质量软件 产品所需要完成的一系列任务的框架, 它规定了完成各项任务的工作步骤。 软件过程必须科学、合理,才能开 发出高质量的软件产品。
软件生命周期在概念上划分成问 题定义、可行性研究、需求分析、概 要设计、详细设计、编码和单元测试、 综合测试、维护等八个阶段。 实际从事软件开发工作时,软件 规模、种类、开发环境、使用的技术 方法等因素,都影响阶段的划分。因 此,一个科学、有效的软件过程应该 定义一组适合于所承担的项目特点的 任务集合。
图2.2 实际的瀑布模型
演化模型 许多软件项目在开发早期对软件需求 的认识是模糊的、不确定的,因此软件很 难一次开发成功。 1、获取一组基本的需求后,通过快 速分析构造出该软件的一个初始可运行版 本原型(prototype) 2、根据用户在试用原型过程中提出 的意见和建议、或者增加新的需求,对原 型进行改造,获得原型的新版本,重复这 一过程,最终得到令客户满意的软件产品。
时,软件生命周期必须是循环的,
也就是说,软件过程必须支持反馈
和迭代。喷泉模型是一种典型的适
合于面向对象范型的过程模型。
每个软件开发组织都应该选择适 合于本组织及所要开发的软件特点的 软件生命周期模型。这样的模型应该 把各种生命周期模型的合适特性有机 地结合起来,以便尽量减少它们的缺
5.详细设计 具体任务是把解法具体化,即回答 “应该怎样具体地实现这个系统”。设 计出程序的详细规格说明。 6.编码和单元测试 关键任务是写出正确的容易理解、 容易维护的程序模块。 7.综合测试 通过各种类型的测试(及相应的调试) 使软件达到预定的要求。
6.编码 用某种程序设计语言,将设计 的结果转换为可执行的程序代码。 7.测试 发现并纠正软件中的错误和缺 陷。测试主要包括单元测试、集成 测试、确认测试和系统测试。
第二章 软件过程
2.3快速原型模型 快速原型模型
开始
停止
需求的采集和细化
产品样品 (需求确认 需求确认) 需求确认
快速设计
对原型加工 (需求精确化 需求精确化) 需求精确化
建造原型
用户评价原型
使用原型确定需求的过程
快速原型的本质是“快速”。开发人员 快速原型的本质是“快速” 应该尽可能快地建造出原型系统, 应该尽可能快地建造出原型系统,以加速软 件开发过程,节约软件开发成本。 件开发过程,节约软件开发成本。原型的用 途是获知用户的真正需求,一旦需求确定了, 途是获知用户的真正需求,一旦需求确定了, 原型将被抛弃。 原型将被抛弃。
增量模型(Incremental model) 1.4.3 增量模型
增量模型也称为渐增模型。 增量模型也称为渐增模型。 使用增量模型开发软件时, 使用增量模型开发软件时,把软件产品作为一系列的增 量构件来设计、编码、集成和测试。 量构件来设计、编码、集成和测试。每个构件由多个相互作 用的模块构成,并且能够完成特定的功能。使用增量模型时, 用的模块构成,并且能够完成特定的功能。使用增量模型时, 第一个增量构件往往实现软件的基本需求,提供最核心的功 第一个增量构件往往实现软件的基本需求,提供最核心的功 能。
原型模型的适应场合
原型模型比瀑布模型更符合人们认识事 物的过程和规律, 物的过程和规律,是一种较实用的开发 框架。 框架。 它适合于那些不能预先确切定义需求的 软件系统的开发, 软件系统的开发,更适合于那些项目组 成员(包括分析员、设计员、 成员(包括分析员、设计员、程序员和 用户) 用户)不能很好交流或通信有困难的情 况。
6.编码和单元测试 6.编码和单元测试 编码和单元测试 这个阶段的关键任务是写出正确的容易理解、 这个阶段的关键任务是写出正确的容易理解、 容易维护的程序模块。 容易维护的程序模块。 7.综合测试 7.综合测试 综合测试 这个阶段的关键任务是通过各种类型的测试 (及相应的调试 使软件达到预定的要求。 及相应的调试)使软件达到预定的要求 及相应的调试 使软件达到预定的要求。
软件工程-软件过程
第二章软件过程二.一软件过程概述•软件地诞生与生命周期是一个过程,我们总体上称这个过程为软件过程。
软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成地有关软件工程地活动,每一项活动又可以分为一系列地工程任务。
任何一个软件开发组织,都可以规定自己地软件过程,所有这些过程同构成了软件过程•过程定义了运用方法地顺序,应该付地文档资料,为保证软件质量与协调变化所需要采取地管理措施,以及标志软件开发各个阶段任务完成地里程碑。
通常,使用生命周期模型简洁地描述软件过程。
生命周期模型规定了把生命周期划分为哪些阶段及各个阶段地执行顺序,因此也称为过程模型•二.二.一 软件生命周期地概念•软件产品地生命周期是指从设计该产品地构想开始,到软件需求地确定,软件设计,软件实现,产品测试与验收,投入使用以及产品版本地不断更新,到最终该产品被市场淘汰地全过程。
•软件生命周期这个概念从时间地角度将软件地开发与维护地复杂过程分解为了若干个阶段,每个阶段都完成特定地相对独立地任务。
•二.二.二 传统软件生命周期地各个阶段•在传统地软件工程,软件产品地生命周期一般可以划分为六个阶段,如图所示。
传统地软件生命周期在软件工程,们通过建立抽象地软件开发模型,把软件生命周期地各个活动或步骤安排到一个框架,将软件开发地全过程清晰且直观地表达出来。
常见地软件开发模型有很多种,这里主要介绍瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,基于组件地开发模型,统一软件开发过程模型以及敏捷模型与极限编程。
•二.三.一瀑布模型瀑布模型是一种线地开发模型,具有不可回溯。
开发员需要等前一阶段地任务完成后,才能开始行后一阶段地工作,并且前一阶段地输出往往就是后一阶段地输入。
由于其不可回溯,如果在软件生命周期地后期发现并要改正前期地错误,那么需要付出很高地代价。
传统地瀑布模型是文档驱动地。
如图所示。
•二.三.一瀑布模型•瀑布模型地优点是过程模型简单,执行容易;缺点是无法适应变更。
实用软件工程 第2版 第2章 软件过程
几种模型之间的关系
5.软件测试 软件测试是保证软件质量的关键步骤。软件测试的目的是发现软件产品中存在的 软件缺陷,进而保证软件产品的质量。在软件开发的实践中,软件缺陷的产生是必然 的。软件缺陷发现得越晚,弥补缺陷所需的成本就越高,损失也就越大。为了尽早发 现软件缺陷,有效地进行软件测试是必须的。按照测试点的不同,测试可以分为单元 测试、集成测试、系统测试和验收测试。
16
瀑布模型
瀑布模型的优点是过程模型简单,执行容易;缺点是 无法适应变更。瀑布模型适应于具有以下特征的软件开 发项目。
• 在软件开发的过程中,需求不发生或发生很少变化,并且开 发人员可以一次性获取到全部需求。否则,由于瀑布模型较差的 可回溯性,在后续阶段中需求经常性的变更需要付出高昂的代价。 • 软件开发人员具有丰富的经验,对软件应用领域很熟悉。 • 软件项目的风险较低。瀑布模型不具有完善的风险控制机制。
第2章 软件过程
本章目标
掌握软件过程的定义和基本结构 熟悉软件生命周期及阶段任务 熟悉常见的几种软件过程模型
2
目录 content
第一节 第二节 第三节
软件过程概述 软件生命周期 软件过程概述
软件的诞生和生命周期是一个过程,我们总体上称这个过程为软件过程。 软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成 的有关软件工程的活动,每一项活动又可以分为一系列的工程任务。任何一 个软件开发组织,都可以规定自己的软件过程,所有这些过程共同构成了软 件过程。
13
第三节
软件过程模型
• 瀑布模型 • 快速原型模型 • 增量模型 • 螺旋模型 • 喷泉模型
• 基于组件的开发模型 • 统一软件开发过程模型 • 敏捷过程与极限编程 • 几种模型之间的关系 • 选择软件过程模型
软件工程——软件过程
途径
由用户参与,以软件需求规格说明书为依据进行
确认测试
阶段性产品
可供用户使用的软件产品(文档,源程序)
13
福州大学 亓晓静
软件维护
任务
对使用后的软件进行维护例如: 修正使用过程中发现的错误-纠错性维护 增加新的功能-完善性维护 从一个环境搬迁到另一个环境-适应性维护 ……
41
福州大学 亓晓静
一、RUP的二维开发模型
值得注意的是,几乎所有的工作流在所 有的时间段内均有工作量,只是工作量 的大小不同而已。这与瀑布式开发模型 有明显的不同。
42
横轴:时间轴
展开了过程的生命周期 初始、细化、构造和交付
体现开发过程的动态结构
纵轴:内容轴
列出开展的活动项目:9个核心工作流 分为6个核心过程工作流(Core Process Workflows) 3个核心支持工作流(Core Supporting Workflows) 体现开发过程的静态结构
块逐步进行集成和测试
技术途径和工具
以概要设计规格说明书和集成测试计划为依据,
进行集成模块并进行测试 IDE, 专有工具等
阶段性产品
生成满足概要设计要求、可运行的系统源程序和
系统集成测试报告
12 福州大学 亓晓静
确认测试
任务
根据软件需求规格说明书,测试软件系统是否满
足用户的需求
软 件 生 命 周 期
详细设计
编码和单元测试
系统实现
综合测试 Change
5
测试员
运 行 维 护
福州大学 亓晓静
阶段
问题定义 需求分析
任务
问题是什么
软件工程2 软件过程
发 · 编码 单元测试 综合测试
运 行 维
系统运行、系统维护 · 上线使用
护 · 长用、常用、好用
一软件过程
5、软件过程的基本任务
问题定义 可行性研究 需求分析 概要设计
明确要解决的问题是什么? 上一个阶段所确定的问题是否有行得通的解决方法
目标系统必须做什么 怎样实现目标系统
详细设计 编码和单元测 试
4、螺旋模型
1. 是一种引入了风险分析的模型 2. 是瀑布模型、快速原型方法和风险分析方法的有机结合。
三 软件过程模型
4、螺旋模型
螺旋模型特性
1. 螺旋模型被划分为若干框架活动 2. 关注软件的重用 3. 螺旋模型可以降低风险 4. 需要风险评估的经验 5. 逐步明确需求
螺旋模型特性
6. 螺旋模型一个周期执行时间太长,而且要有方法和自动化工具支持, 否则无法实施
特征:迭代
迭代:软件的某个部分常常被重复工作多次,相关对象在每 次迭代中随之加入渐进的软件成分。 重复 演进 无间隙
三 软件过程模型
喷泉模型
三 软件过程模型
喷泉模型特性
优点: • 开发人员可以同步进行开发。可以提高软件项目开发效率,节省
开发时间。 • 具有较好的可移植性,容易适应各种运行环境 缺点: • 由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要
5. 当使用增量模型时,第一个增量往往是核心产品,也就是说 第一个增量实现了基本的需求。
6. 由于很快发布了第一个版本,因此可以减少用户需求的变更 ;使投资获得明显回报;但要求软件具有开放结构。
7. 允许增量投资,即在项目开始时,可以仅对一个或两个增量 投资。
增量模型特点:
8. 可将早期增量作为原型,从中获得对后面增量的需求经验; 项目总体性失败的风险比较低。
软件工程课件-第2章-过程模型
31
螺旋模型
大型软件开发面临的重要问题:软件风险 如:产品交付给用户之后,用户不满意 开发进度落后,开发成本超出预算
产品完成前关键的技术人员跳槽
32
螺旋模型
•螺旋模型
累计成本 通过步骤进展 评价方案 识别和消除风险 决定目标、 方案和限制 风险 分析 评审 提交 风险 分析
难性的。 3、线性顺序模型每一步的工作都必须以前一阶段的输出为输入,这种 特征会导致工作中发生“阻塞”状态。
18
瀑布模型(Waterfall model)
虽然存在着上述的种种问题,但是线性顺序模型仍然有其值得肯定之处。 1、它提供了一个模板,使得分析、设计、编码、测试与维护工作可以在
该模板的指导下有序地展开,避免了软件开发、维护过程中的随意状态。
一个螺旋式周期
– – – –
协同模型
• 协同开发模型 Concurrent Development Model
13
瀑布模型
沟通
• 项目启动 • 需求获取
实际项目很少严格遵守该顺序. 客户通常难以清楚描述所有需求.
策划
• 项目估算 • 进度计划和项目跟踪
只有到项目接近尾声时,
才有可执行程序.
建模
• 分析和设计
经典
构建
• 编码和测试
生命周期
部署
• 交付 •支持和反馈
14
瀑布模型(Waterfall model)
作为一个连续的模型:从两个维度描述过程,每个过程域都根 据特定的目标和实践要求,进行严格的评估,并根据能力水平 评定为不完全级、已执行级、已管理级、已定义级、已定量管 理级、优化级。 作为一个阶段的模型:定义了五个成熟度等级:初始级、可重 复级、定义级、管理级、优化级 。
软件工程——2.软件过程模型
Describe how the system should perform the required tasks.
回顾: Software Life Cycle
(4) Implementation: Program various modules of the system. (5) Integration: Combine the modules and verify that the whole system works correctly. (6) Maintenance: Maintain the operation of the system, remove bugs as they are discovered. (7) Retirement: Migrate to a new system.
(可行性论证论告)
(需求说明书) (设计文档) (程序) (测试报告) (维护报告)
需求分析
开发 时期
设 计
编 码 测 试
运行时期
运行与维护
回顾:Software Life Cycle
(1) Requirements:
Identify the needs of the users by interviewing them. (2) Specification or Analysis: Describe what the software system should do to meet the requirements. (3) Design:
软件工程三要素:方法、工具、过程
2.1 软件过程
软件过程是“为了获得软件所需要完成的 一系列任务的工作步骤”。 软件过程定义了运用方法的顺序、各阶段 应交付的文档资料、为保证软件质量所要 采取的管理措施,以及标志软件开发各个 阶段任务完成的结果形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编码
运行 时期
1. 瀑布模型
瀑布模型(waterfall model)是软件工程最早的范例,
也称经典生命周期,它提出了一个系统的、顺序的软 件开发方法,从用户需求规格说明开始,通过计划、 建模、构建和部署的过程,最终提供一个完整的软件 并提供持续的技术支持。
沟通 项目启动 需求获取 策划 项目估算 进度计划 项目跟踪
… 框架活动 # n 动作 # n.1 任务集 …… 动作 # n.m 任务集 工作任务、工作产品、 质量保证点、项目里程碑
工作任务、工作产品、 质量保证点、项目里程碑
只有一种软件过程吗?
软件过程的种类很多,区别主要体现在几个方面: 组成过程的各个活动(包括普适性活动)、动作和任务,及其相互依 赖的关系都可能不同; 动作和任务的细化程度可能不同; 工作产品的定义和要求可能不同; 质量保证活动的应用方式可能不同; 项目跟踪和控制活动的应用方式可能不同; 过程描述的详细程度和严谨程度可能不同; 客户和利益相关者对项目参与的程度可能不同; 软件团队所赋予的自主权可能不同; 队伍组织和角色的明确程度可能不同。
下优先级进行增量开发:
第一个增量实现基本的文件管理、编辑和文档生成功能
; 第二个增量实现更加完善的编辑和文档生成功能; 第三个增量实现拼写和文法检查功能; 第四个增量完成高级的页面布局功能; ……
增量模型的特点
增量过程模型综合了线性、并行、演化三种过程流的
特征。
对于每个增量,使用的是线性过程流;
过程流
过程流(process flow):描述了在执行顺序和执行时
间上,如何组织框架中的活动、动作和任务。 大致有四大类不同的过程流:
通用过程模型
软件过程常使用“过程模型”来表述。 一个通用的软件过程模型,包括以下工作:
选择一种过程流。 2. 定义框架活动:针对给定的问题、开发人员和利益相 关者,制定每个框架活动中需要完成哪些动作。
准确需求?困难!
事实上,完整而准确的需求是很难得到的,因为:
在开发早期,用户往往对系统只有一个模糊的想法,很
难完全准确地表达对系统的全面要求;
随着开发工作的推进,用户可能会产生新的要求; 开发者有可能在设计与实现的过程中遇到一些没有预料
到的实际困难,需要以改变需求来解脱困境。
因此,在很多实际项目中很难直接采用这种一次性的
常见的几种传统过程模型:瀑布模型、V模型、增量
过程模型、原型开发模型、螺旋模型、协同模型。
附:软件生命周期
软件生命周期(Life Cycle),也称生存周期,指软件
产品从提出、产生、发展到成熟,直至衰亡的整个 时间段。 软件生命周期的组成阶段:
1. 软件定义阶段:做什么?
问题定义→可行性研究→需求分析
增量之间有并行;
整个过程类似于演化,本质上也是迭代的。
每一个增量都应提交一个可以运行的产品。
每次增量得到的产品要交由客户使用或仔细评价,并
根据使用或评价的结果制定下一个增量计划。
每次增量需求的划分与增量实现的集成是以不影响系
统体系结构为前提的。
评价:增量模型
优点: 适用于人手不足的情况:早期的增量可以由少量人员实 现,若核心产品的口碑不错,则再投入更多人力。 客户的需求可以逐步提出来。 能在较短时间内提交可运行产品,增强了客户的信心。 可以规避技术风险:例如,系统需要利用某个正在开发 的新硬件,则可以在早期的增量中避免使用这个硬件, 以保证部分功能按时交付,不至于造成过分的延期。 缺点: 增量粒度难以选择; 确定所有的基本业务服务比较困难。
1.
例如在沟通活动中,可能包括启动、需求获取、需求系统、 谈判、规格说明、确认等动作。
3.
明确任务集:为每个动作制定所需要的任务集。
任务集由工作任务、相关工作产品、质量保证点和项目里程 碑等部分组成。 对于不同的软件项目,即便是相同的动作,确定的任务集也 可能不一样。
4. 编写或查找过程模式。
2. 软件开发阶段:如何做?
总体设计→详细设计→编码和单元测试→综合测试
3. 运行维护阶段:纠错、适应性修改、增强性修改、预
防性修改
计划 时期
问题定义 可行性研究
项目任务书 可行性报告 需求规格说明书 总体设计文档 详细设计文档 程序代码文本 测试 维护 测试报告
需求分析
开 发 时 期 总体设计
详细设计
软件过程的组成要素
软件过程是工作产品构建时所执行的一系列活动、动
作和任务的集合。
活动(activity):实现宽泛的大目标。 动作(action):阶段目标。 任务(task):关注小而明确的目标,产生实际产品。
软件过程由活动组成,活动由动作组成,动作由任务
组成。
软件过程框架(process framework)定义了若干个框
过程模式
开发团队在软件过程里会遇到很多问题,如果团队能
得到已有的经过验证的解决方案,将有助于快速地分 析和解决问题。
因此在软件过程中,最好能将遇到的过程问题、问题
环境、解决方案等记录下来,形成过程模式(process pattern) 。 过程模式提供了一个模板——一种在软件过程的背景 下,统一描述问题解决方案的方法。
征、处理功能等),并获得了利益相关者的认可。随后,可能有两种结果: ①原型系统可以通过一系列的增量开发,演化成为软件产品;或是②原型系 统被抛弃,采用其他过程模式建立产品软件。 相关的模式。客户沟通、迭代设计、迭代开发、客户评价、需求抽取。 已知应用和实例。当需求不确定时,推荐原型开发方法。
5.
部署:交付全部软件或部分增量,由用户使用并反馈 意见。
典型的普适性活动
在软件过程中,还需要补充一些贯穿始终的普适性活动,可帮
助团队管理和控制进度、质量、变更和风险。
软件项目跟踪与控制:根据计划评估当前进度,并采取必要的措
施保证项目按进度计划进行。 风险管理:对可能影响项目成果或质量的风险进行评估。 软件质量保证
架活动,及一些适用于整个软件过程的普适性活动。
基本框架活动
一个通用的软件工程过程框架通常会包含以下5个基 本的框架活动:
1.
沟通:在技术工作开始前,先和利益相关者进行沟通 与协作,以理解项目目标,并收集需求。
2. 策划:制定项目计划,包括需要执行的技术任务、可
能的风险、资源需求、工作产品、工作进度计划等。 3. 建模:构思软件的体系结构、构件如何结合等。 4. 构建:包括编码和测试。
过程模型的选择要点
无论要开发软件的大小,都应选择一个合适的软件过
程模型。
选择何种软件过程模型,依赖于项目的性质、所构造
软件的特点、采用的方法、需要的控制,以及项目团 队,不同类型的软件或系统可能需要采用完全不同的 软件过程。
软件过程不是教条,它不是对如何构建软件的严格规
定,而应是一种可适应性调整的方法,要让软源自过程 适合于项目团队和要开发的产品。
可以在不同抽象层次上定义模式,比如针对整个过程
的、针对框架活动的、针对动作的、针对任务的等。
一个过程模式的例子
模式名称。需求不清。 目的。该模式描述了一种构建模型(或原型系统)的方法,使得利益相关者
可以反复评估,以便识别和确定软件需求。 类型。阶段模式。
启动条件。①确定利益相关者;②已经建立起利益相关者和软件开发队伍之
——实践者的研究方法
第二章 软件过程 (Process)
本章内容
软件过程的含义。 软件过程中有哪些共同的、基本的活动?
如何建立过程模型?什么是过程模式?
惯用(传统)过程模型 统一过程
敏捷软件开发
第一节 软件过程概述
软件过程的定义
当开发产品或构建系统时,遵循一系列可预测的步骤
技术评审:评估软件工程的产品,尽量在错误传播到下一个活动
之前发现并清除错误。 测量:定义和收集过程、项目和产品的度量。 软件配置管理:管理变更所带来的影响。 可复用管理:定义产品复用标准,建立构件复用机制。 工作产品的准备和生产
软件过程框架
软 件 过 程 框 架
普适性活动 框架活动 # 1 动作 # 1.1 任务集 …… 动作 # 1.k 任务集 工作任务、工作产品、 质量保证点、项目里程碑 工作任务、工作产品、 质量保证点、项目里程碑
(路线图)是非常重要的,它有助于及时交付高质量 的产品。 所遵循的路线图就称为“软件过程”。
软件过程贯穿软件开发的各阶段,并建立阶段里程碑
(Milestones); 管理者在软件工程过程中需要对软件开发的质量、进度、 成本进行评估、管理和控制;
技术人员在软件过程中需采用相应的方法和工具生成软
第二节 惯用过程模型 (传统过程模型)
惯用过程模型的含义
软件工程发展到现在,已经出现了很多不同的过程模
型,其中有一些可归属为“传统过程模型”。
传统过程模型以秩序和一致性作为主要问题,规定了
一整套的过程元素,包括:过程流、框架活动、软件 工程动作、任务、工作产品、质量保证、变更控制机 制等。
瀑布模型过程。
2. 增量模型
该模型先对系统最核心或最清晰的需求进行分析、设
计、实现、测试,再按优先级逐步对后续需求进行上 述工作,并集成到系统中,逐步形成一个完整系统。
一个例子
第一个增量往往是核心产品(基本需求),其他功能
和特性由后续的增量添加进去。
例如,使用增量模型开发字处理软件时,可以按照以
W模型
制定计划 用户需求V&V 验收测试准备 用户需求获取 交付 验收测试