APP下载

COCOMO模型对软件工程教学的影响

2009-01-14

群文天地 2009年16期
关键词:软件成本模型

向 峰

COCOMO(构造性成本模型,Constructive Cost Model)出现在软件工程日趋成熟之际,它既是对该学科方法与技术等变化的反映,同时也是这些变化的指示器。COCOMO已经并将继续成为介绍、阐释软件工程方法与技术的不可或缺的工具。

一、引言

COCOMO由Barry Boehm在其1981年的论著《软件工程经济学》一书中所提出,被描述成为一种用于估计软件项目耗费、成本、时间表等的模型。正如他所指出的,“COCOMO适用于对当前软件工程的指导方针以及该方针在整个软件生命周期中的作用做出解释” 。事实上,基于COCOMO的估计已经成为当今最为流行的估计方法,并对工业生产和软件工程教学产生了深远的影响。

本文简单介绍了COCOMO的最初模型,回溯了COCOMO的发展历程,并对以COCOMO 81及其后续者作为软件估计教学和软件项目管理基础的一些方法进行了阐述。

二、COCOMO及其后续产品

在《软件工程经济学》这一经典教材中,有关COCOMO的内容仅占全书33章中的13章,其他章节则是对成本效率分析,多目标决策分析,解决不确定性、风险、以及信息价值等的论述。然而,这并不妨碍COCOMO成为该书的灵魂,也正是由于包含了COCOMO,这本教科书式的论著才受到了长久的追捧。

(一)COCOMO 81 - 一种构造性成本模型

COCOMO 81具有典型的开放式、构造性特征,正如人们通常所认为的,它既是一个估算模型,同时又是一个演示如何建立估算模型的详细实例。COCOMO之所以被称为“构造性成本模型”,源于Barry Boehm最初利用它来说明如何构建一个成本估算模型。早期的“黑盒”估算工具所依赖的模型,其细节被卖家认为是私有的,尽管他们声称模型是建立在“数以千计的数据”基础之上,但是却没有公开发表的论文对此做出印证。而与此相反的,开发COCOMO 81及其后续产品的目的,就是意图建立一个完全开放式的、透明的模型。

Barry Boehm于1981年担任TRW公司(Thompson Ramo Wooldrige Inc)的软件开发与技术总监,COCOMO 81即建立在对该公司63个项目相关数据的分析基础之上,采用当时流行的瀑布式软件开发模式。在月人工量(man-months)与基于交付源指令(DSI)的项目规模关系图中,COCOMO数据大致形成三个集群,Boehm将它们分别称为组织型的(Organic)、半分离型的(Semidetached)、以及嵌入式的(Embedded)模式,这三种模式下的软件开发复杂性与困难程度呈逐步增加的趋势。

COCOMO由三个不断深入的层次组成,分别为“基本(Basic)COCOMO”、“中间(Intermediate)COCOMO”、以及“详细(Detailed)COCOMO”。基本COCOMO是一种静态的单值模型,它根据(由代码行数来度量的)程序规模来计算软件开发的工作量和成本。中间COCOMO 模型采用15个成本驱动改进基本模型,是对产品、硬件、工作人员、项目特性等因素的主观评估,其中,成本驱动的影响定为项目级。详细COCOMO 模型是三种模型中最精确的,具有中间 COCOMO 模型的所有特性;它将软件开发划分为四个阶段,并根据相应的阶段赋予成本因子不同的权重,此时的计算细化到子系统/模块,更加符合软件开发的真实情况。

(二)COCOMO 81中的施教时刻

施教时刻(Teachable moments)是指在就某一问题进行讨论或学习时,能够产生大量与该问题相关的认识、看法、理解等认知的那段时间。施教时刻可以事先进行安排和计划,也可能随机的、自发的产生。在施教时刻,人们把对某一问题的讨论设置在特定的情境或条件之下,从而在这些前提不断扩大和深入时,有助于获得对该问题更深层次、更广泛的理解。比如,对COCOMO有关等式的推导附带着线性回归、统计密度函数、方差分析等方面的知识,选择成本驱动及其参数则涉及了对工作效率、成本、时间表等的有关影响因子的分析;我们可以这样认为,施教时刻是将认知扩大到一个预先设定好的更广泛领域的过渡阶段。Richard E. (Dick) Fairley在其所教授的软件项目管理课程中列举的COCOMO中所包含的施教时刻如表1所示:

(三)Ada COCOMO与Ada过程模型

COCOMO 81是典型的基于瀑布式模型的批处理模式,它随着软件工程的日趋成熟而逐步发展起来,在第一时间反映并指示了了软件工程方法与技术领域的诸多变化。Ada COCOMO是COCOMO 81的“增强版”,是专门针对嵌入式系统的估算模型,这类系统大多采用Ada编程语言开发(Boehm & Royce,1987)。TRW公司所采用的Ada过程模型集增量开发、风险管理、结构骨架、渐增测试、统一软件度量等于一体(Royce,1990)。Ada COCOMO中增加了新的成本驱动,并对工作量乘数做出了相应的调整,其对COCOMO 81最突出的两点增强表现为,(a)整合了四个尺度因子以适应嵌入式系统中工作效率和时间估计方程的指数,(b)为软件产品或系统的增量开发提供了一个估计程序。在COCOMO 81及其扩展(包括Ada COCOMO)中,指数因子(> 1)都显示出成本费用因经营规模扩大而增加的一种趋势,这与大规模产品中沟通费用和整合工作量的非线性增加有关。乘数因子便是根据产品和项目的特性而非规模来调整对工作量的估计。

Ada COCOMO在COCOMO 81的基础上进一步引入了软件安全性、复用性、基于新成本驱动的嵌入式系统等内容,同时也在更广泛的意义上对基于连续性数据采集与分析的模型参数改进、软件开发过程模型的特性、迭代式开发的软件修订等问题进行了探讨。Ada COCOMO中包含的施教时刻(表2)反映了对COCOMO 81的一种渐进性的累积过程,因此,COCOMO的教学可以称之为是对COCOMO、软件估计、软件工程方法与技术等发展历程的强化认识。

(四)COCOMO II

COCOMO II发布于1997年,随后在2000年进行了一些小的升级和改动。COCOMO II的最初使命是为自1981年以来不断改变着的软件工程方法、模型以及技术等提供一个开放式的、构建性的估计模型,同时,这个模型将力求完善,以满足一系列开发方法与相应的实际开发工作的需求。

COCOMO II的主要特点表现在,分别用两个单独的指数方程来进行工作量和时间表的估计,取代了COCOMO 81的三个模式;用五个尺度因子来调整方程指数;增加了三个规模选项;对成本驱动进行了重新定义和补充;另外还包括一个非线性复用模型、两级成本驱动粒度、一个贝叶斯校正方法。它的主要目标是为产品、开发过程、质量、软件项目的成功模式之间的冲突提供调解的途径,从而辅助估计。采用MBASE方法通过对软件规模、成本模型粒度、开发过程等的预先选择,COCOMO II就能够根据设定与约束条件等来满足待估项目的需求。与之前的COCOMO 81和Ada COCOMO相比,COCOMO II包含了更多的施教时刻(表3),所涉及的内容更加宽泛。

三、教学

一般来说,教育是指在学校内完成一定的专业知识学习,通过考核,最终获得授予证书或文凭的资格。软件工程的双重教学目的在于,第一,帮助学生打下扎实的基础已以应付未来新知识的学习;第二,向学生传授技能,以适应当前和短期内的商业环境。合理的确定这两个目标在软件工程教学中的比例,也是对教师们的一项长期的考验。

因此,基于COCOMO的教学大致表现为以下几种形式:介绍COCOMO工具及其使用方法;讲解各种COCOMO模型中所包含的理论内容;通过检验一个COCOMO模型来完成数据采集和分析的实验;通过团队项目来开发一个COCOMO估计工具;以使用COCOMO为基础的、介绍并讨论表1~3中相关话题的、相对详尽的软件工程课程。

另一方面还要将技术传授给软件开发人员、维护人员、管理人员,从而提高其工作效率。然而,软件工程教学需要明确基于某一问题的假定和约束条件。比如,进行估计的人必须首先要了解估算过程中都包含哪些内容、不同环境下工作量乘子的有关影响、方程与乘子的精度局限性、根据所处条件进行校正模型时需要考虑的事项等等。那些审查并批准估算的人必须知道应该向进行估算的人员提出哪些问题以及如何去评定他们的回答。除此,

开发人员与管理人员也需要了解软件工程工具的实用性、成本、特点、以及局限等问题。

四、最新发展

USC(The University of Southern California)软件工程中心目前对COCOMO理论方面的研究侧重于在COCOMO II的基础上进行扩展并开发出新的模型,同时,也尝试整合多个模型而建立一个单独的、功能齐备的估计工具。对COCOMO II的扩展主要是指模型利用COCOMO II的输出结果并通过各种途径来实现对结果的修正。新模型可以在COCOMO方法的基础上进行估计但要求有其独立的输入,如果有必要,新模型也可以与COCOMO II联合使用。图1简单描述了COCOMO的发展历程。每一个扩展模型和新模型都经由COCOMO这座大门而向学生们展示了软件工程领域的最新发展与动态。

五、结束语

COCOMO 81是一个开放式的、透明的、面向瀑布式的软件项目工作效率、成本、时间表等的估计模型。从表1~3及图1中不难看出,COCOMO的发展是紧密跟随软件工程的脚步的,很多时候它反映了该领域方法与技术的变革,在其发展的每一步,COCOMO都为激发并探讨未知领域提供了一种机制。COCOMO对软件工程教学的影响远远的超出了单纯的对估计方法和估计工具的学习,它将软件开发与维护中的许多问题具体化、深入化。正如《软件工程经济学》一书的序言中所指出的,COCOMO模型适用于“对当前软件工程的指导方针以及该方针在整个软件生命周期中的作用做出解释” 。

参考文献:

[1]Boehm, B. W., Royce, W., TRW IOC Ada COCOMO: definitions and refinements. In: Proceedings of the Third International COCOMO Users Group, Software Engineering Institute,1987.

[2]Royce, W.,TRWs Ada process model for incremental development of large software systems, In: Proceedings of the 12th International Conference on Software Engineering. IEEE Computer Society Press, 1990,pp: 2-11.

[3]Richard E. (Dick) Fairley,The influence of COCOMO on software engineering education and training, The Journal of Systems and Software,80 (2007),pp: 1201-1208.

[4]Boehm, B. et al., COCOMO suite methodology and evolution. Crosstalk 18 (4),2005,pp: 20-25.

[5]赵昌木.美国教学方法改革的经验,1994.

[6]郑人杰.实用软件工程.北京:清华大学出版社,1997.

(作者简介:向峰(1982—),2007年硕士毕业于武汉大学国际软件学院;现任武汉大学东湖分校计算机科学学院教师,从事软件工程专业教学工作。)

猜你喜欢

软件成本模型
自制空间站模型
沉没成本不是成本
有趣的识花软件
沉没成本不是成本
模型小览(二)
圆周运动与解题模型
哲理漫画
离散型随机变量分布列的两法则和三模型
即时通讯软件WhatsApp
揪出“潜伏”的打印成本