软件演化成本估算和预测

 2021-11-25 02:11

论文总字数:28118字

摘 要

在软件项目的演化过程中,项目的管理起到了重要的作用,而对于开发成本的估算是项目管理的重要因素之一。目前对于新开发软件项目的成本估算国内外已经有许多研究,但对于软件演化过程中的成本估算研究仍相对较少。

本文研究了各种软件成本估算方法,特别是回归分析方法以及功能点分析方法,将这两种方法结合应用到软件演化的成本估算中去。首先,采用一元非线性回归的方法建立了基于代码行的演化规模-工作量转换模型。其次,采用功能点方法来估算软件演化中将发生变更的代码规模,并将功能点规模转换为相应的代码行规模。接着,由代码行规模以及演化规模-工作量转换模型预测软件演化的工作量,也即是软件演化成本。在规模估算中,对传统功能点方法做了一些改变。最后在工具设计与实现中,详细描述了工具的开发相关情况。

这种方法应用在软件演化过程中,将克服一些传统模型复杂难掌握、考虑因子过多的缺点,功能点方法能够很好地度量软件的演化规模,回归分析方法具有较强的适应性,能在项目历史数据积累中越来越准确,逐步完成本地化。该方法能为软件企业提供一种简单易用的演化成本估算方法。

关键词:软件演化,成本估算,回归分析,功能点分析法

Research on Software Evolution Cost Estimation Model

Abstract

During the evolution process of a software project, the management of the project plays an important role, and one of the key factors of management is software cost estimation. So far, there have been many researches on software project cost estimation which is developed brand new, while there are much fewer on cost estimation during evolution process.

This paper studies some kinds of software estimation methods, especially regression analysis method and the function point analysis method, and apply the combination of them to the cost estimation during evolution process. Firstly, we use nonlinear regression method to build the evolution size-effort transformation model. Then, function point method is used to measure the size of code which will be changed during the evolution, and transfer the function points to SLOC. Next, put the SLOC into the evolution size-effort transformation model and effort on software evolution will be calculated, and the effort is the cost we need. During the measure of size, we make some changes on the traditional function point method. Finally, the specifics of the tool will be descriped in detail.

While applying this method to the software evolution process, it will overcome the complexity of some traditional method which is difficult to master and too many factors to be considered. Function point method can measure the software evolution size well, and regression method has a strong adaptability, it will be more and more precise during the accumulation of project history data. The method will provide a easy and convenient software evolution cost estimation method for software companies.

Keywords: Software evolution, Cost estimation, Regression analysis, Function point analysis method

目录

摘要 I

Abstract II

第一章 绪论 1

1.1 引言 1

1.2 国内外研究现状 1

1.2.1 软件开发成本估算研究 1

1.2.2 软件演化成本估算研究 2

1.3 研究目的与研究内容 4

1.4 论文组织结构 4

第二章 相关模型及方法综述 6

2.1 成本估算模型 6

2.1.1 估算模型简介 6

2.1.2 回归分析方法 7

2.2 功能点分析法 9

2.2.1数据功能 10

2.2.2 事务功能 10

2.2.3 调整系数 11

2.2.4 计算已调整功能点(AFP) 11

第三章 软件演化成本估算工具需求分析 12

3.1 公式参数生成模块 13

3.2 演化工作量估算模块 13

3.3 成本展示模块 13

第四章 演化成本估算模型以及工具设计与实现 14

4.1 模型描述 14

4.1.1 代码行-工作量估算模型 14

4.1.2 软件演化功能点估算 15

4.1.3 功能点-代码行转换 18

4.1.4 软件演化成本估算 19

4.2 工具设计与实现 19

4.2.1 数据结构设计 21

4.2.2 软件架构及环境 21

4.2.3 关键代码实现 22

4.2.4 界面设计 24

第五章 软件演化成本估算工具测试 27

5.1 公式参数生成模块测试 27

5.2 工具各模块运行展示 29

第六章 结束语 32

参考文献 34

致谢 36

  1. 绪论

1.1 引言

软件是对客观事物在计算机中的反映,客观世界中的问题的问题空间和解看空间在计算机中得到详细的描述,软件帮助人从问题空间得到解空间。而由于客观世界是不断发展变化的,所以软件也需要不断发展变化,才能够满足不断变化的需求,所以演化性也就变成了软件的本质特征之一。

随着越来越多的成功软件系统成了遗产系统,软件演化的重要性和普及型越来越强。在约二十多年前,软件只是偶尔改进,平均一年推出一个发行版本,“维护”被用来描述使得软件正常工作的方式。而在大约十年以前,软件通过简单的“维护”已经不能满足正常工作的需要,有些变成了遗产系统,需要实施“再工程”,软件再工程平均每年一到两次。而到了现在,软件已经越来越从产品的形式转向服务的形式,软件根据用户不断变化的需求以及不断变化的技术,来进行改变,这种改变频率越来越高,推动软件从低级到高级,从幼稚到成熟,“演化”一词被用来描述这种持续的改变,可以将演化看做是经常的,持续不断的软件再工程。

软件演化现在成了软件开发中最频繁的一步,因此软件演化的成本在整个生命周期中肯定是占有很大比重的。一个项目的成功开发,离不开管理者对于项目开发进度以及开发质量的控制,成本的预算就显得很重要。成本预算可以为管理者提供相当有用的建议,使得整个开发过程更加可控。如何科学地估算软件演化的成本,就是本文研究的内容。对于软件演化也有很多的相关研究,本文是基于一些现有的软件成本计算方法[6][7],来对软件演化的成本进行估算。

1.2 国内外研究现状

1.2.1 软件开发成本估算研究

在20世纪60年代的时候,美国国防部门和软件界有关人士就提出了“软件危机”的警示,这主要体现在了“难以正确的估计软件开发的成本和进度”。从国内外对于软件成本估算研究中,可以将成本估算技术分为五类:基于算法模型的估算技术,基于功能点的估算技术,基于类比法的估算技术,基于专家经验的估算技术和其他技术。

软件成本估算中还存在着很多问题,成本估算很多时候并不精确。造成成本速算不精确的问题主要有:

  • 模型本身缺陷

用于成本估算的模型已经有很多,几乎每个模型都要先对项目的规模进行度量,而规模度量在不同模型中有着不同的单位,最常用的有代码行,功能点,对象点,应用点以及用例点等等。这些都来自不同的规模度量模型,每个模型在建立的时候都是根据某一类型的项目使用特定的规模度量方法来计算项目规模的,这些度量之间并没有准确的规则进行转换,关系无法确定,无法判断是哪种模型更加准确。

每个模型的适用范围也是不同的,选择一个适用的模型并不是件容易的事,想要得出精确的估算结果,应该根据项目所处环境来做最合适的选择。

模型不能与时俱进也是一个问题,模型的建立受到历史局限性的影响,并不能做到非常完善,但软件行业是不断进步和发展的,开发模式不断变化,开发环境越来越复杂,人员分工越来越明确,很多模型需要根据实际情况进行修改,才能应用到实际中。

  • 数据的缺失

软件工程中,数据收集难度很大,没有一个成熟的收集机制,不同机构之间的数据差异大,并没有参考价值。

而在软件成本估算模型建立过程中,需要大量的数据来校验模型的准确性,但很多情况下难以收集到充足的数据。例如在回归模型中,模型中的每个参数大约需要5个数据来校验,否则回归结果将很容易受到错误数据的影响,而使得结果不可靠。但在模型建立过程中,往往数据不足。

软件成本估算的时候,可以选择项目所属机构的历史数据,也可以选用别的机构的相似项目的历史数据,然而这就需要对别的机构的细节进行了解,这涉及到商业机密,互相协作可能性很小。因此,选择公共数据或者单一机构的数据进行校验,是很多模型的做法。

  • 不确定性

软件成本估算是一个具有很大不确定性的任务,不确定性很可能引起估算成本的偏差。不确定性主要有三个方面:

    • 度量的不确定性:模型参数的选择有很强主观性,由于主观的错误而导致度量错误,主要由估算者自身引起
    • 模型固有的不确定性:模型中包含不合理规则,导致度量错误
    • 软件过程的不确定性:软件过程中有潜在的风险,导致度量错误

1.2.2 软件演化成本估算研究

对于软件开发成本估算的研究有很多,但在软件的演化阶段中对成本进行估算的研究就相对少很多,至少在国内的研究不是很多见。

在国外对于软件演化成本估算的研究中,Hary M.Sneed在他的论文A Cost Model for Software Maintenance amp; Evolution中,提出了一种划分软件生命周期的模型,被称为分段模型。根据这个模型,软件系统的生命周期被分为五个阶段,分别是原型阶段、开发阶段、演化阶段、维护阶段以及废弃阶段。在这个模型中,演化阶段是从软件交付用户使用开始,直到软件的下一个版本交付用户之前。在这个阶段中所做的工作,都被认为是演化。

Hary M.Sneed在论文中将演化阶段的成本总共分为了四个部分,纠错型成本、适应型成本、扩展型成本以及预防型成本,对这四类成本的总和就是演化成本。从这篇论文中可以找到对于软件演化阶段的清晰的分类,以及对于演化成本的预测方法。在这个模型的计算方法中需要设置一些参数,这些参数是通过对软件项目的静态分析、动态分析、缺陷分析以及产能分析四方面得到的。从静态分析中,可以收集到关于软件说明、代码和测试用例的规模、复杂度和质量的度量标准。从动态分析中,能收集到测试覆盖率。从缺陷分析中,能收集到错误的数量和类型,以及缺陷密度。从产能分析中,能收集到错误报告、变化需求、重构和开发任务的工作效率。没有这些不同来源的数据,不可能预测演化成本。在得到这四方面数据后,可以开始演化成本预测。

预测纠错型成本需要用到的参数包括上一版本严重错误数、上一版本修正每个错误的平均成本、上一版本的调整后规模、下一版本的调整后规模、上一版本的测试覆盖率、下一版本的覆盖率,预测适应型型成本需要用到的参数包括上一版本变更需求数量、变更需求减少率、上一版本变更平均成本、上一版本调整规模、下一版本调整规模。预测上述两种演化成本主要的计算方法相似,都是用上一版本的平均变更成本乘以下一版本的变更请求数,来得到预测的成本。

而对于扩展型成本,这个模型中使用功能点方法或者对象点方法来计算。先用功能点或者对象点度量演化规模,再将演化规模除以规模产能得到成本估算值。这里的重点是用不同的方法度量功能扩展的规模,并将各种调整后规模根据产能率转换为成本。

对于预防型成本,需要确认所有需要变更的源目标,每一部分的演化规模需要根据复杂度和质量来调整,总的规模为每一部分的和。得到演化规模后,将规模放入COCOMO 2模型中,根据重构生产率来计算总共的成本。

Hary M.Sneed提出的这种估算演化成本的模型,可以根据对上一版本的分析来预测下一版本的演化成本,但仍然存在着不足之处。首先,根据历史版本来预测,但只选取了一个版本的数据,而与前面的其他版本没有关系,可能导致预测纠错型成本与适应型成本时出现偏差。再有就是模型相对较复杂,分为四部份来估算,并且从上一版本分析得到数据需要繁杂的步骤,实际操作中的可操作性就比较低。

剩余内容已隐藏,请支付后下载全文,论文总字数:28118字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;