一:软件构造多维视图
分类图:重点
从三个维度看软件构造
1、按阶段划分:构造时/运行时视图。build-time/run-time
2、按动态性划分:时刻/阶段视图。Moment/Period
3、按构造对象划分:代码/构件视图。code-leval/component-level
构造阶段/build-time view
idea->requirment->design->code->instable/executable package
Build-time,moment and code-leval view
构建时+时刻+代码
源代码
接口,类,方法,函数
三个层次:
词汇:半结构化-近乎自然语言+遵循特定的编程语言
语法层次:AST-彻底结构化,将源代码变为一棵树,对树做各种操作==对源代码进行更改
语义层次:class diagram-用于表达设计的需求以及设计的思想
Build-time,period and code-level
构建时+周期+代码
code churn-记录行的删除增加,代码在周期内的变化
Build-time,moment and component-leval
构建时+时刻+组件
File被封装到Package以及library。模块化组织为文件。与库文件的链接。
静态链接/static linking:构造阶段,且不依赖
对应的run-time,moment and component-leval中存在一个Dynamic linking。特点是不加入可执行文件,只是做个标记,运行时将标记装在到内存。易于升级,不过需要将所有依赖库都复制给用户。
Build-time,period and component
构建时+周期+组件
configuration item -SCI:配置项
version
runtime views
运行时:程序被载入目标机器,开始执行
代码层面:逻辑实体在内存中如何运行
构建层面:物理实体在硬件环境下如何呈现
Moment view:逻辑/物理实体在内存/硬件环境中特定时刻的形态如何
Period view:逻辑/物理实体在内存/硬件环境中随时间形态如何变化。
较为关键的点
可执行程序,原生机器码,程序完全解释执行,库文件,动态链接,内存信息转储/Memory dump,execution tracing 与event logging二者间的比较关系。
剩余对应的情况略
软件的质量指标
1,Correctness/正确性-测试调试/防御式编程/形式化方法
2,Robusterness/健壮性-异常处理,异常-未被Specification覆盖的情况
3,Reusability/复用性-发现共性
4,Extendility/扩展性-简约主义设计以及去中心化,模块自治
5,Portability/可移植性-
6,Functionality/功能性
7,Compatibity/兼容性-保持设计同构性
8,Efficiency/功能性-与许多冲突,过早优化是万恶之源
9,Timeliness/时效性
10,ease of use/易于使用,方便使用
other不细说,重要的有经济性与完整性
这些性质之间互相冲突,需要仔细考虑,规模大功能全的软件,易用性,经济性,移植性就会差。需要采取折中处理
保证:正确性!!!!
经济性 与 功能性/可复用性 矛盾
有效性/可复用性 与 轻便性 矛盾
更高效、对硬件和软件有高要求
时效性 与 可扩展性 矛盾
完整性 与 易用性