1.软件构造的多维视图和质量目标
课程目标
1.从三个维度理解软件系统的构成
2.了解用什么模型来描述软件系统的形态和状态
3.将软件构造看作不同视图之间的转换
4.了解软件构造过程中应考虑的重要志良目标
5.如果达不到期望的质量目标会有什么后果
6.有哪些面向质量指标的软件构造技术
目录
1.多维度软件视图
划分依据 | part1 | part2 |
---|---|---|
根据阶段划分 | 构建阶段0 | 运行阶段1 |
根据动态性划分 | 时刻0 | 阶段1 |
根据层级划分 | 代码层0 | 构件1 |
2.视图之间的转变 |
内容
0.0.0:
源代码由基本程序块逻辑组织构成
由三个相互关联测层次评估:
- 面向词汇的源代码:半结构化的源代码
- 面向语法的程序结构:ATS
- 面向语义的程序结构
0.1.0
代码修改
0.0.1
层面 | 过程 |
---|---|
物理 | 源代码->文件->包 |
逻辑 | 源代码->构建、子系统 |
最终结果 | (通用的)源代码->库中的模块 |
编程时,通过调用库,站在巨人的肩膀上编程 | |
两种将库集成到可执行程序的方法 |
- 静态链接:在构造阶段将库拷贝进入代码形成整体
- 动态链接
0.1.1
软件实体随时间的变化产生版本的概念
版本控制
1.0.0
逻辑实体在内存中如何呈现
- 完全解释型:运行时全部源代码载入内存并解释执行
- 编译型:预先编译成为可执行文件,脱离原码运行
- 解释型:被解释,但在运行时使用字节码
java需要被编译成字节码后被JVM解释执行,既解释又编译
java采用动态链接,在运行的时候进行类的加载和链接。
代码快照:描述程序运行时内存里变量层面的状态
1.1.0
代码调用分析
通常用于调试和debug
1.0.1
物理实体在物理环境中如何呈现
事件日志:为系统管理员提供了用于诊断和审计的有用信息。
软件系统的质量特征
外部因素:用户
内部因素:软件本身和开发者
外部质量取决于内部质量
1.外部质量特征:
-
正确性:即是否按照spec执行
是最重要的质量指标
保证正确性的途径:测试和debugging
防御式编程:例如类型和断言,旨在写程序的时候就保证正确性
形式化的方法:通过验证发现问题 -
健壮性:出现错误情况系统不会崩溃而会产生针对错误的响应
针对异常情况的处理,是对正确性的补充
正确性负责spec内的情况,健壮性负责spec外的异常 -
可扩展性:对spec的修改是否容易
应对软件未来可能面对的升级和变化
提升拓展性的价值- 设计简约
- 分离主义
-
可复用性:一次开发多次使用
-
高效性:
高效建立在其他特征的基础上,锦上添花,切勿画蛇添足 -
及时性:软件在需要之前发布
2.内部质量特征
- 可读性
- 易理解性
- 清晰性
- 尺寸
3.在质量属性之间平衡
在保证正确性的前提下
4.软件构造的5个关键目标
- 易读
- 易开发
- 容易修改、易扩展
- 健壮性
- 高效