【software construction】第一章 软件构造的多维视角

第一章 软件构造的多维视图

Outline

  • 描述软件系统的三个维度

    • 阶段:build-time && run-time

    • 动态:moment && period

    • 级别:code && component

  • 元素、关系和各种视角的模式

  • 不同视角间的转换

Notes

<strong>【软件的构成要素】  </strong><br />  - 软件=算法+数据结构<br />  - 软件=程序+数据+文档(80年代)<br />  - 软件=Modules(Components)+Data/Control Flow  模块(组件)+数据流/控制流<br /><strong>
【软件系统的组成】</strong>
Software system =<br />  Programs(UI,算法,utilities(实用工具 function),APIs,test cases)<br />+ Data(files,database)
+ Documents(SRS(需求规格声明),SDD(设计规格声明),user manuals)
+ Users(谁来使用)
+ Business Objective(为什么使用它)
+ Social Environment(法规)
+ Technological Environement(如何部署)
+ Hardware / Network(硬件)
(前三个是主要)

<strong>【软件构造的多维视角】</strong>
1.阶段:构建 || 运行
2.动态:时刻 || 周期
3.级别:代码 || 组件<br />
<strong>【Buildtime概述】</strong>
想法 —> 需求 —> 设计 —> 代码 —> 可安装可执行的包
- 代码是如何组建起来的?(依赖关系)
- 体系架构 源代码如何组成文件
- 时间角度 源代码在特定的时间什么样,随着时间如何变化

<strong>【Code-level;Build-time;Moment】</strong>
三种相互关联的形式
- 面向词法   半结构化源代码
- 面向语法  (AST抽象语法树)半结构化的源代码变成语法树(编译器能够处理)
- 面向语义   UML(参考软件工程课程内容)
	关于词法、语法、语义的更多内容
	https://www.cnblogs.com/lightsong/p/6107310.html

<strong>【Code-level;Build-time;Period——Code Churn(代码变化)】</strong>
- Churn Trends
- 代码变化包括添加、修改、删除

<strong>【Component-level ;Build-time;Moment】</strong>
- 源代码如何组织成文件——词典
- 文件被压缩进package,逻辑上进入components(组件)and sub-systems(子系统)
- 链接技术(动态 / 静态)

<strong>【类库(Library)】</strong>
来源
  - 操作系统自带
  - 语言自带的SDK
  - 第三方
  - 自己编写
链接到类库
  - 编译器形成关于外部库的链表,编译器找到库的目标文件,复制加到程序中

<strong>【静态链接】</strong>
  - 类库就像是特别的对象文件的集合
  - 编译前就需要知道方法对应的文件
  - 构建时,从类库中提取文件并复制到可执行文件中

<strong>【Component-level ;Build-time;Period】</strong>
  - 版本控制
  - Software Configuration Item(软件生命周期各个阶段活动的产物,经审核后可称为软件配置项)
  - version:major.minor.patch

-----------未完待续------------

相关推荐