目录
第一章
1.1软件构造中的多维视图
参考资料
MIT 6.031: Getting started,readings 02
CMU 17-214:Aug 29
代码大全:第1-4章
从三个维度看软件系统的构成
由软件的不同质量目标,我们分了三个维度来理解软件系统的构成
将“软件构造”看作“不同视图之间的转换”
虽然分了这三个维度来看软件,但由于最终看的还是同一个软件,因此这三个维度之间一定存在着相关性。
1.2软件构造的质量目标
软件构造后续课程均通过这些质量因素展开
外部质量因素
E1:Correctness(正确性)
首要质量
标准:符合软件规格说明书里的要求
假定一个软件系统是分层开发的,每层都要确保自己是正确的,同时假定其调用的低层也是正确的
保证正确性:测试
OOP:封装、分权制
E2:Robustness(鲁棒性/健壮性)
即软件系统对异常情况(规格说明书范围以外的而非客观的正确标准)作出适当反应的能力
OOP:封装、异常处理
E3:Extendibility(易扩展性)
即软件调整以适应变化的能力
原则1:体系结构简单
原则2:模块自治性强,即离散化
OOP:封装、信息隐藏
E4:Resuability(复用性)
OOP:模块性、组件、模型、模式
E5:Compatibility(兼容性)
难点:不同的软件有不同的设定/规定
方法:文件格式标准化;数据结构标准化;用户界面标准化;存储协议标准化
关键:设计的一致性,即标准化
OOP:标准化的模块和界面
E6:Efficiency(效率)
即软件系统对硬件资源尽可能少的需求的能力
OOP:可复用的组件
E7:Portability(可移植性)
OOP:信息隐藏、抽象
E8:Ease of use(易用性)
用户可以轻松掌握软件的使用,也包括安装、运行和监控的容易度
关键:结构简洁
理解用户
OOP:GUI组件、框架
E9:Functionality(功能性)
功能多不代表软件竞争性更强,功能更多可能会破坏一致性
在质量提升技术的帮助下,可以在整个项目中保持质量水平不变,而不仅仅是功能性
OOP:可扩展性
E10:Timeliness(时效性)
在用户需要时或之前,软件系统能被发布的能力
OOP:建模、复用
E10++:Other qualities
Verifiability(可验证性):是否易于验证
Integrity(完整性):软件系统保护其各种组件(程序和数据)免受未经授权的访问和修改的能力
Repairability(可修复性)
Economy(经济性):同时效性相伴,是系统能够按照其分配的预算或低于预算完成的能力;OOP:复用
内部质量因素
内部质量因素通常作为外部质量因素的部分度量
与源码相关:
代码行数(LOC)
圈复杂度:用来衡量一个模块判定结构的复杂程度
与结构相关:(设计中追求高内聚和低耦合)
耦合度:模块和模块之间的交互
内聚度:模块本身具有的独立性
可读性、可理解性和清楚的程度
复杂度
大小
质量因素间的Tradeoff(折中)
正确性一定是首要的
所有上述讨论的质量都是重要的
四个突出的质量因素:
正确性和健壮性:可靠性
1、更系统化的软件构造
2、更正式的规格
3、贯穿于软件构造过程的内建检查机制(不仅仅是事后测试和除错)
4、更好的语言机制,如静态类型、断言、自动内存管理和科学的异常处理
5、统一的检查工具
易扩展性和复用性:模块性
软件构造中5个重要的质量目标
1、代码的容易理解
2、设计复用,便宜开发
3、低复杂性,易于扩展
4、健壮性和正确性,保证尽量少的bug
5、效率