1、- I - 基于用例的软件成本估算模型的建模与实现 摘要 随着软件系统规模和复杂程度的日益 扩大 ,从 20 世纪 60 年代末期开始,出现了以大量软件项目进度延期、预算超支和质量缺陷为典型特征的软件危机。人们认识到了软件估算工作的重要性和艰难性,软件成本估算活动势在必行。从最早的 系统开发公司的线性 估算模型开始,估算研究大量展开,各种估算模型和工具纷纷出现。 作为一种捕获和描述用户需求的表现形式,用例在很多情况下被作为度量软件规模和软件总工作量的重要指标。与目前流行的软件规模度量方法源码行数和功能点数相比较,用例具有更直观、 易理解、易度量、易跟踪等特性,更能反映在软件开发生命周期内项目的
2、开发进度。 本文介绍了用例的基本知识和软件估算模型国内外的现状,并根据用例规约文档建立了基于用例的软件成本估算模型,并用实例说明使用方式,最后得出结论并指明未来的研究方向。 关键字 用例 ; 估算 ; 软件成本估算 ; 软件规模估算 ; COCOMO - II - Software Cost Estimation Model Based on Use Cases and Its Realization Abstract With the growth of size and complexity of software systems, software crisis has taken pl
3、ace at the end of 60th age in 20th century. The crisis includes the delay of process, budget overruns and quality defects and so on. People realize that the software estimation is an important and difficult and task has been focused on. After SDC Estimation Model was proposed, more and more research
4、 software cost estimation. There are many models and tools to support software estimation now. As a means to capture and describe customers needs, use case is an important and widely used method in many cases to represent and measure software size and ongoing work. Compared with the popular method s
5、uch as source code model and function points estimation, use case is easier to understand, use, measure and be traced. This dissertation introduces the knowledge of use case and related software estimation model. The software cost estimation based on use case is established according to the use case
6、 specification document and is verified through a project. Final part makes the conclusion and proposes the future work about the model. Key words Use Case; Estimation; Software Cost Estimation; Software Size Estimation; COCOMO - III - 目录 第一章 绪论 . 1 1.1 引言 . 1 1.2 论文的组织 . 1 第二章 用例的相关研究 . 3 2.1 用例和用例
7、模型 . 3 2.2 用例规约组成 . 4 2.3 用例、用例图与需求 . 5 第三章 国内外软件成本估算方法现状 . 7 3.1 现有的软件成本估算模型 . 7 3.2 用例点估算可行性 . 9 3.3 用例点估算方法 Karner 方法 . 10 3.4 基于用例估算的其他方法 . 10 第四章 基于用例的软件成本估算模型 . 12 4.1 建模假设 . 12 4.2 建模思路 . 13 4.3 用例规约文档结构分析 . 14 4.4 基于用例的软件成本估算模型建模 . 14 4.4.1 计算用例规模的权重 . 15 4.4.3 确定其他需求的乘数比例 . 16 4.4.4 估算源代码千行
8、数( KSLOC) . 17 4.4.5 估算软件成本 . 18 4.5 模型应用 -案例分析 . 20 4.6 模型的评价 . 21 4.6.1 模型准确度分析 . 22 4.6.2 模型优点 . 23 4.6.3 模型缺陷 . 24 4.7 模型总结 . 25 - IV - 4.8 原型系统 . 25 4.8.1 系统简介 . 25 4.8.2 原型系统的未来扩充工作 . 28 第五章 总结与展望 . 29 5.1 总结 . 29 5.2 未来工作展望 . 29 致谢 . 31 参考文献 . 32 附录 用例规约模板 . 34 - V - Contents Chapter 1 Exordi
9、um . 1 1.1 Introduction . 1 1.2 Dissertation structure . 1 Chapter 2 Research about Use Case . 3 2.1 Use case and use case modeling . 3 2.2 Use case specification . 4 2.3 Use case, use case diagram and requirement . 5 Chapter 3 The status about software cost estimation . 7 3.1 Existing software esti
10、mation model . 7 3.2 Feasibility about use case estimation. 9 3.3 Use case point Karner method .10 3.4 Other methods about use case estimation .10 Chapter 4 Software cost estimation model based on use cases.12 4.1 Assumptions .12 4.2 Clues.13 4.3 Structural analysis of use case specification.14 4.4
11、Software cost estimation model based on use cases.14 4.4.1 Use case sizes weight .15 4.4.2 Actor Multiplier .16 4.4.3 Other Multiplier .17 4.4.4 Estimating KSLOC .17 4.4.5 Estimating software cost .18 4.5 Model application-Case study .20 4.6 Model evaluation.21 4.6.1 Accuracy analysis .22 4.6.2 Bene
12、fits .23 4.6.3 Disadvantages .24 - VI - 4.7 Model summary .25 4.8 Prototype System .25 4.8.1 System introduction .25 4.8.2 The future work .28 Chapter 5 Summary and future work .29 5.1 Summary .29 5.2 Future work .29 Acknowledgements .31 References .32 Appendix Use case specification .34 基于用例的软件成本估算
13、模型的建模与 实现 - 1 - 第一章 绪论 1.1 引言 软件开发从产生发展到现在 , 经历了软件危机的洗礼,成长为一门真正的学科。在成长过程中,人们意识到,缺乏有效的成本估算和 合理的进度安排是造成项目滞后 和成本不断积累 的主要原因 之一 ,它比其他所有因素加起来的影响还要大。 那么, 导致这种 情况 的原因是什么呢 1? 首先,我们对估算技术缺乏有效的研究,更加严肃的 说,是我们把软件开发想象成了运作良好的开发,而没有正视出现的真正问题; 第 二 ,由于对自己的估算缺乏信心, 项目经理通常不会有耐心持续估算这项工作 ; 第 三 ,对进度缺少跟踪和监督。其他工程领域 中,经过验 证的跟踪
14、技术和常规监督程序,在软件工程中常常被认为是大胆的革新; 第 四 ,当意识到进度的偏移时,下意识(以及传统的)反应是增加人力。这就像火上浇油,只会使事情更糟。越来越大的火势需要更多的汽油,从而进入了一场注定导致灾难 性的 循环。 既然软件成本的估算在软件开发中有着举足轻重的地位,那么怎么样才能有效的进行估算和研究,让它为决策提供有利的支持哪?近年来,大量的成本估算方法和工具纷纷出现。其中,随着用例工具的兴起和在需求工程领域内的广泛应用,它在估算领域同样得到了认可,人们开始尝试用用例这种直观的描述需求 的方式对成本进行估算,代表性的有Karner 用例点方法, IBM 公司的用例估算工具,用例向
15、功能点转化等方法。 用例在国际上拥有广泛的应用前景,而且贯穿于软件开发的整个过程,可以为整个开发提供强有力的估算支持,而最重要的用例规约文档是表达用例的有效方式。本文正是着眼于用例规约文档,在吸收前人研究工作的基础上,提出了基于用例的软件成本估算模型,为项目的估算提供依据。 1.2 论文 的 组织 论文的组织一共分五章 。 第一章:绪论。阐述了论文的研究背景和研究方向。 第二章:用例的相关研究。本章介绍了用例的相关概念和研究 :用例的产生、用例的发展历史、机构组成,以及与需求的关系,系统阐述了用例作为估算工具的优势。 基于用例的软件成本估算模型的建模与 实现 - 2 - 第三章:国内外软件成本
16、估算方法现状。本章介绍了当前国内外软件成本估算的相关研究,描述了软件成本估算的发展和传统的六种软件成本估算方法,并对用例估算的可行性进行了评估。着重讲述了基于用例点的软件工作量度量的研究,并指出各种度量方法的优缺点。 第四章:基于用例的软件成本估算模型。本章是整个论文的核心部分 , 主要建立 基于用例 的 成本估算模型 及其模型的使用步骤过程 。 从模型的假设 前提和注意事项,以及建模的整体思路 出发,重点 剖析了 用例规约文档,找出影响用例规模的关键因素 。之后 详细阐述了 模型的建立和使用。 并介绍了 当前 最为流行的 构造性成本估算模型, 并将工作量参数带入公式,计算出软件开发的成本 。
17、整个估算过程通过一个人力资源开发项目案例说明。最后总结并评价了模型的准确度,优缺点等,将模型的思想嵌入到一个小型的原型系统开发之中,说明模型对软件成本开发决策的支持作用。 第五章:总结与展望。总结了本文所建立的软件成本估算模型,并对未来的研究方向进行了分析。 基于用例的软件成本估算模型的建模与 实现 - 3 - 第 二 章 用例 的相关研究 本章介绍了用例的相关概念和研究,从用例的产生到用例与需求的关 系,系统阐述了用例作为估算工具的优势。 2.1节描述了用例的产生 、 概念 和 用例建模的一般过程; 2.2节描述了用例重要组成 用例规约文档 的结构; 2.3 节描述了 用例图 , 用例与需求
18、的关系,强调了用例在需求分析中的重要作用,为用例估算模型的建立打下基础。 2.1 用例 和用例模型 用例的概念是由著名计算机科学家 Ivar.Jacobson 教授 在 1987 年的 OOPSLA 大会 提出的。之后的 20 多年,用例被广泛的应用在面向对象软件开发过程中,得到了长足的发展和进步。 用例 是 描述了系统 、 子系统和类所能提供的功能集合,表现为一个 或多个外部交互者(角色)与系统进行交互的消息序列 3。 用例代表系统中各个项目相关人员之间就系统的行为达成的契约。每个用例只描述一个符合用户意图的任务,必须产生一个对用户有意义的结果。提出请求的项目相关人员被称为主执行者( Pri
19、mary Actor),主执行者通过发起与系统的一次交互来实现某个目标。系统对任一执行者所做出的响应,要保证所有项目相关人员的利益不受侵犯。根据执行者做出请求和涉及的条件,系统将执行不同的行为序列,每一行为序列称之为一个场景。一个用例是多个不同场景的集合, 既 包括成功场景,也包括失败 场景。 用例建模是使用用例的方法来描述系统功能需求的过程。用例模型的主要内容包括 用例图、用例规约。用例建模的过程是: 1 确定系统 边界。首先要区分系统执行的任务和非系统执行的任务 ; 2 确定 角色,即参与者 。角色可能是人、人的集体或者是与系统发生交互的外部系统 , 也可能是触发系统发生某个事件的时间等。
20、它们通过系统完成特定的目的。通常角色的分类通过使用目的和使用权限来进行分类 ; 3 列举用例。用例是系统执行的动作序列 ,是系统对角色提供的服务 , 角色可以通过用例来达到特定目的。在列举用例时一定要以角色目的为出 ,并按 照业务归属进行命名 ,通常用动词或动词短语命名 , 以描述用户可见的最终结果 。 在较为复杂的用例环境中进行用基于用例的软件成本估算模型的建模与 实现 - 4 - 例分析会比较困难 ,应当采用“自顶向下”的分解方法列举出 , 每个局部应用范围内的用例就会比较容易的分析出所有的用例。但由于用例是抽象的 ,不能分解过多 ,一般用户用例个数为视图 20 50 个 ; 4 用例图。
21、角色、用例以及它们之间的关系与系统边界共同构成的图称为用例图。在用例图 ,使用标识系统名称的方框表示系统的边界 ,角色位于系统边界之外 ,用例位于系统边界之内 ,角色与用例间的连线表示参与者与用例间的通信关联。用例图中用 例与角色之间存在着关联关系 (Association) , 用例之间也存在着包含关系 (Include)、 扩展关系(Extend)、 泛化关系 (Generation)等。此外还可以利用 UML 提供的扩展机制自定义 ; 5 用例规约。用例图只是在总体上大致描述了系统所能提供的各种服务 , 使我们对于系统有总体的认识 , 对于每个用例的更为详细的描述信息 ,则包含于用例规约
22、中 ,用例模型就是由用例图和用例规约所组成。 2.2 用例 规约 组成 虽然可以用流程图、顺序 图 、 Petri 网或者程序设计语言来表示用例,但是从根本上说,用例是 文本形式的。通常情况下,它们是作为人与人之间,尤其是没有受过专门培训人员之间互相 交流 的一种手段。因此,简单的文本通常是编写用例的首选形式 3。 简单说来,用例是由多个句子组成的,所有的句子都采用同一种语法形式 一个简单的执行步骤,通过执行这些步骤,执行者或者获得一定结果或者向另一个执行者传递信息。用例的组成包括: 1 执行者( Actor):任何具有行为的人或者物; 2 项目相关人员( Stakeholder):对被讨论系统的行为有特定兴趣的人或者物; 3 主执行者( Primary actor):启动与被讨 论系统的一次交互活动。从而达到某一目标的人或者物; 4 用例( Use case):规定被讨论系统行为的契约; 5 范围( Scope):界定被讨论的系统; 6 前置条件和保证( Precondition and guarantee):在用例执行之前和之后必须满足的条件; 7 主成功场景( Main success scenario):一切顺利的情况; 8 扩展( Extension):场景执行过程中出现的异常情况;