面向对象系统分析与设计
面向对象系统分析与设计(Object Oriented Analysis and Desigin)简称 OOAD,是根据面向对象的方法学,对软件系统进行分析和设计的过程。可分为两个阶段:
- OOA(Object Oriented Analysis):分析阶段
- OOD(Object Oriented Desigin):设计阶段
在软件项目中,UML 常用于面向对象系统分析与设计。
UML 建模方法
UML 是“统一建模语言”(Unified Modeling Language)的缩写,是一种用于软件开发的图形化建模语言。它提供了一套用于描述系统构成、行为和交互的图形符号和文本标记,并支持了面向对象的建模方法。
UML包含多种图形表示方法,包括用于表示系统结构和组成的类图、用于描述系统流程和行为的活动图以及用于描述系统交互的用例图等。如今,UML 已成为工业标准,广泛应用于信息系统开发、软件工程以及其他领域。
对象的三个基本要素分别是:对象标识、对象状态、对象行为。
对象是类的实例,类是对象的模板。
UML 的 5 个视图
1)用例视图
用例视图(Use case view)用于定义系统的外部行为,它定义了系统的需求,是描述系统设计和构建的其他视图的基础,即用例驱动。用例视图又称为“用户模型视图”。
2)逻辑视图
逻辑视图(Logic view)用于描述逻辑结构,该逻辑结构支持用例视图描述的功能,它描述了问题空间中的概念以及实现系统功能的机制,如类、包、子系统等。逻辑视图又称为“结构模型视图”或“静态视图”。
3)实现视图
实现视图(Implementation view)描述用于组建系统的物理组件,如可执行文件、代码库和数据库等系统程序员所看到的软件产物,是和配置管理以及系统集成相关的信息。实现视图又称为“组件视图”。
4)过程视图
过程视图(Process view)描述将系统分解为过程和任务,以及这些并发元素之间的通信与同步。过程视图又称为“并发视图”、“动态视图”或“协作视图”。
5)部署视图
部署视图(Deployment view)描述系统的物理网络布局,是系统工程师和网络工程师所感兴趣的。部署视图又称为“物理视图”。
UML 的 9 种图表
UML 中有九种建模的图表,可按静态和动态分为两大类:
- 静态图:用例图、类图、对象图、组件图、配置图
- 动态图:序列图、状态图、协作图、活动图
1)用例图
用例图(Use case diagram)描述系统的功能,作为一个外部的观察者的视角对系统的印象。它强调的是这个系统是什么而不是这个系统怎么工作,通常由由系统、用例和角色三种元素组成。
2)类图
类图(Class diagram)用于表示系统中的类以及类与类之间的关系,描述系统的静态结构,用于逻辑视图中。由于类图是静态的,因此它们能显示出什么可以产生影响,但不能显示什么时候产生影响。
3)对象图
对象图(Object diagram)是类图的实例,表示在某一时刻这些类的具体实例以及这些实例之间的具体连接关系,可以帮助人们理解比较复杂的类图。对象图也可以用于显示类图中的对象在某一点的连接关系,常用于用例视图和逻辑视图中。
4)状态图
状态图(State diagram)主要用来描述对象、子系统、系统的生命周期。通过状态图可以了解一个对象可能具有的所有状态,导致对象状态改变的事件,以及状态转移引发的动作。
状态图是对类描述的事物的补充说明,用在逻辑视图中描述类的行为。
5)序列图
序列图(Sequence diagram)又称“顺序图”或“交互图”,用于将系统的交互关系表示为一个二维图,其中纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色,类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
类图和对象图是静态模型的视图,而序列图是动态的,它描述了对象间的交互作用。消息用从一个对象的生命线到另一个对象生命线的箭头表示,箭头以时间顺序在图中从上到下排列。
6)协作图
协作图(Collaboration diagram)主要描述协作对象之间的交互和连接。协作图和序列图同样反映对象间的动态协作,也可以表达消息序列,但重点描述交换消息的对象之间的关系,强调的是空间关系而非时间顺序。
7)活动图
活动图(Activity diagram)显示动作及其结果,着重描述操作实现中所完成的工作以及用例实例或对象中的活动。活动图中反映了一个连续的活动流,常用于描述一个操作执行过程的所完成的工作。
活动图可以视为是种结构化的流程图,由若干不同形状的图形组成,图形之间由箭头连接。其中比较重要的形状有:
- 圆角矩形:表示“动作”
- 菱形:表示“决策”
- 粗实线:表示并行(并发性)活动的开始(分离)和结束(汇合)
- 黑圆:工作流的开始(初始节点)
- 黑圈套住的黑圆:工作流的结束(结束节点)
箭头从开始一路指向结束,用来表示活动的先后顺序。
8)组件图
组件图(Component diagram)用来反映代码的物理结构,组件可以是源代码、二进制文件或可执行文件,包含逻辑类的实现信息。
组件(component)可理解为一个个代码模块,组件图表达的是类图的物理实现。配置图(Deployment diagram)则是显示软件及硬件的配置。
9)配置图
配置图(Deployment diagram)又称“部署图”,用于显示系统中软件和硬件的物理架构。图中通常显示实际的计算机和设备及其之间的关系。配置图用来构成配置视图,描述系统的实际物理结构。