【软件构造】第一章知识整理

软件构造的多维度视图

分阶段:构建和运行(build + run)
分动态:时刻和阶段(moment + period)
分级别:代码和组件构成(code + component)

软件构造的阶段划分、各阶段的构造活动

build-time
           code-level:代码的逻辑组织
          component-level:代码的物理组织
          moment-view:特定时刻的软件形态
          period-view:软件形态随着时间的变化
(1)Build-time,moment and code-level view
         源代码是如何由基本程序块进行逻辑组织的(如:类、接口……)及它们之间的依赖关系
         词汇层面;语法层面(AST);语义层面(类图)
         半结构化编程:近乎自然语言的风格 + 遵循特定的编程语法(前程方便程序员,后者方便编译器)
(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
       code level:程序的内存状态,各程序单元是如何连接的?
       moment level:体系结构(软件包如何部署到物理环境中以及它们如何交互的)
       moment view:程序在特定时间的运行状态
       period view:程序随着时间如何运作
(1)Run-time,moment and code-level view
         snapshot(快照图):描述程序运行是内存里变量层面的状态
        
           memory dump(内存信息转储)
(2)Run-time,period and code-level view
         执行跟踪,用日志方式记录程序执行的调用次序
(3)Run-time,moment and component-level view
         软件包的物理部署
(4)Run-time,period and component-level view
         时间日志记录
  注:(2)和(4)的区别


内部/外部的质量指标

  •  外部质量因素影响用户
  • 内部质量因素影响软件本身和它的开发者
  • 外部质量取决于内部质量
外部质量的指标

(1)正确性: 至高无上的质量指标,不与其他元素折中
                       按照预先定义的规约进行
                      如何保证:分层,每一层保证自己的正确性,同时假设下层是正确的
(2)健壮性:针对异常的处理
                      出现规约定义之外的情形的时候,软件要给出恰当反应
                     出现异常不崩溃
(3)可扩展性:易适应软件规约的变化;软件规模越大,扩展越方便
                         以应对变化
                         简约主义设计 + 分离主义设计
(4)可复用性:一次开发,多次使用           发现共性
(5)兼容性:不同的软件系统之间相互可容易的集成
(6)效率:性能毫无意义,除非有正确性
                   对性能的关注要与其他质量属性进行折中
                   不要过早优化
(7)可移植性:软件可在不同的技术环境中移植
(8)易用性:易学、安装、操作、监控
                      给用户提供详细的指南
(9)功能性:增加功能时要确保其他属性不受到损失
(10)及时性:在用户需求之前对软件进行更改
(11)其他属性:可验证性 + 完整性 + 可修复性 + 经济性

内部质量指标

    可读性、可理解性、大小规模、清晰、复杂度


猜你喜欢

转载自blog.csdn.net/qq_41772794/article/details/80672746