技术开发 频道

软件项目估计

    2 软件项目估计发展现状

    目前,国际上已有许多软件规模估计方法,如功能点(Function Point )、特征点(Feature Point)、对象点(Object Point)、德尔菲(Delphi)、模糊逻辑(Fuzzy Logic)、标准构件法(Standard Component )等,这些方法随着各国研究者的不断研究细化又有许多具体的方法,如国际功能点用户协会(IFPUG The International Function Point Users' Group)提出的IFPUG方法、英国软件度量协会(UKSMA United Kingdom Software Metrics Association )提出的Mk II FPA方法、荷兰功能点用户协会(NEFPUG Netherlands Function Point Users Group)提出的NESMA 方法以及软件度量共同协会(COSMIC the COmmon Software Metrics Consortium)提出的COSMIC-FFP方法,这些方法都属于Albrecht 功能点(Function Point )方法的发展和细化。

    目前大部分软件估计方法有工具支持(如表1所示)。国际上目前已经有一些组织吸收和积累世界各地软件企业的软件估计和度量数据,建立了被广泛使用的历史数据库,如在功能规模度量领域,有一个ISBSG(国际软件基准组织International Software Benchmarking Standards Group)数据库。另外,COCOMO II Estimating Model也有丰富的估计和度量数据提供。

    表1 部分软件度量方法及其支持工具
    方法 支持的工具
    数据点(Data Points PCCALC, SoftCalc
    对象点(Object Points) SoftCalc
    特征点(Feature Points) Checkpoint/KnowledgePlan
    IFPUG Checkpoint/KnowledgePlan,
    PCCALC, ISBSG-Venturi,
    Function Points Workbench
    Mark II FPA MK II Function Points Analyzer
    FFPv1 HierarchyMaster FFP, FPCAnalyzer
    FFPv2 HierarchyMaster FFP (supportfor FFPv2 in development)

    有些软件规模估计方法被国际标准化组织(ISO)纳入国际标准。如上面提到的IFPUG、Mk II FPA、NESMA和COSMIC-FFP方法。其中COSMIC-FFP是今年被国际标准化组织(ISO)正式批准纳入国际标准的,其标准号是ISO/IEC 19761:2003。软件度量共同协会COSMIC(the COmmon Software Metrics Consortium)是由澳大利亚、加拿大、芬兰、爱尔兰、意大利、日本、荷兰和英国的软件度量专家于1998年底自愿组成的,它的领导人是Alain Abran和Charles Symons。根据这些标准,国际上已有部分软件产品价格估计公司,专门从事软件价格的估计,软件规模的估计是他们工作的基础。但随着面向对象、组件重用以及极限编程等新的软件开发方法出现,不断有学者提出新的软件规模方法,如如构件点(Construction Points)、预测性对象点(Predictive Object Points)。软件规模估计已成为了软件工程研究领域的一个重要方向。

    目前,我国从事软件规模估计方法研究的人员较少,田俊国等人曾在软件工程网的介绍德尔菲(Delphi)和功能点(Function Point )法。中南大学的李建华、费耀平等人参考德尔菲(Delphi)法,提出了一种叫两两比较(Paired-comparisons)的估计方法。 北京计算机应用和仿真技术研究所汤铭端、吴际等人在《软件学报》上发表一种?quot;扩展功能点(EFP)"的软件规模估计方法,我国有部分人员研制了对象点度量方法的支持工具,如合肥大学的Li Xinke等人曾开发过一种用于面向对象软件度量的工具。

    如上所叙,软件规模估计包括对许多不同的软件工作产品的估计,如"需求文档"、"设计文档"、"源代码"、"测试用例"等。随着估计对象不同,度量规模的单位也不同,就软件规模来说,衡量规模的单位有代码行、功能点个数、平均继承深度等。代码行LOC常用于源代码的规模估计,常使用的单位有SLOC( Single Line of Code)、KLOC(Thousand Lines of Code)、LLOC(Logical Line of Code)、PLOC(Physical Line of Code)、(N)CLOC ( (Non) Commented Line of Code)、DSI(Delivered Source Instruction)。功能点可以用于"需求文档"、"设计文档"、"源代码"、"测试用例"度量,根据具体方法和编程语言的不同,功能点可以转换为代码行。平均继承深度(Depth in Inheritance Tree)是对象点(Object Point)中一个度量方法。目前,国际上有部分学者(如德国的马歌德保大学的Mathias Lother等人)正在研究各种度量方法和单位之间的兑换性,并呼吁从事软件度量和估计工程和研究人员,在提出一种新的度量方法时候一定要考虑和其他方法之间的可兑换性。

    西方国家和印度的企业实际应用软件项目度量和估计较多,有些企业还针对自己的行业特点开发适用于自己的软件项目估计工具如波音公司开发一种叫3-D功能点估计方法,3-D功能点识别了反映应用程序难题的3维(数据,功能,控制)。数据难题多是MIS/商业软件的典型,而科学/工程软件是功能难题多,实时软件是控制难题多。而波音软件正是集这三个方面于一身,所以,3-D功能点适合于波音软件的度量和估计。

    我国大陆有部分企业也正在进行科学的软件规模估计和度量,但数量不多。Wu Simon在一次案例研究中调查过500家香港商业公司,发现进行过真正意义上的软件项目估计的企业有79%,还有21%的企业没有进行过科学的软件项目估计。

    3 软件项目估计的基本准则

    在软件项目估计活动过程中,一些软件从业人员往往会说,"软件项目估计有什么用,我们估计的时候可能有456个功能点,可到交付的时候却有600多个,根本就牛头不对马嘴"。是的,应用一些软件度量方法进行软件项目估计往往会给出一个精确的结果,如IFPUG功能点等,但是,我们认为,软件项目估计首先要求结果是准确的,也就是正确的,而后再进一步要求精确的。错误的估计将影响项目管理人员决策,影响项目的开发。正是因为这样,有些软件项目估计方法不给出精确的结果,如有些模糊逻辑法,而是给一个范围,如前面的例子,如果估计的时候说规模400~700个功能点,虽然和456个功能点比不够精确,但是准确的。

    这并不是说软件项目估计就是主观想象,不可捉摸。在实际估计过程中可以借鉴一些实用的经验观点或者说行为准则来帮助减少估计的错误。如:

    ◇ 估计时间越早,错误越大

    ◇ 任何一个估计都比没有估计好

    ◇ 估计文档化做得越好,获得估计经验的机会越大

    ◇ 用于估计的资料数据越多,估计的结果越好

    ◇ 有关估计的对象的信息越准确,估计就越可能准确

    ◇ 估计的对象最好是比较小且工作单元是独立的

    ◇ 在估计过程中,大部分通讯因素往往会被忽略

    ◇ 虽然有各种估计方法和公式,没有1:1的转换公式

    ◇ 实事求是的估计人员越多,估计的结果越客观

    ◇ 估计的目的是用来做决策,而是估计完了就完了。

0
相关文章