第一章 软件质量
1. 主要内容
软件质量描述可划分为内在和外在因素。内在因素只有软件专业人士才能感觉到,如模块化、代码可读性等;外在因素描述用户能察觉到的品质,主要外在因素如下:
- 正确性(Correctness):软件能完成文档所定义功能的能力。
- 健壮性(Robustness):软件在非正常条件下正确反应的能力。
- 扩充性(Extendibility):软件易于修改以适应需求变化的能力。
- 可复用性(Resuability):软件元素在不同的应用开发时被使用的能力。
- 兼容性(Compatibility):软件元素易于和其它元素结合。
- 效率(Efficiency):软件系统节约占用硬件资源的能力,比如处理器时间、内存空间、通信带宽。
- 可移植性(Portability):软件在各种硬件和软件环境上易于迁移。
- 易用性(Ease of use):用户能容易地学习使用软件产品解决问题,涵盖安装、操作和监控的简单易用。
- 功能性(Functionality):系统提供的可能性范围,即支持功能的多少。
- 时效性(Timeliness):软件系统在用户需要时发布的能力。
此外,还有一些其它品质: - 校验性(Verifiability):易于准备接收程序,特别是测试数据,和在确认和操作阶段检测失败并跟踪错误的程序。
- 完整性(Integrity):软件系统保护各种组件,防止未经授权的访问和修改的能力。
- 修复性(Repariability):软件损坏时,自我修复的能力。
- 经济性(Economy):软件系统符合或低于预算的能力。
软件文档分为三种类型:外部文档、内部文档、模块接口文档。外部文档帮助用户能够理解软件系统并方便地使用,类似说明书或软件帮助文档,是易用性定义的结果。内部文档使软件开发者能够理解软件架构和系统实现,是扩充性需求的结果。模块接口文档使软件开发者能够理解由一个模块提供的函数而不必知道内部实现,是复用性需求的结果。
软件可维护性(Maintainability):软件产品发布后,对软件除错和升级的难以程度。在整个软件生命周期,软件维护费用达70%。软件维护的更改来源和占比如下图所示:
2. 感悟
外在品质能够赢取用户好感,内在品质。保证软件正确性的重点在需求分析,需求点的任务分配要立足于关系分离、领域解耦,使某一模块的专家只专注于其模块的功能需求,层级关系是一种很好的分离方法。在软件行业,唯一不变的是变化。如果第一次功能开发设计时,只着眼于实现当下功能,势必会对后续的功能扩充和维护带来糟糕的体验。所以,在做设计时,必须遵循设计原则,尽量套用设计模式,面向接口设计而非面向实现。