哈工大软件构造复习一

文章探讨了软件构造的编译时和运行时的多维度视图,包括时刻、阶段、代码和组件层面的分析。同时,提到了软件构造的关键质量目标,如易理解性、可维护性、可复用性、健壮性和性能。此外,文章强调了外部质量因素如正确性、健壮性和可扩展性,以及内部质量因素如可读性和清晰度。
摘要由CSDN通过智能技术生成

软件的多维度视图

  • 按阶段划分:构造时/运行时视图
  • 按动态性划分:时刻/阶段视图
  • 按构造对象的层次划分:代码/构件视图
    软件的多维度视图

编译时视图

  • 代码的逻辑组织
  • 代码的物理组织
  • 特定时刻的软件形态
  • 软件形态随时间的变化

编译时-时刻-代码级

  • 词汇层面:Lexical-oriented source code
  • 语法层面:Syntax-oriented program structure: e.g., Abstract Syntax Tree (AST)
  • 语义层面:Semantics-oriented program structure: e.g., Class Diagram
    编译时-时刻-代码级

编译时-时间段-代码级

  • Code churn:定义为从一个版本到另一个版本的文件中增加、修改或删除的行数。
    编译时-时间段-代码级

编译时-时刻-组件级

  • Files, packages, components and sub-systems, libraries
  • Static linking:库被拷贝进入代码形成整体,执行的时候无需提供库文件
    在这里插入图片描述

编译时-时间段-组件级

  • Software Configuration Item (SCI,配置项)
  • Version (版本)
  • Version Control System (VCS)
  • Software versioning is the process of assigning either unique
    version names or unique version numbers to unique states of
    computer software.

运行时视图

  • 运行时:程序被载入目标机器,开始执行
  • 代码层面:逻辑实体在内存中如何呈现?
  • 构件层面:物理实体在物理硬件环境中如何呈现?
  • Moment view: how do programs behave in a specific time 逻辑/物理实体在内存/硬件环境中特定时刻的形态如何?
  • Period view: how do they behave along with time 逻辑/物理实体在内存/硬件环境中的形态随时间如何变化?

运行时-时刻-代码级

  • Snapshot diagram: 侧重于目标计算机内存中的变量级执行状态。
  • 代码快照图:描述程序运行时内存里变量层面的状态
  • Memory dump (内存信息转储):硬盘上的一个文件,包含一个进程的内存内容的副本,当一个进程被某些类型的内部错误或信号中止时产生。
    在这里插入图片描述

运行时-时间段-代码级

  • Sequence diagram in UML: interactions among program units (objects)
  • Execution tracing 执行跟踪:用日志方式记录程序执行的调用次序
    在这里插入图片描述

运行时-时刻-组件级

  • Deployment diagram in UML
    在这里插入图片描述

运行时-时间段-组件级

  • 事件日志:系统层面
    在这里插入图片描述

课程重点

在这里插入图片描述

视图的转化

视图的转化

软件构造质量目标

软件构造的五个关键质量目标

  • Easy to understand: elegant and beautiful code / understandability
  • Ready for change: maintainability and adaptability
  • Cheap for develop: design for/with reuse: reusability
  • Safe from bugs: robustness
  • Efficient to run: performance

外部质量因素

  • Correctness(正确性):最重要的质量指标
    • 测试和调试:发现不正确、消除不正确
    • 防御式编程:在写程序的时候就确保正确性
    • 形式化方法:通过形式化验证发现问题
  • Robustness(健壮性):针对异常情况的处理
    • 健壮性是对正确性的补充
  • Extendibility(可扩展性):对软件的规约进行修改,是否足够容易?
    • 简约主义设计
    • 分离主义设计
  • Reusability(可复用性):一次开发,多次使用
    • 发现共性
  • Efficiency(性能)
    • 对性能的关注要与其他质量属性进行折中
    • 过度的优化导致软件不再适应变化和复用
  • Timeliness(及时性)

内部质量因素

  • Readability
  • Understandability
  • Clearness
  • Size
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值