(计算机应用技术专业论文)xp过程模型的改进研究及环境实现.pdf_第1页
(计算机应用技术专业论文)xp过程模型的改进研究及环境实现.pdf_第2页
(计算机应用技术专业论文)xp过程模型的改进研究及环境实现.pdf_第3页
(计算机应用技术专业论文)xp过程模型的改进研究及环境实现.pdf_第4页
(计算机应用技术专业论文)xp过程模型的改进研究及环境实现.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 近二十年米,作为提高软件生产率和保证软件质量的个重要手段,软牛过 程已经得到了广泛的发展。 本文首先介绍软件过程的一些概念及几种相关过程模型。之后,主要针对 x pr p 过于强调人的能动性而轻视了过程的管理作用的现状,对”过程模型进行 了改进,形成了一种过程与技术并重的过程模型x p p r o 。它以x p 的主要架构为 基础,参考了r u p 、c 洲等其它过程模型中的有益因素,对x p 的核心实践、过程 控制、开发流程作了相应的改进。本文对x p p r o 的构架、流程的定义进行了详细 描述,并通过对x p p r o 与x p 的比较展示了x p p r o 的优越之处。 文章最后部分,介绍了一个支持x p p r o 过程模型的集成环境过程管理原 型系统x p p r o m a n a g e r 。x p p r o m a n a g e r 是在己实现的一个软件过程支持环境原型 系统s o f t e v 的基础上发展而来的,它克服了原系统的一些缺陷使之适合x p p r o 过程模型。最后本文给出了x p p r o m a n a g e r 的整体框架详细描述了其主要功能 模块的设计与实现。 关键字:软件过程软件过程模型软件过程管理软件过程改进敏捷方法 极限编程( x p ) 软件能力成熟度模型( c m m ) 统软件过程( r u p ) a b s t r a c t a sa n i m p o r t a n t m e a n sf o r i m p r o v i n g s o f t w a r e p r o d u c t i v i t y a n d s o t t w a r eq u a 【i t y s o f t w a r ep r o c e s sm a n a g e m e n th a sb e e na c c e p te dw i d e l y i nt h er e c e n t t w e n t yy e a r s i nt h i sa r t i c l e w ei n t r o d u c es o m ec o n c e p t i o no fs o f t w a r ep r o c e s sa n d s o m ep r o c e s sm o d e l sa tf i r s t t h e n ,b e c a s ex pd e p e n d so nt h ea b i l i t yo f h u m a nb e i n gt o om u c ha n di g n o r e ss o f t w a r ep r o c e s s ,w em a k es o m ei m p r o v e m e n t o nt h ep r o c e s sm o d e l0 fx p b a s eo ft h e s e ,w ec r e a t ean e wp r o c e s sm o d e l w h i c hi sn a m e dx p p r o x p p r ob a s e so nt h em a i nf r a m eo fx p i tr e f e r st os o m e a d v a n t a g eo fr u pa n dc m m ,i m p r o v e st h ec o r ep r a c t i c e 、p r o c e s sc o n t r 0 1a n d p r o c e s sf l o wo fx p i nt h i sa r t i c l e ,w ed e s c r i b et h ef r a m ea n df l o wo fx p p r o i np a r t i c u l a r ,a n dt h e ns h o wt h ea d v a n t a g eo fx p p r ob yc o m p a r i n gw i t hx p a tt h el a s t p a r t o ft h i sa r t i c l e ,w ei n t r o d u c ea ni n i t i a ls y s t e mo f p r o c e s sm a n a g e m e n t n a m e d x p p r o m a n a g e r w h i c hi su s e f u lf o r x p p r o x p p r o m a n a g e rb a s e so nt h ei n i t i a ls y s t e mn a m e ds o f t e v ,i to v e r c o m e s s o m ed e f e c t so fs o f t e vf o rf i t i n gw i t hx p p r o i nt h ee n d ,w ed i s p l a yt h e m a i nf r a m eo f x p p r o m a n a g e r a n dt h e nd e s c r i b ei t sm a i nf u n c t i o ni n p a r t i c u l a r k e yw o r d : s o f t w a r ep r o c e s s ,s o f t w a r ep r o c e s sm o d e l ,s o f t w a r ep r o c e s sm a n a g e m e n t s o f t w a r ep r o c e s s i m p r o v e m e n t ,a g i l e m e t h o d ,e x t r e m ep r o g r a m ( x p ) , c a p a b i l i t ym a t u r i t ym o d e l ( c m m ) ,r a t i o n a lu n i f i e dp r o c e s s ( r u p ) 柯京航,l 航天人学颇l 论文 第一章绪论 1 1 软件过程技术在国内外的研究现状 软件技术司计算机馁件技术一样发展了几t 年,f | 1 :l 软件的生产水、i i 还远远 不能满足社会的需求。从8 0 年代,i :始,人们逐渐认识剑瀑布模型的不足,为了 开发出更可靠、执行效率更高、功能更完善的软件,就需要软件工程研究人员 不断丁l :发新的软件开发模型,此后提出了其它的软件开发模型,如快速抛弃原 型法、增量式开发法、自动软件综合法、空间螺旋式开发模型以及面向对象的 开发技术等。它们从不同的侧重点出发,试图避免瀑布模型的缺陷,描述适合 软件开发规律的模式。 但是困扰人们的“软件危机”并没有很好的解决,大规模软件生产仍然很 困难。据h e l e ne t h o m s o n 估计i lj ,目前每年大约有1 5 的软件项目被取消,特 别地,对于大规模的软件开发项目而言,大约有5 0 的项目不仅超出预算,而且 不能按时完成。就是小规模的软件项目,开发情况也不容乐观。据k p m g 的统计 【1 】,大多小项目都超出预算的2 0 ,而且延期2 0 。可见大多数软件开发企业的 软件开发情况并不理想,软件开发进度、质量以及成本得不到有效地控制。这 就迫使软件工程的研究人员去寻找改善软件开发状况的另一种途径。 尽管软件过程只是改进软件质量和组织性能的几个可控因素之一,但是, m d o w s o n 指出:“软件产品的质量在很大程度上依赖于软件过程,尤其是大规 模的软件开发更是如此。”p 】所以,通过改进开发过程来改善软件产品的质量、 提高软件生产率成为软件开发企业的重要环节。 由于软件过程的重要性和复杂性,软件过程技术一直是软件工程研究中的一 个重要内容。近年来软件过程技术发展很快,每年都有许多相关论文提交到 i s p w ( i n t e r n a t i o n a l s o f t w a r ep r o c e s s w o r k s h o p ) ,i c s p ( i n t e r n a t i o n a l c o n f e r e n c eo rs o f t w a r e p r o c e s s ) 等会议。f i g g e t t a 总结了软件过程研究取 得的成就和未来的发展方向1 4 】。国际上也先后出现多种对软件过程评估的技术, 尤其以卡内基梅隆大学的软件工程研究所( s e i ) 建立的c m m ( c a p a b i l i t y m a t u r i t ym o d e l ) 质量体系明确给出了对软件过程的能力成熟度进行评估的模 型,指导着软件开发组织不断改进其软件过程。 美国卡内基梅隆大学( c m u ) 的软件工程研究所( s e i ) 在软件过程方面作出了 巨大的贡献。1 9 8 6 年1 1 月,s e i 在m i t r e 公司的帮助下,以i b m 的工作为基础 开发了一个过程成熟框架,用于帮助企业改进软件过程。这项工作最初是为了给 美国政府提供一个方法来评价其软件供货商的能力。在1 9 8 7 年9 月,w h u m p h r e y 和w s w e e t 交付了一个过程成熟框架的简要描述和一个成熟问题表。s e i 希望这 个成熟问题表能提供一个简单的手段来确定企业的软件过程需要改进的领域。但 南京航卞航天人学f 嗽| 论文 通常人们认为这个问题表就是“模型”,而不是一个表达过程成熟性问题的调查 表。m k e l l n e r 和g h a n s e n 于1 9 8 8 年在报告中提出了软件过程建模的概念1 3 7 j , 其p i 标足将新的软件工程技术引人实际工作中。k e l l n e r 还在浚报告中讨论了 s e i 进行的软件过程建模实例的研究口”,可以给企业提供一个创建过程改进程序 更有效的方法( 比如成熟问题表) 。通过使用从软件过程评价和来自工业与政府的 大啦反馈如以,就产牛了过程成熟框架的改进版本,称为软件的能力成熟模型 ( c a p a b i l i t ym a t u r i t ym o d e l ,c m m ) ,这是c m mv e r s i o n l 0 。 由于软件工程界认识到了软件过程的重要性,因此不仅提交了很多报告,在 理论研究的同时,还开发了许多支持软件过程的大型项目。主要有美国 n g o l d m a n 主持的a p 5 ,s s u t t o n 和l o s t e r w e i l 主持的a p p l a ,m k a r r 主持 的e l ,k h u f f 主持的g r a p p l e ,g k a i s e r 主持的m s l m a r v e l ,p p e il e r 主持 的s a d t ,m k e l i n e r 主持的s t a t e m a t e 等等。下面介绍几个较新的关于软件过 程方面的研究项目。 所有软件项目的开发总会有一些不可避免的修改,这就会影响到原定的目 标、决策和进度,这样,管理人员就需要获取有效可靠的数据来改进过程和产品。 从这个角度出发,b a r i 大学的g v i s s g g i o 于1 9 9 4 年主持开发了一个称为 p r o m e t h e u s 的产品i j ”,p r o m e t h e u s 集成了过程的建模、过程的执行和管理、以 及过程和产品有关数据的获取。它还帮助管理人员收集与某个特定项目有关的事 件( 包括预料的和没有预料的) 数据。并提供了一个框架对这些事件进行分类,记 录事件对过程和产品的影响。 除了上面介绍的大型研究项目以外,随着学术界和工业界对软件开发过程越 来越重视,不断有新的过程管理环境出现。据d a v i ds h a r o n 和r o d n e yb e ll 的 统计p ”,近几年推出的软件过程管理方面的环境主要包括以下几方面的功能:( 1 ) 建模,用于项目的建模并映射到由工具支持的任务上;( 2 ) 工具协调,用于将工 具的使用协调起来以便支持过程中的各个任务;( 3 ) 运作,用于指导和支持项目 的有关人员遵循开发过程进行各项活动,( 4 ) 管理,用于帮助项目管理人员确定 开发活动对完成过程的影响,根据实际情况做出相应的决策。这些工具的主要代 表有:x s o f t 公司的i n c o n c e r t 、c a p 公司的p r o c e s sw e a v e r 、s e c a 公司的s e c o m p a n i o n 等。 目前,在国内,北京大学的青鸟工程目前也正致力于软件过程管理环境方面 的研究,并且已经取得一定的研究成果,开发出了j b i is p m s 软件过程管理系统, 负责对软件过程的建模及动态控制。j b i is p m s 主要由两个部分组成( 4 0 i :软件过 程模型定义部分s p d 和软件过程控制部分s p c 。过程模型定义部分具体完成软件 过程模型定义以及有关资源管理的内部执行过程:过程控制部分负责软件过程模 型的实施、监控以及动态调度,以及通过消息服务器同j b i i 环境中的工具进行 通讯。 南京航窄航天人学顺j 二论立 1 2 问题的提出 1 i 到2 0l i 纪8 0 l i 代,h 大多数研究人员都有一一个信念,认为“只要有好 的软件开发方法和工儿就可以厅发出高质量的软件,并且能提高软件的生产 率”。但是,很多大型软件系统的开发经验表明,事情并不是那么简单。大约到 1 9 8 7 年前后,荚国:i = 业抖和政府部门特别是d o d 和军方开始认识至0 ,在软件开 发中,如果软件开发组织不能良好地定义、评价、改进和管理软件过程,开发 组织往往不能从软件工程的研究成果即良好的软件开发方法和工具中充分获 益,从而得不到期望的结果。软件过程( 包括各种工程过程和管理过程) 的不 断改进才是增进软件开发组织的能力和提高软件质量的第一要素。在这个背景 下,国际上也先后出现多种对软件过程评估的技术,特别是卡内基梅隆大学的 软件工程研究所建立的c m m 质量体系得到了广泛的认可,它的有效性已为大量 实践所证实,并已成为对一个软件组织的生产能力和产品质量进行衡量的事实 标准。 但是,正如前文所说的,虽然i s o 一9 0 0 0 、c m m 、s p i c e 已被公认为软件质量 保障方面的事实标准,但由于其强调管理和控制,追求项目的可预测性和过程 状态的可视性,导致其难以同时做到对软件生产率的提高,特别是应用于较小 型的项目时。而目前三分之二的软件公司只有2 0 个或更少的雇员,小公司常常 为事务或大型系统的专用部分提供用户的特定解决目标。对这些公司而言,由于 所开发项目具有经费少和开发周期短的特点,在保证软件质量与基本的管理和 控制的条件下,较高的生产率是必不可少的。他们必须将高质量的产品尽量早 地交付到客户手中,否则就很可能因为无法及时完成开发任务而导致工程的失 败。这些使得以x p 为代表的新方法的提出,并在实践中得到了巨大的成功,如 i o n a 公司的o b i x 技术支持小组在采用了x p 方法后,软件生产率提高了6 7 1 5 】; 软件生产率组织( s p 6 ) 的c a p e r sj o n e s 则称,s c r u 4 方法可提高生产率6 倍【6 】。 但是,敏捷方法也有自身的不可避免的缺陷,目前还是有很多学者对敏捷 方法提出质疑。就像所有开发方法一样,敏捷方法也需要不断的改进,不断的 调整。目前有很多人正在从事对x p 过程模型的改进工作,并发表了一系列有价 值的论文。他们的改进工作侧重方向各不相同,但大部分集中在以下两个方面: ( 1 ) 将x p 过程模型与其它过程模型结合,进行合理裁减。对此研究得最 多的是x p 与c m m 结合,另外x p 与r u p 的结合也是一个热门话题。c r a i gl a r m a n 对r u p 按a g i l e 思想进行了裁剪,r o b e r tm a r t i n 将r u p 与x p 结合提出了d x 过 程( d xp r o c e s s ) 。 ( 2 ) 目前的x p 只适用于小团对、小项目、集中式的开发,如何扩展x p 的 适用范围以及如何解决在分布式环境中使用x p 成为研究的重点方向。 软件过程模型与软件工程过程环境的研究是紧密相连的,随着人们对x p 过 程模型改进的研究工作的展开,必然引出了对相应的软件工程过程环境的研究需 向东航守航无人学坝j 。论卫 要。目l ; 圈内外所构造的以过程为中心的软件工程环境大多处在原型阶段,f 式的商、比化产协还非常少。南航软件工程开发中心也在从事这方面的研究,并针 对某航天单位的需求丌z z 出一个软件过程管理原型系统s o f t e r ,| i _ _ i 河已在该单 位试运行成功。在试运 n 立程中,针对系统出现的问题和进一步的需求产生了一 些修改意见。我们根据这些修改意见和自身的研究课题,提出了该原型系统的几 个缺i 5 ;1 ,并确定了系统改进的研究方向。系统主要的缺陷如f : ( 1 ) 存在操作系统依赖。第一个版本是在m sw i n d o w s2 0 0 0 环境下_ _ f 1 = 发的, = 玎= 发语言为p b 7 。由于编写语言的的限制,系统只能在w i n d o w s 操作系统下运行。 ( 2 ) 不支持远程协同。第一个版本在设计时,考虑的主要网络开发环境是 局域网环境。在系统结构设计时,选择的是局域网的c s 结构。因此,无法实现 通过互联网的远程协同。 ( 3 ) 缺少对过程改进的支持。在这个版本里,没有实现对过程改进的支持, 过程模型的修改、进化的功能支持不足。 ( 4 ) 过程模型表示。第一个版本是基于项目管理模式的,对工作流模式缺 乏支持。在开发过程中出现回溯造成模型中出现环状结构时,系统的处理及表示 方法有限。 ( 5 ) 过程控制需改进及实现。在过程控制中,对标志性的项目任务设置检 测点。在项目任务检测点处管理人员需专门组织质量评审,并需在系统中填写评 审结果,只有检测点通过之后,开发人员才可以继续后续任务的开发。 ( 6 ) 权限控制需要加强。原先的权限控制较为单一,无法处理复杂的团队 与项目之间的关系。资源管理模块中无法实现对多个团队、多个角色、多个项目 之间的复杂关系的处理工作。 1 3 研究的主要内容 本文的研究主要集中在两个方面:x p 过程模型的改进研究和软件过程管理 原型系统s o f t e r 的改进研究与实现工作。 f 如上文提到的,以x p 为代表的敏捷开发方法具有某些领域的缺陷,针对 这个问题目前已经有人做了许多研究工作,例如r o b e r tm a r t i n 将r u p 与x p 结 合提出d x 过程。r o b e r tm a r t i n 走的是将两种软件过程模型进行裁减的道路, 他的做法启示了一条通过过程裁减进行改进的方向。是否可以以x p 过程模型为 主体,通过借鉴多种优秀的过程模型解决x p 的缺陷,使之具有更优越的特性呢? 在这种思想指导下,本文在x p 的基础上,参考c m m 、r u p 的过程定义,在如何进 行裁减才能有效地改进x p 的性能上做了许多有益的研究。 本文对x p 的改进工作主要是加强了x p 的过程,使之成为一种过程与技术并 重的过程模型。在加强过程定义的同时,必然需要加强过程的管理。在实际开发 中为了对模型所定义的过程进行有效地管理,需要有适合该过程模型的过程管理 环境作为支持。因此在对过程模型改进的同时还需要进行相关过程管理环境的 向京航。航天人学坝l 。沦文 研究工作。为了使s o f t e v 能够有效地定义及运行x p 改进后的过程模型,使之能 够有效地投入使用和进行检验,本文在对s o f t e v 的改进的研究与实现上做了大 量的工作。 我们软件过程组承担了s o f t e v 的后续改进研究与实现工作。小组共同完成 了对s o f t e v 缺陷的研究分析并根据各自的研究方向分配了相关任务。我的研 究重点在于过程模型表示与过程控制方面,以结合对x p 过程模型改进的研究工 作。同时,中心的低年级同学也正在就s o f t e v 的业务平台化、高扩展性、过程 数据的灵活定义、软件丌发管理自动化等方面的改进进行前期的研究工作。 论文的主要内容包括: ( 1 ) 软件过程的相关技术及概念的研究。通过大量阅读科技文献资料,对 软件过程、软件过程模型、软件过程描述语言等作了具体的阐述工作,并总结分 析目前软件过程主要领域的研究中存在的主要问题。 ( 2 ) 采用x p 这个过程模型为模板,借鉴了r u p 、c m m 过程模型中的有益做 法,对x p 做出了改进,形成了一个修改后的过程模型x p p r o 。x p p r o 在保留了敏 捷开发方法优越之处的基础上,较好地解决了上述提到的问题,从而具有更好的 特性和更广的应用领域。 ( 3 ) 在一个已实现的软件过程管理环境原型s o f t e r 的基础上,针对s o f t e r 存在的问题和x p p r o 的特性对其进行了相应的改进,形成了一个可供x p p r o 过程 模型使用的新版本x p p r o m a n a g e r 。本文给出了x p p r o m a n a g e r 的总体结构设计, 阐述了x p p r o m a n a g e r 的改进之处,最后详细描述了x p p r o m a n a g e r 主要功能模块 的具体设计与实现。 1 4 论文的组织结构 第一章绪论。介绍了软件过程技术在国内外的研究现状,分析了该课题研 究的目的及意义,最后介绍了本文在理论与实践上所做的工作。 第二章软件过程技术及过程改进。介绍了软件过程、软件过程模型和软件 过程改进的一些主要概念,并讨论了目前存在的一些问题。 第三章几种主流软件过程模型。简单介绍了x p 、r u p 、c m m 这三种目前广 泛采用的过程模型,然后分析了x p 的一些主要缺陷,从而引出了对x p 过程模型 进行改进的问题。 第四章x p 过程模型的改进。以x p 的主要框架为基础,改进了其核心价值, 并定义了x p p r o 自身的生命周期阶段和核心过程,最后对x p 与x p p r o 进行了比 较,阐述了x p p r o 的优越之处。 第五章过程支持环境x p p r o m a n a g e r 的设计与实现。简单介绍了s o f t e v 的结构和功能,指出了其中的不足之处并提出了x p p r o m a n a g e r 的改进策略,接 着对x p p r o m a n a g e r 的结构与功能进行详细地描述。 第六章结束语。对全文的工作进行总结,并指出了后续的研究工作。 * 京航卒航天人学坝 j 论义 第二章软件过程技术及过程改进 2 1 软件过程介绍 2 1 1 软件过程定义 软件过程( s o t f w a r ep r o c e s s e s ) 也称为软件生存周期过程或软件过程组, 是指软件生存阁期中的一系列相关过程。过程就是活动的集合,活动是任务的集 台,任务则起到把输入加工程输出的作用。活动的执行可以是顺序、迭代的( 重 复的) 、并行的、嵌套的或者是有条件地引发的1 3 3 。 软件过程的概念,不仅仅局限于软件开发和维护,它同时还涉及系统的集成 和软件产品的制作与生产,特别重视管理过程、支持过程和运行过程,其研究的对 象也已扩展到从事软件活动人员的工作,不同的角色由于其视面的不同,所负责 的软件过程也不相同。 2 1 2 软件过程领域的基本概念 过程( p r o c e s s ) :将用户需求转化为可执行系统的演化过程所进行的软件工 程活动的全体,是用于生产软件产品的工具、方法和实践的集合。 过程步( p r o c e s ss t e p ) :过程中的原予行为,不再有外部可见的子结构。过 程不是过程中基本的抽象单元。 过程程序( p r o c e s sp r o g r a m ) :描述、维护和演化软件过程的过程。 软件产品( s o f t w a r ep r o d u c t ) :使用过程描述语言所描述的可执行的过程模 型程序。 工具( t 0 0 1 ) :是一系列可执行程序集,通常由活动调用。典型的开发工具用 于需求说明、重用、建模、程序生成、编译、维护、文档生成等。 用户( u s e r ) :在过程支持下使用开发工具的人,包括程序员、设计人员、质 量工程师、项目管理员等。 视图( v i e w ) :软件过程菜一个侧面的信息,是软件过程的一个投影。 2 1 3 软件过程的分类 软件过程有各种分类方法。如按性质分有基本过程、支持过程和组织过程: 按特征分有管理过程、开发过程和综合过程:按工作内容分有获取过程、供应过 程、开发过程、运行过程、维护过程、管理过程和支持过程等。但是不管采用哪 南京航,航天人学坝 + 论上 种分类方法,都会涉及到对各种过程和活动实施剪裁,从而形成本机构或具体项 目的软件,j 二存周期模型的过程即剪裁过程。此外,还可能涉及到基础过程、改进 过程利培训过程。 2 1 4 软件过程( i :l 主婴研究方向 目前软件工程领域有三大研究主题: 软件过程定义与建模 过程评价与改进 软件过程支持,即软件过程集成环境 这三大主题是相互关联的,是提高软件生产效率和提高软件质量所需要研究 的一系列问题。本文工作主要集中在软件过程改进与软件过程支持环境方面,但 是由于这些研究方向之间关系密切,也将涉及到软件过程的定义。 2 2 软件过程模型 2 2 1 软件过程模型定义 软件过程模型是对软件过程的抽象描述与表示,它可以是形式化、半形式化 的或非形式化的,可以通过人员或计算机系统的实施活动来完成过程模型所描述 的软件过程。软件过程模型的定义包含两个方面的涵义:第一,它是对软件过程 的抽象;第二,它反映了人们看待过程的一个视角。例如,在我们平时软件项目 开发时常用的软件过程模型有:瀑布模型、螺旋模型、基于知识的生存周期模型 等等。 一般来浣,个软件过程模型中应反映软件过程中的功能、行为和组织几方 面的信息,借以在过程中回答“做什么”、“何时做”、“谁来做”、“怎么做” 等基本问题,帮助项目开发人员以及其他参与人员正确理解软件过程。一个灵活 的、强有力的过程模型将给软件开发提供有效的支持和指导,因为过程模型为软 件过程中的所有活动提供了统一的政策保证,为参与软件开发的所有成员提供帮 助和指导,使得软件开发的过程按照统一有序的步骤进行。 一个理想的过程模型应满足以下几个准则1 3 剐: 能表示所有活动组织方式 能表示各活动的工作方法和结果 能表示各活动之间存在的相互之间的关系 能体现过程的动态特性 易于被所有参与开发活动的人员理解 具有很强的灵活性,可以适应不同的软件项目 柯京航空航天= 学硕1 论史 易于对开发过程进行控制和管理 2 2 2 过程模型的意义 从以上软件过程模型含义的分析可以看到,软件过程模型给出了看待软件的 一种全局性的系统观点。其重要作用和意义可归纳为如下八个方面:口6 】 ( 1 ) 强渊了“软件系统生存于一个较长的时间周期内”这一事实,从而提 醒人们要注意软件生命周期的各个不同阶段,而不仅仅是“编码”。 ( 2 ) 为研究软件产品的投入与产出以及提高软件产品的效益,提供一种框 架和一定的方法。例如,对软件产品效益曲线和所谓的“长寿技木”的研究。 ( 3 ) 可以根据软件开发中不同阶段的特点和任务,研究和应用相应的技术、 方法与工具。 ( 4 ) 使得人们对软件及其开发能有个系统性和深刻的了解。 ( 5 ) 为工程化研制软件提供一个框架,使人们能按一定的模式有条不紊地、 规范化地进行软件生产的管理和开发。 ( 6 ) 提供一种把软件生产这一高度复杂的过程进行分解和抽象的有效途径。 ( 7 ) 使各类人员,对工作的基本步骤、目标以及在不同时期的具体任务和 活动十分明确。 ( 8 ) 使得软件开发的组织机构更具结构化和合理化。 2 2 3 过程模型的研究方向 过程模型的研究概括起来可以分为以下三个方向【3 8 : 过程模型机理的研究:即软件过程模型本身的研究,软件过程究竟是一 个怎样的过程,人们的认识在不断变化,提出了各种各样的模型。 过程模型描述的研究:即用一种可以理解、交流、执行的语言来说明软 件开发过程,通过它来指导软件开发者执行软件过程以得到最终的软件 产品。 过程模型环境的研究:即基于过程的软件工程环境,它除了应具有传统 的软件开发环境的任务外,还需要提供对软件过程自动执行、演化、指 导、完善等支持。 建立一个过程模型的环境是最终的目标,模型的描述是一种表示手段,模型 的机理表示的是软件开发过程的安排和组织形式,最终在环境中得以实现。 南康航窄航天人学顺卜论义 2 3 软件过程描述 2 3 i 软件过程描述定义 软件过程描述是通过某种彤式化的手段对软件开发过程加以系统j m 格地描 述,为软件,l :发人员提供一个标准的无歧义的软件开发规范,并以此为基础辅助 和指导丌发人员的工作,i 司时对实际的软件开发过程进行监督和控制,从而保证 软件产品的质量和软件生产率。通过过程描述所表示的过程模型可以看作是软件 开发过程的脚本,它指导开发者如何按照严格工程化的方法一步一步地进行开发 工作,软件则是依据过程描述进行的一系列软件过程活动的产品。 软件过程描述与软件过程之问的关系类似于程序和进程之间的关系,软件过 程是软件过程描述的动态执行,而它如何执行则是由过程描述所决定的。软件过 程描述是面向过程软件开发环境的基础,因此它历来是软件过程研究的一个重 点。 1 9 8 7 年,l e n oo s t e r w e i l 提出“软件过程描述也是软件”的思想对后来的 过程描述语言产生了极其深远的影响【8 ,因为过程描述语言是用以描述一个信息 产品系统化开发或修改的方法。该描述也可以使用编译或解释执行的某种程序语 言进行编写,所进行的描述本身是可执行的。从这一点而言,它类似于通常的程 序,所以过程描述实际上也可以称为过程程序。 2 3 2 过程描述语言的特征 为了有效地支持过程建模,分析和自动化目标,理想的过程模型描述语言必 须有以下特性: 必须是形式化的,便于支持过程执行和分析的自动化 能够描述组成过程的各种活动以及其运行期间产生的结果 必须便于人的理解以及通讯,一个过程描述不但要使过程工程师明白, 更重要的是要方便管理人员,用户,系统工程师,软件工程师相互之间 的交流与理解 过程运行的目标体系必定是一个异质的并行分布环境,支持多个开发 者之间的协作与交互,因此,过程语言必须提供支持过程模型在这样的 体系结构上运行的机制 因为软件过程模型通常是巨大的,所以通常需要向开发者提供一些支持 大型建模概念的有效结构,例如抽象,信息隐藏。过程重用和模型框架 等用以增强过程形式化 过程描述语言能支持各种分析,静态分析可以在执行之前,主要修改完 柯柬肮卒航天人学坝i j 论史 成之后执行,以便验证某些特性( 例如在一个时间约束条件内对某一期 待状态的可达性) 。动态分析则通过模拟运行来评价一个过程模型是否 达到了预期的标准 过程语言必须支持过程演化。软件过程是一个动态过程,它所运行的环 境也是一个高度动态环境,在运行过程中过程模型必须能够适应于各种 变化 过程语言必须支持过程管理,支持对过程的监控,管理和朗t 调,支持任 务分配,资源分配,人员通讯等 这些目标是一个理想的过程描述语言应具备的特点,在实际情况下,要达到 所有这些目标是十分困难的,并且这些目标之间有的也存在着矛盾,所以在定义 描述语言时,只能权衡得失,支持其中的一部分要求,最大限度的满足实际所需, 在x p p r o m a n a g e r 中也是这样,过程描述没有采用形式化手段,只支持了上述所 列的其中一部分特性。 2 3 3 软件过程描述的几个关键技术问题 首先是形式化问题,实际上是一个形式化程度的问题。形式化主要包括两个 方面:语法形式化和语义形式化。形式化有利于支持软件过程的自动执行,管理, 完善,指导等一系列目标,它在机器上是可执行的,但是形式化又限制了人的创 造性的发挥,所以形式化的程度应依据过程模型的目的和执行过程的部件折衷取 舍。 其次是粒度和精度的问题,过程粒度表示模型中过程元素的大小,过程精度 是一个过程指定的需要产生的结果的精确程度。保证过程精度的过程粒度依赖于 模型的目的和过程执行部件的属性,大粒度过程便于人的理解,而小粒度的过程 便于机器自动执行。基于程序设计语言的模型化方法已经用于表示小粒度模型, 支持机器上进行过程演示的特殊形式。从设计语言导出的技术,特别是高度可视 化表示技术,常用于大粒度过程模型,适用于高层管理人员进行整体工程规划。 最后是软件过程的动态化问题,高度动态性是软件过程的一大特点,处理动 态变化的主要困难在于:如何检测和传播软件环境中一个部件变化对其他部件的 影响,如何保持整个过程的有序性,有效性,如何维持各部件元素的一致性,如 何最大限度地保护和利用已有的投资。 2 4 软件过程改进 软件过程改进( s o f t w a r ep r o c e s si m p r o v e m e n t ) 就是在软件过程工程中为 了更有效地达到优化软件过程的目的所实施的改善或改变其软件过程的系列活 动。过程改进的实施,就是在认知现有软件过程的基础上,利用过程运作所获得 的反馈信息,发现软件过程存在的问题和缺陷,提出改进的意见,进而实现软件 l 柯京航卒航天火学硕l + 论证 过程的改进和完善。也可以说,软件过程的改进也就是提高过程成熟度的过程。 有效地改善软件过程足符个软件企业达到目标的必经之路。 软件过程的改进有其自身的特点1 4 i j ; ( 1 ) 软件过程的过程性。过程性表现为软件过程的建立、软件过程循序渐 进地改进。 ( 2 ) 软件过程的持续性。表现为改进软件过程是一个持续4 :断的镢 :i = 往复 过程。 ( 3 ) 软件过程的特殊性。每一个软件企业由于技术背景、产品领域、规模、 人员素质等的不同,其企业内部的软件开发过程就各不相同。其次,软件过程的 实施依赖于人、资源和环境,不同的软件企业就有不同的软件过程的进化过程。 ( 4 ) 软件过程的动态性。软件产品多是人的创造性活动的结果,大量人的 参与给软件过程带来很多主观性;其次计算机软件行业是高速发展的行业,不断 有新的软件技术涌现,要求软件过程对技术环境具有适应性;同时用户的需求是 不确定的、不断变化的,也要求软件过程对用户需求具有适应性。所以软件过程 的主观性、对环境和需求的适应性决定了软件过程是动态变化的,、对软件过程动 态变化的决策应来自于软件过程的实际执行信息。 目前有两种过程改进方法,一种是以与应用领域无关的软件过程“共性” 特征为基础的方法,对该方法的应用是通过与成熟的过程标准或模型作参照来 实施,从企业的上层建立过程和拟订过程改进的目标,所以称为自顶向下的过程 改进方法,以c 枞过程框架为基础的过程改进就是这种方法的典型。另一种是以 与应用领域相关的软件过程“个性”特征为基础的过程改进方法,从企业中的 具体部门或项目组根据自身特征设定各自的过程改进目标,在成功应用的基础 上提炼为企业级的过程规范,所以称为自底向上的过程改进方法。 南京航窄航天夫学矾i 。论文 第三章几种主流软件过程模型 3 1 极限编程( x p ) 3 1 1 敏捷方法概述 随着技术的迅速发展和经济的全球化,软件开发出现了新的特点,即在需求 和技术不断变化的情况下实现快节奏的软件开发,这就对生产率提出了很高的要 求。i s o 一9 0 0 0 、c m m 、s p i c e 目前已被公认为软件质量保障方面的事实标准,但 由于其强调管理和控制,追求项目的可预测性和过程状态的可视性,在提高生产 率方面并未予以足够的重视。并且,其实施时一方面需要大量中间制品( 过程文 档) 的制作,给开发人员带来很大负担,另一方面,追求可预测性与实际需求的 模糊和快速变化不相协调。在此情况下,出现了一些新的开发方法。 新的方法主要有e x t r e m ep r o g r a m m i n g ( 简称x p ) 、s c r u m 、c r y s t a l m e t h o d o l o g i e s 、f e a t u r ed r i v e nd e v e l o p m e n t ( 简称f d d ) 、d y n a m i cs y s t e m s d e v e l o p m e n t t h o d o l o g y ( 简称d s d m ) 、a d a p t i v es o f t w a r ed e v e l o p m e n t ( 简 称a s d ) 、p r a g m a t i cp r o g r a m m i n g 等,统称轻载( l i g h t w e i g h t ) 方法,以区别 于传统的开发方法( 称重载方法,h e a v y w e i g h t ) 。2 0 0 1 年2 月,新方法的一些 创始人在美国犹他州成立了a g i l e 联盟,将轻载方法正式更名为a g i l e 方法, a g i l e 有轻巧、机敏、活力的意思“。 a g i l e 方法目前还没有一个明确的定义,其特点是对软件生产率的高度重 视,主要适用于需求模糊或快速变化下的、小型项目组的开发。有人称,a g i l e 方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品 的方法,笼统的讲就是,”刚刚好”( j u s te n o u g h ) ,即开发中的活动及制品既 不要太多也不要太少,在满足所需的软件质量要求的前提下,力求提高开发效率。 3 1 2 x p 简介 极限编程( e x t r e m ep r o g r a m m i n g ,简称x p ) 最早由k e n tb e c k 提出,是以 开发符合变化的客户需求的软件为目标而产生的一种方法,特点在于对客户满意 度的特别强调,使开发者能够更有效的响应客户的需求变化。其中e x t r e m e 的含 义是将好的开发实践( p r a c t i c e s ) 发挥到极致。 x p 是一种适用于l o 人以下的项目组,开发地点集中的小团队轻量级开发方 法。它最早实践于1 9 9 7 年c r y s l e r 公司的c 3 项目,之后又经历过很多实践的考 验,被许多大型的公司成功地应用如:b a y e r i sc h el a n d e s b a n k ,c r e d i ts w i s 南承航空航天大学顺i 。论义 sl i f e d a i m l e r c h r y s ie r ,f i r s tu n i o nn a t i o n a lb a n k tf o r dm o t o rc o m p a n y a n du b s 。 3 1 3 x p 的特征 x p 的四个价值( v a l u e s ) 1 1 2 1 : 交流( c o m m u n i c a t i o n ) 简化( s i m p l i c i t y ) 反馈( f e e d b a c k ) 胆识( c o u r a g e ) x p 的十二个核心实践( p r a c t i c e s ) 【2 l : 重构( r e f a c t o r i n g ) 系统隐喻( m e t a p h o r ) 简单设计( s i m p l ed e s i g n ) 一周4 0 小时( 4 0 - h o u rw e e k ) 编码标准( c o d i n gs t a n d a r d s ) 持续集成( c o n t i n u o u si n t e g r a t i o n ) 结对编程( p a i rp r o g r a m m i n g ) 集体代码所有权( c o l l e c t i v eo w n e r s h i p ) 现场客户( o n - s i t ec u s t o m e r ) 计划游戏( p l a n n i n gg a m e ) 小版本发行( s m a l 1r e l e a s e s ) 测试( t e s t i n g ) 3 2 统一软件过程( r u p ) 统一软件开发过程( r a t i o n a lu n i f i e dp r o c e s s ,简称r u p ) 是套介于重载 和轻载之间的软件工程方法,是一个风险驱动的、u m l 和构件式构架的迭代递增 型开发过程( 框架) 。 r u p 可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特 征,体现开发过程的动态结构;纵轴以内容来组织为自然的逻辑活动,体现开发 过程的静态结构。r u p 定义了4 个阶段( 起始、细化、构造、移交) 和9 个科 目( 业务建模、需求、分析和设计、实现、测试、部署和变更、项目管理、环境) 。 这些阶段对应着关键里程碑的划分,而不同科目的工作流和活动在生命周期的迭 代中可以并发进行,具体执行的程度则可以调节。r u p 对于角色、流程、工作和 活动的要求是灵活的、可配置的,所以它广泛的适用于各种类型和规模的项目。 r u p 集中体现了6 个软件开发的最佳实践方法:迭代式开发、需求管理、构 件式架构、基于u m l 的可视化建模、持续校验质量、变更管理。 南京航空航灭大学坝1 1 色_ _ ( = r u p 具有很多优点:提高了团队生产力;在迭代的开发过程、需求管理、基 于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针 对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论