(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf_第1页
(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf_第2页
(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf_第3页
(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf_第4页
(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(计算机软件与理论专业论文)面向再工程的软件开发成本管理系统研究.pdf.pdf 免费下载

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

文档简介

摘要 摘要 在计算机飞速发展的今天,既存计算机系统的比例越来越大,由于需求改 变、平台升级以及新技术出现使得我们不得不对这些既存系统进行相应的升级 改造以满足新形势要求。随着这种既存软件维护性开发的增多,既软件再工程 的需求不断增加,再工程软件开发的成本管理已经成为重要课题之一 本文围绕成本估算和阶段性成本控制( 人力成本分布) 这两方面进行研究, 通过对目前流行的多种软件成本估算方法进行比较,和对多个软件再工程项目 的实际人力成本数据进行深入分析,给出针对软件再工程项目的一套切实可行 的估算和监控方法,建立再工程软件开发成本管理系统,使再工程项目的软件 开发成本更可控,以期提高软件企业的项目管理水平。 本文首先对软件再工程定义,软件规模、成本的估算方法及相关问题进行 了归纳,并对目前针对软件再工程项目的成本估算状况进行分析对比后,提出 了再工程软件开发的成本管理系统的系统框架、软件生存周期前期的成本估算、 中期的成本监控等方法,并给出其与其它软件组装生产线的结合方式,最后通 过具体案例系统介绍该系统的实际应用价值与意义。 关键词:软件工程:软件再工程;成本管理;成本估算;成本分布 北京工业大学工学硕士学位论文 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rt e c h n i q u e s ,t h er i p e n e s so ft h ed e v e l o p m e n t p e r , s o n n e lo f t h es o t t w a r eb m i n c r e a s i n g l yl h eb i g g o r t h ei m r p o o f t l a ed e m a n du 1 1 d e l t h e n e ws i t u a t i o nt os a t i s f yt or e q u e s t st oc h a n g e p l a t f o r mt ol r a m p l a n ta n dn o wt e c h n o l o g yt o s p r i n g t h e r ei sa l lk i n d so f w o r kh , l a i e hd o e st h cs y s t e mt oe l m g et od o a l r e a d yt h ei e g a e y s o t l w a r em a i n t e n a n c ed e v e l o p m e n t , , l o n gw i t ht h i sk i n di r k f e 鹪i i 唔a l s ot h es o f l w a r ep r o j e c t d 自m l m di m c * a s i n g l yi n e r e a l s e sa e , a i n , $ o t t w a r er e e n g i n e e r i n gd e v c l o p sn c o s tm a n a g e m e n t a l r e a d yb e c a m eo o f i m p o r t a n tt o p i c s t h i sa r t i c l er e v o l v e st h e 嘲te s t i m a t ea n dt h e 掣 a d u a lc o 破c o n t r o l ( m a n p o w e rc o s t d i s t r i b u t i o n ) t h e s et w o 锄p e d sc o n d u c t st h er e s e a r c h , t h r o u g hc t n r l i c l i 叩t h ec o m p a r i s o nt ot b c p r e s e n tp o p u l a rm a n yk i n d so fs o f t w a r ec o s te s t i m a t em e t h o d , w i t hc a 而e so nt h et h o r o u g h a n a l y s i sa g a i nt om a n ys o t t w a r e 既l g i n f i i 培p r o j e c ta c t u a lm a n p o w e rc o s d a t a , p r o d u i n v i e wo f s o f t w a r ea e , a j n g i d 目i n g p 删e c ts e lo f 胛c c a l f e a s i b l ee s l i m a t e s a n d t h e m o n i t o r i n g m e t h o d , t h ee s t a b l i s h m e n ta g a i np r o j c c ts o t l w a r ed e v e l o p m e n tc o s tm a n a g e m e n ts y s t e m m a n a g e m e n ts y s t e m , c 锄】疆a g a i nt h e 蜘茸m 啦p r o j e c ts o t t w a r ed e v e l o p m e n t c o s t c o n t r o l l a b l y , t ot h et i m e h a n 隅t h es o t t w a r ee n t e r p r i s et h ep r o j e c tm a n a g e m e n tl e v e l t h i sa r t i c l ef i r s tt od e f i n i t et h es o t t w 印r er i l 星扣鲥n 岛t h es o l t w a r es c a l e ,t h ec o s tes t j i m 越c m e t h o da n dt h ec o r r e l a t i o nq u e s t i o nh a sc a r r i e do nt h ei n d u c t i o n , a n dc a t l t i e $ o i lt h ea n a l y s i s c o l l l l m ta g a i nt o8 tp r e s e n ta f t e rt h es o t l w a r ee n g i n e e r i n gp r o j 鳅c o s te s t i m a t ec o n d i t i o n , l r o p o s e da g a i np r o j e c ts o t t w a r ed e v e l o p sc o s tm a n a g e m e n ts y s t e mm a n a g e m e n ts y s t e mf l i u i i c , s o t t w a r es t r v i v a lc y c l ee a r l i e rp e r i o dc o s te s t i m a t e ,i n t e r m e d i a t es t a g eh i h o da n ds oo nc o 啦 m o n i t o r i 婚a n dp r o d u c e si t sa n do t h e rs o t t w a r ea s 螂b l yl i n eu n i o nw 掣,f i n a l l yi n t r o d u c e st h i s s y s t e mt h r o u g ht h ec o n c t c t ec a s y s t e mt h ep r a c t i c a la p p l i c a t i o nv a l u ea n dt h es i g n i f i c a n c e k e y w o r d s = s o f t w a r ee n g i n e e r i n g ;$ o t l w a r er e e l l g i n l 咖| c o s tm a n a g e m e n t ; c o s te s t i m l l 把gc o s td i s t r i b t r t i o n - 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 责献均已在论文中作了明确的说明并表示了谢意。 签名: 翅垒堡垒日期:! :1 2 竺 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有 权保留送交论文的复印件,允许论文被查阅和借阅:学校可以公柿论文的全部 或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:盔垒竺丝 导师签名:日期:z 五生生 蜱 绪论 第1 章绪论 1 1 软件再工程 1 1 1 软件再工程定义 再工程是指对一次工程后的成品软件再次进行开发,因此它处于软件生存 期的维护期m 。所以要研究再工程首先要研究软件维护。软件维护是指软件成 品提供使用后,为了修改差错、改善功能和性能、适应环境变化而进行的软件 修正田。除了改正性维护以外,软件维护分类中的其他三类:适应性、完善性、 预防性维护都属于再工程范畴咖。如图卜1 所示: | + 例如:2 个月年一卜卅如:1 1 0 年以上一 圆园回圆圃匾 玉 工j 正 图! - 1 一个计算机系统的软件生存期图 f i g u r e1 - 1s o f t w a r ec y c l eo f a c o m p u t e r s y s t e m 因此再工程面对的是既存软件系统,是对既存系统进行调查和分析,并将 其重构为新系统的开发过程,而一次工程所面对的是原始需求。 1 1 2 软件再工程分类 目前的再工程主要为三类: ( 1 ) 适应性维护的再工程,例如: 伴随硬件和操作系统更新换代的软件维护象小型机换p c 机,p c 机换 u n i x 工作站,w i n 9 5 换w i n x p 所带来的软件维护: 业务环境变化带来的软件维护。譬如由于企业业务的发展,系统使用年 北京工业大学工学硕士学位论文 限的增加,既存系统的存储媒体和数据管理系统满足不了数据量及其种 类剧增的要求,需要更新数据库系统;随外部条件变化而必须修改部分 数据变量定义或算法,象征收消费税的国家法律改变、邮政编码的位数 改变、以及2 0 0 0 年问题等; 系统运行环境变化带来的软件修正。如由主机方式变为客户机服务器 方式,由客户机服务器方式变为w e b 方式,这时的系统体系结构必须 相应变化; 适应系统开发环境变化的软件维护。有一些软件,主要是定制软件,例 如e r p 软件,软件再工程常伴随企业的b p r 而发生,所以开发环境也需 随经常性的系统完善性软件再工程而更新。象p o w e r b u i l d e r 等开发环 境的升级换代如同操作系统一样频繁发生。 ( 2 ) 完善性维护的再工程,例如:增加或修改功能,提高安全性、处理能 力等系统性能。 ( 3 ) 预防性维护的再工程,例如:为了提高可维护性而对系统进行优化( 再 结构化、再标准化) ,对文档进行重构,对数据进行重组。 1 1 3 软件工程进入再工程时代 2 0 世纪9 0 年代以后,先进国家的既存软件维护性开发已占软件开发总量 的8 0 以上。可以说,软件工程已经进入了再工程时代。如图1 2 所示: 一 1 9 8 01 9 9 02 0 0 0 图1 - 2 软件工程中一次工程和再工程比例趋势图 f i g u r e1 - 2c o m p a r i s o ns o f t w a r ee n g i n e e r i n gw i t hn a 培i i l 酬n g 正是由于再工程项目所占比例不断增加,使我们更加关注再工程项目成本管理。 第1 章绪论 1 2 软件开发成本估算 1 2 1 系统软件的成本构成 系统软件的成本作为一个经济学范畴,用来反映软件产品在其生产过程中 所耗费的各项费用,是原材料、燃料、动力、折旧、人工费、管理费用、财务 费用等项开支的总和。 从财务角度来看,系统软件成本构成如下,表1 - 1 所示: 表1 - 1 系统软件的成本构成 t a b l e1 - 1s o f t w a r ec o s tc o m p o s e n o 构成分类详细说明 1 硬件购置费如计算机及相关设备的购置,不间断电源等的购置费 2 软件购置费如操作系统软件、数据库系统软件和其它应用软件的购置费 3 人工费主要是开发人员,操作人员、管理人员,的工资福利费等 4 培训费 略 如购置计算机网络设备、通讯线路器材、租用公用通讯线路等的 5通讯费 费用 6基本建设费如新建、扩建机房、购置计算机机台、机柜等的费用 7 财务费用略 8 管理费用如办公费、差旅费、会议费、交通费 9 材料费如打印纸、包带、磁盘等的购置费 水、电、油、气 1 0 略 费 专有技术购置 1 1略 费 1 2其它费用 如资料费、固定资产折旧费及咨询费 北京工业大学工学硕士学位论文 1 2 2 软件开发成本定义 软件开发成本主要指软件开发过程中所花费的工作量及相应的代价。不同 于传统的工业产品,软件的成本不包括原材料和能源的消耗,主要是人的劳动 的消耗。另外,软件也没有一个明显的制造过程,它的开发成本是以开发过程 所花费的代价来计算的。因此,软件开发成本的估算,应是从软件计划、需求 分析、设计、编码、单元测试、集成测试到认证测试,整个开发过程所花费的 代价作为依据的。鉴于在软件企业中人力资源成本一般要占到7 0 以上,而其 他部分的成本分布由于各企业差异较大,所以本文仅以软件开发中人力成本为 研究对象。 1 2 3 软件成本估算方法 1 2 3 1 估算流程 在大多数软件项目中,成本的主要组成部分是人力成本( 基于所估算出来的 工作量) 。此外还有软硬件,通信联络,出差费用等等。一次工程的软件成本估 算的流程大致如图1 3 所示,根据软件需求说明,依次估算出软件的规模、工 作量、成本。 图l - 3 软件估算的组成 f i g u r e1 - 3 s o r w m - ee s t i m a t ec o m p o s e 第1 章绪论 根据最简单的估算公式,见式( i - i ) 工作量( 成本) = 规模生产率( 校正后) 式中工作量( 成本) 开发过程中的人力工作量( 以人月计) 规模整个项目的代码规模 生产率( 校正后) - 编码的生产率,由于它受到多种因素的影响( 如 规模大小、人员水平、系统难易度等等) ,所以需要根据项目的不同对其进行相 应的校正 我们可以看出,软件成本估算的两大要点是规模估算和校正生产率而后 面所述的各种成本估算模型和方法基本上是由式( i - i ) 演化出来的,大多也是基 于对规模和生产率这两个根本因素进行调整,以使估算的结果更为精确。 1 2 3 2 软件规模估算 任何软件估算的第一步就是估算所建软件的规模,它是工作量和项目成本 估算的基础。 目前通常用下面两种方法来衡量软件的规模: ( 1 ) 功能规模度量,即功能点分析( 开蛐:用系统的功能性的数量来测量 其规模。 ( 2 ) 技术规模度量:把系统划分为若干个功能,分别计算每个功能的代码 长度,所有功能的代码行之和就是最终的估算规模。 1 2 3 3 软件成本( 工作量) 估算 很多方法可以用于估算软件成本。 例如,专家估算、类比估算、模型估算、白顶向下,自底向上等方法。下 面就目前使用的主要方法进行介绍: 北京工业大学工学硕士学位论文 ( 1 ) 专家估算法 专家估算法是依靠一个或多个专家对项目的工作量( 人月数) 做出估计,它 要求专家具有专门知识和丰富的经验,是一种近似的猜测。d e l p h i 法是最流行 的专家评估技术,成本估算的标准d e l p h i 方法的工作流程如下: 首先,协调者为每个专家提供一份说明书和一张用于记录估算的表格。之 后,专家以匿名方式填写表格( 他们可以向协调者提出问题,但相互之间不能讨 论) 。然后,协调者准备汇总:专家对请求另外一次估算的回应,以及支持他们 估算的原理( 如图1 _ 4 示例所示) 专家重新以匿名方式填写表单,这个过程以 适当的循环不断地迭代反复。在整个过程中,不能进行集体讨论。 在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特 定程序之间的差别,但专家”专”的程度及对项目的理解程度是工作中的难点, 尽管d e l p h i 技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本 时通常用得不多,但是,这种方式对决定其它模型的输入时特别有用d e l p h i 法鼓励参加者就问题相互讨论,要求有多种软件相关经验人的参与,互相说服 对方。 ( 2 ) 类比估算法 类比估算法是比较科学的一种传统估算方法,它适合评估一些与历史项目 在应用领域、环境和复杂度的相似的项目,通过新项目与一个或多个已完成项 目做比较,可以由历史项目的实际成本推算出新项目的估算成本。类比估算法 第1 章绪论 估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比估 算法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目 的数据分析是可信赖的。 这种方法的基本步骤是: 整理出历史项目系统和子系统的成本数据; 标识出新项目每个与历史项目的相同点和不同点,特别要注意历史项目 做得不够的地方,以及项目内部的重用度和项目之间底层代码的重用度; 通过步骤和得出各个子系统的成本估计值; 产生最终的成本估计值。 通过推理来估算的优点在于该估算是基于实际的项目经验。可以通过研究 以往经验来确定与新项目之间的具体差异,及可能对成本产生的影响 ( 3 ) 模型估算法 模型估算法利用经验模型进行成本估算,它通常采用经验公式来预测软件 项目计划所需要的成本、工作量和进度数据。 p u t n a m 模型 p u t n a m 模型是一种动态多变量模型,见式( 1 - 2 ) l = c k + k 1 厅t d 叩嘲 ( 卜2 ) 式中i - - 源代码行数( 以l o c 计) k 整个开发过程所花费的工作量( 以人年计) 证开发持续时间( 以年计) a 【- 技术状态常数,它反映“妨碍开发进展的限制”,取值因开发 环境而异,见表1 - 2 : 北京工业大学工学硕士学位论文 n oc k 的典型值开发环境开发环境举例 l2 0 0 0 差没有系统的开发方法,缺乏文档和复审 好有合适的系统的开发方法,有充分的文档和复 28 0 0 0 宙 31 1 0 0 0优有自动的开发工具和技术 将公式变换后,即可以根据源代码行数、开发时间和c k 常数得到估算的 工作量了。 c o c o m o 模型 结构性成本模型c o c o m o ( c 酬v e c o s t m o d e l ) 是一种精确的、易于 使用的成本估算方法,它分为基本c o c o m o 模型和中级c o c o m o 模型两种 类型。基本c o c o m o 模型是一个静态单变量模型,它用一个以已估算出来的 源代码行数( l o c ) 为自变量的经验函数来计算软件开发工作量。中问c o c o m o 模型则在用l o c 为t l 变量的函数计算软件开发工作量的基础上,再用涉及产 品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。更详细的 c o c o m o 模型除了包括中间c o c o m o 模型的所有特性外,还考虑了在需求分 析、软件设计等每一步的影响。 基本c o c o m o 模型估算公式,见式( 卜3 ) 、( 卜4 ) t d k v = c * ( e ) 4 嘲 式中m m 一为开发所需的人力( 人月) 1 r i ) k v _ 一为所需的开发时间( 月) k l o c 为估计提交的代码行 a 、b 、c 和d 一为不同软件开发方式的值, 通过统计6 3 个历史项目的历史数据,得到如下计算公式,见表1 3 。 ( 1 - 3 ) ( i - 4 ) 第1 章绪论 表i - 3c o c o m o 模型类型说明 t a b l e1 - 3c o c o m om o d e lt y p ee x p l a i n n o 总体类型工作量进度 1 组织型蛐= 1 0 驰( 1 ( d s i ) “t d k v = 1 0 5 ( m m ) “” 2 半独立型删= 3 0 ( k d s i ) “”t d k v = 1 0 5 ( 蛐) “ 3 嵌入型删= 3 0 ( k d s i ) 1 ”t d i o = 1 0 5 ( m m ) “” m 模型 1 9 7 7 年,w a l s t o n 和f c u ) 【总结了m m 的6 0 个项目数据,提出了如下的估 算公式,见式( 卜5 ) 、( 卜6 ) e = 5 2 l o 9 1 嘲 d = 4 1x l 0 3 6 = 2 4 x e 0 3 5 嘲 式中i r _ 源代码行数( 以k l o c 计) e 工作量( 以p m 计) d 一项目持续时间( 以月计) ( 4 ) 自顶向下估算法 ( 1 5 ) ( 1 - 6 ) 自项向下的方法是对整个项目的总开发时间和总工作量做出估算,然后把 它们按阶段、步骤和工作单元进行分配。它的优点是对系统级别的关注。它不 会错过系统级别的功能成本,如集成、用户手册、配置管理等 ( 5 ) 自底向上估算法 自顶向下的方法是将每个软件组件的成本都独立的进行估算,通常是由负 责开发组件的人员来进行。将这些成本加起来,就得到整个产品的估算成本 这种估算方法可以把组件级的工作量估算的更准确( 一般要将软件任务组织成 工作分解结构) ,但有可能忽略许多整个软件开发相关的系统级别的成本。 综上所述,目前还没有一个通用的方法可以在所有方面都比其他可选方法 好。所以,可以利用方法之间进行互相弥补( 例如:模型与专家估计法、自顶向 北京工业大学工学硕士学位论文 下与自底向上) 以期更准确地得到估算结果。 1 2 4 国内外目前的研究现状 国外软件开发起步较中国要早很多,相对于软件规模估算和成本估算也有 一系列的模型和经验数据库。例如: 国际功能点用户组( w p v 6 ) :促进功能点用户团体和主要的功能点用户组 交互,以便能够接触到这些方法中的最新研究成果,并使这些功能点用户组能 够使用实际的工业数据对这些方法进行适当的定期的校准。虽然有很多类似的 功能点,但是a l b r e c h t 的功能点通常被用作缺省的功能点。 其他主要的功能点方法有m a r k l i c l 埘 l e ss y m o n s ( 与通用的功能点估算方 法相比,把系统复杂度的因素考虑进来了,但使用起来并不方便) 、完全功能点 ( 针对实时系统) 、特征点( 含有大量算法) 、对象点( 原型项目) 、3 - d 功能点( 适 合面向对象程序开发) 、以及当我们只需要近似度量或者当我们对规模估算的细 节了解不够时使用的近似功能点方法( 如快速f p a 计数、快速应用程序业务量 估算) 等 通用软件度量国际联盟( c o s m i c ) 是一个致力于开发、测试并出版新一代 贯穿整个生命周期的软件规模度量( 生产率) 度量方法的团体。其推广的完整功 能点方法可以从其网站上下载 c o c o m o 研究组:位于美国南加州大学,其设立的网站是c o c o m 0 模型的全面而权威的网站。用户可以在那里得到最新的研究资料和模型的最新 状态的信息。c o c o m o l l 只是个模型,还需要实际的工业数据进行校准。 c o c o m 0 在各种需求的不断推动下,也针对不同类型的软件系统给出了不同 的估算模型,例如针对经验数据的c o c o m o r l 贝叶斯校准和对使用现成构件进 行评估的c o c o t s 组件估算等等。 还有一些根据软件估算模型而引申的软件估算工具,例如:s l i m ( s o f t w a r e l f f e c y c l em a n a g e m e n t ) 、f u n c t i o np o i n tw o 出b c n c h 、c a - e s t i m a c s 、f u n c t i o np o i n t m 姐a g 盯、e s t i m a t ep r o f e s s i o n a l 、c o s t a r 、c o c o m o g l c a l e u l a t o r 等等,也都提供 第l 章绪论 各种方式的软件规模和工作量估算,且各有特色。 未来,各种模型的发展趋势,主要表现在对领域特征的理解对模型带来的 变化、新技术与范型的变迁带来的整体变化和处理项目实施中的变更等方面的 研究和拓展。 综上所述,虽然再工程项目的比重越来越大,但目前国内外针对再工程项 目的成本估算与控制的研究并不多见,这也正是本文的研究切入点,即针对再 工程项目的特点对再工程项目建立和校正估算模型,建立再工程软件开发成本 管理的基本框架( 计划一跟踪一审核机制) ,使再工程项目的软件开发成本逐渐趋 于可控,进而提高了软件企业项目管理水平。 1 2 5 课题来源及研究内容 本课题是奥地索公司长期在软件再工程领域的研究和实践中针对实际需求 提出的,在公司已有的软件企业平台:a s o s e p ( o m o u r c i 】a gs o t t w a r ee n t c a p f i s e p l a t f o r m ) ,和a s - o a l 0 6 ( o u t s o m i n gs o i t w a r ee n g i n e e d n ga s s e m b l yl i n e ) 软件 组装生产线的提供的过程数据的支持下,对再工程软件开发过程中的成本估算、 成本监控以及自动化等问题进行研究,提取与校正再工程软件成本估算模型, 确立再工程项目的成本分布模型。构筑公司级的面向再工程的软件项目开发成 本管理系统,与公司的软件企业平台平滑衔接。 为公司的组织级目标提供持续性的支持,针对再工程类项目,使其成本估 算更精准,帮助公司项目经理、质检部门对项目的实际成本情况给与数据层面 上分析支持。 1 2 6 本文组织结构 绪论中介绍了本课题的学术背景、理论意义、相关领域的研究现状、课题 来源、以及本文的研究内容和组织结构。下面根据软件成本估算的顺序,分别 对研究情况做介绍。在第2 章中介绍了软件再工程项目规模估算的研究。第3 章详细介绍软件再工程项目工作量估算的研究第4 章介绍了成本监控及经验 北京工业大学工学硕士学位论文 数据的校正。第5 章详细介绍了软件再工程成本管理系统的框架的设计第6 章对本课题的前景展望。 第2 章再工程项目规模估算 第2 章再工程项目规模估算 2 1 再工程项目规模估算概述 要得到好的估算模型,好的规模估算是很重要的。然而,规模估算是非常 有挑战性的。再工程项目大致分为三种,一种是编码语言不变,只是代码根据 需求需要增、删、改。一种是编码语言根据需求要进行自我升级,例如:( 一个 原来是v b 6 的软件系统根据客户要求要升级到v b n e t ) 。还有一种则是编码语 言产生变化,例如:p b - j a v a 、v b - j a v a 的项目。 对于第一种情况,编码时往往需要提供设计书,这样就可以比较容易的得 出修改点,可以使用功能点分析法得到功能点的变化,进而估算出变化的规模。 对于后两种情况,编码语言自我升级的项目,经常出现既存系统的可参考 文档不全,业务相对成熟,不需要修改。而编码语言发生变化的项目,由于既 存系统的规模数大多能从原系统的代码中得到。所以实际上是己知原编码语言 的总代码数,求解新语言的估算规模。这种情况下,如果使用两种语言的换算 表,可以很容易的得到新语言的大致规模。 2 2 功能点分析法( f p a ) 功能点分析是面向功能的软件度量方法,注意力集中于程序的”功能性” 和“实用性”,从系统的复杂性和系统的特性这两个角度来度量系统的规模,其 特征是:“在外部式样确定的情况下可以度量系统的规模”,“可以对从用户角度 把握的系统规模进行度量”,经由i s o 组织已经有多种功能点估算方法成为国际 标准。 f p a 的计算大致通过以下步骤得到,首先填写下面的表2 1 来计算未调整功 能点数: 功能复杂性等级 l 信息域参数低平均高 总计 北京工业大学工学硕士学位论文 外部输入 x 3x 4x 6 外部输出 x 4x 5x 7 外部查询 x 3x 4x 6 内部逻辑文件x 7 x l o x 1 5 _ 一 外部接口文件 x 5x 7x 1 0 一 未调整的功能点( u f p ) 总计 公式中的技术复杂度指系统实现的复杂度,按照系统特征分为1 4 个方面: 数据通讯,分布式数据处理,性能,硬件负荷,事务频度,联机数据输入, 界面复杂度,联机更新,内部处理复杂度,代码复用考虑,转换和安装,备份 和恢复,多平台考虑,易用性。依据每个方面的打分,推导出调整系数v a f ( v a l u e a d j u s t m e n tf a c t o r ) 。推导公式如下,见式( 2 - 1 ) v a f = o 6 5 + 0 0 1 ( f 1 + f 2 + + f 1 4 ) 嘲( 2 - 1 ) 式中、f 一调整系数 f i 每个问题的分数 所以可以得到调整后的功能点,见式( 2 - 2 ) f p c = u f p v a f 嘲 ( 2 - 2 ) 式中阡e 一项目整体规模,以功能点计 i f p _ 一未调整的功能点 v a h 同整系数 增强项目的规模估算和开发项目的规模估算有些不同,因为增强是对于一 个现有系统而言的而且,修改和删除功能消耗了工作量,尽管改进后系统的 规模可能实际上变小了 增加功能的f p c = u f p ( a d d ) 师( a ) 修改功能的f p c = u f p ( c h g a ) v a f ( a ) 删除功能的f p c = u f p ( d c l ) 叮( b ) 第2 章再工程项目规模估算 g s c 中改变的f p c = ( u 】阳( b e f o 面一( u f p ( c h g b ) + u f p ( a d d ) ) ) a b s ( v a f ( a ) 一v a f ( b ) ) 项目增强功能点= 增加功能的f p c 1 0 ( 权重) + 修改功能的f p c 0 5 ( 权重) + 删除功能的f p c + o 2 5 ( 权重) + g s c 中改变的f p c 1 o ( 权重) u f p ( b e f o r e ) 系统增强之前的总的未调整功能点。 u f p ( a d d ) 新功能得到的未调整功能点的总和。 u f p ( c h g a ) 增强后修改功能得到的未调整功能点的总和。 u 】即( c h g b ) 增强前修改功能得到的未调整功能点的总和。 u f p ( d c l ) 棚| l 除功能得到的未调整功能点的总和。 心( a ) 增强前系统的值调整因子。 v a f ( b ) 增强后系统的值调整因子。 2 3 经典c o c o m o i i 模型 c o c o m o i 的规模估算方法很值得推敲,它首先借用f p a 方式得到未调整 的功能点,再根据源代码转换表( 见表2 2 ) ,得到该语言的估算的源代码行数。 表2 - 2 源代码转换表 t a b l e2 - 2c o d ec o n v e r tt a b l e n o语言 语言水准最小值最频值 最大值 1 p b2 0 0 01 01 62 0 2c o b o l3 0 06 51 0 6 71 5 0 3c + +6 0 04 0g 5 1 4 0 4 第一代语言3 2 0 5 第二代语言 1 0 7 6 第三代语言8 0 7 第四代语言 2 0 8 第五代语言 4 c o c o m o i i 采用非线性估算模型处理软件的复用。它涉及到估算软件要改 编的数量和三个修改程度系数:设计修改百分比( d m ) ,代码修改百分比( c m ) 和集成改编或复用软件所需的工作量百分比( 订) 。 适配调整因子a a f 是修改的总数,计算如下,见式( 2 3 ) : a a f = 0 4 + d m + o 3 c m + o 3 l m 捌( 2 - 3 ) 北京工业大学工学硕士学位论文 若钆心 0 5 ,等价源代码行数e s l o c 计算如下,见式( 2 4 ) : e s l o c = a s l o c + 从+ a a f ( 1 + s u u n f m ) 1 0 0 嘲( 2 - 4 ) 对于更低的a a f 值,等价源代码行e s l o c 计算如下,见式( 2 5 ) : e s l o c = a s l o c a a + 从f ( 1 + 0 。0 2 * s u + i n 师m ) 1 0 0 嘲( 2 5 ) 式中a s l o c s l o c 源行中复用的行数 a a 估算及类比程度,范围:o 一8 s i 卜一软件理解增量,范围:1 0 0 , 6 5 0 0 , 6 i n 盯m 一不熟悉增量估值,范围:0 0 1 0 维护项目,如果增加,修改基本源代码的数量不足新代码的2 0 , 用模型,如果超出2 1 p , 6 ,用以下方法,见式( 2 6 ) : m a f = l + ( s u u n f m ,1 0 0 ) 嘲 式中m a f _ 维护调整系数 维护的规模= ( 增加的规模+ 修改的规模) m a f 。 2 4 专家w i d e b a n dd e l p h i 估算法 用上述复 ( 2 6 ) 专家经常根据自己的经验和直觉做出合理的估算。当没有足够的信息去使 用算法模型时,专家的观点则是最可取的( 可能也是唯一的) 。某人仅为了软件 的操作性请教专家,但是专家却能引申出一大摞其他的问题来,这是因为专家 有一些无法解释的知识,这赋予专家有用的直觉。w i d e b a n dd e l p h i 是基于收集 专家经验估算的构造法。它常用于第一次调节估算,这时专家的意见尤为重要。 它也用于其它估算法的补充。在软件规模的语境中,w i d e b a n dd e l p h i 法能用目 标系统的l o c 估算。w i d e b a n dd e l p h i 法是基于当很多专家有同样假设独立的 估算出同样的结果时,那么这个结果是正确的当然,所有专家必须采用相同 的、正确的假设条件 使用p e r t 规模计算方法,可以更好的减小估算误差。 a j = 软件组件可能规模的最小值 m i = 组件最可能的规模 b i = 组件可能规模的最大值 期望规模e i = ( a + 4 * m i + b o 6 第2 章再工程项目规模估算 2 5 本章小结 本章探讨了规模估算针对再工程项目的一些用法 当没有足够的信息使用模型时,建议使用w i d e b a n dd e l p h i 估算法。 当根据设计书进行软件的定制化作业时,可以使用增强f p a 或辅以 c o c o m o 复用模型。 如果业务逻辑没有变化,仅仅是编码语言产生变化,可以直接用源代码转 换表对应得出新的语言规模,再通过对系统的分析进行适当的复杂度加权,得 到估算的结果。 北京工业大学工学硕士学位论文 第3 章再工程项目工作量估算 3 1 再工程项目工作量估算概述 在软件的度量过程中,一旦确定了软件规模,下一步就是要确定需要耗费 多少工作量来做软件,以及完成软件需要的时间周期,工作量估算方法主要有 专家估算、类比估算、模型估算、自顶向下,自底向上等几种,到底哪些方法 更适用于再工程项目呢。先来总结一下各方法的优缺点,见表3 1 。 表3 - 1 估算方法的优缺点 n o 方法优点 缺点 客观,可重复、可分析的公式、主观输入、 l 算法模型有效率、敏感性分析好、不能评估异常情况、 能用经验来客观校准校准过去的项目而不是将来的 能对有代表性的项目进行迭代、 2 专家估算有偏见、不完善的回忆 特殊情况下的项目进行评估 3 类比基于有代表性的经验上必须存在经验 能聚焦于系统级上、不够详细的基础、 4 自顶向下 有效率缺乏稳定性 更为详细的基础也许忽略了系统级成本 5 自底向上 更稳定需要更多的工作量 根据上面表中各方法的优缺点可以看出,对于再工程项目,如果既存项目 可以提供一次工程时的相应数据,采用类比法并辅以算法模型法,可以得到较 好的效果。当无法提供原有数据时,使用专家估算对估算结果进行检验可能起 到很好的风险控制的作用。实际上,在类比法和专家估算法中,或多或少会使 用自顶向下或自底向上的分析方式,所以就不单独对这两种方法进行研究了 在后面将针对再工程项目的特点,对算法模型进行调整,以期待能更准确地进 行估算 3 2 规模、生产率与工作量 词典上对生产率的解释是:每单位的输入与得到的产出的比率。即:生产 率= 输出,输入在软件开发项目中,我们是在制造软件( 包括支持文档) , 所以软件项目的输出可以根据。系统的规模”来度量。软件项目的输入是。项 第3 章再工程项目工作量估算 目组的工作量”。因此,软件项目的生产率可以表示为:生产率= 规模肛:作量。 许多软件项目的数据显示,生产率随规模的增加而下降( 如图3 1 所示) 。 这意味着软件的规模增加时,估算的工作量应该呈指数增长( 如图3 - 2 所示) 。 工作量o 田 图3 - 1 规模一生产率 f i g u r e3 - 1s 湖争讲口蜊v i t y 工作量0 v l m ) 图3 - 2 规模一工作量 f i g u r e3 - 2s c a l e - w o r k l o a d 产品规模s d 产品规模s i ) 为什么会这样呢,主要的原因是规模的增长会导致系统复杂度的增长,比 如一个小型系统中,我们假设只有两个模块,只需要考虑一个接口。当系统规 模增大一倍,模块数由2 变为4 ,但是模块之间的接口却由1 变为6 。所以生产 率会随规模的增加而降低。我们只能对于规模相差范围小的项目,使用规模和 工作量之间的线性关系( 或生产率常数) ,当规模发生剧烈变化时,线性关系就 无效了。 所以我们使用的任何再工程模型都必须考虑规模和工作量之间的这种非线 性关系。 北京工业大学工学硕士学位论文 3 3 进度、人员与工作量 3 3 1 人员进度权衡定律 著名学者p u t n a m 在估算软件开发工作量时得出如下公式: l = c k + k 协t d 帕 详细说明见1 2 3 3 ( 3 ) 节 其中l 表示源代码行数,k 表示工作量( 单位是人年) ,t d 表示开发时间( 单 位是年) 。从公式中可知,软件开发项目的工作量( k ) 与交付时间( t d ) 的4 次方 成反比。显然,软件开发过程中人员与时间的折衷是十分重要的问题。p u m a m 将这一结论称为“软件开发的权衡定律” 我们知道,信息系统项目的建设时间主要取决于应用软件的开发时间,我 们将这种人员与进度之间的非线性替代关系称为。人员进度权衡定律 3 3 2 经验b r o o k s 定律 曾担任m m 公司操作系统项目经理的f b r o o k s ,从大量的软件开发实践中 得出了另一条结论:“向一个已经拖延的项目追加开发人员,可能使它完成得更 晚”。鉴于这一发现的重要性,许多文献称之为b r o o k s 定律。这里,b r o o k s 从 另一个角度说明了“时间与人员不能线性互换”这一原则。 对上述两个定律的合理解释是,当开发人员以算术级数增长时,人员之间 的通信将以几何级数增长,从丽可能导致“得不偿失”的结果。一般说来,由 n 个开发人员组成的小组要完成既定的工作,相互之间的通信路径总数为 c : n = n 1 ) 尼,而通信是需要时间的。所以,当新的开发人员加入项目组之后, 原有的开发人员必须向新来的成员详细讲解某个活动或工作包的来龙去脉。由 于信息系统开发具有较强的个人风格,所以交流沟通的时间更容易拉长,而后 来者还不一定能达到原来开发人员的工作质量 无论是从研究的角度还是从实际项目结果来看,我们都不得不承认下面这 两个事实: 存在一个可能的最短进度,而且不可能突破它。( 如图3 3 所示) 当把迸度缩短的比普通迸度短时,成本将会迅速上涨( 如图3 4 所示) 。 第3 章再工程项目工作量估算 按进度日期完成的可能性 f i g u 酊r e3 删- 3 s c 鹏h e d u 翩l ea n d 黜帅蕊舻日期啪p l e t i l p 硒i j i i 旷 图3 - 4 进度与成本 f i g u r e3 - 4 s c h e d u l ea n dc o s t 预定完成日期 ( 在c o c o m o 估算模型中,b a r r yb o e h

温馨提示

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

评论

0/150

提交评论