软件构造第一章总结
软件构造的多维度视图
从阶段层面看:构造vs运行(build vs run)
从动态层面看:时刻vs周期(moment vs period)
从级别层面看:代码vs模块化(code vs component)
软件构造各阶段详述
Build-time
- Build-time, moment and code-level view:关注词汇层面(语句、变量、字符串等)、语法层面(AST)、语义层面(UML图);
- Build-time, period and code-level view:关注代码随着时间的变化,如删改、版本等;
- Build-time, moment and component-level view:关注程序在构建过程中所引用的库、静态链接、包、测试用例、源文件等;
静态链接发生在该阶段,库被拷贝到代码中,形成 一个整体,执行时无需提供库文件,但难以升级库。 - Build-time, period and component-level view:通过版本控制工具,关注代码变化。
Run-time
- Run-time, moment and code-level view:关注snapshot(快照图),即描述程序运行是内存里变量层面的状态的工具,以及程序运行时内存里变量层面状态;
- Run-time, period and code-level view:执行跟踪,用日志方式记录程序执行的调用次序;
- Run-time, moment and component-level view:关注不同服务器模块配置情况;
动态链接在构造阶段仅作出标记,运行时根据标记装载库至内存,从而易于升级库,但是发布软件时需要将所需库复制给用户。 - Run-time, period and component-level view: 通过时间日志记录,查看系统使用情况。
软件构造的实质
由于不可能使所有影响软件质量的因素都达到理想化,所以软件构造实质上是在各指标间寻找折中的方法。
影响软件质量的因素
外部质量因素
(按重要程度罗列)
- 正确性:最基本的质量指标。可以借由分层的方法实现,即每一层保证自己即下一层的正确性;
- 健壮性:软件系统对异常情况作出适当反应的能力;
- 可扩展性:软件易于调整以适应变化的能力。可以借由简化体系结构、提高模块自治性实现;
- 可复用性:遇到相似模式时利用共性,以降低开发成本;
- 兼容性:软件在不同的软件系统之间相互集成。可以借由一致性、标准性设计以及软件协议实现;
- 效率:实现软件系统对硬件资源尽可能少需求;
- 可移植性:软件可在不同的硬件和技术环境中移植的能力;
- 易用性:使用户能轻松掌握软件使用、安装、运行和监控;
- 功能性:增加软件功能。与一致性以及易用性存在一定矛盾;
- 时效性:在规定时间内做出相关产品;
- 还有可验证性、完整性、可修复性、经济性等。
内部质量因素
内部质量因素通常作为外部质量因素的部分度量。
涉及到的方面有代码行数、耦合度、内聚度、可读性、复杂性、大小规模等。