软件构造第一章总结

软件构造的多维度视图

从阶段层面看:构造vs运行(build vs run)
从动态层面看:时刻vs周期(moment vs period)
从级别层面看:代码vs模块化(code vs component)
软件构造第一章总结

软件构造各阶段详述

Build-time

  1. Build-time, moment and code-level view:关注词汇层面(语句、变量、字符串等)、语法层面(AST)、语义层面(UML图);
  2. Build-time, period and code-level view:关注代码随着时间的变化,如删改、版本等;
  3. Build-time, moment and component-level view:关注程序在构建过程中所引用的库、静态链接、包、测试用例、源文件等;
    静态链接发生在该阶段,库被拷贝到代码中,形成 一个整体,执行时无需提供库文件,但难以升级库。
  4. Build-time, period and component-level view:通过版本控制工具,关注代码变化。

Run-time

  1. Run-time, moment and code-level view:关注snapshot(快照图),即描述程序运行是内存里变量层面的状态的工具,以及程序运行时内存里变量层面状态;
  2. Run-time, period and code-level view:执行跟踪,用日志方式记录程序执行的调用次序;
  3. Run-time, moment and component-level view:关注不同服务器模块配置情况;
    动态链接在构造阶段仅作出标记,运行时根据标记装载库至内存,从而易于升级库,但是发布软件时需要将所需库复制给用户。
  4. Run-time, period and component-level view: 通过时间日志记录,查看系统使用情况。

软件构造的实质

由于不可能使所有影响软件质量的因素都达到理想化,所以软件构造实质上是在各指标间寻找折中的方法

影响软件质量的因素

外部质量因素

(按重要程度罗列)

  1. 正确性:最基本的质量指标。可以借由分层的方法实现,即每一层保证自己即下一层的正确性;
  2. 健壮性:软件系统对异常情况作出适当反应的能力;
  3. 可扩展性:软件易于调整以适应变化的能力。可以借由简化体系结构、提高模块自治性实现;
  4. 可复用性:遇到相似模式时利用共性,以降低开发成本;
  5. 兼容性:软件在不同的软件系统之间相互集成。可以借由一致性、标准性设计以及软件协议实现;
  6. 效率:实现软件系统对硬件资源尽可能少需求;
  7. 可移植性:软件可在不同的硬件和技术环境中移植的能力;
  8. 易用性:使用户能轻松掌握软件使用、安装、运行和监控;
  9. 功能性:增加软件功能。与一致性以及易用性存在一定矛盾;
  10. 时效性:在规定时间内做出相关产品;
  11. 还有可验证性、完整性、可修复性、经济性等。

内部质量因素

内部质量因素通常作为外部质量因素的部分度量。
涉及到的方面有代码行数、耦合度、内聚度、可读性、复杂性、大小规模等。