《软件过程软件生命周期》由会员分享,可在线阅读,更多相关《软件过程软件生命周期(81页珍藏版)》请在金锄头文库上搜索。
1、阎菲软件过程The Process Premise“The quality of a software system is governed by the quality of the process used to develop and evolve it.”- Watts Humphrey Capability Maturity Model CMM Managing the Software Process - SPM内容概要软件生存周期软件过程的基本概念软件过程模型基本模型RUPAgile 方法软件生存周期软件孕育、诞生、成长、成熟、衰亡的生存 过程制定计划需求分析和定义软件设计程序编
2、写软件测试运行/维护制定计划确定总目标可行性研究探讨解决方案资源、成本、效益、进度评估实施计划需求分析和定义目的描述软件的功能和性能确定软件设计的限制和软件同其它系统元素的接 口细节定义软件的其它有效性需求软件解 决 方案SRS用户实际问 题系统分析员开发人员He who asks a question is a fool for five minutes; he who doesnt ask a question remains a fool forever. 交流、 沟通 软件设计软件工程的技术核心问题SRS需求 分析软件系统设计实现解决方案 定义程序编写将软件设计转换成计算机可以接受的、
3、以某 种特定程序设计语言表示的程序代码。结构良好、清晰易读、与设计相一致程序设计语言、程序设计风格软件测试质量保证的重要手段。以最少的时间和人力,系统地找出软件中潜在的各种 错误和缺陷。分类基本分类:黑盒测试,白盒测试按测试阶段划分:单元测试,集成测试,系统测试按测试目的划分:功能测试,性能测试,安全测试按测试对象划分:C/S测试,GUI测试,实时软件测 试软件维护在系统进入运行后对系统所做的修改分类改正性维护适应性维护完善性维护预防性维护Software in Natural软件 具体化的知识,资本,“知本”软件开发 社会的学习过程,认识认识过程:理解、描述、验证、改进主要活动(Framew
4、ork Activities)沟通(Communication) 需求分析计划(Planning)项目计划建模(Modeling)设计构建(Construction)编码测试部署(Deployment)运行维护内容概要软件生存周期软件过程的基本概念软件过程模型基本模型RUPAgile 方法软件过程的基本概念“软件过程也称为软件生存周期过程或软件过 程组,是指软件生存周期中的一系列相关过 程。过程就是活动的集合,活动是任务的集 合,任务则起到把输入加工成输出的作用。 活动的执行可以是顺序的 、迭代的(重复的 )、并行的、嵌套的或是有条件引发的。”软件过程的含义 个体含义:软件或系统在生存周期中某
5、一类活动的集合整体含义:软件过程的总体工程含义:应用软件工程的原则、方法来构造软件过程模型,并 结合软件的具体要求进行例化,以及在用户环境运 作软件过程的发展Ad Hoc developmentProcess ModelsHeavy-weight ProcessAgile (Light-weight) Process内容概要软件生存周期软件过程的基本概念软件过程模型基本模型RUPAgile 方法软件过程模型瀑布模型(Waterfall Model)原型模型(Prototyping Model)增量模型(Incremental Model)螺旋模型(Spiral Model). .瀑布模型W.
6、Royce,1970自上而下线性模型将软件过程划分为若干相互区别而又彼此联 系的阶段:需求分析、设计、编码、测试、 运行/维护每个阶段的工作以上一个阶段的结果为依据 ,并作为下一阶段工作的前提一次通过需求分析设计编码测试运行/维护瀑布式过程的优点支持结构化开发方法,控制软件开发复杂度在当时,提供了有效的管理模式瀑布式过程模型的缺陷不能适用于在开发过程中需求的不断变化前期的错误不能及时发现,在开发过程中积累、扩大, 造成较高的修复代价对于大型系统一次占用大量资源原因:软件开发是创造而非制造过程原型模型Why用户不能明确需求开发人员不确认方案的可行性软件人员和用户难以沟通难以预期系统运行的效果原型
7、模型What?软件的一个早期可运行版本,反映最终系统的部分、重要特性快速实现,投入运行表现出目标系统的功能和行为特性,但不需符合全部的实现需求功能和性能上的取舍原型模型的优点加强用户和软件人员之间的沟通,明确系统的需求,“共同语言”尽早得到系统可用性的反馈信息,及时修改以获得完整、正确需求原型模型的缺陷用户会由于看到的原型系统不完善,而对产品产生怀疑可能为了快速开发原型系统,而采用未经充分论证的技术(如操作系统平台、主要的算法)原型模型原型系统类型探索型:需求分析初期,明确开发目标实验型:大规模开发和实现之前,考核方案进化型:使系统易于变化,逐步演化成目标系统原型系统的使用策略废弃策略追加策略
8、(演化)原型模型原型开发过程1.快速分析2.构造原型3.运行和评价原型4.修正和改进1.判定原型完成2.判定原型细部是否说明3.原型细部的说明4.判定原型效果5.整理原型和提供文档增量模型不是一次提交一个完整的版本,而是构造一 系列可执行的中间版本,每个中间版本都从 一组给定的需求出发,且比前一版本纳入更 多的需求。每一中间版本的需求都是确定的,开发都执 行必要的过程、活动和任务。用户需求被分级,逐步满足提交,高优先级 的需求先实现。Incremental Development 增量过程的优点增强了最终用户对系统开发过程的可见性,用户最 紧迫的需求能够在最短的时间得到满足。每一次增量开发的结
9、果都可以作为一个原型系统, 有助于下一次增量的需求确认。有助于降低整个项目失败风险。重要的系统服务能够得到较为充分的测试。增量过程的问题有可能退化为Ad hoc,(需求控制,增量划分)螺旋模型B. Boehm, 1988软件开发过程为螺旋上升,而非带反馈的顺序执 行每一个螺旋周期,为开发的一次迭代在每次迭代中,没有固定定义的软件活动,而是 根据需要选择将开发活动与风险分析相结合,用于降低和控制 风险确定目标确定软件目标,选定实施方案,确定项目开发 的限制条件风险分析分析所选方案,考虑如何识别和消除风险实施开发选择本次迭代的开发活动及过程模型制定计划评审本次迭代结果,为下次迭代制定计划螺旋模型的
10、优点更多的商务考虑风险管理的重要性软件开发充分反映“风险”:开发过程中的每一事件都看 成是一种可能的风险;软件开发过程的主要努力是消 除风险,增加成功率。适用于大型软件系统开发螺旋模型的问题需要丰富的风险评估经验内容概要软件生存周期软件过程的基本概念软件过程模型基本模型RUPAgile 方法RUP (Rational Unified Process)为解决软件开发中的问题,需要以一种更好 的、迭代的、可预测的方式开发软件产品, (By Rational, IBM)提出软件开发中 的最佳实践。最佳实践包括: 1)迭代式软件开发; 2)需求管理; 3)基于构件的软件体系结构; 4)建立软件可视化模
11、型; 5)不断验证软件质量; 6)控制变更。1. 1. 最佳软件开发实践最佳软件开发实践PlanningRequirements Analysis & DesignImplementationDeploymentTestEvaluationManagement Environment1) 迭代式地开发软件经典的软件开发过程模型是瀑布模型,它最大的问题是把风险留给了后面的阶段。要想清除早期阶段引入的故障需付出很大的代价。采用迭代和增量的过程。Each iteration results in an executable release.这种方法是一个连续地发现、创造和这种方法是一个连续地发现、创
12、造和 实现的过程。实现的过程。 1)1) 在生存期早期,可以及时发现和改正严重在生存期早期,可以及时发现和改正严重 的需求理解错误;的需求理解错误; 2)2) 允许和鼓励用户反馈信息,以明确系统的允许和鼓励用户反馈信息,以明确系统的 真实需求;真实需求; 3)3) 使开发人员重视项目中最关键问题,抓住使开发人员重视项目中最关键问题,抓住 可能导致项目真实风险的问题;可能导致项目真实风险的问题; 4)4) 不断迭代地测试可以给出项目状况的客观不断迭代地测试可以给出项目状况的客观 评价;评价; 5)5) 尽早发现需求、设计和实现间的不一致;尽早发现需求、设计和实现间的不一致;3) 使用基于构件的软
13、件体系结构一个软件体系结构包括一系列重要决策: 确定软件系统的组织; 确定构成系统的结构元素及其接口; 用结构元素之间的协作关系说明各个结构元 素的行为; 将这些结构元素及其行为组合为更大的子系 统; 依据软件体系结构风格约定,指导系统的构 建:约定涉及元素和它们的接口、协作和组合 。基于构件建立软件体系结构提供了一系列 方案,用以解决软件开发中所遇到的问题 : 1) 使用构件可以创建有弹性的体系结构; 2) 模块化方法使得人们可以分别关注系统中容 易变化的不同元素; 3) 通过使用标准化的框架(如 CORBA , EJB , COM+)和其他商品化的构件可以提供软 件的可复用性; 4) 构件
14、为软件配置管理提供了一个非常自然的 基础。4) 建立软件的可视化模型模型是现实的简化,它从特定的视角完 整地描述一个系统。状态图类图场景图构件图用例图实施图模型通过模型化,可将系统体系结构的结构和行为可视化,具体化。应用UML(统 一建模语言),开发人员可以清楚地, 无二义性地与其他人交流他们的想法和 决定。可视化建模可以帮助开发人员提高管理 软件复杂性的能力。通过迭代开发实践 ,还可以展示体系结构的变化,有助于 人们评估这些变化,确保在每次迭代过 程中协调模型与源代码的一致性。软件的可视化建模可以提供一系列方案 ,用以解决软件开发所遇到的问题.Rational统一过程Rational 统一开
15、发过程简称 RUP( Rational Unified Process),是一种软件 工程过程。RUP描述了如何在软件开发组织中严格分 配任务和职责的方法。其目标是:按照预 先制定的时间计划和经费预算,开发高质 量的软件产品,以满足最终用户的需要。RUP 是一个过程产品。Lee Osterweil 提 出:软件过程也是软件。 RUP 可以像任 一软件工具那样设计,开发,交付和维护 。RUP有自己的过程框架。该框架的特点 是:RUP是用例驱动的、以体系结构为 核心的、迭代的增量的过程。RUP 采用二维的过程结构: 过程的第一维(横轴)表明过程的生存期 ,它反映了过程被激活时的动态情况,用周 期、阶段、迭代和里程碑表示。 过程的第二维(纵轴)表明过程的静态状 况,通过过程构件、活动、工作流、制品和 工作人员描述过程。初始细化构造移交阶 段初始化细化#1细化 #2构造 #1构造 #2构造 #3移 交 #1移 交 #2 迭 代工作流, 科目业务建模 需求分析与设计实现 测试 部署配置和变更管理 项目管理 环境沿时间轴的组织结构沿内容轴的组织过程的静态描述:过程模型过程模型中的主要模型元素有 4 种: 工作人员:谁做(who) 活动:怎么做(how) 制品:做什么(what) 工作流:何时做(when)设计师用例分析用例设计用例实现活动工作人员制品过程的静态描述:过程模型(1