最近软件构造复习到了软件质量的问题,有些感想,做个整理:
软件质量
:外部质量因素:速度或易用性等质量,其用户可以检测到软件产品的存在与否(不仅是实际与最终产品交互的人,还有购买软件或合同的人它的发展)。
适用于软件产品的其他质量,例如模块化或可读,是内部因素,只有能够访问实际软件文本的计算机专业人员才能感知。
内部质量影响使用代码的内部人员
最终只有外部因素比较重要
达到这些外部因素的关键在于内部:对于用户来说去享受可观的质量,设计者和实现者必须使用内部技术(实现隐藏质量)
正确性
确保正确性的方法:有条件的(假定软件系统是分层开发的,每层都确保自己是正确的,同时假定其调用的低层是正确的)
确保正确性的方法:测试和debug:
防范性的程序像是typing和assertion,旨在从一开始正确地构建软件
然不是直接把他debug到正确
健壮性
健壮性是软件系统对异常情况作出适当反应的能力
稳健性补充了正确性。
-
正确性解决了系统在其规范所涵盖的情况下的行为;
-
健壮性表征了该规范之外发生的事情。
可扩展性
可扩展性是指软件易于调整以适应变化的能力。
- 可扩展性和规模有关
对于小型项目,改变通常不是一个难题; 但随着软件越来越大,适应变得越来越难。越大越难扩展。简单的体系结构总是比复杂的体系更容易适应变化。模块自治性越强,变化时对其雨量模块影响越小。
复用
复用是为许多不同应用结构服务的软件元素的能力
软件经常遇到相似的模式,利用共性,避免重复实现。
如之后的复用,泛编之类的