软件构造复习第一章 软件构造的多维度视图和质量目标

多维软件视角

首先需要复习的是最重要的多维软件视角表
Multi-dimensional software views
其中部分名词解释:
1.AST:Abstract Syntax Tree (抽象语法树)源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
示意图如下
AST

2.Code Churn:代码变动
3.Configuration:结构
4.Middleware:中间件
5.Concurrent:并发
6.Multi-threads:多线程

Build-time Views

Moment
特定时刻的软件形态
Period
软件形态随时间的变化

  1. Build-time, moment, and code-level view
    词汇层面:面向词法的code
    语法层面:AST
    语义层面:语义导向的程序结构,如类图(下图为UML图)
    Class Diagram
    通过类似的图形的方式来表达需求和设计思想。
  2. Build-time, period, and code-level vie
    Code churn:代码变化如:Lines added, modified or deleted to a file
    from one version to another
  3. Build-time, moment, and component-level view
    源代码组织进文件,进一步由目录组织,形成包(Package)。
    其中,可复用的文件称为(Library)
    库可以被静态链接,也可以动态链接(参见Runtime Views)
    静态链接(Static linking):库被拷贝进入代码形成整体,执行的时候无需提供库文件
  4. Build-time, period, and component-level view
    其中需要考虑:各项软件实体随时间如何变化、软件的配置项(Software Configuration Item)、版本(Version)

Runtime Views

Moment
逻辑/物理实体在内存/硬件环境中特定时刻的形态
Period
逻辑/物理实体在内存/硬件环境中的形态随时间变化的情况

  1. Executable Programs: Native Machine Code\Full Interpretation\Interpreted Byte Codes
  2. 库的动态链接
    动态链接(Dynamic linking):库文件不会在build阶段被加入可
    执行软件,仅仅做出标记,程序运行时,根据标记装载库至内存
  3. Configuration and Data File
  4. Distributed Programs: 需要多个运行程序,分别部署于多个计算机物
    理环境

Snapshot diagram 用于描述程序运行时内存里变量层面的状态(Fine-grained 细粒度)
示意图:
Snapshot diagram

  1. Run-time, period and code-level view ⇒ \Rightarrow Execution tracing 执行跟踪
  2. Run-time, moment, and component-level view ⇒ \Rightarrow Event logging 事件日志

视角之间的转换

  1. ∅ ⇒ \varnothing \Rightarrow Code
  2. Code ⇒ \Rightarrow Component
  3. Build-time ⇒ \Rightarrow Run-time
  4. Moment ⇒ \Rightarrow Period

软件系统的质量特性

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

外部质量因素(External quality factors)

  • Correctness 正确性 按照预先定义的“规约”执行 最重要
  • Robustness 健壮性 针对异常情况的处理 对正确性的补充 出现异常时不要“崩溃”

Reliability(可靠性) Correctness and robustness:

  • Extendibility 可扩展性 对软件的规约进行修改是否容易。目的是为了应对变化 ⇒ \Rightarrow
    – 简约主义
    – 分离主义
  • Reusability 可复用性 ⇒ \Rightarrow 一次开发,多次使用,发现程序代码之间的共性 (DRY)

Modularity(模块性) Extendibility and reusability

  • Compatibility 兼容性 ⇒ \Rightarrow 不同的软件系统之间相互可容易的集成 保持设计的同构性 Standardization
    – Standardized file formats
    – Standardized data structures
    – Standardized user interfaces
  • Efficiency 对性能的关注要与其他质量属性进行折中
  • Portability 可移植性软件 ⇒ \Rightarrow 可方便的在不同的技术环境之间移植
  • Ease of use 易用性 ⇒ \Rightarrow 容易学、安装、操作以及监控,要给用户提供详细的指南
  • Functionality 功能性
    – 注意:功能不必太复杂以影响易用性,也不能过于关注特性而忽略其他质量因素
    – 每增加一小点功能,都确保其他质量属性 不受到损失
  • Timeliness 及时性 在用户需要的时候能够提供出软件
  • Others Verifiability (可验证性) Integrity (完整性) Repairability (可修复性) Economy (经济性)

内部特性(Internal quality factors )

Complexity , Readability, Understandability, Clearness, Size

Tradeoff between quality properties

各个质量影响因素需要折中来平衡。正确的软件开发过程中,开发者应该将不同质量因素之间如何做出折中的设计决策和标准明确的写下来。虽然需要折中,但 正确性 绝不能与其他质量因素折中。

五大质量目标

  • Easy to understand: elegant and beautiful code / understandability ⇒ \Rightarrow 易于理解
  • Ready for change: maintainability and adaptability ⇒ \Rightarrow 应对变化的能力
  • Cheap for develop: design for/with reuse: reusability ⇒ \Rightarrow 代码可以复用,节省开发成本
  • Safe from bugs: robustness ⇒ \Rightarrow 程序健壮性
  • Efficient to run: performance ⇒ \Rightarrow 性能优越

补充

在维护性(Maintainability)和适应性(Adaptability)的表格中有两个词
GRASP General Responsibility Assignment Software Patterns “通用职责分配软件模式”
相关资料:GRASP----(职责分配原则)
SOLID 面向对象设计5大重要原则的首字母缩写

  • 单一职责原则(SRP)
  • 开放封闭原则(OCP)
  • 里氏替换原则(LSP)
  • 接口隔离原则(ISP)
  • 依赖倒置原则(DIP)

相关资料:浅谈 SOLID 原则的具体使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值