一、软件系统的质量特性
1)外部质量因素
防御式编程:在写程序的时候就确保正确性
健壮性:针对异常情况的处理 ,出现异常时不要“崩溃”,出现规约定义之外的情形的时候,软件要做出恰当的反应
健壮性是为了确保如果出现这种情况,系统不会造成灾难性事件;它应该产生适当的错误消息,终止其执行干净,或进入所谓的“优雅退化”模式。
正确性:软件的行为要严格的符合规约中定义的行为
可扩展性:对软件的规约进行修改
可复用性:一次开发,多次使用。对可重用性的需求来自于软件系统经常遵循相似模式的观察
兼容性:不同的软件系统之间相互可容易的集成(将软件元素与其他元素结合起来的简易性) 一个例子是许多操作系统支持的各种各样的不兼容的文件格式。只有当文件格式兼容时,程序才能直接使用另一个结果作为输入。
兼容性的关键在于保持设计的同构性,并同意程序间通信的标准化约定
方法包括:
标准化数据结构,如在LISP系统中,所有数据和程序都用二叉树表示(称为LISP中的列表)。
标准化的用户界面,如Windows、OS/2和MACOS的各种版本,其中所有工具依赖于与用户进行通信的单一范式,基于诸如Windows、图标等标准组件。
性能:性能是软件系统在硬件资源(如处理器时间、内部和外部存储器占用的空间、通信设备中使用的带宽)尽可能少的需求的能力
性能毫无意义,除非有足够的正确性,对性能的关注要与其他质量属性进行折中,过度的优化导致软件不再适应变化和复用
可移植性:软件可方便的在不同的技术环境之间移植
易用性:容易学、安装、操作、监控,给用户提供详细的指南
功能性:是系统提供的可能性的程度
程序设计中一种不适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其结果是程序极为复杂、不灵活、占用过多的磁盘空间。由于新特性的增加可能导致一致性的丧失,影响了它的易用性。
及时性:是一个软件系统在用户需要它之前或之前发布的能力。
其他:
可验证性是易于准备验收程序,特别是测试数据,以及在验证和操作阶段检测故障并跟踪错误的程序。
完整性是软件系统保护它们的各种组件(程序、数据)免受未经授权的访问和修改的能力。
可修复性是有助于修复缺陷的能力。
经济性是时间性的伴侣,是一种系统在其分配的预算中完成或低于其能力的能力。
2)内部质量因素
源代码相关的因素,如代码行(LOC)、圈复杂度等
构造相关因素如耦合、衔接等
3)质量属性之间的权衡
虽然需要折中,但“正确性”绝不能与其他质量因素折中
最重要的几个质量因素 :
正确性和健壮性:可靠性
可扩展性与可重用性:模块性
OOP如何提高质量:
正确性:封装、分散化
健壮性:封装、错误处理
可扩展性:封装、信息隐藏
可重用性:模块性、组件、模型、模式兼容性:标准化模块和接口
可移植性:信息隐藏、抽象
易用性:GUI组件、框架
效率:可重用组件,
时效性:建模、重用
性能:再利用
功能性:可扩展性
二、软件建设的五大质量目标
高雅优美的代码 -> 易懂
面向重用的开发 -> 廉价开发
低复杂度 -> 易于更改,易于扩展
稳健性与正确性 -> 安全漏洞,不易出错
性能与效率 -> 高效运行
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!