【HIT-SC-MEMO1】哈工大2022软件构造 复习笔记1

 一、软件构造基础


1.1 软件构造的多维度视图

软件多维视图

    按阶段划分:构造时/运行时视图
    按动态性划分:时刻/阶段视图
    按构造对象划分:代码/构件视图

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

构造阶段 Build-Time View

    Code:代码的逻辑组织
    functions
    classes
    methods
    interfaces

    Component:代码的物理组织
    files
    directories
    packages
    libraries

构建时+瞬时+代码

    源代码
    函数、类、方法、接口
    三个层面
        词汇:使用的语句、字符串、变量、注释(半结构化)
        语法:语法树、流程图(彻底结构化)
        语义:源代码实现的目标 & 组成部分联系情况

构建时+周期+代码

    记录周期内代码变化Code Churn
    版本控制工具

构建时+瞬时+组件

    模块化组织为文件、目录
    文件被压缩为package、library
    与库文件链接
        静态链接
        发生在构造阶段
        复制
        不依赖
        缺点:难以升级
        动态链接
        不会加入可执行文件
        做标记
        运行时根据标记装载库至内存
        发布软件时,记得将程序所有依赖的动态库都复制给用户
        优点:易于升级

构建时+周期+组件

    files/packages/components/libraries 如何变化 不同版本
    Software Configuration Item(SCI)配置项

运行阶段 Run-Time View

    程序被载入目标机器
    Code:逻辑实体在内存中呈现?
    Components:物理实体在物理硬件环境中呈现?
    Moment:特定时刻形态?
    Period:随时间变化?
    关注点:
        可执行程序、原生机器码、程序完全解释执行
        库文件
        分布式程序

运行时+瞬时+代码

    Code snapshot 代码快照图(第三章)
    运行时程序变量层面状态
    Memory dump 内存信息转储
    查看内存使用情况(实验)
    宏观:任务管理器

运行时+周期+代码

    UML图
    执行跟踪tracing
    用日志记录程序执行的调用次序

运行时+瞬时+组件(略)
运行时+周期+组件(略)


1.3 内部/外部的质量指标

外部质量因素

    用户感受得到、影响使用

    正确性 Correctness
    i. 遵守规格说明书
    ii. 分层:从底层到顶层,都要正确
    iii. 设法测试


    鲁棒性 Robustness
    健壮性:对异常情况做出适当反映
    异常取决于规格说明,是其没有涉及的部分


    易扩展性 Extendibility
    易于调整、适应变化(软件是易变的)
    改变的多少(与规模密切相关、越大越难以扩展)
    Decentralization 离散化:模块自治性越强,变化时对其余模块影响越小


    复用性 Reusability
    利用已有的、复用性好的程序,开发成本少
    相似的模式、利用共性
    模块化


    兼容性 Compatibility
    软件元素融合
    关键:标准化
    效率 Efficiency
    对硬件资源尽可能少的需求
    与其他存在矛盾


    可移植性 Portability
    便于将软件产品移植到各种环境
    易用性 Ease of use
    用户:轻松掌握使用、包括安装、运行、GUI等


    功能性
    (冲突)过多新功能 --> 损失一致性(兼容性)、影响易用性
    先实现主要功能、提高质量,再丰富功能
    时效性 Timeliness
    Others
    a. 可验证性
    b. 完整性 Integrity
    i. 保护组件(程序和数据)在未经授权时不会被修改
    c. 可修复性
    d. 经济
    i. 与时效性相关
    ii. 系统能够按照等于或低于预算完成的能力

内部质量因素

    影响使用代码的相关人员、软件本身和开发者
    内部质量因素通常用作外部质量因素的部分度量

    LOC
    lines of code
    Cyclomatic Complexity 圈复杂度
    衡量一个模块判定结构的复杂程度
    Architecture-related factors
    Coupling 耦合度 --> 低
    Cohesion 内聚度 --> 高
    矛盾
    可读性
    易理解性
    清晰 Clearness
    复杂度
    大小 Size

权衡 Tradeoff

        因素之间相互影响、矛盾、相关
        经济性 与 功能性/可复用性 矛盾
        有效性/可复用性 与 轻便性 矛盾
        更高效、对硬件和软件有高要求
        时效性 与 可扩展性 矛盾
        完整性 与 易用性

    其中,首要的是:正确性!
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值