1.1多维度软件视图
一、软件构造的多维度试图和质量目标
- “软件构造的对象是什么”、“如何刻画”、“如何构造”
1.从三个维度看软件系统的构成
2.用什么样的模型/视图描述软件系统
3.将“软件构造”看做“不同视图之间的转换”
二、理解如何构造的过程和结果是好的
1.软件构造过程中应考虑的重要质量指标
2.如果达不到期望的质量目标会有什么后果
3.有哪些面向质量指标的软件构造技术
三、多种软件构造视图
1.按阶段划分:构造时/运行视图
2.按动态性划分:时刻/阶段视图
3.按构造对象的层次划分:代码/构件视图
四、软件构造的五个关键质量目标
1.Easy to understand
2.Ready for change
3.Cheap for develop
4.Safe from bugs
5.Efficient to run
五、多维度软件视图
瞬间 | 时期 | |||
代码级 | 组件级 | 代码级 | 组件级 | |
构建时间 | 源代码、AST、接口类,属性,方法,(类图) | 包,文件,静态链接,库,测试用例,构建脚本 | 代码变动 | 配置项目,脚本 |
运行时间 | 代码快照、清除打印 | 包,库,动态链接,配置,数据库,中间件,网络 | 执行,并发多线程,堆栈跟踪 | 事件日志,多进程,分布式处理 |
过程调用图、消 | 息图(序列图) |
- 构造时间视图
- 构造时间,时刻和代码级视图
三个内在关联形式:词汇层面,语法层面(例如抽象语法树AST),语义层面
- 构造时间,阶段和代码级视图
Code churn 代码变化:Lines added,modified or deleted to a file from one version to another.
- 构造时间,时刻和组件级视图
库链接,其中库的来源可以是操作系统提供的库,编程语言提供的库,第三方公司提供的库,你自己积累的库,在编程时和build时,须告诉IDE和JVM在哪里寻找某些库。(静态链接发生在构造阶段,动态链接)
- 构造时间,阶段和组件级视图
- 运行时视图
(1)运行时,时刻和代码级视图
快照图(snapshot diagram)、内存转储(memory dump)。主要关注软件在运行时保有的数据及其在内存中的结构。
(2)运行时,阶段和代码级视图
UML:顺序图(sequence diagram)(主要关注程序单元之间的交互)、运行时栈跟踪(execution stack trace)( 用日志方式记录程序执行的调用次序)。
(3)运行时,时刻和代码级视图
UML:部署图(各个组件被部署在了哪些机器上)。
(4)运行时,阶段和代码级视图
事件日志从系统层面为系统管理员提供信息。每一类事件被分配唯一的“代码”来格式化输出人类能读懂的信息。
1.2软件构造时的视角转换
- 软件构造视角转换的种类
- 无->代码
Programming/Coding(ADT/OOP)
Review,static analysis/checking
- 代码->组件
Design(ADT/OOP;Reusability;Maintainability)
Build:compile,static link,package,install,etc;
- 构建时->运行时
Install/deploy
- 时刻->阶段
Version control;
1.3软件系统的质量目标
- 外部质量因素影响用户,内部质量因素影响软件本身和它的开发者,外部质量取决于内部质量
二、外部质量因素
- 正确性
- 健壮性
- 可扩展性
- 可复用性
- 兼容性
- 效率
- 可移植性
- 易用性
- 功能性
- 开发时间
- 可验证性、完整性、可修复性、经济性
- 内部质量因素
- 代码行数、复杂度
- 低耦合、凝聚
- 可读性
- 可理解性
- 清洁度
- 大小
- 软件构造的关键注意点:正确性、健壮性、可扩展性、可复用性