软件工程 |项目规模估算技术
软件规模的估计是软件项目管理的重要组成部分。它有助于项目经理进一步预测构建项目所需的工作量和时间。在项目规模估算中使用了各种措施。其中一些是:
- 代码行
- ER图中的实体数
- 详细数据流程图中的进程总数
- 函数点
1、代码行数(LOC):顾名思义,LOC是统计一个项目中源代码的总行数。 LOC 的单位是:
- KLOC——千行代码
- NLOC——非注释代码行
- KDSI - 成千上万的交付源指令
通过将其与现有同类系统进行比较来估计大小。专家们使用它来预测软件各个组件所需的大小,然后将它们相加得到总大小。
通过分析问题定义很难估计 LOC。只有在开发了整个代码之后,才能估计出准确的 LOC。该统计数据对项目经理几乎没有用处,因为必须在开发活动开始之前完成项目规划。
具有相似行数的两个单独的源文件可能不需要相同的工作。创建具有复杂逻辑的文件比创建具有简单逻辑的文件需要更长的时间。基于 LOC 可能无法实现正确的估计。
解决问题所需的时间长度以 LOC 为单位。这个统计数据会因程序员而异。与新手编码员相比,经验丰富的程序员可以用更少的行数编写相同的逻辑。
优点:
- 普遍接受并用于许多模型,如 COCOMO。
- 估计更接近开发人员的观点。
- 使用简单。
缺点:
- 不同的编程语言包含不同数量的行。
- 该技术没有适当的行业标准。
- 在项目的早期阶段使用这种技术很难估计大小。
2. ER图中的实体数量: ER模型提供了项目的静态视图。它描述了实体及其关系。 ER模型中的实体数量可以用来衡量对项目规模的估计。实体的数量取决于项目的规模。这是因为更多的实体需要更多的类/结构,从而导致更多的编码。
优点:
- 规模估计可以在规划的初始阶段进行。
- 实体的数量与所使用的编程技术无关。
缺点:
- 没有固定的标准。一些实体比其他实体贡献了更多的项目规模。
- 就像 FPA 一样,它在成本估算模型中的使用较少。因此,它必须转换为 LOC。
3.详细数据流图中的进程总数:数据流图(DFD)表示软件的功能视图。该模型描述了软件中涉及的主要过程/功能以及它们之间的数据流。利用 DFD 中的函数数量来预测软件大小。已经研究了类似类型的现有流程并用于估计流程的大小。每个进程的估计大小的总和给出了最终的估计大小。
优点:
- 它独立于编程语言。
- 每个主要过程都可以分解为较小的过程。这将提高估计的准确性
缺点:
- 研究类似类型的过程来估计大小需要额外的时间和精力。
- DFD的构建不需要所有的软件项目。
4、函数点分析:该方法利用软件支持的功能数量和类型来寻找FPC(函数点数)。函数点分析的步骤是:
- 计算每种建议类型的功能数量。
- 计算未调整的函数点 (UFP)。
- 求总影响度 (TDI)。
- 计算值调整因子 (VAF)。
- 找到函数点计数(FPC)。
对以上几点的解释如下:
- 计算每种建议类型的函数数:找出属于以下类型的函数数:
- 外部输入:与进入系统的数据相关的功能。
- 外部输出:与退出系统的数据相关的功能。
- 外部查询:它们导致从系统中检索数据,但不会更改系统。
- 内部文件:系统内维护的逻辑文件。此处不包括日志文件。
- 外部接口文件:这些是我们系统使用的其他应用程序的逻辑文件。
- 计算未调整的函数点 (UFP):根据其复杂性对五种函数类型中的每一种进行分类,例如简单、平均或复杂。将每个函数类型的计数乘以其权重因子并找到加权和。每种类型基于其复杂性的权重因子如下:
Function type | Simple | Average | Complex |
---|---|---|---|
External Inputs | 3 | 4 | 6 |
External Output | 4 | 5 | 7 |
External Inquiries | 3 | 4 | 6 |
Internal Logical Files | 7 | 10 | 15 |
External Interface Files | 5 | 7 | 10 |
- 查找总影响程度:使用系统的“14 个一般特征”来查找每个特征的影响程度。所有 14 度影响的总和将给出 TDI。 TDI 的范围是 0 到 70。14 个一般特性是:数据通信、分布式数据处理、性能、大量使用的配置、事务率、在线数据输入、最终用户效率、在线更新、复杂处理可重用性、安装轻松、易于操作、多个站点并促进变革。
上述每个特征都以 0-5 的等级进行评估。 - 计算值调整因子(VAF):使用以下公式计算 VAF
VAF = (TDI * 0.01) + 0.65 - 查找函数点数:使用以下公式计算 FPC
FPC = UFP * VAF
优点:
- 它可以很容易地用于项目规划的早期阶段。
- 它独立于编程语言。
- 即使他们使用不同的技术(数据库、语言等),它也可以用来比较不同的项目。
缺点:
- 它不适合实时系统和嵌入式系统。
- 许多成本估算模型(如 COCOMO)使用 LOC,因此 FPC 必须转换为 LOC。