这一章的首要目标是深度理解三维度八视图已经内部和外部质量因素。
三维度八视图:
构建时 Code-level view:源码、类结构;代码变化 表示代码的逻辑组织 Component-level view:文件、目录、包、库、静态链接、测试项;配置项、版本 表示代码的物理组织 Moment view:源码、类结构;文件、目录、包、库、静态链接、测试项 表现源码和组件在特定时刻的软件形态 Period view:代码变化;配置项、版本 表现软件形态随时间的变化 源码组织在文件中,进而组织在目录中 文件存档在包中,并逻辑上归属于组件和子系统 可重用的模块以库的形式存在,库存储在磁盘文件中 静态链接:库被拷贝进代码形成整体,执行的时候无需提供库文件。
运行时 Code-level view:代码快照、内存转储;堆栈轨迹、并发线程 逻辑实体在内存中如何呈现 Component-level view:包、库、动态链接、数据库、网络、硬件;事件日志、多进程、分布式程序 物理实体在物理硬件环境中如何呈现 Moment view:代码快照、内存转储;包、库、动态链接、数据库、网络、硬件 逻辑/物理实体在内存/硬件环境中特定时刻的形态 Period view:堆栈轨迹、并发线程;事件日志、多进程、分布式程序 逻辑/物理实体在内存/硬件环境中的形态随时间的变化 动态链接:库文件不会在构建阶段被加入可执行软件,仅仅做出标记;程序运行时,根据标记装载库至内存;发布软件时,将程序所依赖的所有动态库都复制给用户
运行时 分布式程序:需要多个运行程序,分别部署于多个计算机物理环境 代码快照:描述程序运行时内存里变量层面的状态 内存转储(Memory dump):一个包含进程内存拷贝的磁盘文件,包含程序异常退出时的寄存器、调用栈、程序数据等,调试器可以加载转储文件并显示信息 执行跟踪(Execution tracing):软件层面,用日志方式记录程序执行的调用次序 事件日志:系统层面的日志
在了解了三维度八视图之后,我们也能理解有关各个层次之间的关系,我们可以通过一个视图转换来加深我们的理解:
接下来是有关质量因素的部分,质量因素分为外部质量因素和内部质量因素,外部质量因素是指:可被用户感知的因素,内部质量因素是指:作为软件产品的质量,影响软件本身和它的开发者。外部质量取决于内部质量。
外部质量因素主要有以下几种:1. 正确性、2. 健壮性/鲁棒性、3. 可扩展性、4. 可复用性、5. 兼容性、6. 性能、7. 可移植性、8. 易用性、9. 功能性、10. 及时性
内部质量因素主要有:源码方面:行数(LoC)、逻辑复杂度 结构方面:耦合、内聚 除此之外还有代码可读性、易于理解、清晰、大小等。