如何估算软件复用成本?

估算软件复用成本,首先需要定义以下几个参数:

  1. 开发没有复用的软件成本

针对不同开发语言(如C、C++、Java等,假设没有采用复用进行开发的成本为C无复用 =开发没有复用的典型系统的成本。

  1. 复用率

软件的复用率R=被复用的构件的总规模/软件的总规模

  1. 复用相对成本

复用开发缺少了编码、编译、单元测试、调试等环节,开发成本与不进行复用相比很低,通常这个相对值为0.1~0.25,一般使用0.2作为默认值。

F使用 =复用一个构件的相对成本

采用复用开发的软件成本由两部分组成,分别是采用复用开发的部分和不采用复用开发的部分。这两部分开发成本可以使用上述参数进行计算:

C采用复用开发部分 =C无复用 × (R×F使用 )

C没有复用开发部分 =C无复用 × (1-R)

将这两部分成本累加,即得到采用复用开发的总成本:

C采用复用 =C采用复用开发部分 + C没有复用开发部分 
=C无复用 × (R×F使用 )+C无复用 × (1-R) 
=C无复用 × (R×F使用 +(1-R))

如果某软件复用率R=50%,F使用 =0.2,那么C采用复用 =C无复用 × 60%,即复用率达到50%时,采用复用开发的软件成本为不采用复用开发的60%。

由于采用复用而导致节约的成本为C节约 ,那么:

C节约 =C无复用 – C采用复用 
=C无复用 × (1 – (R×F使用 +(1-R))) 
=C无复用 × R×(1- F使用 )

由于复用产生的相对开发成本效益比ROI节约 为:

ROI节约 = C节约 / C无复用 = R×(1- F使用 )

如果软件复用率为50%,那么ROI节约 = 50%×(1- 0.2)=40%

以上的估算是没有考虑开发可复用构件的成本,如果考虑开发可复用构件的成本,那么复用的成本效益比的计算应当有如下变化:

  • 增加创建并管理可复用组件的相对成本F创建 :

F创建 = 创建并管理可复用组件的相对成本

由于创建并管理可复用组件要考虑具体的语言、复杂度、遵循的过程以及复用的普适性、规范性等,F创建 要比F使用 大得多,取值范围为1~2.5,一般默认值取1.5。

假设所有已开发的可复用构件对所有软件系统都可以复用率R进行复用,开发这些可复用构件的成本为:

C构件集合 = 开发供以复用率R足够复用的可复用构件的成本 = R × F创建 × C无复用

假设有n个软件使用这些可复用构件进行了复用,那么这n个软件复用开发节约的成本为:

C系列节约 = n × C节约 – C构件集合 
= C无复用 × ( n × R×(1- F使用 )- R × F创建 )

那么开发可复用构件集合的投资回报为:

ROI = C系列节约 / C构件集合 
= ( n × R×(1- F使用 )- R × F创建 ) / R × F创建 
= ( n ×(1- F使用 )- F创建 ) / F创建

当F使用 和 F创建 均取默认值时,ROI = (n × 0.8-1.5)/1.5,所以,只有n>2即有2个以上的软件复用时,开发这些可复用构件才能赚回开发成本。

这正是:

复用开发需管理,管理离不开度量

复用成本效益比,复用管理指方向

参考书目:软件复用:结构、过程和组织,作者:雅各布森,出版社:机械工业出版社

作者简介:王小双,长期从事GJB5000推广、实施、评价、改进的工作,创建《软件工程之思》微信公众号,一直在《软件工程之思》分享GJB5000、CMMI、软件工程的知识和感悟。现致力于GJB5000咨询以及软件过程改进、软件工程能力提升的研究工作。

如何估算软件复用成本?》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.hashtobe.com/164.html