




已阅读5页,还剩65页未读, 继续免费阅读
(计算机应用技术专业论文)基于rup的软件成本估算模型研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 成本管理是计算机软件项目管理中的一个重要环节,成本估算是进行成本管 理的前提和依据。未进行成本估算和效益分析就进行软件项目开发,往往会导致 项目失控。目前,计算机软件项目开发过程尚不成熟,各类软件项目成本管理工 具也处于探索阶段。本文通过对基于r u p 的软件项目开发中成本估算技术和方法 的研究,提出了基于r u p 的软件项目成本估算模型,并在此模型的基础上进行软 件项目成本管理的设计与实现。 成本估算主要包括规模估算、工作量估算和进度估算三个步骤。本文以c o c o m o 模型为例研究了现有的成本估算工具的缺陷,并结合基于r u p 的软件项目开发的 现状,提出了基于用例的软件项目规模估算方法。本方法使用用例作为度量元进 行规模估算,并将规模转换为工作量。在工作量估算过程中,本文总结了可能会 对工作量产生影响的因素,并结合历史数据提出了工作量校准方法。同时,给出 了进度估算的改进方法,为进度管理提供了相关数据。依据这些方法,结合r u p 的动态开发过程和迭代式开发特点,本文还论述了进行阶段进度分配以及迭代式 开发计划的过程。 在对基于r u p 的软件项目成本估算模型进行研究的基础上,本文设计并实现 了基于r u p 的软件项目成本管理系统。在项目开发早期,依据成本模型库,可使 用系统提供的模型估算法对项目规模进行估算,以获得项目的大致成本。在需求 分析阶段,使用本系统的详细估算方法,能够对项目进行进一步的估算以得到较 为精确的成本估算值,并以此指导开发过程中各阶段的进度分配及人员安排。随 着项目的继续开展,前期估算结果能够得到及时调整并更好地指导项目顺利进行。 随着项目历史数据的不断积累,成本估算过程的经验值也不断得到提高,从而能 够指导软件开发机构进行其他的项目开发和决策。 实践结果表明,基于r u p 的软件项目成本管理系统是指导软件开发机构进行 项目成本估算和管理的一个较为有效的工具。 关键词:统一软件开发过程;成本管理;成本估算;用例;c o c o m o t h er e s e a r c ha n d i m p l e m e n to ns o f t w a r ec o s te s t i m a t em o d e l b a s e do n r u p a b s t r a c t c o s tm a n a g e m e n ti sa ni m p o r t a n ts t e po fc o m p u t e rs o f t w a r ep r o j e c tm a n a g e m e n t , b u ti ti so m e no v e r l o o k e db ys o f t w a r ep r o j e c t d e v e l o p e r c o s t e s t i m a t ei st h e p r e c o n d i t i o no f c o s tm a n a g e m e n t t h ep r o j e c tw i t h o u tc o s te s t i m a t ea n db e n e f i ta n a l y s i s i so f t e no u to fc o n t r 0 1 a tp r e s e n t ,c o m p u t e rs o f t w a r ep r o j e c td e v e l o p m e n tp r o c e s si sn o t m a t u r e s o m ek i n d so fc o s tm a n a g e m e n tt o o l sa r ei nt h ee x p l o r a t o r yp h a s e t h ep a p e r p r e s e n t sas o f t w a r ep r o j e c tc o s te s t i m a t em o d e lb a s e do nr a t i o n a lu n i f i e dp r o c e s s t h r o u g ht h er e s e a r c ho nc o s te s t i m a t ep r o c e s so fs o f t w a r ep r o j e c t t h ep a p e ra l s o r e p r e s e n t st h er e s e a r c ho ns o f t w a r ep r o j e c tc o s tm a n a g e m e n tb a s e do nt h em o d e l c o s te s t i m a t ei n c l u d e ss i z ee s t i m a t e ,e f f o r te s t i m a t ea n ds c h e d u l ee s t i m a t e t h e p a p e rp r e s e n t st h es o f t w a r ep r o j e c ts i z ee s t i m a t ep r o c e s sb a s e do nu s e c a s et h r o u g ht h e r e s e a r c ho np r e s e n tc o s te s t i m a t et o o l sa n ds o f t w a r ep r o j e c td e v e l o p m e n tb a s e do nr u r i te s t i m a t e st h es i z eo fs o f t w a r ep r o j e c tb yu s i n gu s e c a s ea st h eu n i to fm e a s u r ea n d c o n v e r t st h es i z ei n t oe f f o r t i nt h ep r o c e s so fe f f o r te s t i m a t e ,t h ep a p e rs u m m e du p s o m ef a c t o r sw h i c hm a yi n f l u e n c et h ee f f o r te s t i m a t e t h em e t h o do fe f f o r ta d j u s t m e n t i sp r o p o s e db yc o m b i n i n g 、埘t hh i s t o r yd a t a t h em o d e le s t i m a t e st h es c h e d u l ea n d a r r a n g e st h en u m b e ro fd e v e l o p e rb yar e a s o n a b l em e t h o do fs c h e d u l ee s t i m a t ea n di t p r o v i d e sd a t at os c h e d u l em a n a g e m e n t c o n s i d e r i n gt h ec h a r a c t e ro fr u p , t h em o d e l d i s t r i b u t e st h es c h e d u l et oe v e r yp h a s eo fp r o j e c td e v e l o p m e n ta n da r r a n g e sa i li t e r a t i v e p l a n t h i sp a p e rd e s c r i b e st h es o f t w a r ep r o j e c tc o s te s t i m a t em o d e lb a s e do nr u p b a s e d o nt h es u r v e y , as o r w a r ep r o j e c tc o s tm a n a g e m e n ts y s t e mi sd e s i g n e da n dr e a l i z e d d u r i n gt h ee a r l yt i m eo fp r o j e c td e v e l o p m e n t ,t h ee s t i m a t em e t h o db a s e do nm o d e l s p r o v i d e db yt h es y s t e mi su s e dt og e tt h ea p p r o x i m a t es i z e ,t h r o u g hs e l e c t i n gt h em o s t a p p r o p r i a t e c o s tm o d e lf r o mt h e c o s t - m o d e l - s t o r a g e a n da s c e r t a i n i n gr e l e v a n t p a r a m e t e r sa c c o r d i n gt ot h ec h a r a c t e ro fp r o j e c t t h i sc o s tm a n a g e m e n ts y s t e mc a i n _ p r o v i d ey o u rt e a mt h er e l a t i v e l yp r e c i s ee s t i m a t ev a l u e st h r o u g hr e q u i r e m e n ta n a l y s i s a c c o r d i n gt o t h e s e v a l u e s ,t h es c h e d u l ea n dt h en u m b e ro fd e v e l o p e ro fe v e r y d e v e l o p m e n tp h a s ec a l lb ec o n f i r m e d a c c o m p a n yw i t ht h ef u r t h e rd e v e l o p m e n to f t h e p r o j e c t ,e a r l i e re s t i m a t ev a l u e sc a nb ea d j u s t e d i nt i m e d u r i n gt h ep r o c e s so fc o s t m a n a g e m e n tu s i n gt h es y s t e m ,h i s t o r yd a t aw h i c he q u a l se x p e r i e n c eo fd e v e l o p e ri s a c c u m u l a t e da n di tc a r lh e l pt h ed e v e l o p m e n to r g a n i z a t i o nm a k i n gd e c i s i o n so f t h en e x t s o f t w a r ep r o j e c tp r o p e r l y t h ep r a c t i c ei n d i c a t e dt h a tt h ec o s tm a n a g e m e n ts y s t e mo fs o f t w a r ep r o j e c tb a s e d o nr u pc o u l dm a n a g et h ec o s te s t i m a t ea n dm a n a g e m e n tm o r es u c c e s s f u l l y k e yw o r d s :r a t i o n a lu n i f i e dp r o c e s s :c o s tm a n a g e m e n t :c o s te s t i m a t e :u s e c a s e ;c o c o m 0 第1 章绪论 1 。1 课题来源 本课题来源于“软件项目管理系统的设计与实现”项目,该项目是大连市科 学技术局批准立项的一个研究项目,项目编号为2 0 0 3 a 3 g x 0 3 2 。项目的设计思路是 构筑一个能够用于软件开发机构进行项目管理的平台,该平台能够对软件项目的 开发过程进行全面的管理。本文研究了软件项目管理中的成本管理部分相关技术 和方法,并分析和实现了该子系统的部分功能。 1 2 研究背景及意义 1 2 1 成本管理在软件项目管理中的地位 成本管理在软件项目管理中占有十分重要的地位,它是决定项目目标能否达 成的关键因素之一。项目成本管理与进度管理、风险管理、人力资源管理以及采 购管理等息息相关,它决定了整个项目的进度安排、人员安排和盈利程度。未掌 握项目成本状况就进行项目开发很容易导致项目失败。 1 2 ,2 软件项目成本管理的现状分析 目前,国内的软件开发机构进行软件项目管理的能力成熟度模型c m m 等级普 遍偏低,大量的软件开发机构尚处于c 删初始级别。占大多数的软件开发机构没 有系统的项目管理方法,在成本管理方面,表现尤为突出。缺乏经验以及缺少优 秀的软件项目成本估算方法导致对软件项目成本估计不足、亏本等现象。尤其对 于大型的项目而言,由于其需求变更相对频繁,使得管理难度偏太,加上缺少科 学的管理手段,不少项目只能宣告失败。目前国内外已开发出一些项目管理工具, 但它们在软件项目管理方面尚有欠缺,有的软件项目管理工具针对性不强,缺乏 科学的成本管理方法与手段,所以其可用性相对较差【1 。 1 2 3 基于r u p 的软件项目成本估算模型的研究意义 随着r a t i o n a l 统一过程( r u p ) 的出现,大型项目的失败现象得到了改善。r u p 从管理角度和开发角度进行项目各个阶段所需的过程组件部署,提出了以架构为 中心的思路以及采用迭代和增量的开发方法,在事先成本控制、对估计数据进行 自动协调、利用历史数据优化模型等方面有着丰富的扩展空间。一些公司已经尝 试使用r u p 来指导项目进展( 尤其是大型项目) ,定制适合于本公司的软件项目开 发过程,以保证项目的成功完成。但目前尚无专门针对r u p 开发方法的成本估算 模型与系统。本文在对现有的成本管理模型的分析和研究的基础上,提出了基于 r u p 的软件项目成本估算模型,重点针对基于r u p 的软件项目开发中的成本管理进 行研究。 基于r u p 的软件开发方法日趋盛行,因此研究这种开发方法下的软件项目成 本估算技术与有效的成本管理方法,对于促进软件行业的迅速发展,具有十分重 要的意义。 1 3 主要研究内容 本文研究了构造性成本模型( c o n s t r u c t i v ec o s tm o d e l ,c o c o m o ) 以及c o c o m o 的扩展模型构造性阶段进度和工作量模型( c o n s t r u c t i v ep h a s e ds c h e d u l e a n de f f o r tm o d e l ,c o p s e m o ) ,在此基础上进行了相关技术的改进,并提出了基 于r u p 的软件项目成本估算模型。 1 4 论文的章节结构 本文首先介绍了有关成本管理的理论,侧重于对成本估算模型的讲述。然后 介绍了基于r u p 的软件项目开发方法。最后着重描述了基于r u p 的软件项目成本 估算模型,并说明了基于r u p 的软件项目成本管理系统的设计和实现过程。本文 的具体章节结构如下: 第一章绪论。本文的绪论部分介绍了本课题的来源以及研究背景和意义,并 简单介绍了本篇论文的主要研究内容。 第二章软件项目成本管理的理论基础。该部分是软件项目成本管理的理论知 识部分。本章以c o c o m o 模型估算方法为例详细地介绍了软件项目成本估算过 程。 第三章基于r u p 的软件项目开发过程。该章介绍了基于r u p 的软件项目开 发方法,首先对r u p 的概念以及r u p 的由来进行了阐述,再针对p u p 的结构以 及特点进行了详细的介绍,最后介绍了r u p 在实施过程中需要注意的问题。 第四章基于r u p 的软件项目成本估算模型的分析。本章介绍了基于r u p 的 软件项目成本估算模型的分析过程,首先指出了使用c o c o m o 模型进行软件成本 估算的不足,介绍了采用基于用例的规模估算方法对于软件项目规模估算过程的 调整和改进,然后在此基础上进行软件项目的工作量估算和调整,并采用相关的 进度计算方法进行进度估算和人员安排,最后介绍了如何利用历史数据对本系统 中的各驱动因子进行校准。 第五章基于r u p 的软件项目成本管理系统的设计与实现。该章介绍了基于 r u p 的软件项目成本管理系统的设计和实现过程,展现了本系统的设计思路以及 具体实现方法和结果。 第六章结论。对本文的内容做出总结,并提出未来的研究和发展方向。 3 第2 章软件项目成本管理的理论基础 2 1 软件项目成本管理综述 软件项目成本管理是软件项目管理中一个必不可少的组成部分。如果没有比 较精确的成本估算和有效的进度调配能力,软件项目人员在对经理、顾客或销售 人员所建议的预算资金合理性提出疑问时,就缺乏确凿的根据;系统分析员在系 统设计阶段进行实际的软硬件分析时,没有合理的参考数据;项目经理在确定各 个阶段及活动需要多少时间和人员时,也找不到可靠的依据。 2 2 软件项目成本管理过程简余 软件项目成本管理过程包含以下几个方面:项目资源计划、项目成本估算、 项目成本预算、项目成本控制。 2 2 1 项目资源计划配置 软件项目资源包括项目开发过程中所有需要使用到的人力和物力等。确定资 源计划即决定为成功实旌项目活动所需使用的资源( 人员、设备、物资) ,以及各 种资源的用量。资源计划一般在项目的初始阶段确定,并随着需求分析的深入与 成本估算结果的调整而不断优化配置。 资源计划配置的输入为项目基本信息、工作分解结构、范围说明书、需求分 析文档等,并结合历史信息和资源信息进行资源计划。其输出为资源需求清单, 包括人员、设备和材料。除了为成本估算、预算和成本控制提供根据外,资源需 求清单还能够为项目人力资源管理和采购管理提供关键信剧2 1 。 2 2 2 项目成本估算过程 成本估算过程包括事先成本估计和项目成本估算。所谓事先成本估计是指, 在未进行详细的项目需求分析时,根据项目特征和经验预算出项目大概成本。事 先成本估计有助于开发机构作出一系列决策,包括项目投标、复用决策等。项目 成本估算根据需求分析的结果进行项目详细成本估算,包括规模估算、工作量估 算、进度估算,并利用其结果进一步估算人力资源成本与硬、软件等相关设备资 源成本。 进行事先成本估计时,估计过程的输入为项目特征参数值,输出为项目大致 4 成本;进行详细成本估算时,估算过程的输入为业务用例模型和项目开发环境等 因子值,输出为项目详细规模、工作量、各阶段进度和人员安排以及总成本【2 1 。 2 2 3 成本预算过程 成本预算过程包括根据成本估算结果以及资源计划将项目整体成本估算配置 到各具体工作单元中,以建立一个能够衡量绩效的成本基准计划。成本基准计划 是一个按时间分布的、项目负责人员用于衡量和监控成本实施情况的预算。通过 成本预算,能够方便成本管理人员对当前所开发项目的成本分配有更好的理解, 并能够依据成本计划作出各项成本决策,确保进行有效的成本控制。成本预算过 程的主要输出是成本基准计划【2 】。 2 2 4 成本控制过程 成本控制过程包括处理当需求发生变化时的成本变更,控制项目成本预算的 变化,在项目开发过程中进行实际成本与成本预算之间的偏差分析等。成本基准 计划、绩效报告、变更请求和成本管理计划是成本控制过程的输入,该过程的输 出是修正的成本估算、成本预算更新、调整措施、项目成本管理经验掣2 】。在本文 阐述的软件项目成本管理系统中,成本控制过程还包括成本跟踪和成本估算驱动 因子的调整。 2 3 软件项目成本估算过程简介 成本估算是软件项目成本管理中的一个重要步骤,它将经济分析的一般概念 和技术与软件工程这一特定研究领域的相关活动紧密地联系在一起。如果没有某 种比较精确的对软件成本及其对各种产品、项目、环境等因素的敏感程度进行估 算的方法,那么就不可能较精确地进行软件的成本效益分析、盈亏分界等分析。 2 3 1 成本估算与成本管理的关系 成本估算是成本管理中最主要的过程,估算成本是成本管理的主要输出。在 对项目的规模、工作量、进度估算后,成本管理的各项工作才能进行。项目早期 成本估算能够为资源计划配置提供输入,详细估算结果是成本预算和成本控制的 输入,并能够进一步细化资源计划。在整个项目开发过程中,成本估算结果能随 着需求相对稳定和风险的减少而趋向精确,并根据调整后的估算结果调整成本管 理各项工作。项目结束时,对收集到的各阶段成本估算数据进行处理,能够调整 成本估算模型,使其能更准确地对其他项目进行估算。 2 3 2 规模、工作量、进度与成本之间的关系 计算机软件项目的成本即为开发该软件项目所需要投入的人力、财力和物力。 成本可以从不同的角度进行度量。对于客户来说,其所关心的成本为开发该项目 所需要交付给开发机构的资金数额。从财务人员角度来说,软件项目成本表现为 应发给软件开发人员的工资、奖金和津贴,也包括硬件设备等的购置或折旧以及 其它一切管理费用。对于项目经理来说,关心的则是项目有多大规模,需要安排 多少人员用多长时间来完成。对于不同工作性质的人员,成本表现为不同的形式, 本文从开发人员的角度来估算项目成本,并将估算结果反映到其他关注领域,以 方便管理人员进行成本管理。 规模从宏观上反映了项目的大小,有经验的估算人员可以根据项目特征估算 出项目的大致规模,从而转换为开发该项目所需要的资金成本。根据估算的度量 元的不同,规模可以用源代码行数来表示,也可以用功能点数、用例数等单位来 表示。不考虑复用或体系结构等方面的影响时,规模与成本成正比例关系,即规 模越大,所需要花费的成本就越高。 软件项目开发成本主要包含人力资源成本和软、硬件资源成本,其中,人力 资源成本占开发成本的主要部分,其所花费的资金数额占总成本的很大比例。工 作量和进度从开发角度反映出项目的人力资源成本,工作量可根据项目规模计算 而得,根据工作量,可以进行进度计划和人员安排,据此可以计算出开发该项目 所需要的人力资源成本。 通过对规模、工作量和进度的估算,可以进一步明确项目特征和开发因素, 从而反映出项目开发的其他成本,例如必须的顾问和培训费用、出差或加班费用、 软硬件资源费用等e 3 。 2 3 3 软件项目成本估算过程 人力资源成本的可变因素很多,因此它具有更大的估算难度。如何根据软件 项目规模合理地安排人员以及进度,是众多软件开发机构关心的主要问题,也是 本论文研究的重点。 软件项目成本估算过程在不同的开发阶段以不同的形式进行。项目初始阶段, 由于缺乏需求分析及其它项目细节,成本估算可采用模型估算法进行,即利用已 有的成本估算模型,对待开发的软件项目的主要技术参数进行定值,并估算出该 软件项目的大致规模。在对软件项目进行了详细的需求分析和功能设计后,便可 对该项目进行较为详细的估算。在详细估算中,通常包含规模估算、工作量估算 和进度估算等过程。首先根据项目特征及需求分析结果估算出项目的规模,将项 目规模根据相关的规则转换为工作量并进行调整,最后再利用有关公式计算出开 发本项目所需的时间,并可依据这些估算值进行进度安排以及人员分配,以便计 算项目总成本。 成本估算通常并不是等一切信息都确定以后再进行,而是提前进行。估算的 结果固然存在差异,因此需要根据项目的进展状况,不断调节估算结果和相关数 据,以获得更准确的估算结果,并为后继工作安排提供决策依据。 在成本估算的整个过程中,历史数据是不可或缺的部分,有效的历史数据是 顺利进行成本估算的基础。历史数据既可以作为估算模型建立、估算因子调整的 依据,也可以在估算过程中得到扩充,使其所能反映的信息更准确、完善。 2 4 现有的软件项目成本估算模型 目前,大约有5 0 多家软件成本估算工具( 包括提供数据与服务等) 的供应商在 市场上竞争,这些工具大多是基于当前流行的几种成本估算模型( 如c o c o m o 、 c h e c k p o i n t 、e s t i m a c s 、k n o w l e d g e p l a y 、p r i c e s 、p r o q m s 、s o f t c o s t 等) 以及许 多与特定组织相关的模型等。其中,c o c o m o 是最公开和文档最完备的模型之一【4 】。 本章介绍c o c o m o 的估算过程。 2 4 1c o c o m o i i 模型简介 通过对软件项目成本的估算,c o c o m o i i 模型能够提供项目投资或其他财务决 策,例如确定项目的哪个部分需要开发、复用或购买。根据成本估算的结果,可 以进一步制订项目进度计划,并为项目决策者在成本、进度和质量之间的权衡提 供依据。参照成本估算的过程,项目相关人员能够认识到影响项目开发的风险及 因素,从而确定过程改进策略,提高开发机构的能力成熟度。 7 c o c o m o i i 通过可裁剪和组合的方式向不同阶段的用户提供过程策略。在软件 生命周期的不同阶段,c 0 c o m o i i 提供不同的模型系列。在项目开发早期,c o c o m o i i 提供早期设计模型,此模型为粗粒度的估算模型,其估算准确性随着项目的开 展而逐步得到提高。一旦项目准备开发一个系统,则对其应用后体系结构模型, 此模型是一个详细的模型,具有一个生命周期体系结构,接收有关成本驱动因子 的详细输入信息,并进行相对较准确的成本估算。 首先进行规模估算,即利用原始资料估算出代码行数。例如,在项目早期可 能会存在功能点、组件或任何早期可利用的数据,利用相关的转换公式进行处理 可以将这些数据转换成代码行数。在缺乏历史数据时,可使用专家意见推导出项 目的大致规模。 通过对规模估算的结果进行数学计算可以得到项目的标准状态下的工作量,再 对其进行调整以得到较为准确的工作量数据,这个过程也称为工作量估算。所谓 标准状态是指不考虑任何会对数据产生影响的因素时的状态。通过对项目所处环 境以及各个可能会对估算结果产生影响的因素的考察,对标准状态下的工作量进 行调整,使其调整结果更接近实际开发该项目所需的工作量。 利用工作量估算的结果对项目的进度和人员作出安排,c o c o m o i i 采用进度计算 公式计算出需安排的项目开发时间以及各阶段的人员安排,这个过程是c o c o m o 模 型的进度估算。 使用c o c o m o i i 可以帮助软件开发机构做出相关的选择和决策。在使用该模型 的过程中,可根据开发机构的特定情况或要求对估算模型进行定制,使得该模型 更加适用于其软件项目成本管理【5 1 。 2 4 2 规模估算 软件项目一般由新代码、复用而来的代码以及自动转换的代码组成,c o c o m o i i 采用影响工作量的规模数据,即新代码和拷贝并经修改的代码,对软件项目规模 进行度量。c o c o m o i i 首先根据软件生命周期早期进行的分析所得到的信息确定软 件项目的功能点数,再根据转换率表将功能点数转化为源代码行数,并以此来描 述该软件项目的规模。 ( 1 ) 未调整功能点( u n a d j u s t e df u n c t i o np o i n t s ,u f p ) 计算 功能点成本估算方法利用软件项目中的功能数和一组独立的项目因子进行估 算。该方法中,确定未调整功能点的过程包括以下几个步骤。 首先按类型确定功能点数。根据软件需求和设计文档的信息来进行未调整功 能点数的统计,需要统计以下五种用户功能类型数:内部逻辑文件i l f 、外部接口 文件e i f 、外部输入e i 、外部输出e o 、外部查询e q 。 再确定复杂性等级。根据所包含数据元素的类型数和所引用文件的类型数, 划分每个功能的复杂性等级。确定等级的方案如表2 1 所示。 表2 1f p 复杂性等级 t a b 2 1c o m p l e x i t yl e v e l so f f u n c t i o np o i n t s 应用复杂性权重。对每个复杂性等级指定一组权重,并应用到相应类型的功 能点数上去。对于每个复杂性等级,使用表2 2 中的方案对功能类型数加权。 9 表2 2u f p 复杂性权重 t a b 2 2c o m p l e x i t yw e i g h t so f u f p 最后计算功能点。将所有带权重的功能点数相加即可得到未调整功能点数。 ( 2 ) 源代码行( s l o c ) 计算 定义一行代码比较困难,因为这涉及到不同语言中可执行语句和数据声明概 念等方面的差异。c o c o m o i i 选择逻辑源语句作为标准的代码行,使用美国软件工 程研究所( s e i ) 对逻辑源语句的定义检查表来度量代码行。通过最新的转化率表可 以将未调整功能点u f p 转化为代码行。 ( 3 ) 软件规模调整 除了根据功能点计算出来的代码行数以外,还存在其它方面的软件规模需要 被考虑到。例如可自动转化的代码、根据需求演进和改变所调整的代码、复用代 码等。所以需要对代码行数进行调整,得到较为合理的规模估算结果。 2 4 3 工作量估算 c o c o m o i i 中,工作量用人月( p e r s o n - m o n t h s ,p 哪表示,即一个人在一个月内 从事软件项目开发的时间数。而人时数( p e r s o n h o u r sp e rp e r s o n m o n t h ,p h p m ) , 即每个人月内每个人能从事软件项目开发的小时数,是根据软件开发机构的不同 情况而定的。 c o c o m o i i 根据规模估算所得的代码行数进行工作量计算的公式为: p m = a x s i z e 8 丌e m i ( 2 1 ) i = l 其中,a 为常数,其值为2 9 4 :s i z e 即软件项目的规模,其单位是源代码千 行数( k s l o c ) ;e 为规模的指数因子,是五个比例因子( s c a l ef a c t o r s ) 的总和,在 下文中有相应说明:e m 为工作量乘数( e f f o r tm u l t i p l i e r s ) ,反映了软件项目的 各个成本驱动因子的等级。所谓成本驱动因子是用来获取影响完成项目所需工作 量的软件开发特征。 ( 1 ) 影响规模的五个比例因子 软件项目规模s i z e 的指数e 体现了五个比例因子( s f ) 的作用,说明了不同规 模的软件项目所具有的相对规模经济和不经济性。比例因子的选择所基于的原则 为:它们是项目工作量指数变化或生产率变化的重要原因。 c o c o m o i i 的五个比例因子分别为:先例性( p r e c ) ,度量是否具有相关项目系 统的工作经验或是否需要对相关数据结构、算法进行创新等:开发灵活性( f l e x ) , 度量软件性能是否与已建立的需求或现有的外部接口规范一致;体系结构风险化 解( r e s l ) ,通过风险管理计划度量对于关键风险项的识别和化解程度,度量体系 结构驱动因子中的不确定性级别等;团队凝聚力( t e a m ) ,度量整个团队的运作能 力,包括项目各类相关人员之间的协调能力以及团队工作经验等;过程成熟度 ( p m a t ) ,围绕软件工程研究所( s e i ) 的能力成熟度模型( c m m ) 而组织,确定项目的 过程成熟度级别。 表2 ,3 用于c o c o m o i i 模型的比例因子值s f j t a b 2 3s c a l ef a c t o rv a l u e so f c o c o m 0i i 每个比例因子都有一个等级变动范围,从“很低”到“极高”。每个等级都 有一个权重,权重的具体值称为该比例因子的权值,如表2 3 所示。将项目的五 个比例因子的权值通过公式( 2 2 ) 进行计算,确定规模指数e 。公式中的b 是可以 校准的常数。 5 e = b + o o l x s f j ( 2 2 ) 触 其中,b 的值为0 9 1 。 ( 2 ) 工作量乘数 c o c o m o i i 模型采用1 7 个成本驱动因子,来调整标准状态下的的工作量p m ,以 反映正在开发软件产品的特征。每个成本驱动因子,具有一组等级和一组相应的 工作量乘数。标准状态下,每个驱动因子的工作量乘数为1 o o ,它不改变原估算 工作量值。这1 7 个成本驱动因子分为四类,分别为:产品因子,平台因子,人员 因子,项目因子。 产品因子用于说明由正在开发产品的特征引起开发软件所需工作量的变化, 共有以下五个产品因子。 要求的软件可靠性( r e l y ) :本因子度量软件必须在一段时间内执行其预期 功能的程度。 数据库规模( d a t a ) :该成本驱动因子度量大量测试数据的需求对产品开发 的影响,反映产生和维护必要数据所需的工作量。 产品复杂性( c p l x ) :将复杂性分为五个区域:控制操作、计算操作、设备 相关操作、数据管理操作和用户界面管理操作,利用选择区域或区域间的组合来 描述所定级产品或产品组件的特征。产品复杂性等级是所选区域等级的主观加权 平均值。 可复用开发( r u s e ) :本因子度量构造可在当前或未来项目中复用的组件时 所需的额外工作量。 匹配生命周期需求的文档编制( d o c u ) :本因子度量项目文档对其生命周期 需求的适应性。 平台因子是与平台相关的某些能够影响到估算工作量的因素,共有以下三个 平台因子。 执行时间约束( t i m e ) :本因子度量强加在软件系统上的执行时间约束,其 等级由系统或子系统预期消耗的执行时间资源与可用执行时间的百分比来表示。 主存储约束( s t o r ) :该因子度量施加到软件系统或子系统上的主存储约束 的程度。 平台易变性( p v o l ) :该因子度量某个周期内计算机软硬件等所使用的平台 变化的频率以及程度。 除了产品规模外,人员因子在确定开发软件产品所需的工作量时有着最强的 影响力,有以下六个人员因子。 分析员能力( h e a p ) :分析员即从事需求分析、高级设计和详细设计的人员, 本因子度量分析员的分析和设计能力、效率和彻底性以及交流和协作能力。 程序员能力( p c a p ) :本因子度量程序员的能力、效率和彻底性以及交流和 协作能力。 人员连续性( p e o n ) :本因子度量项目组的年人员周转率。 应用经验( a p e x ) :本因子依赖于项目组开发软件系统的经验级别。 平台经验( p l e x ) :本因子度量项目组对于图形用户界面、数据库、网络和 分布式中间件等方面的经验水平。 语言和工具经验( l t e x ) :本因子是对项目组用于开发软件系统的编程语言 和软件工具的经验度量。 项目因子用于说明诸如现代软件工具的使用、开发组的地理位置和项目进度 压缩等因素对工作量的影响,有以下三个项目因子。 软件工具的使用( t o o l ) :本因子度量生命周期内各工具的使用程度以及工 具与过程、方法、复用的集成水平。 多点开发( s i t e ) :度量项目组开发时的地点分布以及交流沟通能力。 要求的开发进度( s e e d ) :度量施加在软件开发项目组上的进度约束。 2 4 4 进度估算 在进行工作估算后,可利用工作量进行进度计算以及人员调配。用于c o c o m o i i 的进度计算公式为: t d e v = 【c ( p m 。s ) 。+ 0 2 螂】) 】1 s c e 矿d ( 2 3 ) 其中,b 、c 、d 为可校准的常数,b 的值为0 9 1 ,c 的值为3 6 7 ,d 的值为0 2 8 , p m 。为不考虑要求的开发进度工作量乘数( s e e d ) 时的工作量p m ,e 为根据项目比 例因子之和所导出的工作量规模指数,s c e d 为要求的开发进度工作量乘数等级量 表中的开发进度压缩扩展百分比。 通过对进度的计算,可确定项目组成员个数,以及各阶段的大致人员安排 s i 。 2 4 5c o c o m oi i 成本估算过程总结 综上所述,在利用c o c o m o i i 模型进行软件成本估算过程中,首先采用功能点 度量法估算出软件项目的功能点数,再通过调整后的功能点数进行代码行转换, 使用千代码行数作为描述项目规模的单位。应用五个比例因子,通过相关计算, 可以将规模转化为工作量,并通过十七个成本驱动因子对工作量进行调整。最后, 采用进度计算公式,计算出开发该项目所需要的进度以及人数。 1 4 第3 章基于r u p 的软件项目开发过程 3 1 什么是r u p r u p ( r a t i o n a lu n i f i e dp r o c e s s ) 即r a t i o n a l 统一过程( 或称为统一软件开发 过程) 是一种迭代的、以架构为中心的、用例驱动的软件开发方法。它综合了许多 现代软件开发的最佳实践,并使用一种可裁剪的方式表达出来,以适用于各种各 样的项目和组织。r u p 以种详尽、实用的方式,为项目组提供以下6 项最佳实践: ( 1 ) 软件的迭代开发 ( 2 ) 管理需求 ( 3 ) 应用基于构件的架构 ( 4 ) 为软件建立可视化的模型 ( 5 ) 为软件质量进行持续的验证 ( 6 ) 控制软件的变更 r u p 是一种软件工程过程。它提供了在开发组织中分配任务和职责的严格方 法。它的目标是按照预先制订的时间计划和经费预算,开发高质量的软件产品, 以满足用户的最终需求。r u p 又是一个过程产品,r a t i o n a l 开发并维护着这个产品, 并将其与r a t i o n a l 自己的一系列软件开发工具集成。r u p 也是一个过程框架。它可 以被改造和扩展,以适应采纳r u p 的组织的需要【6 1 。 3 2r u p 的特点 3 2 1 迭代开发的特点 虽然瀑布模型在产生之初被公认为是一种比较合理的系统开发方法,但随着 时间的推移,越来越多的人指出这种顺序的软件开发过程中存在着很多问题与失 误。瀑布模型并没有能够使基于这种模型所开发的软件项目取得更大的成功,其 原因是多方面的。例如,瀑布模型的开发基点是假设软件项目的需求固定。这是 一个错误的假设,实际情况是:用户的工作环境在改变,受教育程度在改变,所 以用户本身的需求会改变;随着系统的不断呈现,系统本身也会影响用户的想法; 用户所接触到的软件系统与其所设想的系统有所差异;随着软、硬件技术与各类 产品的不断出现,对项目的技术要求可能已经发生了变化,或者,当项目还处在 开发阶段时,市场上已经发现价格更低廉的同类产品,用户完全可以花更少的钱 去获得同样的服务等等。对于这些问题,瀑布模型是很难很好地给出应对措施的。 r u p 采用迭代和增量的开发过程来解决此类问题。在r u p 中,整个生命周期是 由一系列迭代过程组成的。根据迭代思想,在项目开发初始阶段,可选择一些核 心用例和关键需求,进行早期迭代版本的开发。早期迭代版本有助于开发者识别 和规避风险、确定可行性、构建软件的初始核心并建立业务案例。相对于瀑布模 型在项目开发到最后才爆发出一系列的错误和重大风险而言,迭代开发过程大大 降低了各类风险并将风险规避过程提前,这在一定程度上保证了项目的成功。对 于r u p 的其它迭代过程,尤其是后期的迭代,是增量进行的。通过不断的迭代, 直至得到一个可以对外发布的产品。随着各种迭代版本的出现并呈现给用户,开 发者能够迅速地掌握用户的真正需求,方便作出调整。在开发过程中,开发或运 行环境若发生了变化,则可以回到某个前期版本重新进行迭代;当发现市面上有 某个类似的产品即将推出,也可以迅速将已经完成的迭代版本提前发布给用户。 迭代可以在不同的阶段针对工作流活动进行,在项目的开始阶段,首先要决 定在构造过程中需要多少次迭代。其次应通过计划第一次迭代所做出的决策来决 定迭代长度,迭代长度为项目开发建立了一种频率,一个团队依靠的节奏【7 1 ,同时 也可以根据它估算项目的完成时间。在掌握了迭代次数和每一次迭代的时间后, 下一步工作就是计划工作内容,确定风险优先排序表。 依据完整的项目风险优先排序表,可以看出哪些风险的优先级最高,如果不 解决这些优先级高的风险,就很可能会导致项目的失败。将高风险的用例优先解 决,第二次迭代处理第二大风险,重复这个过程直到将所有开发用例都被考虑到 迭代过程中。 随着项目的进行,将会有更多的任务添加到相应的迭代中,同时,有可能要 把早期迭代中的遗留工作移到后续迭代中,因此前面的迭代应包含尽可能多的工 作,以减轻最后一次迭代的压力。由于每次迭代都会使开发者对系统和工作组有 一个更好的理解,所以可以依据这些信息来更新后面的计划。计划文档中,除了 包括迭代的内容外,迭代的目标以及判断迭代目标是否已经达到的标准等信息, 也是十分重要的信息。 总之,与传统的瀑布过程相比,迭代式开发过程有如下优点:迭代开发可以 更早地缓解风险、更容易地管理变更,可以提高复用程度:在整个开发过程中, 项目组可以不断地学习;迭代开发也可以提高整体产品的质量。 3 2 2 以架构为中心的特点 软件架构的构建是一个非常重要的软件工程过程,但实际应用中却常常得不 到应有的重视和利用,其主要原因表现在:不能清晰地理解架构的目的;对架构 的概念依然很模糊,常常与顶层设计、系统概念和需求概念等相混淆:没有个 普遍接受的方法可以用来表示架构;没有对架构的形成过程进行描述,对整个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天正cad考试试题及答案自考
- 2025年公需科目试题及参考答案(多选类)
- 胖东来门店管理办法
- 航天招投标管理办法
- OA系统文件管理办法
- 虚拟服饰库存管理办法
- 蔬菜代收点管理办法
- 仓储物资超市管理办法
- 血站样本保存管理办法
- 落实尽职免责管理办法
- 体育消费及消费者行为
- 新能源发电技术 第2版 教学课件 8波浪能
- 摩托车行驶安全知识
- 多组学数据的整合与分析
- 四合院设计方案
- 平曲线超高 超高缓和段上超高值的计算
- 国有集团“三重一大”决策制度实施办法(附详细版事项清单及议事规则)模版
- 社会情感学习在中小学教育中的实施与效果研究
- 焊材发放与回收及焊条烘干记录记录表
- 前言 马克思主义中国化时代化的历史进程与理论成果
- 绝缘子更换培训课件
评论
0/150
提交评论