软件构造笔记(第一章)

软件构造

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

image-20210512194111549

(该图是重点考试内容)

component level:组件级 ;configuration:配置 ;log:日志

diagram:图表 ;distributed 分布式;code churn :代码变化

按阶段划分:build-time(构造阶段)和run-time(运行阶段)
按动态划分:moment(时刻)和period(时期)
按层次划分:code(代码层面)和component(组件,文件层面)

1.Buildtime view(构造阶段)

Build-time(构造阶段):idea=>requirement=>design=>code=>installable(可安装)/executable package(可执行包)

  • Code-level view: source code.代码的逻辑组织:functions(函数),classes(类),methods(方法),interfaces(接口)
  • Component-level view:architecture(结构).代码的物理组织:files(文件),directories(目录),packages(包),libraries(库)
  • Moment view:特定时刻的软件形态
  • Period view:软件形态随时间的变化

三个相互联系的层面:(PPT 1.15)

  1. 词汇层面:lexical-oriented source code(面向词法的源代码)
  2. 语法层面:syntax-oriented program structure(面向语法的程序结构)AST(一种彻底结构化,将源代码变成一棵树,对树做各种操作==对源代码的修改)
  3. 语义层面:semantics-oriented program structure(面向语义的程序结构)(源代码具体想实现什么目标)

2.runtime view(运行阶段)

runtime:运行时:程序被载入目标机器,开始执行

  • Code-level view(代码层面):逻辑实体在内存中如何呈现
  • Component-level view(构件层面):物理实体在物理硬件环境中如何呈现
  • Moment view:逻辑/物理实体在内存/硬件环境中特定时刻的形态如何/li>
  • Period view:逻辑/物理实体在内存/硬件环境中的形态随时间如何变化/li>

代码快照图:描述程序运行时内存里变量层面的状态(重点

image-20210512201130063 image-20210512201240581

红字技术为考试重点

image-20210512194144420

3.软件系统的质量属性

image-20210512203403923

(1)外部质量因素

  • 正确性:

    • 最重要的质量指标
    • 按照预先定义的“规约”执行
    • 每一层保证自己的正确性,同时假设其下层是正确的
    • 测试和调试:发现不正确,消除不正确
    • 防御式编程:在写程序的时候就保证正确性
    • 形式化方法:通过形式化验证发现问题
  • 健壮性:

    • 针对异常情况的处理
    • 健壮性是对正确性的补充
    • 正确性:软件的行为要严格的符合规约中定义的行为
    • 健壮性要求出现规约定义之外的情形的时候,软件要做出恰当的反应,并且在出现异常时不崩溃。
  • 可扩展性:

    • 对于软件的规约进行修改是否容易
    • 通常,软件规模越大,扩展起来越不容易
  • 可复用性:

    • 一次开发,多次使用,发现共性
  • 兼容性:

    • 不同软件系统之间相互可容易的集成,标准化
  • 性能:

    • 性能毫无意义,除非有足够的正确性
    • 对性能的关注要与其他质量属性进行折中
    • 过度优化导致软件不再适应变化和复用
  • 可移植性:

    • 软件可方便的在不同的技术环境(硬件,操作系统)之间移植
  • 易用性:

    • 容易学习,安装,操作,监控
    • 给用户提供详细的指南
  • 功能性:

    • 程序设计中一种不适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其结果是程序极为复杂、不灵活、占用过多的磁盘空间。
    • 每增加一小点功能,都确保其他质量属性不受到损失。
  • 及时性:

    • 当用户需要的时候,要能及时地设计出来
  • 其他:可验证性(易于测试),完整性(预防非法破坏系统),可修复性(易于修复受损),经济性(性价比高)

(2)内部因素

复杂性几乎是所有外部质量因素的敌人

源代码相关的因素:代码行数,圈复杂度(一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。)

结构相关的因素:耦合度,聚合度(一个模块间内部各个元素间紧密程度的度量)

4.质量折中

正确的软件开发过程中,开发者应该将不同质量因素之间如何做出折中的设计决策和标准明确的写下来,

虽然需要折中,但正确性决不能与其他质量因素折中。

image-20210512211249485

integrity:完整性

5.软件构造中五个重要的质量方面:

image-20210512211612685 文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91648 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月11日
下一篇 2021年4月11日

相关推荐