课程概述

第一部分:软件构造基础

第二部分:ADT+OOP

第三部分:面向可复用性和可维护性的软件构造

第四部分:面向健壮性与正确性的软件构造

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

软件构造的多维度视图

从以下三个维度看软件系统的构成:

1.按阶段划分:构造阶段(Bulid-time)-运行阶段(Run-time);

2.按动态划分:时刻(Moment)-阶段(Period);

3.按层次划分:代码层面(Code-level)-组件层面(Component-level)。

1.Build-time, moment, and code-level view

需要关注基本程序块(包括函数、类、方法、接口等)之间的依赖性以及源代码如何用这些程序块进行逻辑组织。这个维度包含三个互相关联的形式——词汇,语法和语义,其中语义关注源代码具体想实现什么目标,而面向语义的程序结构用于表达“需求”和“设计”思想,再将其转化为code,因此通常是图形化或形式化的,例如用类图(UML)来描述接口、类、属性、方法以及他们之前的关系。

2.Build-time, moment, and component-level view

源代码被物理组织成文件,文件再被封装到(Package)中。

3.Build-time, period, and component-level view

版本控制是给计算机软件的不同状态分配唯一的名字或者编号的过程。

4.Run-time, moment, and code-level view

代码快照图(Snapshot diagram):描述程序运行时,某时刻内存里变量层面的状态(在之后的章节中会详细展开)。

内存信息转储(Memory dump):在硬盘上存放进程内存内容的文件,当进程由于某种内部错误或信号而中止时产生。调试器(Debuggers)可以加载转储文件,并显示其中包含的运行程序的状态信息——包括寄存器、调用堆栈和所有其他程序数据(计数器、变量、开关、标志等)的内容。它是为了分析程序的状态,程序员查看内存缓冲区,看看在故障时哪些数据项正在工作。

库(Library)

是可重用的模块,开发者可以像使用编程语言指令一样使用库中的功能,包括操作系统提供的库、编程语言提供的库,第三方公司提供的库及自己积累的库,在编程时和build时,需告诉IDE和JVM在哪里寻找这些库。

库不能直接在目标机器上加载和执行;它必须首先与可执行程序链接。

静态链接:库被拷贝进入代码形成整体,执行的时候无需提供库文件,静态链接发生在构造阶段。

动态链接:库文件不会在build阶段被加入可 执行软件中,仅仅做出标记,程序运行时,根据标记装载库至内存,因此在发布软件时,需将程序所依赖的所有动态库都复制给用户(所以实验一要求提交程序到GitHub是要将用到的lib一并上交)。动态链接的优点在于类库变化时,不需要重新生成可执行程序,多个运行中程序可共享同一类库,可以优化内存的使用。

不同维度的转化

软件系统的质量性能

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

外部质量因素——正确性(最重要的质量指标);健壮性(针对异常情况的处理);可扩展性;可复用性(一次开发,多 次使用);兼容性(不同的软件系统之间相互可容易的集成);性能;可移植性(软件可方便的在不同的技术环境之间移植);易用性(容易学、安装、操作、监控);功能;及时性......

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

五个关键质量目标

哈工大2022春软件构造学习笔记1相关推荐

  1. 哈工大2021春软件构造实验总结

    哈工大2021春软件构造实验总结 文章目录 一.实验一 1. 实验概述 1.1 Magic Squares 1.2 Turtle Graphics 1.3 Social Network 2. 实验感受 ...

  2. 哈工大2021春软件构造实验

    2021春软件构造(Software Construction)课程共3个实验,其中lab1和lab2同往年一样,lab3是全新的实验. 3个实验的内容如下: Lab-1: Fundamental J ...

  3. 哈工大软件构造学习笔记1 Views and Quality Objectives of Software Construction

    先要搞清楚软件构造的对象是什么,如何刻画,在关注如何构造. 1,Five key quality objectives of software construction 软件构造的五个关键质量目标 容 ...

  4. 软件构造学习笔记-第八周

    本周重点是Liskov可替换原则.它要求父类和子类的行为一致性,子类要有更强的不变量.更弱的前置条件.更强的后置条件.在该原则的要求下,每个子类都可以对父类进行替换.这在开发过程中会带来极大的便利,在 ...

  5. [HITSC]哈工大2020春软件构造Lab3实验报告

    Github地址 1 实验目标概述 本次实验覆盖课程第 3.4.5 章的内容,目标是编写具有可复用性和可维护 性的软件,主要使用以下软件构造技术: 子类型.泛型.多态.重写.重载 继承.代理.组合 常 ...

  6. 软件构造学习笔记(九)面向复用的软件构造技术

    目录链接 Part I What is Software Reuse? Part II How to measure "reusability"? Part III Levels ...

  7. 软件构造学习笔记ATD

    在面向对象的编程中,ADT的编写十分重要,与传统的c语言不同,面向对象的编程更加商业化一点,所以保密需要做好,有点商业机密的感觉.如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示,避 ...

  8. 哈工大2020春软件构造实验二实验报告

    2020年春季学期 计算机学院<软件构造>课程 Lab 2实验报告 姓名 赵俊 学号 1180300508 班号 1836101 电子邮件 手机号码 目录 1 实验目标概述 1 2 实验环 ...

  9. 软件构造学习笔记-第九周、第十周

    因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...

最新文章

  1. 网络的塔建+模型训练
  2. Java 实现 SSH 协议的客户端登录认证方式
  3. 作物驯化与人类的生活
  4. 泰信通获得正唐资本首轮投资,加速进军SDN、云网市场
  5. 运维监控工具之 Nagios 客户端安装(二)
  6. matlab电类,985电气研二,有发过考研经验贴 电气电力类的有
  7. java集合的遍历_Java集合之遍历
  8. 机场新增卫星厅对中转旅客影响的评估方法
  9. 苹果在中国设立首个App设计开发加速器
  10. jenkins 安装 和自动部署的 一些配置
  11. 苹果M1芯片:如何开启一个时代
  12. python format函数实例_【Python】-String的Format格式规约函数及实例
  13. java自定义异常和throw、throws的使用
  14. html 透明玻璃效果图,CSS3教程实现模糊透明玻璃效果
  15. java 提交mac地址栏_Mac系统快捷键大全 - 米扑博客
  16. 三位一撇:处理数字12345.67——12,345.67
  17. 关于U盘存储大量小容量文件速度慢的解释(摘抄)
  18. Linux ssh远程连接
  19. 字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》
  20. java解析JT808协议

热门文章

  1. 器件选型(一):电磁阀
  2. //根据身份证号自动生成性别、出生日期和年龄
  3. 加密狗+AES算法在QT Windows下的加密简析例程
  4. Win下模拟键盘输入的三种办法
  5. 【ABAQUS】搞定ABAQUS与SolidWorks2无缝集成
  6. 广交会展会汇信快速报价小程序
  7. 2019 年 660 余个优质编程相关国外优质课程,帮你学习编程,成为资深程序员
  8. 计算机毕业设计SSM服装销售商城系统【附源码数据库】
  9. 报错 | npm ERR Failed at the family@1.0.0 dev script.npm ERR This is probably not a problem
  10. vscode win10笔记本 蓝屏_Win10笔记本开机蓝屏提示0xc000000d怎么解决?