目录
建模
通过客观事物建立一种抽象的方法用以表征事物并获得对事物本身的理解,同时把这种理解概念化,将这些逻辑概念组织起来,构成一种所观察的对象的内部结构和工作原理。
- 决定抽象的角度,据此得出相同点和不同点。
- 面对问题域,首先不要决定通盘考虑,而是找出问题领域里包含的抽象角度
如何建模?
- 弄清楚业务的参与者
- 每个参与者的目标 (抽象的角度) = 用例
模什么?
- 一个由抽象角度确定目标需要有静态的事物加上特定条件下产生的一个特定场景来完成
特定的场景 = 静态的事物(物) + 特定的条件(规则) + 特定的动作 (参与者的驱动)
用例驱动 (用例实现=问题领域解决)
- 逻辑视图:关键用例实现,子系统,包,类(人,事,物,规则 如何分类组织)
- 进程视图(分析设计视图):类,子系统到进程,线程的映射 (人,事,物,规则 如何分类交互)
- 部署视图:进程,线程物理分布
- 实施视图
- 列举实施模型中所有子系统
- 子系统如何组织为层次和分层结构的构件图
- 描述子系统间的导入依赖关系的图解
抽象层次
用例选择的困难主要是由于没有找准抽象层次而产生
- 自顶向下:从头开始认识一个事物
- 自底向上:在实践中改进和提高认识
实践:在软件开发过程中,主体应当采用自顶向下,用少量概念覆盖系统需求,再逐步降低抽象层次,直到代码编写;同时辅以自底向上方法,通过总结在较低层次的实践经验来改进较高层次的概念以提升软件质量。
视图
视角是人们观察事物的角度,恰当视角可以让观察者更容易抓住信息的本质,观察者只会关心信息中他感兴趣的那部分视角。
- 用例图,对象图,类图,包图,活动图等不同的视图从不同的方面描述一个软件的结构和组成,哪些软件信息绘制哪些视图?
- 软件干系人对同样的信息的审视角度是不同的,哪些干系人展示哪些视图?
对象分析方法
分析多个对象的实例所参与的场景,获得多个侧面信息并归纳整理出一般特性。
- 一切都是对象
- 独立性:对象来源于场景分析(抽象,封装,共性的东西公共化 -- 对象抽象的原动力)
- 原子性:在同一抽象层次上,将对象视为一个不可分割的,哪怕这个对象规模很大。不要打破对象边界去窥探对象的内部。(在实现对象之前不理会其内部细节--面向接口编程)
- 可抽象:对象参与的场景越多,对象越有抽象价值。
- 层次性:层次越高,描述越粗略但适应能力越广。