《软件过程管理与软件工程环境.ppt》由会员分享,可在线阅读,更多相关《软件过程管理与软件工程环境.ppt(19页珍藏版)》请在三一办公上搜索。
1、第五章 软件过程管理与软件工程环境,5.1 软件过程90年代初美国国防部软件工程研究所和CMU大学的研究者提出过程成熟度的CMM(Capability Maturity Model)模型。把过程成熟度分为五级:第一级:原始的:自发过程,成功靠员工努力;第二级:可重复的:参照成功的项目重复;第三级:可定义的:所有管理、工程两方面的活动均文档化并纳入有组织的软件过程,新项目按批准的过程开发和管理;第四级:可管理的:除三级而外,对软件过程和质量有定量的理解和度量,可以控制度量;第五级:可优化的:除四级而外,可连续从实施过程的反馈中改进过程,1.软件过程的活动,活动分为:框架活动、伞形活动所谓框架活动
2、是软件工程必须的大步骤、是决定产品如何出现、存在的重要活动。它包括一组软件工程工作任务并指出什么算完(里程碑)?交付出什么?质量保证点是什么?软件工程工作任务因产品特性而选用不同的过程模型展开。当然,最上层的框架活动是定义、开发、维护。有了模型它就可以把这三大步骤细化了。伞形活动是为保证高质量产品出现、存在的活动。它凌驾于框架活动之上,故谓之“伞形”,典型的伞形活动是:软件项目追踪和管理(1)正式技术评审(2)软件质量保证(3)软件配置管理(4)文档的准备和制作,可重用管理软件度量(指本项目特殊的度量)风险管理,2.项目特征与框架活动,框架活动对某类项目、单位相对固定,但变动比较大一般把软件项
3、目分成五类。(1)概念开发项目:相当于我国科研体制中“预研”项目(2)新应用开发项目:例如,Word 1.0(3)应用增强项目:有重大改进如Word 3.0,6.0(4)应用维护项目:相对小的改进(5)重构工程项目:将已有项目部分或全部重构概念开发项目可以采用线性顺序模型:(1)项目定义:概念范围定义(2)作计划:初步概念计划和技术风险评估(3)作工程/构建:概念证明(4)发布:概念实现(5)客户评价:客户反应,对于新应用开发项目和后续的增强和维护,可以采用螺旋模型,其框架活动是:,(1)与客户通信:建立有效通信(2)作计划:定义资源、时限、项目相关信息(3)风险分析:技术和管理风险(4)作工
4、程:作出主要应用程序表示(5)构建和发布:构建、测试、安装并提供用户支持(6)客户评价:收集反馈意见这些框架活动可因公司(单位)项目而异。如CSC公司的Objectory方法学把框架活动定义为线性顺序四阶段模型:(1)初创(Inception):定义环境、捕捉需求(2)求精(Elaboration):定义需求、分析、设计(3)构建(Construction):实现、测试(4)移交(Transition):测试、布署每个阶段内部都是迭代的,即支持原型。因此生存周期模型不同与传统的,变为二维的模型,一维是框架活动,一维是可反复迭代的工程活动。,5.2 软件过程模型,1.线性顺序模型早期的瀑布模型即
5、为线性顺序模型。它一次走完分析、设计、编码测试这些框架活动质量保证、文档制作、正式技术评审、配置管理等伞形活动穿插其中特点是严格把关、错误尽早发现并消灭在前一阶段80年代中期发现严格按瀑布模型开发的大型系统成功率极低(低于23%),80年代中期以后出现了多种过程模型2.原型模型基本思想是尽早拿出样板让用户试用,修改或补充了需求再接着开发它基本上按瀑布模型划分阶段:分析 设计 编码 测试 交付,设计注重上层,找一个或几个最有代表性的子系统快速编码测试,所以也叫快速原型(rapid prototyping)原型增加了开发的工作量,增加了管理上的困难。特别是原型过程步骤事先难于计划,不知道应反复几次
6、,从哪里开始反复,预算进度均难于控制。但它具有切合实际,成功率较高的优点,故至今仍在使用。,3.螺旋模型,4.构件组装模型,面向对象和基于构件包的软件要重用大量构件,这些构件是适用于某个领域的(例如,建筑,财经、商场,电信等)。它将以前开发并使用良好的构件规范化之后放入项目库这类软件的开发过程也采用螺旋模型,只是把作工程和构造及发布合成一个步骤。风险分析后,转入客户评价。步骤如下:(1)先标识本项目需要什么构件;(2)库中查找构件或相似的构件;(3)如果可用转4 否则自行开发或修改,确认后入库;(4)构造为新系统作第m次迭代;(5)测试、确认。,5.快速应用开发模型,RAD有以下步骤:(1)业
7、务模型:以什么信息驱动业务过程运作?要生成什么信息?谁生成它?信息流的去向?由谁处理?可以辅之以数据流图(2)数据模型:为支持业务过程的数据流,找数据对象集合,定义数据对象属性,与其它数据对象的关系构成数据模型,可辅之以E-R图。(3)做处理模型:如何使数据对象在信息流中完成各业务功能。描述数据对象的增加、修改、删除、查找。即细化数据流图中的处理框。,(4)应用程序生成:利用第四代语言(4GL)写出处理程序,重用已有构件或创建新的可重用构件,利用环境提供的工具,自动生成,构造出整个的应用系统。(5)测试与交付,由于大量重用,一般只作总体测试,但新创建的构件还是要测试的,6.其它模型,除了上述五
8、种模型而外,还有并发开发模型和形式方法模型,分别针对并发程序系统和需要作数学验证或函数式,逻辑式程序系统而设的。本书不再讨论。这些模型是从实际工作中总结出来的。它为过程可定义、可管理、可优化(三、四、五级成熟度)提供了思路。目前这方面的研究很活跃。当前以类似成功产品过程为借鉴力争定义过程(2-3级)的开发方法和工具日益成熟。,5.3 软件项目管理,项目(project)管理是过程管理的主要体现,它根据项目要达到的目标(软件的功能、性能)作出包含人力、资源、技术过程、质量保证、进度安排的项目计划,并按此计划追踪、报告、协调来完成项目。确定开发项目,项目经理以及以下框架活动:1.建立与客户的通信;
9、2.作计划,定义资源、时限、落实到开发组;3.风险分析,,评估所采用的技术和管理带来的风险;4.工程,即软件分析与设计;5.构造和发布,即编码、测试、交付、安装、文档、培训;6.客户评审,获得客户的反馈。,5.3.1 风险分析与风险管理,1.风险因素,应从下述角度分析:产品大小 业务相关客户相关技术相关2.风险管理是开发一种策略对以上分析出的风险因素进行管理:一为回避(mitigation)不使风险发生第二种办法是监控(monitoring)第三种办法是加强管理和做应急计划(management and contingency planning),开发环境 组织大小和人员经验重用件相关 过程相
10、关,5.3.2 软件质量保证,1.软件质量保证软件质量保证的SQA活动,贯穿于软件过程始终。开发单位成立SQA小组负责全面质量管理。在开发项目计划时就要做出SQA计划。对于SQA组的工作不外乎以下几方面:各种测试 测试软件是否满足规格说明的要求。各种评审 为多种人员参与的讨论会,以规格说明或各种标准,规范为准评价各项软件工作各种审计 审计(Audit),以职能人员为主审,审查软件过程产物是否符合标准或规格说明书。报告和记录 所有测试、评审、审计都要详细记录并写出报告,报告和记录均要整理、归档2.软件质量保证计划以上活动均应在项目计划中列出子计划,5.3.2 项目进度与追踪,1.过程分解2.时限
11、图3.项目追踪,5.3.4 项目计划,项目计划列出软件开发所做的工作。一般的陈述是“做什么”,特殊的陈述是“做多少”和“多长时间”5.4 软件配置管理1.软件配置项和基线软件工程过程各项活动的产物(程序、文档、数据)经评审或审批后都称之为软件配置项(SCI),第一次交付的软件配置项构成基线(Base line)配置项,2.配置管理的任务,软件配置管理(SCM)的主要任务是每当有了更改,与其相关的软件配置项均应得到正确处理标识软件配置项 版本控制 变更控制审计与报告 每当有了改变则按既定的规程修改并刷新软件版本;向有关人员发出配置状态报告、标识、审计、版本控制、变更控制、报告这五项工作目前已开发
12、出许多自动工具可以自动完成,5.5 软件重用,指在一个软件项目中直接使用以前项目中的产物,而非重用某些工具,也就是把历史上做过的东西纳入到新项目中1.重用过程2.支持重用的环境:从过程重用的观点,以下十种软件过程产物均可以重用:(1)项目计划 特别有关SQA之类的活动均可成段重用。(2)费用估算 相似工作量的项目重用。(3)体系结构 相近的体系结构(一般以模板描述)利用模板生成实例。(4)需求模型和规格说明 重用模型图和成段文字。(5)设计 数据、界面、过程、对象的描述。(6)源代码 直接用已验证过的源代码。(7)各种文档 大部分可拷贝,或在拷贝基础上修改成新文档。(8)人机界面 GUI是最成
13、功的重用件,有时占应用软件代码量的60%。(9)测试用例 设计、代码重用必然可重用。(10)数据 内部表格、列表、文件。,3.构件与构件重用,构件(Component)是可重用的,具有独立性的软件单元,是用来构造其它软件的部件构件具有以下特点:(1)构件是具有独立性的、被封装好、具有自描述能力的软件单元。它必须能够识别自己的属性、存取方法和事件。构件不依赖于开发语言和开发平台,在二进制级上实现重用性。(2)构件本身不是一个完整的应用程序,构件可以组装成为应用程序。在编写构件时,构件今后将如何被组装是不可知的;(3)构件都有被定义好的接口,只能通过这些接口来操纵构件;(4)构件之间可以交互,交互
14、双方可以是位于相同的应用程序、相同的计算机、不同的计算机、不同的操作系统等。(5)构件可以被扩展。,5.6 软件开发环境,程序(软件)的开发、运行都是在支持软件的基础上作出的。这些支持软件的总和我们称之为软件开发环境(Environment)早期的环境只有最必要的软件工具:语言的编译器、连接器、加载和运行工具、排错(debugging)工具,终端显示和编辑工具。我们称最小环境工具集1.CASE工具概述70年代中期,软件工程师迫于软件危机的压力,提出了计算机辅助软件工程(CASE)的设想,开发出一系列工具尽量使软件过程的各项活动自动化、半自动化信息工程工具、过程模型和管理工具、项目计划工具、风险分析工具、项目管理工具、需求追踪工具、度量和管理工具、文档工具、系统软件工具、质量保证工具、数据库管理工具等等,2.集成的CASE工具,工具日益增多,单点式使用工具很不方便,使用者要逐个将工具调入,使用后其生成的产物需要逐个保管,一个工具要用到另一工具的输出,其格式不对就无法用,消除或修改一个名字,则各工具产物中所有相同的名字都要逐个修改。这就在客观上产生了集成的要求(1)集成的需求(2)集成环境的结构,集成框架的体系结构,