(二)软件构造的质量目标

软件构造的五个主要目标
  • 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.加密算法,影响性能。安全性和性能之间的冲突
    (二)软件构造的质量目标