一、外部和内部质量因素
1 、外部因素:通过用户检测软件产品的质量(如速度或者易用性)
注:用户不仅是真正与最终产品交互的人,还包括那些购买软件或签约的人
2、内部因素:适用于软件产品的其他特性,例如模块化的或可读的。只能被能够访问实际软件文本的计算机专业人员察觉
3、外部质量因素影响用户,内部质量因素影响软件本身及其开发人员。
4、只有外部因素很重要,但实现这些外部因素的关键在于内部。外部质量是内部质量的结果。
二、重要的外部因素
1、正确性
正确性是软件产品按照其规格所定义的执行其确切任务的能力。
正确性是最重要的质量因素。
确保正确性的方法:测试和调试。
2、健壮性
健壮性是软件系统对异常情况做出适当反应的能力。
健壮性补充正确性。(正确性解决了系统在其规范所涵盖的情况下的行为,健壮性表征了该规范之外发生的事情。)
稳健性是为了确保如果出现这种情况,系统不会导致灾难性的事件; 它应该产生适当的错误信息,干净地终止它的执行,或者进入 所谓的“优雅降级(毁坏)”模式。
3、可扩展性
可扩展性便于规范软件产品适应变化。
两项原则对于提高可扩展性至关重要:
①简单的设计 :简单的架构将会更容易适应变化。
②分权 :模块越自主,可扩展性越高(一个简单的改变只会影响一个模块,或者一个小模块。而不是在整个系统中触发变化的连 锁反应。)
4、可重用性
可重用性是软件元素为构建许多不同应用程序提供服务的能力。
5、兼容性
兼容性是将软件元素易于与其他元素相结合。
兼容性的关键是标准化,特别是标准协议。
方法包括:
标准化的文件格式 ,如Unix系统中的每个文本文件一样只是一个字符序列。
标准化的数据结构 ,如Lisp系统中的所有数据和程序也由二叉树表示(在Lisp中称为列表)
标准化用户界面 ,如各种版本的Windows OS / 2和MacOS,所有工具都依赖单一的通信范例与用户一起,基于标准组件如 Windows,图标,菜单等。
6、效率
效率是软件系统对硬件资源尽可能少的需求的能力,例如处理器时间,内部和外部存储器中占用的空间,通信设备中使用的带宽 等。
如果软件不正确,效率无关紧要
功能性是系统提供的可能性范围。
及时性是软件系统在何时发布的能力或者在用户需要之前。
三、内部因素
1、源代码相关因素,如代码行(LOC),循环复杂性等。
2、体系结构相关因素,如耦合,内聚等。
3、可读性,可理解性和清晰度,复杂性,尺寸。
四、质量属性之间的权衡
完整性与易用性、 经济与功能、效率与可移植性、 效率与可重用性、 及时性与可扩展、 经济性与可重用性
五、在软件行业中最重要的四个
正确性、健壮性、可扩展性、可重用性
六、软件构建的五个关键质量目标:
- 易于理解 :优雅和美观的代码/可理解性
- 准备好改变 :可维护性和适应性
- 开发便宜 :设计/重用:可重用性
- 从错误安全 :健壮
- 高效运行 :性能