




已阅读5页,还剩46页未读, 继续免费阅读
(计算机应用技术专业论文)基于cmmpsptsp和xp的软件开发过程方法研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6 54 2 1 2 基于c m m p s p t s p 和x p 的软件 开发过程方法研究 计算机应用技术专业 研究生:李琳导师:游志胜 摘要:软件过程的不断改进为推进软件工程化奠定了坚实的基础,随着人们对 过程的重视,新的过程方法论层出不穷。本文在综合了当今最具影响力的7 1 a 十 软件过程方法论的基础上,提出了基fc p s p t s p 和x p 的软件过秤方法,既 能保正在进度、成本范围内生产出高质量的产品,又能收集一些测量数据和过 程指标,对今后的过程进行指导和改善提高企业的软件生产能力。本课题的 研究对我国软件的z , i k 化生产和软件工程的深入研究和应用具有现实意义和理 论价值。 沦文的丰要工作如下: ( 1 ) 结合参加某一具体项目的实际情况,评述了项目开发过程中的主要问 题,提出企业软件生产能力的重要性: ( 2 ) 介绍了软件过程的理论,并对当今具有重要影响的几种过程方法论进 行介绍和评价; ( 3 ) 通过说明c m w p s p t s p 和x p 这几种软件过程方法之间的火系,阐明 改进的软件过程力。法的可行性: ( 4 ) 详细说明了结合c m m p s p t s p 标准与x p 敏捷方法的软件过程方法在 软件开发的四个阶段的应用,人员的组织以及生成的主要文档和产品等: ( 5 ) 简单列出了在整个项目中完成的主要工作。 关键字:软件能力成熟度模型、个体软件过程、群组软件过程、极限编程、软 件过程改进关键过程域 t h er e s e a r c ho ft h em e t h o do fs o f t w a r e p r o c e s sw i t ht h ec m m p s p t s pa n dx p m a j o r :c o m p u t e ra p p l i c a t i o nt e c h n o l o g y g r a d u a t e :l il i na d v i s o r :y o u z h i s h e n g a b s t r a c t :t h ec o n s t a n ti m p r o v e m e n to fs o f t w a r ep r o c e s se s t a b l i s h e ds t a b l e f o u n d a t i o nt oa c c e l e r a t et h ec o u r s eo fs o f t w a r ee n g i n e e r i n g ,a st i m eg o e s o n ,p e o p l e l a ym o r ea n dm o r es t r e s so nt h ep r o c e s s n e wp r o c e s sm e t h o d se m e r g ei na i le n d l e s s w a y t h i sp a p e rs y n t h e s i z e st h em o s t w e l l r e c e i v e dm e t h o d s a n ds u g g e s t sam e t h o d o fs o f t w a r ep r o c e s sb a s e do nc m m ,p s p 厂r s pa n dx p , o no n eh a n d ,e n s u r i n ga h i 曲 q u a l i t yp r o d u c t w i t h i nt h el i m i t so f t i m ea n dc o s t ,o nt h eo t h e rh a n d ,c o l l e c t i n gs o m e m e a s u r i n gd a t aa n dp r o c e s si n d i c a t o rt o d i r e c ta n di m p r o v et h ef u t u r e p r o c e s s , e n h a n c i n gt h ec a p a b i l i t yo fe n t e r p r i s e ss o f t w a r em a n u f a c t u r e 1 1 1 er e s e a r c ho ft h i s t o p i c i sa c t u a l m e a n i n g a n da c a d e m i cv a l u et ot h e p r o d u c t i o n o fs o f t w a r e i n d u s t r i a l i z a t i o na n dt h ed e e p e rr e s e a r c ho fs o f t w a r ee n g i n e e r i n g t h i s p a p e r sm a i n j o b s a r ea st h ef o l l o w i n g : f i r s t ,c o m b i n e t h e e x p e r i e n c e o fa p r a c t i c a lp r o j e c t ,c o m m e n t t h em a i n p r o b l e m sd u r i n gt h es o f t w a r ep r o c e s s ,a d v a n c et h ei m p o r t a n c eo ft h ec a p a b i l i t yo f e n t e r p r i s e ss o f t w a r em a n u f a c t u r e s e c o n d ,i n t r o d u c et h et h e o r yo fs o f t w a r ep r o c e s s ,e x p l a i na n de s t i m a t es e v e r a l p o p l a rp r o c e s sm e t h o d s t h i r d ,s t a t et h ep o s s i b i l i t yo f t h i sp r o c e s sm e t h o db y e x p l a i n i n gt h er e l a t i o n s h i p b e t w e e nc m m p s p t s pa n dx p f o r t h ,d e t a i l e ds t a t et h i ss o f t w a r ep r o c e s sm e t h o dc o m b i n i n gt h es t a n d a r do f c m m p s p t s pa n dx p , h o wi ti su s e di nt h ef o u rc y c l eo fs o f t w a r ep r o c e s s ,h o wt o o r g a n i z ep e o p l e a n dt h em a i nd o c u m e n t sa n d p r o d u c t s ,e t c f i n a l ,l i s tt h em a i n j o b sd o n eb yt h ea u t h o rd u r i n g t h ep r o j e c t k e y w o r d s :c m m 、p s p ,t s p ,x p ,s p i ,k p a 1 绪言 1 1 系统研制的背景 随着我国航空运输业的持续高速发展,空中飞机的架次增多、密度增加、 间距缩小,空中交通日趋繁忙,用户对空管系统的需求量很大,对空中交通管 制软件的要求也很高,需要增加大量功能完备、性能卓越、可靠性高的空中交 通管制系统,而一些原有的管制设备也因设备陈旧,频繁出现故障,管制中心 迫切需要更新换代。用户的需求和技术的发展使我国空管系统的研制和生产进 入大发展时期。 近年来,我国已陆续从欧美引进了一些新一代管制设备,但远远不能满足 当今和今后空中交通管制的需求,扩容价格昂贵,另外由于设备来源于多个国 家和公司( 如:美国r a y t h e o n 、w e s t i n g h o u s e 、t e l e p h o n i c s ,意大利a 1 e n i a , 法国t h o m s o n c s f 等) ,因而在系统构成、功能、界面、硬件配置上都有很大的 差别,不易于设备的维护和人员的交换。进口系统价格昂贵,远不能满足我国 的国情和实际需要,因此迫切需要通过对空管系统关键技术的研制,建立具有 我国自主知识产权的新一代空管自动化系统,从而打破国外的技术封锁。空中 交通管制系统的研制,特别是具有自主知识产权的管制系统更是具有巨大的社 会效益和战略意义,我们的新一代空管系统研究就是在这种背景下产生的。 军航2 2 6 工程机场管制中心系统是四川大学图形图像研究所独立开发的新 一代空中交通管制系统,具有独立自主知识产权,它早在1 9 9 9 年1 1 月就通过 了中国民用航空总局的鉴定,2 0 0 4 年4 月,该系统已通过了正式的验收,在未 来的这段时间里,即将投入全国多个军用机场使用。该系统是由雷达数据显示 控制席位、飞行数据显示控制席位、雷达数据处理机前端和飞行数据处理前端 等部分组成,并通过局域网相连成统一的分布式处理系统。它能够完成雷达数 据处理、飞行计划处理和雷达数据显示等空中交通管制必需的功能。系统的设 计借鉴了目前国内正在使用的国外空管系统并充分吸收了它们的优点,同时广 泛听取了空管员对现有管制设备的意见,设计了有自己特色的空管系统。 新一代军航机场管制中心系统采用c c + + 语言实现,源程序可在多种u n i x 平台( 如s c ou n i x w a r e 、c o m p a qm p h as e r v e r 的d i g i t a lu n i x 平台以及i b m r s 6 0 0 0 的h i x ) 之间移植,通用性好。为了保证系统的高可靠性、实时处理性、 系统保密安全性,整个系统均为基于u n i x 平台上开发出来的。同时该管制系统 也是一个局域网环境下的分布式系统,它的网络子系统具有高可靠性和高安全 性的特点。在设计网络子系统时,为了保证系统的高可靠性,硬件设备采用了 冗余设计,即采用双冗余网络通讯、多台备用机等方式。同时网络协议也充分 利用了这些硬件特色,具有智能化管理,网络实时监控,故障检测和故障恢复 等功能。 军航2 2 6 工程机场管制中心系统是专门面向军航管制作业对象而设计的先 进、高效的机场管制中心系统,在遵循行业规范的前提下,以用户需求为准则, 面向用户、紧密围绕管制作业特点,采用了经过验证的先进技术,形成了实用 性强、自动化程度高的军航机场管制中心系统。该系统的开发,具有我国自主 知识产权,在很大程度上弥补了国家在军航机场管制中心的技术空白,也打破 国外的技术封锁,同时该管制系统具有很大的社会效益和战略意义,对于促进 我国军、民航空中交通管制事业的协调发展具有重大意义。 1 2 改进软件过程方法的意义 该项目是十五建设重点国防项目之一,项目规模较大,不能生搬硬套x p 的 全套内容;同时因为项目时间紧迫,也不允许将c 删p s p t s p 的数据表格和文 档以及固定程式化流程全部引入项目过程,因此本文提出一种改进的软件过程 方法,将c 删p s p t s p 和x p 过程方法论结合起来,挑选出一些适应本项目和企 业的关键原则,既能保证在预算内按时完成高质量的产品,又能收集一些测量 数据和过程指标,对今后的过程进行指导和改善,提高企业的软件生产能力。 1 3 作者参与的工作 本文作者于2 0 0 3 年2 月至2 0 0 4 年4 月近1 4 个月中一直参加军航2 2 6 工程 机场管制中心系统的研发工作。其间主要完成了以下的工作: 开发了雷达管制员席“快速定位”、“剖面窗口”、“雷达选择”、“显示过 滤”、“目标显示设置”、“标注设置”、“系统配色”、“屏幕布局”、“快照打印”、 “方位距离矢量”等重要模块。 负责测试m o t i f 下封装的x 删库: 负责编写完成了雷达管制现场测试手册,并掷助完成系统性能测 试手册,并负责了这些部分的系统测试; 负责编写完成了雷达管制员席操作手册、助理管制席操作手册、主 任值班席操作手册、雷达管制员席维护手册、助理管制席维护手册; 协同完成了雷达显示子系统通用界面显示部分从s c ou n i x w a r e 平台到 c o m p a qa l p h as e r v e r 的d i g i t a lu n i x 平台和i b mr s 6 0 0 0 的a i x 平台的移植 工作: 完成系统在某机场的现场测试工作; 研究了a t c 系统中动画显示不连贯的解决办法,并通过自定义窗口进行 测试并解决。 通过需求分析、测试、用软件工具开发软件,熟悉了软件开发过程,并 将项目开发过程与c 原理进行对照研究。 对x p 应用于该项目的适用性进行研究。 在整个项目中,编写了源代码约二万余行。 2 软件开发中的主要问题和企业的软件生产能力 2 1 软件开发中的主要问题 全世界每年大约有5 0 万个项目经理执行着大约10 0 万个左右的软件项目, 产生了价值6 0 0 0 亿美元的软件产品。在这些项目中,有很多不能满足客户所期 望的质量,或者不能在预算内按时交付产品。有分析认为:】3 左右的项目在 成本和时间上超出额定限额的1 2 5 以上。很多人都意识到项目管理不善的问 题是导致项目失败的主要原因,与此同时,软件过程管理提上日程。 软件项目失败的主要原因很多,包括:需求定义不明确;缺乏一个好的软 件研发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经 常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的 控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;军用标准 太少且不够完善等等。在关系到软件项目成功与否的众多因素中,软件度量、 工作量估计、项目规划、进展控制、需求变化和风险管理等都是与项目管理直 接相关的因素。由此可见,软件研发项目管理的意义至关重要。软件项目管理 和其他项目管理相比有其特殊性。首先,软件是知识产品,进度和质量都难以 度量,生产效率也难以保证。其次,软件系统的复杂程度也是超乎人想象的。 正因为软件如此复杂和难以度量,软件研发项目管理的发展还很不成熟。 以下是软件开发中普遍会遇到的问题: 需求虽然以文档形式记录下来,但是需求本身有不明确的地方,导致开 发过程中争论不断; 某些模块没有认真地进行系统的设计和架构,开发人员还没来得及讨论 各个模块问重要的接口问题,就被一声令下:“快,写代码,加把劲, 把程序尽快拿出来”,这样做的直接后果就是开发人员修改某一模块的 接口时影响其它程序或模块的正确性; 用户没有真正的参与到项目中来,所以常常出现这样的情况:用户使用 了一下当前的系统后,觉得这个地方需要改改,那个地方需要改改。客 户满意度最重要啊,开发人员只好满足他们,导致某些代码的频繁修改, 开发人员积极性受到影响。如果用户能真正地参与到项目中,这种情况 也就不会出现了。 部分的软件开发人员缺乏专业认识,新手编程,由于缺乏经验,导致生 产效率低,后期问题多; 小组间缺乏交流和统一步骤,版本更新不一致,一个模块的更新,导致 其它处理模块“错误”不断。这里,我们就必须强调配置管理员的作用; 项目进度滞后,超时工作成为家常便饭,开发人员怨声载道,项目经理 苦不堪言; 作为衡量个人过程能力重要标准的每周工作小结重视程度不够,一方面 坚持完成的人并不多,另一方面真正认真对待的人少; 这些问题,在很多企业的项目开发过程中都会遇到,在论文的第6 章会提 到一些解决方法。 2 2 企业的软件生产能力 企业的软件生产能力是针对个人的生产能力而言的。业内许多有识之士早 已对个人作坊式的软件生产痛心疾首,呼唤软件生产的工业化。个人作坊式的 软件生产不仅仅限于小企业,大中型企业也不乏其主。对于一个软件公司,无 论大小,只要是基于个人作坊式的生产,不要说骨干,甚至一个主要程序员突 然离开,都可能会使整个项目拖延,严重的情况下甚至会导致项目惨遭失败。 个软件企业,经过千辛万苦而完成的一个软件项目所取得的经验,或许更多 的是教训,可以保证该企业顺利地完成类似的项目吗? 看看一些用户的态度就 可以明白。许多用户在软件工程项目签约时,要求开发商提供主要工作人员名 单和简历,并要求保证主要开发人员不得在项目完成前离开。这表明用户对企 业的能力信任是建立在企业内的个人身上的。无论企业怎样向用户展现企业过 去所取得的“辉煌战果”,用户仅把希望寄托在具体个人上。用户似乎在鼓励个 体化的开发。然而用户是合理的,除非一个软件企业能证明该企业的软件生产 能力是企业的能力,而不是个人能力。 一个软件企业的核心能力主要包括三个方面:( 1 ) 开发技能,如o o 、架构 等技能:( 2 ) 开发过程,c m m 、x p 、r u p 等;( 3 ) 组织管理,重点放在企业文化、 制度、团队等方面。 企业的软件生产能力高低可以从侧面来评估:即能否取得项目的成功和生 产出高质量的产品。软件质量是软件生产的核心。高质量包括几方面的含义: 、满足用户需求;二、产品在预期时间和成本内完成;三、软件开发遵守了 一些开发准则,同时产品应该满足易维护性、易扩展性等隐含的需求。 8 0 年代未,一个不同于以往的概念逐渐被接受:一个企业的软件能力取决 于该企业的过程能力。如果一个企业过程能力越成熟,那么该企业的软件生产 能力就越有保证。大量的实践经验表明,在体现企业软件生产能力的因素中, 技术或工具并不是第一位的。 什么是企业的过程能力呢? 我们可通过正反两方面的例子来加以说明。首 先来看基于个人行为的软件开发方式。假如一个企业获得了一个软件项目,交 给一个小组实施,所有有关的项目活动,均由这个小组或小组负责人决策和执 行。整个项目的执行对企业近乎是一个黑箱子。也许这个项目非常成功( 这个 小组成员是由天才和勤奋的软件工程师组成) ,但企业难以让其他小组共享他们 的经验,因为他们的天才活动是即兴发挥的。然而,更可能出现的情况是这个 项目不成功,更糟的是,失败的教训也无法让其他小组吸取。换句话说,无论 这个小组成败与否,对于企业今后的软件开发几乎都是没有帮助的。 我们再看看另一种情况。一个软件企业建立了一个软件开发过程,并通过 政策保证强制实行这个过程。项目的执行不再是一个黑箱子,企业清楚地知道 项目是按规定的过程进行的。所设定的过程可能有缺陷,但问题会在执行的过 程中反映出来,企业在该过程执行一段时间后,可根据反映的问题来改善这个 过程。周而复始,这个过程逐渐完善、成熟。由于这个过程不是依赖于某个人 的,而是企业开发实际经验的结晶,因此,企业基于这个过程的软件生产能力 也随之成熟。 那么,这是否意味着随意建立一个过程都能逐渐成熟起来呢? 从理论上讲, 若有足够的时间,那么应该是可以的。但在实际上却是不现实的。任何企业都 不会容忍长期缓慢的过程改善。在软件开发过程中,根据几十年软件工程的发 展经验,人们己识别出一些关键的过程域( k p a ) ,利用过去软件工程发展的成 果,侧重这些关键过程域的实施,将会有效地建立起个过程。需要说明的是, 企业能力是指执行过程的能力,因此,企业能力的改善应是一个渐进过程,而 不可能是一个飞跃的革命过程。关键过程域的实施也需逐步进行。 3 软件过程理论 3 1 软件过程概念 鉴于过程的重要性,我们将在这里对软件过程进行比较详细的描述。 软件过程是指软件工程过程、软件管理过程和软件组织过程三者的有机结 合。软件工程过程是我们理解的常规的软件的需求分析、设计、编码、测试等 过程;软件管理过程是指为使软件工程过程顺利进行而进行的管理活动的集合。 上述两个过程是以软件工程为主的活动。软件组织过程是企业级的对软件的组 织活动,是以企业为主的活动。 简单地讲,软件过程即制作软件产品的一组活动及其结果。这些活动主要 由软件工程师完成。软件过程包含的基本活动为: ( 1 ) 软件描述:定义软件功能以及软件操作上的约束,这个活动现在常被称 为需求工程。这个过程对于软件过程特别关键,这个阶段的错误会不可避免的 带到后来的设计和实现阶段。此过程将产生系统的需求文档,通常需求在文档 中被分为最终用户需要的需求描述和系统开发人员需要的系统描述; 需求工程主要经历4 个阶段: 1 可行性研究:现有软硬件技术是否能实现用户对系统的要求;系统开发 能否在预算范围内完成。 2 需求导出和分析:通过对现有系统分析、与购买者的讨论等导出系统需 求。 3 需求描述:将分析活动中收集到的信息以文档的形式确定下来,包括最 终用户角度对系统需求的抽象描述( 用户需求) 和系统要提供的功能的 详尽描述( 系统需求) 。 4 需求有效性验证:检查需求实现、一致、完备。同时不断发现需求文档 中的错误并修正。 ( 2 ) 软件开发:软件一定要按照描述来生产,将系统描述转换成一个可运行 的系统,它包含设计和编程。 软件设计是对系统体系结构、接口、组件、数据结构和算法的描述。设计 是个不断反复的过程,设计过程中一些特别的活动包括: 系统体系结构设计:系统是由哪些子系统构成、这些子系统间的关系, 并编写文档: 抽象描述:每个子系统提供的服务及子系统的运行范围; 接口设计:对每个子系统,都要给出与其他子系统间的接口设计并编写 文档: 组件设计:分派服务到不同的组件,并设计出这些组件的接口; 数据结构设计:详细设计系统实现阶段将要用的数据结构,并给出描述; 算法设计:设计出将要使用的算法并给出描述。 其中,数据结构和算法也可以放在实现阶段。虽然说系统设计非常重要, 但常常由于没有正式的设计管理,当实现阶段完成后,当前的系统与当初的描 述已经大相径庭了。因此一种较系统的方法即“结构化方法”被提了出来,它 通常是用图解的形式给出系统模型并生成大量的设计文档,在一定程度上提供 了合理设计的方法,但总的说来项目设计是因项目因人而异的过程,没有一定 的定式。 设计过程后即开始编码和测试。 f 3 ) 软件有效性验证:系统是否符合它的描述和系统是否符合客户的预期。 ( 4 ) 软件维护:软件必须随客户需求的变化不断改进。 由过程定义的软件工程活动的结果而产生的程序、文档和数据,我们称之 为产品。软件过程为软件活动提供稳定性、控制和组织,软件活动如果没有控 制,将变得非常混乱。 软件过程模型包括线性顺序、原型实现、增量、螺旋、基于构件等多种模 型,每一种都代表了将本质上无序的活动有序化的意图,并且每一种模型都具 有能帮助实现软件项目的控制及协调的特征。 3 2 软件过程度量 软件过程度量即定量的测度。测度对于任何工程科学而言都是基本的,软 件工程也不例外。测度通过提供目标评价的机制而使得我们能够获得更深的了 解。使用测度,可以发现趋势( 好的或者坏的) ,进行更好的估算,从而获得真 正的改善。如果没有度量,我们根本没法确定我们是否在改进。测度应用于软 件过程是为了在一个连续的基础上改进它。收集跨越所有项目的过程度量,总 结能够导致长期的软件过程改善的“指标”,所谓指标即一个度量或度量的集合, 它能对过程提供更加深入的理解,使项目管理者或软件工作者能调整过程,从 而使项目能更好的完成。 改善过程的合理办法是测量过程的特定属性,基于这些属性开发一组有意 义的度量,而后使用这组度量来提供引导改善策略的指标。过程度量如主要软 件功能的缺陷报告、正式技术评审中发现的错误以及每个模块和函数的代码行 或功能点。这些数据可由开发小组进行复查以找出能够改善组织性能的指标。 收集和评估项目级的缺陷率、工作量、时间及相关的数据,以找出能够改善过 程性能的指标。随着愈来愈多的收集和使用过程度量,简单的指标获取被更加 精确的方法所代替,即统计软件过程改善( s t a t i s t i c a ls o t t w a r ep r o c e s s i m p r o v e m e n t ,s s p i ) ,本质上,s s p i 使用软件故障分析方法来收集软件应用、 系统或产品的开发及使用中所遇到的所有错误及缺陷的信息。故障分析方法如 下: 1 根据来源分类所有的错误和缺陷( 如规约中的错误、逻辑错误、与标准 不符的错误) ; 2 记录修改每个错误和缺陷的成本; 3 统计每一类错误和缺陷的数目,并按降序排列: 4 计算每一类错误和缺陷的总成本; 5 分析结果数据,找出造成组织最高成本的错误和缺陷类型: 6 制定修改过程的计划,目的是消除( 或降低其出现的频率) 成本最高的 错误和缺陷类型: 由上述第一步和第二步得到简单的缺陷分布情况,用饼图表示出来,根据 成本最高的缺陷的产生原因建立鱼骨图( 具体参见5 1 2 节) ,最后通过分析一 个完整的鱼骨图了解较件过程中成本最高的错误和缺陷及其产生原因。进而制 定计划消除这些错误,降低出现错误和缺陷的频率,改进软件开发过程。 这些测度建立了一个过程基线,软件过程正是基于此来评估改进的。当组 织达到了c m m 4 后,才通过测度进行定量的软件管理,知道最薄弱的环节,然 后,对缺陷进行预防,对过程进行持续改进。其实,在我看来,过程度量应该 在c m m 2 级就开始,而不是专门等到过c m m 4 级时才开始着手。 3 3 软件过程改进的原理 通俗的说。过程就是如何做事,软件过程做的事就是软件开发和维护。如 何做事可以看出一个人的成熟程度,软件组织也有不同的成熟程度。不成熟的 组织最大的特征就是“救火”。只顾、也只麓忙于解决跟前的问题,雨跟前的 问题又往往一个接一个。相反,成熟的组织要有序得多,力图预防问题,而非 应付问题,虽然也可能出现意外情况,但对此是早有防范的,早有准备的。 软件过程改进最根本利益其实在于,它能够极大的提高项目成功的几率, 这是大家都追求的。当然需要明确定义这里的“项目成功”的含义,不是客户 要求三个月完工,最后按时交工,就是成功。而是综合平衡进度、交付后质量、 成本等若干要素后所达到的最优状态。 软件过程改进并不是一件很困难的事。并没有写一个操作系统或数据库那 样的纯技术上的难度。但它面对的是一种含有大量管理成分的工程技术。这也 就是为什么不容易把它做好的原因。 什么是“改进”? 改进所涉及的五个步骤和五个步骤中的关键内容如下 所示: 1 把要想达到的状态与目前的状态作比较,找出差距; “要想达到的状态”:如果个机构决定采用c m m 来做参考蓝本的话,就 可以基于它的各个k p a ,制定出符合自己机构及产品特点的目标状态。 “目前的状态”:要找出什么是目前的状态,就要进行对目前软件过程的 评估。评估的方法很多,最简单的就是一组熟悉本机构的日常开发运作的人员 在一起讨论,把它列出来。在这里,可借助c 删的评估问卷办法。实质上,评 估问卷中的问题,就是把各关键过程域的各细则内容,加上“有没有做到”、 “有没有建立”、“有没有执行”等语句而构成的,并没有什么神秘之处。 2 决定要改变哪一些差距,要改变到什么程度( 可分阶段改) ; “决定要改变哪一些差距”:要从多个方面进行考虑决定。例如:“最薄 弱的环节”、“最需要改进的环节”,“最易做到而又有显著收效的改进”, 各机构要按自己的情况作决定。 “要改变到什么程度”:由于过程改进本身就是一个渐进的过程,我们不 可能一步就实现目标。须知欲速则不达,目标与能力,要有个平衡。 3 制定具体的行动计划; a 要有明确的,可以检验的目标: b 要定出检验成功与否的标准; c 。要有具体的实旌行动办法; d 要指定具体执行计划的人,每个人的具体责任与任务: e 要指明计划的主要领导或协调者,负责解决一切在执行中出现的问题: f 要列出所采用的新技术与新工具,怎样获得它们; g 要定出对新技术和新工具进行对本机构适用性改造的目标; h 要有对新技术和新工具的使用进行培训的计划: i 要列出每一改进对过程的其他部分的关系、影响、和协调的办法: j 要建立与项目相关联的时间表; k 要指出相关的人力、资金与时间的来源: 1 要定出在整个执行过程中,必须在什么时候提供什么数据: m 要有对执行情况进行监察考核的具体办法及计划; n 要准备很可能发生的,在执行过程中对行动计划按情况进行调整的行 动: 0 要有对行动计划执行中可能出现的意外情况有所准备,保证项目仍然能 够顺利进行: p 必须要有高层领导、管理人员作为推动整个行动计划的动力。 4 执行计划,同时在执行过程中对行动计划按情况进行调整 “在执行过程中对行动计划按情况进行调整”:一旦发现需要对行动计划 进行调整,而实际情况也允许在中途进行调整的话,可以进行经过计划的、严 加控制的调整。所有的改变必须预先取得所有有关人员的同意。 5 总结这一轮改进的经验,开始下一轮改进。 “总结这一轮改进的经验”:过程改迸是一个永不停止的工作。运用知识 解决问题,并总结经验,将使我们越做越好。 4 过程方法论综述 近年来,s e i 连续提出了s w c 删、p - c m m 、s e - c d m 和c m m i 及p s p ,t s p 等理 论,上世纪9 0 年代以d s d m 、s c r u m 、f d d 、c r y s t a l 、a s d 、x p 为代表的轻型软件 开发方法逐渐兴起,r a t i o n a l 提出以架构为中心的r u p ( r a t i o n a lu n i f i e d p r o c e s s ) 。一时间出现这么多过程方法论并不奇怪,因为事实证明并不存在一 成不变地适合于所有项目的过程模板。这些过程方法论的很多原贝其实来源于 软件开发中的c o m m o ns e n s e ,只是这些方法论将它们进行了总结和挑选。我们 学习这些方法论主要是学习其思想,将其中适应企业和项目开发过程的方法, 加以使用,从而解决软件开发中的问题,改善开发过程,增强企业竞争力。 s w c m m 是一套用来评估软件组织过程成熟度的基准“3 ,阐明了组织为了系 统地实施软件过程改进、提高过程成熟度应该做些什么,但它并没有规定如何 去做,因此人们往往采用p s p t s p 过程,以填补这一空白。p s p t s p 属于重型 的过程方法,为了提高过程的成熟度和可预测性,强调对过程进行全面精确的 度量,制作大量复杂繁琐的数据表格和文档以及固定程式化流程配合,实施成 本高。 极限编程x p 作为敏捷型方法中最引人瞩目的一种,很容易适应变化并迅速 做出自我调整,在确保质量的前提下,做到文档、度量适度。 接下来,我们将对c m m 、p s p t s p 和x p 这几种过程方法做一些简单的介绍。 4 ,l 能力成熟度模型c 删 能力成熟度模型( c 删) 是由美国卡内基梅隆大学的软件工程研究院( s e i ) 制定的套专门针对软件产品的质量管理和质量保证标准,是软件过程管理思 想不断发展的集中体现。c 删以5 个不断进化的层次反映了软件过程定量控制 中项目管理和项目工程的基本原则,它所依据的想法是只要不断地对软件企业 的软件工程过程的基础结构和实践进行管理和改进,就可以克服软件生产中的 困难,增强开发制造能力,从而能按时地、不超预算地制造出高质量的软件。 c 删标准共分为五个级别:初始级、可重复级、定义级、管理级和优化级,从 低到高。标志着软件生产的计划度越来越高、生产周期越来越短、成本也越来 越低。 c m m 的一个重要价值在于它把众多的c o n l m o f ls e n s e 整合成完整的知识体 系,c 涮中贯穿着抓主要矛盾的哲学思想,它的分级思想是与i s 0 9 0 0 0 的一大 不同,就是承认资源总是相对不足的,问题不可能一下子全解抉。要分几步( 五 个等级) 走,每一步要抓一些关键的因素( k p a ) 。 我们知道,软件产品的质量在很大程度上取决于构建软件时所使用的软件 开发和维护过程的质量。软件过程是人员密集和设计密集的作业过程,若缺乏 有素的训练,就难以建立起支持实现成功改进软件过程的基础,改进工作亦将 i 】在本文中,如果不加说明,c # 孵即指s e is w - l 3 嘲v l ,l 难以取得成效。c m m 描述的这个框架正是勾勒出从无定规的混沌过程向训练有 素的成熟过程演进的途径。s e i 给c 删下的定义是:对于软件组织在定义、实 现、度量、控制和改善其软件过程的进程中各个发展阶段的描述。这个模型便 于确定软件组织的现有过程能力和查找出软件质量及过程改进方面最关键的问 题,从而为选择过程改进战略提供指南。 4 ,1 1c m m 理论 一 早在2 0 世纪6 0 年代中期,人们就发现软件的生产出现了“问题”,主要 表现在生产过程不规范,缺乏管理。后来,人们在软件工程方法学中引入了工 程的概念、原理、技术和方法,这种思想在一定程度上解决了软件生产过程中 遇到的问题。但是直至8 0 年代还是没有提出一套管理软件开发的通用原则,软 件开发管理不善的问题依旧在大范围内存在。随着软件开发的深入、各种技术 的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性, 因此管理学的思想逐渐融入软件开发过程中。美国卡内基梅隆大学软件工程研 究所( c m u s e i ) 的亨佛雷( w s h u m p h r e y ) 等人在1 9 8 7 年前后,提出了软件过程、 软件能力成熟度和成熟度等级等概念,并正式形成了软件能力成熟度模型 ( s 卜c 删,s o f t w a r ec a p a b i l i t ym a t u r i t ym o d e l ) 。c m m i 1 版发表于1 9 9 3 年。 c 州为软件企业的过程能力提供了一个阶梯式的进化框架,它基于过去所有软 件工程成果的过程改善的框架,吸取了以往软件工程的经验教训。它指明了一 个成熟的软件组织在软件开发方面需要管理的那些主要工作、这些工作之间的 关系、以及以怎样的先后次序,一步一步的做好这些工作使软件组织走向成熟。 c m m 不仅是个模型,一个工具,它更代表了一种管理哲学在软件工业中 的应用。c 删标准共分为五个级别:初始级、可重复级、定义级、管理级和优 化级,从低到高,标志着软件生产的计划度越来越高、生产周期越来越短、成 本也越来越低。 第一级:初始级( i n i t i a l ) :软件过程的特征是特定的和偶然的,有时甚 至是混乱的。几乎没有过程定义,成功完全取决于个人的能力。 第二级:可重复级( r e p e a t a b l e ) :建立了基本的项目管理过程,能够跟踪 费用、进度和功能。有适当的必要的过程规范,使得可以重复与以前类似的项 目的成功。 第三级:定义级( d e f i n e d ) :用于管理和工程活动的软件过程已经文档化、 标准化并与整个组织的软件过程相集成。所有项目都使用统一的、文档化的、 组织过程许可的版本来开发和维护软件。本级包含了第二级的所有特征。 第四级:管理级( m a n a g e d ) :软件过程和产品质量的详细度量数据被收集, 通过这些度量数据,软件过程和产品能够被定量地理解和控制。本级包含了第 三级的所有特征。 第五级:优化级( o p t i m i z i n g ) :通过定量反馈进行不断的过程改进,这些 反馈来自于过程或通过试验新的想法和技术而得到。本级包含了第四级的所有 特征。 s e i 定义的这五个级别是根据s e i 的基于c m m 的评估调查表得到的反馈而 产生的结果。调查表的结果被精化得到单个的数字等级,表示了一个组织的过 程成熟度。s e i 将关键过程域( k p a ) 与每一个成熟度级别联系起来。k p a 描述 的是要达到某一特定级别必须满足的软件工程功能( 如软件项目计划、需求管 理等) 。c m m 中定义了1 8 个k p a ,它们映射到成熟度的不同级别。除了第一级, 其它每一级都有几个特别值得注意的关键过程。c m m 的五层结构图和k p a 分布 如下图4 1 1 - 1 所示: 1 “少 图4 1 卜1 伽m 五级结构 其中,第二级的关键之处是建立基本的项目管理控制;第三级的关键之处 是既关注项目问题,也关注组织问题,因为组织建立起了高效率软件工程制度化 的基本架构和跨项目的管理过程;第四级的关键之处是对软件开发过程和软件 产品都有一个定量的理解;第五级的关键点强调,不论组织还是项目,必须追 求持续的、可度量的过程改进。 每一个k p a 都由一组用于满足其目标的关键实践来定义,这些关键实践是 在一个关键过程区域完全建立前必须完成的策略、规程和活动。 4 1 2c m m 应用于软件过程改进 我们知道有效的项目管理集中于4 个p 上:人员( p e o p l e ) 、产品( p r o d u c t ) 、 过程( p r o c e s s ) 和项目( p r o j e c t ) 。软件工程是人的智力密集的劳动,人员必 须被组织以有效地完成软件工程;必须和客户通信已了解产品范围和需求;过 程必须针对人员和产品进行适应性修改,采用一个合适的软件工程模型,并挑 选一个工作任务集合来完成项目的开发;项目必须通过估算工作量和完成工作 任务的日程而被计划。软件质量的实现是一个过程,如何通过改进软件过程达 到软件最好的质量,成为当今项目管理的重要目标。 过程改善就是要充分了解现有的过程并改变这些过程,尽可能的提高产品 质量、降低成本和减少开发时间。借助c 姗对软件过程的合理控制,可以有效 控制软件开发的流程,提高开发软件质量。随着c 删级别的提高,软件可靠性 将有数量级的改进,以目前业界的通行标准:每千行源代码所包含的b u g 数, c m m l 级为1 1 9 5 个,c 删2 级为5 5 2 个,c 咖3 级为2 3 9 个,c 4 m 4 级为0 9 2 个,而c m m 5 级则只有0 3 2 个。在可靠性提高的同时,c m m 5 软件开发周期是c m m l 的3 6 ,而生产成本是c b l m l 的1 9 ,平均每个软件开发人员的生产率会提高 4 0 0 。 在c m m 模型及其实践中,企业的过程能力被作为一项关键因素予以考虑。 过程能力将企业从事软件开发和生产的过程本身透明化、规范化和运行的强制 化。这样一来,就可以把软件开发及生产过程中成功或失败的经验教训变成今 后可以借鉴和吸取的营养,大大加快软件生产的成熟程度。 为了加快软件企业成熟程度的提高,必须尽量利用过去软件工程发展的成 果,在软件开发过程中,侧重这些关键过程域( k p a ) 的实施,将会有效地建立 个过程,加快软件企业成熟度的提升。 4 2 个体软件过程( p s p ) 和群组软件过程( t s p ) c 删是过程改善的第一步,它提供了评价组织软件过程成熟度的标准。然 而,c m m 不是力能的,它的成功与否,与组织内部有关人员的积极参与和创造 性活动密不可分。过程本身并不提供神奇的超水平的解决方案,只有角色( 即 实际存在的人) 才是项目的驱动力。归根结底,无论是项目完成还是发布高质 量的系统,很大程度上都依赖于参与者个体软件过程的质量。因此,个体软件 过程p s p ( p e r s o n a ls o f t w a r ep r o c e s s ) 显得尤其重要。p s p 为软件人员进行 软件开发提供了一个规范的个人过程框架,它由一系列帮助软件工程师改善其 个人表现的过程描述、度量和方法组成。它提供了表单、指导及流程用以帮助 工程师估计和规划其工作,为基于个体和小型群组软件过程的优化提供了具体 而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等 等。软件过程改进能够并且应该开始于个人级。 群组软件过程t s p ( t e a ms o f t w a r ep r o c e s s ) 结合了c 删的管理方法和 p s p 的工程技能,实施集体管理与自己管理自己相结合的原则,告诉软件工程 师如何将个体过程融入小组软件过程,并将小组软件过程与组织进而整个管理 系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作, 并且依据数据进行项目的管理,向组织展示如何应用c 删的原则和p s p 的技能 去生产高质量的产品。t s p 指导项目组中的成员如何有效地规划和管理所面临 的项目开发任务,并且告诉管理人员如何指导软件开发队伍,始终以最佳状态 来完成工作。t s p 的最终目的在于指导开发入员如何在最少的时间内,以预定 的费用生产出高质量的软件产品,所采用的方法是对群组开发过程的定义、度 量和改进。 p s p t s p 属于重型的过程方法,为了提高过程的成熟度和可预测性,强调 对过程进行全面精确的度量,制作大量复杂繁琐的数据表格和文档以及固定程 式化流程配合,实施成本高。 4 2 1p s p 的基本原理和过程结构 p s p 是一个过程描述、测度和方法的结构化集合,能够帮助工程师改善其 个人性能。下面是一些基本的p s p 原则: ( 1 ) 每个人都是不同的,对于某个工程师有效的方法不一定适合于另一 个工程师。这样,p s p 帮助工程师测量和跟踪他们自己的工作,使得他们能够 找到最适合自己的方法,同时必须分析每一个工作的结果以改善其个人的过程; ( 2 ) 每一个工程师必须在开始工作以前对自己的工作进行计划,而且必 须用一个定义的过程进行计划。为了了解个人的表现,必须度量其每一个工作 步骤的花费时间,产生和消除缺陷的数量以及所制造产品的规模: ( 3 ) 如果你在测试以前质量不高的产品,那么在测试以后你也得不到高 质量的产品。p s p 专注于向工程师展示如何在他们开始进行测试以前确保他们 的产品有高的质量: ( 4 ) 要牢固地改善其表现,工程师必须采用经过良好定义和度量的过程: ( 5 ) 要生产高质量的产品,工程师必须对其产品的质量有其个人的责任, 好的产品是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州六盘水市六枝特区锦黔农旅发展(集团)有限责任公司招聘工作人员笔试历年参考题库附带答案详解
- 2025西安庆安制冷设备股份有限公司招聘(7人)笔试历年参考题库附带答案详解
- 2025内蒙古自治区农牧业科学院招聘48人模拟试卷及一套参考答案详解
- 2025福建福清市诚烨电子有限公司招聘5人笔试历年参考题库附带答案详解
- 2025福建新华发行集团招聘笔试历年参考题库附带答案详解
- 2025福建厦门市翔安保安有限公司招聘员18人笔试历年参考题库附带答案详解
- 2025福州市建筑大数据技术有限公司招聘4人笔试历年参考题库附带答案详解
- 2025广东深圳市优才人力资源有限公司招聘综合网格员(派遣至布吉街道)拟聘人员笔试历年参考题库附带答案详解
- 2025内蒙古包头中心区建设投资运营管理有限公司面向社会招聘2人笔试历年参考题库附带答案详解
- 2024-2025中国商飞公司秋季校园招聘笔试历年参考题库附带答案详解
- GB/T 13090-2025饲料中六六六、滴滴涕的测定
- (2025)学法用法考试题及答案
- 巴以冲突的原因
- 占用道路施工组织方案(3篇)
- 环境反应工程导论课件
- 马场建造设计方案
- 本币交易员考试题库
- 安徒生童话题目及答案
- 胃食管反流病的健康教育指导讲课件
- 宜宾党校考试试题及答案
- 2025年安徽省农业职业技能大赛(水生物病害防治员)备赛试题库(含答案)
评论
0/150
提交评论