(二)软件构造的质量目标
软件构造的五个主要目标
- easy to understand:elegant and beautiful code/understandability
- Ready for change:maintainability and adaptability
- Cheap for develop:design for/with reuse:reusability
- Safe from bugs:robustness
- Efficient to run:performance
软件的质量因素分为外部质量因素和内部质量因素
- 对用户来讲,易于使用,这是外部因素
- 对于程序员来讲,软件的模块化,代码可读性,是内部因素
- 内部因素是最重要的,外部质量取决于内部质量
软件的内部质量因素
- Correctness
保证措施:
1.Testing and debugging
2.Defensive programming such as typing and assertion
3.Formal approch:数学方法 - Robustness
1.保证出现abnormal时程序不会崩溃,而是优雅的提示信息
2.normal or abnormal取决于specification的范畴 - Extendibility
保证措施
1.Design simplicity,越复杂的软件越难扩展
2.Decentralizaton,模块化设计 - Reusability
- Compatibility(兼容性)
主要是操作系统不同带来的问题,jvm有效地解决了这个问题 - Efficiency
1.效率是指软件系统对硬件资源要求越少越好,如处理器时间、内外存 占用空间,设备通信使用的带宽等
2.过度的优化使得软件非常专门化,不适合更改和重用 - portability(可移植性)
软件可方便的在不同的技术环境之间移植 - Ease of use
容易学、安装、操作、监控 - Functionality
程序设计中一种不适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其结果是程序极为发咋、不灵活、占用过多的磁盘空间。
我们要保证保证跟进功能性的同时保持其他质量因素 - Timeliness(及时性)
我们要保证软件能够及时发布
内部质量因素
- 源代码相关的质量因素
代码行数(Lines of Codes,LOC)
圈复杂度(Cyclomatic Complexity) - 体系结构相关的质量因素
耦合和内聚
外部和内部质量因素的妥协
在实践中体会吧qaq
部分课堂互动
内部因素的圈复杂度:
画一个算法流程图(图结构),看有几个圈,圈复杂度高,程序的复杂度一定高,最小的圈复杂度是1
耦合度无法避免
- 健壮性和正确性有什么区别?
范围之内认为是正常的情况,按照spec的规定,健壮性是针对spec之内的是,正确性是针对spec之外的事。如果没有满足规格说明,软件要有恰当的说明。要先保证正确性
测试用例越多(全面性)–>测试花费的时间多,效率低
eg.加密算法,影响性能。安全性和性能之间的冲突