代码量评估

来源:互联网 发布:ibm r61 linux驱动 编辑:程序博客网 时间:2024/05/16 07:06

软件规模估算有哪些方法?

软件规模估算的假设和思路: 软件的规模和其外延成正比 外延包括: 功能, 数据, 用户操作界面数, 显示界面数等等 不同的功能点实现的困难度不同, 但从整个项目来说, 平均的困难度差不多 规模估算的目标:是决定工作量的大小。对于成本模型,规模是计算软件项目的工作量、成本和进度的主要输入 规模估算的责任者:程序员、软件工程师、系统分析员负责决定软件项目的规模 规模估算的入口准则 :在规模估算之前,软件功能需求必须被定义。在项目早期定义需求可能是非常困难任务。然而,在对需求一无所知的情况下,精确的估算出项目的成本和进度是不可能的。如果知道部分需求,那么估算基于已知的需求并且相信每一个人都相信估算仅仅是基于那些已知的需求,如果使用了增量或演进的开发策略,那么估算基于增加的已定义需求。 规模估算输入 :软件需求说明书(SRS) 历史规模数据 规模估算活动 : 软件产品规模通常以代码行(SLOC)或千代码行(KSLOC)度量。软件应该以全新代码或者合并新旧代码进行开发。对已存在代码接口的估算与新代码的估算是同等重要的。已存在代码借口通常需要与开发新代码相同的工作量。 软件产品规模估算应该主要基于历史数据和经验。历史规模数据可以从组织软件过程数据库中找到。而且,两个或更多的具有类似经验的软件工程师应该开展自顶向下/自底向上规模估算,步骤如下: A) 基于定义每个计算机软件模块的需求开发系统的高级架构图 B) 基于每个计算机软件模块开发功能WBS C) 根据相似项目经验和历史数据,为每一个软件模块手工估算出最底层(自底向上)可能详细的代码行或功能点,规模估算工具可以作为第二个输入 D) 估算出期望的规模加上标准偏差,即:规模的最低值和最高值来反映名义值的不确定性。在项目的早期阶段,最低和最高估算结果之间的范围可能是30-50%,例如:概念阶段。如果缺乏经验或有较高的技术风险,范围将会更大 E) 具有类似经验的软件工程师应该评审并优化估算结果直至达成一致意见。经验表明,规模估算经常偏低,故最低规模估算结果应该给与特别审查 一些规模估算的标准方法和工具如下:Wideband Delphi技术、Pert Sizing技术、功能点方法、类比法和自动化规模估算工具。这些方法的详细描述在前面功能估算和预算制定中已经提到。建议至少使用两种方法进行规模估算,不要依赖于任何一种方法 提示:项目早期规模估算可能非常难以精确的确定。对于单一的规模数字,取而代之使用值的范围(最大值、最小值、可能值)。随着项目的进展,规模的确定越来越精确。一旦项目的编码完成,就可以使用自动化的代码行工具计算程序的规模了。 目前常用的软件规模评估方法 FPA(Function Points Analyze)(1989) 主要适用于 MIS,前面已做过详细说明 FFP(Full Function Points)(1997) 适用于 real-time software, system software, general application, and also MIS applicationl不适用于包含复杂的数学计算的 application(如: 专家系统, 仿真软件, 自学习软件, 媒体播放等) 预测性对象点(Predictive Object Points)预测性对象点是特意为面向对象软件设计的,是通过系统计算面向对象的特征进行度量。 POPs方法的核心是每类加权方法数(Weighted Methods per Class WMC)。这种方法测量每个顶层类(或者说,每个在用户的视野中清楚的对象)并且根据类的行为(方法)类型不同进行加权。一旦得到WMC的值,POPs方法将把它和有关按类分对象组的信息和对象类之间的关系进行联合计算。 =========功能点法回顾面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量的关注点在于程序的“功能性”和“实用性”,而不是对LOC计数。一种典型的生产率度量法叫做功能点度量,该方法利用软件信息域中的一些计数度量和软件复杂性估计的经验关系式而导出功能点FPs(Function Points)。功能点通过填写表1所示的表格来计算。首先确定五个信息域的特征,并在表格中相应位置给出计数。信息域的值以如下方式定义:§ 用户输入数:各个用户输入是面向不同应用的输入数据,对它们都要进行计数。输入数据应有别于查询数据,它们应分别计数。§ 用户输出数:各个用户输出是为用户提供的面向应用的输出信息,它们均应计数。这里的输出是指报告,屏幕信息,错误信息等,在报告中的各数据项不应再分别计数。§ 用户查询数:查询是一种联机输入,它导致软件以联机输出的方式生成某种即时的响应。每一个不同的查询都要计数。§ 文件数:每一个逻辑主文件都应计数。这里的逻辑主文件,是指逻辑上的一组数据,它们可以是一个大的数据库的一部分,也可以是一个单独的文件§ 外部接口数:对所有被用来将信息传送到另一个系统中的机器可读写的接口(即磁带或磁盘上的数据文件)均应计数。