系统分析师-案例分析-UML
文章目录
- 系统分析师-案例分析-UML
- 结构
- 4+1视图
- 用例图
- 类图
- 关系
- 对比
- 类图 VS 对象图
- 状态图 VS 活动图
- 顺序图 VS 通信图
- 流程图 VS 活动图
结构
- 构造块:事务、关系、图。事务是UML的重要组成部分,关系是把事务紧密的联系在一起,图是多个相互关联的事务的集合。
- 公共机制: 达到特定目的的特定目标的公共UML方法,包括规格说明、修饰、公共分类、扩展机制4种
- 规则:构造快如何放在一起的规定。范围、可见性、完整性、执行。
4+1视图
- 逻辑视图:设计视图,表示了设计模型在结构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
- 进程视图: 可执行的线程或进程作为活动类的建模,是逻辑视图的一次执行实力,描述了并发与同步结构。
- 实现视图:对组成系统的物理代码的文件和结构进行建模。
- 部署视图:把构建部署到一组物理节点上,表示软件到硬件的映射和分布结构。
- 用例视图:需求分析模型。
用例图
- 从现有的用例中抽取公共信息的那部分,作为一个单独的用例,然后采用不同的方法来重用这个公共的用例。
1.《include》表示包含关系,含义为:当可以从两个或两个以上用例中提取公共行为的时候,应该使用包含关系来表示它们。其中这个提取出来的公共用例称之为抽象用例,而把原始用例称为基本用例。
2.《extend》表示扩展关系,含义为:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能会发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,关系图示指向为扩展用例指向基本用例。
3.《generalization》表示泛化关系,是一种继承关系。子用例将继承基用例的所有行为关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替。泛化关系在用例图中使用实线空心箭头表示,箭头方向从子用例指向基用例
- 箭头的必须被执行。 泛化也是子类指向父类,可以考虑构造函数,子类构造一定要先构造父类。include 解决复用的问题,extend 解决多分支场景的问题。
类图
关系
- 泛化, 一般与特殊的关系,A继承B,A是B的子类,B是A的父类也叫泛化,A同时继承C,A为多重继承。 实线空心箭头。 子类 ——▷ 父类
- 聚合,部分和整体之间的关系,好聚好散不实诚。即部分可以脱离整体独立存在,如轮子和汽车。实线空心菱形。 部分 —◇ 整体。
- 组合,整体和部分的关系,部分依赖整体,比如公司和部分,公司倒闭了,部门也不存在了。部分无法独立存活。部分 —◆ 整体。
- 实现,就是虚集成、接口类。实现类 ----▷ 接口类
- 依赖,使用的关系,即一个类使用的实现需要另一个类的协助,B类的修改会引起A的修改。 A类 ----▶ B类
- 关联,拥有的关系,两个类之间存在可以相互作用的联系,即一个类知道另外一个类的属性和方法 A类 —— B类
对比
性质 | 组合 | 继承 |
---|---|---|
封装性 | 优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立整体类可以对局部类进行包装,封装局部类的接口,提供新的接口 缺点:整体类不能自动获得和局部类同样的接口 | 缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性,子类不能改变父类的接口。 优点:子类能自动继承父类的接口 |
动态性 | 优点:具有较好的可扩展性。支持动态组合。在运行时,整体对象可以选择不同类型的局部对象 | 缺点:支持扩展,以增加系统结构的复杂度为代价不支持动态继承。在运行时,子类无法选择不同的父类 |
易用性 | 缺点:创建整体类的对象时,需要创建所有局部类的对象 | 优点:创建子类的对象时,无须创建父类的对象 |
类图 VS 对象图
- 对象图是被实例化的类的对象。
类图:用于描述系统中所包含的类以及它们之间的相互关系。
对象图:用于描述某一时刻的一组对象及它们之间的关系。
状态图 VS 活动图
状态图: 描述的是一个状态机,描述一个对象所有可能得状态,以及由于各种时间的发生而引起的状态之间的转移和变化。主要描述行为的结果,用于动态建模。
活动图: 将进程或其他计算解构展示位计算内部一步步的控制流和数据流。主要描述行为的动作,用于动态建模。 带泳道的流程图。
顺序图 VS 通信图
顺序图: 时序图,序列图,强调时序,重点是以时间为参照,各个对象发送
、接收消息、处理消息、返回消息的时间流程顺序。
通信图: 协作图,强调对象之间的组织关系。强调空间解构。
流程图 VS 活动图
流程图:面相过程、不能表示并发,主要控制结构是顺序、分支、循环。处理关系有严格的顺序和时间关系。
活动图:面相对象,可表示并发,描述的是对象活动的顺序以及遵循的规则,着重表现的是系统的行为,而非系统的处理过程。