估算软件复用成本,首先需要定义以下几个参数:
针对不同开发语言(如C、C++、Java等,假设没有采用复用进行开发的成本为C无复用 =开发没有复用的典型系统的成本。
软件的复用率R=被复用的构件的总规模/软件的总规模
复用开发缺少了编码、编译、单元测试、调试等环节,开发成本与不进行复用相比很低,通常这个相对值为0.1~0.25,一般使用0.2作为默认值。 F使用 =复用一个构件的相对成本 采用复用开发的软件成本由两部分组成,分别是采用复用开发的部分和不采用复用开发的部分。这两部分开发成本可以使用上述参数进行计算: C采用复用开发部分 =C无复用 × (R×F使用 ) C没有复用开发部分 =C无复用 × (1-R) 将这两部分成本累加,即得到采用复用开发的总成本: C采用复用 =C采用复用开发部分 + C没有复用开发部分 如果某软件复用率R=50%,F使用 =0.2,那么C采用复用 =C无复用 × 60%,即复用率达到50%时,采用复用开发的软件成本为不采用复用开发的60%。 由于采用复用而导致节约的成本为C节约 ,那么: C节约 =C无复用 - C采用复用 由于复用产生的相对开发成本效益比ROI节约 为: ROI节约 = C节约 / C无复用 = R×(1- F使用 ) 如果软件复用率为50%,那么ROI节约 = 50%×(1- 0.2)=40% 以上的估算是没有考虑开发可复用构件的成本,如果考虑开发可复用构件的成本,那么复用的成本效益比的计算应当有如下变化:
F创建 = 创建并管理可复用组件的相对成本 由于创建并管理可复用组件要考虑具体的语言、复杂度、遵循的过程以及复用的普适性、规范性等,F创建 要比F使用 大得多,取值范围为1~2.5,一般默认值取1.5。 假设所有已开发的可复用构件对所有软件系统都可以复用率R进行复用,开发这些可复用构件的成本为: C构件集合 = 开发供以复用率R足够复用的可复用构件的成本 = R × F创建 × C无复用 假设有n个软件使用这些可复用构件进行了复用,那么这n个软件复用开发节约的成本为: C系列节约 = n × C节约 - C构件集合 那么开发可复用构件集合的投资回报为: ROI = C系列节约 / C构件集合 当F使用 和 F创建 均取默认值时,ROI = (n × 0.8-1.5)/1.5,所以,只有n>2即有2个以上的软件复用时,开发这些可复用构件才能赚回开发成本。 这正是: 复用开发需管理,管理离不开度量 复用成本效益比,复用管理指方向 参考书目:软件复用:结构、过程和组织,作者:雅各布森,出版社:机械工业出版社 |
|