介绍
具体指标(如生成数值的指标)对于软件组件的一般开发和算法的开发很重要。
在定位模块里,指标定义了通用软件组件的验收标准,并为某些标准实现之间的比较提供了通用语言。
指标
指标分为四类:
- 软件质量指标
- 嵌入式软件指标
- 通用算法指标
- 定位算法指标
应该提到两个一般警告:
- 应该了解对指标的要求来自哪里,要求可能并非普遍正确
- 对于除软件质量指标以外的所有指标,指标值是特定于用例的,这意味着指定的值仅对给定的环境和硬件(即传感器、计算)设置有效
软件质量指标
定义了以下软件质量指标:
- 测试覆盖率(按严格程度递增):
a. 线路覆盖
b. 功能覆盖
c. 分支机构覆盖
d. MC/DC覆盖
e. 基本路径覆盖 - 通用软件质量指标,例如 CppDepend 工具涵盖的指标
- 代码行
- 外部项目依赖的数量
应该提到两个警告:
- 测试覆盖率只有在测试有意义时才有意义。实现测试覆盖率的随机 API 调用不如由需求和边缘案例驱动的测试有价值
- 软件质量指标对于气味测试很有用,但不能替代人工审查和设计。这些指标可以定义建议,但不能定义硬性规则
嵌入式软件指标
为通用嵌入式软件定义了以下指标:
- 二进制大小
- 最大内存使用量
- 给定用例(输入、硬件、操作系统)的平均 CPU 负载
通用算法指标
定义了以下指标:
- 平均/最大/95% 算法运行时间
- 平均/最大/95% 算法迭代
- 平均/最大/95% 算法运行时间/迭代
- 算法复杂度(例如 Big O)
定位算法指标
定义了以下定位指标:
- 平均/最大/最小/95% 平移误差(米)
- 平均/最大/最小/95% 旋转误差(弧度)
- 作为初始猜测错误函数的成功率
- 最小输入密度/尺寸
还可以定义其他非定性指标:
- 对输入的要求
- 保证(例如最优性、收敛性等)