建立类图步骤与方法
2014-06-17 22:11
232 查看
建立类图的步骤:
(1)研究分析问题领域确定系统需求。
(2)确定类,明确类的含义和职责、确定属性和操作。
(3)确定类之间的关系。
类的识别是一个需要大量技巧的工作,寻找类的一些技巧包括:名词识别法;根据用例描述确定类;使用CRC分析法;根据边界类、控制类、实体类的划分来帮助分析系统中的类;参考设计模式确定类;对领域进行分析或利用已有领域分析结果得到类;利用RUP中如何在分析和设计中寻找类的步骤。
1. 名词识别法:
这种方法的关键是识别系统问题域中的实体。对系统进行描述,描述应该使用问题域中的概念和命名,从系统描述中标识名词及名词短语,其中的名词往往可以标识为对象,复数名词往往可以标识为类。
2. 从用例中识别类:
用例图实质上是一种系统描述的形式,自然可以根据用例描述来识别类。针对各个用例,可以提如下的问题辅助识别:
用例描述中出现了那些实体?
用例的完成需要哪些实体合作?
用例执行过程中会产生并存储哪些信息?
用例要求与之关联的每个角色的输入是什么?
用例反馈与之关联的每个角色的输出是什么?
用例需要操作哪些硬设备?
在面向对象应用中,类之间传递的信息数据要么可以映射到发送方的某些属性,要么该信息数据本身就是一个对象。综合不同的用例识别结果,就可以得到整个系统的类,在类的基础上,我们又可以分析用例的动态特性来对用例进行动态行为建模。
3. 使用CRC分析法:
CRC(Class,Responsibilities,Collaboration)卡的最大价值在于把人们从思考过程模式中脱离出来,更充分的专注于对象技术。CRC卡允许整个项目组对设计做出贡献。参与系统设计的人越多,能够收集到的好主意也就越多。因为CRC会议是大家全力参与的,通常只需要很少的有类名的卡片,实际上没有写出完整的卡片。CRC会议进行中,一些人模拟系统和对象交流,把消息传给其他的对象。通过一步步处理,问题很容易地被解决。它由三部分组成:类(Class)、职责(Responsibility)、协作(Collaborator)。下面是一个CRC卡的示例:
职责是类需要知道或做的任何事物。这些职责是类自身所知的知识,或类在执行时所需的知识。协作是指为获取消息,或协助执行活动的其他类。创建CRC模型需要下面的步骤。
1) 建立团队,包括客户、设计人员、分析人员和一个导引者。如果没有那么多人,那么可以是客户和你自己两个人。
2) 找出需求中存在的名词和名词词组,特别注意复数(通常是集合),他们对应的单数才是。把你第一次想到的所有概念都写在白板或纸上。不管看起来这些概念是如何荒谬,把他们都写下来。
3) 筛选。把对象分为三类,核心对象(必须首先实现),可选的(目前不能确定),以及不需要的对象。这之前最好确定一下你的项目范围。某些不属于本项目范围的对象可以使用轻量的adapter或proxy实现。这里可以加入对分析、设计模式的考虑和应用。
4) 建卡。取出CRC卡,把核心类写在每一张卡上,把可选的类和排除的类分别写在不同的纸上。
5) 角色扮演。最好是一个团队执行,一个人很难做。每个人负责几个类。对每一个Use case其中的情景。导引者指定从某一个人的类开始,某一个人看一看自己能够独立完成,如果不能完成,大家看一看手中的类,谁能完成,就站起来,宣布自己能够完成,以致继续这个过程,每个人完成自己的职责就坐下。在这过程中不断修改类的责任,并写下协作者的名字。
4. 根据边界类、控制类、实体类帮助分析系统中的类
UML中类有三种主要的版型:边界类、控制类和实体类。引入边界类、控制类及实体类的概念有助于分析和设计人员确定系统中的类。
边界类位于系统与外界的交界处,窗体、报表、以及表示通讯协议的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类。通过用例图可以确定需要的边界类,每个Actor/Use Case对至少要一个边界类,但并非每个Actor/Use Case对要唯一的边界类。
实体类保存要放进持久存储体的信息。持久存储体就是数据库、文件等可以永久存储数据的介质。实体类可以通过事件流和交互图发现。通常每个实体类在数据库中有相应的表,实体类中的属性对应数据库表中的字段。
控制类是控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。其他类并不向控制类发送很多消息,而是由控制类发出很多消息。
5. 领域进行分析
建立类图的过程就是对领域及其解决方案的分析和设计过程。类的获取是一个依赖个人创造力的过程,有时需要和领域专家合作,对研究领域进行仔细分析,抽象出领域中的概念,定义其含义及相互关系,分析出系统类,并用领域中的术语为类命名。领域分析是:通过对某一领域中的已有应用系统、理论、技术、开发历史等的研究,来标识、收集、组织、分析和表示领域模型及软件体系结构的过程,并得到结果。
(1)研究分析问题领域确定系统需求。
(2)确定类,明确类的含义和职责、确定属性和操作。
(3)确定类之间的关系。
类的识别是一个需要大量技巧的工作,寻找类的一些技巧包括:名词识别法;根据用例描述确定类;使用CRC分析法;根据边界类、控制类、实体类的划分来帮助分析系统中的类;参考设计模式确定类;对领域进行分析或利用已有领域分析结果得到类;利用RUP中如何在分析和设计中寻找类的步骤。
1. 名词识别法:
这种方法的关键是识别系统问题域中的实体。对系统进行描述,描述应该使用问题域中的概念和命名,从系统描述中标识名词及名词短语,其中的名词往往可以标识为对象,复数名词往往可以标识为类。
2. 从用例中识别类:
用例图实质上是一种系统描述的形式,自然可以根据用例描述来识别类。针对各个用例,可以提如下的问题辅助识别:
用例描述中出现了那些实体?
用例的完成需要哪些实体合作?
用例执行过程中会产生并存储哪些信息?
用例要求与之关联的每个角色的输入是什么?
用例反馈与之关联的每个角色的输出是什么?
用例需要操作哪些硬设备?
在面向对象应用中,类之间传递的信息数据要么可以映射到发送方的某些属性,要么该信息数据本身就是一个对象。综合不同的用例识别结果,就可以得到整个系统的类,在类的基础上,我们又可以分析用例的动态特性来对用例进行动态行为建模。
3. 使用CRC分析法:
CRC(Class,Responsibilities,Collaboration)卡的最大价值在于把人们从思考过程模式中脱离出来,更充分的专注于对象技术。CRC卡允许整个项目组对设计做出贡献。参与系统设计的人越多,能够收集到的好主意也就越多。因为CRC会议是大家全力参与的,通常只需要很少的有类名的卡片,实际上没有写出完整的卡片。CRC会议进行中,一些人模拟系统和对象交流,把消息传给其他的对象。通过一步步处理,问题很容易地被解决。它由三部分组成:类(Class)、职责(Responsibility)、协作(Collaborator)。下面是一个CRC卡的示例:
类名 | |
职责1 | 职责1的协作 |
职责2 | 职责2的协作 |
…… | …… |
1) 建立团队,包括客户、设计人员、分析人员和一个导引者。如果没有那么多人,那么可以是客户和你自己两个人。
2) 找出需求中存在的名词和名词词组,特别注意复数(通常是集合),他们对应的单数才是。把你第一次想到的所有概念都写在白板或纸上。不管看起来这些概念是如何荒谬,把他们都写下来。
3) 筛选。把对象分为三类,核心对象(必须首先实现),可选的(目前不能确定),以及不需要的对象。这之前最好确定一下你的项目范围。某些不属于本项目范围的对象可以使用轻量的adapter或proxy实现。这里可以加入对分析、设计模式的考虑和应用。
4) 建卡。取出CRC卡,把核心类写在每一张卡上,把可选的类和排除的类分别写在不同的纸上。
5) 角色扮演。最好是一个团队执行,一个人很难做。每个人负责几个类。对每一个Use case其中的情景。导引者指定从某一个人的类开始,某一个人看一看自己能够独立完成,如果不能完成,大家看一看手中的类,谁能完成,就站起来,宣布自己能够完成,以致继续这个过程,每个人完成自己的职责就坐下。在这过程中不断修改类的责任,并写下协作者的名字。
4. 根据边界类、控制类、实体类帮助分析系统中的类
UML中类有三种主要的版型:边界类、控制类和实体类。引入边界类、控制类及实体类的概念有助于分析和设计人员确定系统中的类。
边界类位于系统与外界的交界处,窗体、报表、以及表示通讯协议的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类。通过用例图可以确定需要的边界类,每个Actor/Use Case对至少要一个边界类,但并非每个Actor/Use Case对要唯一的边界类。
实体类保存要放进持久存储体的信息。持久存储体就是数据库、文件等可以永久存储数据的介质。实体类可以通过事件流和交互图发现。通常每个实体类在数据库中有相应的表,实体类中的属性对应数据库表中的字段。
控制类是控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。其他类并不向控制类发送很多消息,而是由控制类发出很多消息。
5. 领域进行分析
建立类图的过程就是对领域及其解决方案的分析和设计过程。类的获取是一个依赖个人创造力的过程,有时需要和领域专家合作,对研究领域进行仔细分析,抽象出领域中的概念,定义其含义及相互关系,分析出系统类,并用领域中的术语为类命名。领域分析是:通过对某一领域中的已有应用系统、理论、技术、开发历史等的研究,来标识、收集、组织、分析和表示领域模型及软件体系结构的过程,并得到结果。
相关文章推荐
- Ubuntu Linux系统建立FTP服务器方法步骤
- Android Studio建立百度地图步骤及导航无语音解决方法
- 用SQL建立索引的方法步骤
- SVN在Eclipse中的安装步骤以及使用方法和建立分支
- 达芬奇工具链的建立(工程编译步骤),特别是函数中参数传递的输入方法
- Android Studio建立百度地图步骤及导航无语音解决方法
- 使用paramiko 模块建立ssh通讯方法步骤详解
- 用SQL建立索引的方法步骤
- SVN在Eclipse中的安装步骤以及使用方法和建立分支
- Oracle建立二进制文件索引的方法
- Tomcat安装配置及注意事项,jsp,servlet,javabean建立方法及注意事项!
- asp中建立搜索的不同方法
- 建立画笔及删除画笔的方法列表
- CVS服务器建立和权限配置方法
- [Flex=JRun+IIS] 的方法,使用Flex Bulider 建立Flex新站点!
- 关于建立多个SqlDataAdapter类实例的两种方法
- C++中建立对象间消息连接的一种系统方法
- CVS服务器建立和权限配置方法
- 需求调研步骤和方法
- 建立、读取、存贮INI文件的方法《二》