软件估算方法包括:规模估算、工作量估算、进度估算和成本估算。
本节主要介绍规模估算。软件成本、进度等估算方法请参见下一篇文章。
规模估算规模估算主要有代码行估算和功能点估算两种方法。

预期规模E=(a+4b+c)/6,标准差SD=(c-a)/6。1sd的概率为68%,2sd的概率为95,3sd的概率为99。此方法估值偏低。
2 功能点数估算FP::IFPUG功能点方法是一种估算软件项目大小的方法,它是从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为最主流的软件规模度量方法。在2013年由工业和信息化部发布的行业标准《软件研发成本度量规范》中也推荐使用功能点方法进行软件规模度量,进而对软件项目工作量、工期、成本进行估算。
2.1 估算流程:需求-》WBS分解-》功能点(代码行数)-》经验系数(复杂度、技术难度、生产率等)-》工作量(人月)-》进度-》成本。1)根据软件需求进行WBS分解,获得工作项。
2)然后划分类别。
3)计算工作任务涉及的数据项和数据文件数目,据此估算每个需求的功能点权重(功能点数)。
4)再根据调整系数(经验得出)计算最后的功能点总数。
2.2 估算参数1)任务类别:EI,EO,EQ,ILF,EIF。
EI:外部数据输入系统,如录入、修改、插入等。
EO:系统向外部输出,如打印,现实、导出等。
EQ:系统向外部提供查询输出,如查询。
ILF:输入的业务数据。由外部输入维护的系统相关数据,如程序配置文件,账户信息等。
EIF:引用的接口数据。由外部系统提供的接口数据,如接口文件,外部参数等。
2)功能点数计算:功能点计算依据涉及的数据和文件,进行复杂度计算,分为数据处理和事物处理,分值根据企业经验确定,以下为示例。界面录入:具体的录入项(包括按钮、复选框等)文件存储:存储文件的数据项的数目。
EI估计
EO和EQ估计
ILF和EIF估计
将以上所有功能点数加和,便得到原始功能点数(未调整的功能点数UFP)
在实际使用中,为了简化操作(如项目初期,不可能计算涉及的数据项和文件),采用功能复杂度代替上述数据项和文件数(也可以采用CMMI的标准,进行准确的复杂度和涉及项之间的映射转换)。
使用公式判定功能点数的excel公式:
=IF(AND(J7="EI",I7="简单"),3,IF(AND(J7="EI",I7="普通"),4,IF(AND(J7="EI",I7="复杂"),6,IF(AND(J7="EO",I7="简单"),4,IF(AND(J7="EO",I7="普通"),5,IF(AND(J7="EO",I7="复杂"),7,IF(AND(J7="EQ",I7="简单"),3,IF(AND(J7="EQ",I7="普通"),4,IF(AND(J7="EQ",I7="复杂"),6,IF(AND(J7="ILF",I7="简单"),7,IF(AND(J7="ILF",I7="普通"),10,IF(AND(J7="ILF",I7="复杂"),15,IF(AND(J7="EIF",I7="简单"),5,IF(AND(J7="EIF",I7="普通"),7,IF(AND(J7="EIF",I7="复杂"),10,0)))))))))))))))