资源预览内容
第1页 / 共132页
第2页 / 共132页
第3页 / 共132页
第4页 / 共132页
第5页 / 共132页
第6页 / 共132页
第7页 / 共132页
第8页 / 共132页
第9页 / 共132页
第10页 / 共132页
亲,该文档总共132页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实用软件工程实用软件工程第第7 7章章 软件建模软件建模n 软件开发的主要工作是软件开发的主要工作是软件需求软件需求和和软件设计软件设计,软件需求和软件设计的关键问题是软件需求和软件设计的关键问题是软件建模软件建模。n 建模的工具很多,最时尚的是建模的工具很多,最时尚的是UMLUML提供的九种提供的九种图:类图、对象图、用例图、时序图、协作图、图:类图、对象图、用例图、时序图、协作图、状态图、活动图、构件图和实施图,重点是建立状态图、活动图、构件图和实施图,重点是建立系统的系统的用例图用例图、时序图时序图和和类图类图。n UMLUML不是不是一种建模方法,而只是一种建模语言一种建模方法,而只是一种建模语言或建模工具而已。或建模工具而已。本章导读本章导读: :n提出了提出了“业务模型、功能模型、数据模型业务模型、功能模型、数据模型” 三三个模型的建模思想与建模方法,以及这三个模型个模型的建模思想与建模方法,以及这三个模型的描述方式与的描述方式与“用例图、时序图和类图用例图、时序图和类图”之间的之间的关系。关系。n论述论述数据库设计数据库设计的的理论、方法、技巧与艺术理论、方法、技巧与艺术,即,即数据模型的设计方法与艺术。数据模型的设计方法与艺术。软件建模软件建模 要求了解要求了解 (1(1)软件建模的概念)软件建模的概念 (2) UML(2) UML的建模思想的建模思想 要求理解要求理解 (1(1)UMLUML的支撑环境的支撑环境RoseRose (2 (2)UMLUML建模思想的优缺点建模思想的优缺点 (3(3)三个模型建模思想的优缺点)三个模型建模思想的优缺点 要求掌握要求掌握 (1(1)业务模型的概念及表示方式)业务模型的概念及表示方式 (2(2)功能模型的概念及表示方式)功能模型的概念及表示方式 (3(3)数据模型的概念及表示方式)数据模型的概念及表示方式 (4)(4)数据库设计的数据库设计的方法、技巧方法、技巧7.1 三个模型的建模思想三个模型的建模思想7.1.1 三个模型概论三个模型概论 功能模型功能模型FM(Function Model) 描述系统能做什么,即对系统的功能、性能、描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。接口和界面进行定义。 业务模型业务模型OM(Operation Model) 对系统的操作流程进行定义对系统的操作流程进行定义(怎么做怎么做)。 数据模型数据模型DM(Data Model) 对系统的数据结构进行定义对系统的数据结构进行定义(数据怎么组织数据怎么组织) 。三个模型概论三个模型概论(续续) 数据模型:数据模型:Power Designer、ER win、Oracle Designer 或或Class Diagram 功能模型:功能点列表、功能模型:功能点列表、Use Case Diagram 业务模型:自然语言加上流程图、业务模型:自然语言加上流程图、Sequence Diagram 1、建模时机:、建模时机:功能模型和业务模型(需求分析时建模)功能模型和业务模型(需求分析时建模)数据模型数据模型 (软件设计)(软件设计)2、三个模型建模工具、三个模型建模工具思考:三种模型建模思想是否适合系统软件建思考:三种模型建模思想是否适合系统软件建模?模? 问题:问题: 1. 1. 操作系统的三个模型是什么?操作系统的三个模型是什么? 2. 2. 编译系统的三个模型是什么?编译系统的三个模型是什么? 3. 3. 解释系统的三个模型是什么?解释系统的三个模型是什么? 7.1.2 业务模型业务模型 系统的业务流程图加上相应的业务规则。这里的业系统的业务流程图加上相应的业务规则。这里的业务流程图,是指企业在务流程图,是指企业在业务流程再造业务流程再造BPR(Business Process Reengineering)之后形成的)之后形成的操作流程和业务操作流程和业务规则规则。 1、业务模型、业务模型: 2、业务模型的范围、业务模型的范围: 企业的组织结构,部门职责及岗位(或角色)职企业的组织结构,部门职责及岗位(或角色)职能,岗位操作流程,岗位业务规则,每个流程的输能,岗位操作流程,岗位业务规则,每个流程的输入、响应、输出。入、响应、输出。 3、业务模型的描述方法、业务模型的描述方法: 组织结构图,岗位(或角色)职能表,业务流程图加组织结构图,岗位(或角色)职能表,业务流程图加上业务规则说明。上业务规则说明。4、业务流程图、业务流程图 业务流程图也可以用业务流程图也可以用业务操作步骤业务操作步骤来描述,还可来描述,还可以用类似于以用类似于程序流程图程序流程图的图形来表达。的图形来表达。 在在UML中,完整的业务模型由用例图、时序图、交中,完整的业务模型由用例图、时序图、交互图、状态图、活动图来表述。但是,互图、状态图、活动图来表述。但是,时序图时序图在表述中在表述中起到核心作用。起到核心作用。 业务模型有时称为动态模型或操作模型。业务模型有时称为动态模型或操作模型。 业务模型的作用,既是功能模型设计的基础,又是用业务模型的作用,既是功能模型设计的基础,又是用户操作手册编写的依据。户操作手册编写的依据。n取取100元人民币元人民币的时序图的时序图 n 取取100100元人民币的交互图元人民币的交互图 n“开户开户”的的活动活动图图 7.1.3 功能模型功能模型1、功能模型是什么?、功能模型是什么? 系统功能需求列表系统功能需求列表(用户角度)(用户角度) 系统内部功能模块(功能部件)的有机排列系统内部功能模块(功能部件)的有机排列 和组合和组合 (设计者)(设计者) 系统的用例的集合系统的用例的集合 (ROSEROSE) 用户操作手册用户操作手册 (产品)(产品) 功能菜单功能菜单 (操作菜单)(操作菜单) 总之,功能模型描述系统总之,功能模型描述系统能做什么能做什么,是,是系统所有功能的集合,具体表现在系统的系统所有功能的集合,具体表现在系统的功能、性能、接口和界面上。功能、性能、接口和界面上。2、功能模型的表示方法、功能模型的表示方法系统功能需求列表系统功能需求列表性能需求列表性能需求列表接口需求列表接口需求列表界面需求列表界面需求列表UMLUML规定采用规定采用用例图用例图用例图用例图来描述功能模型。来描述功能模型。3、功能模型的设计实现方法、功能模型的设计实现方法 将相同的功能归并,设计为构件或组件将相同的功能归并,设计为构件或组件(部件),将不同的功能设计成模块,然后用(部件),将不同的功能设计成模块,然后用面向对象的语言将这些离散的部件或模块组装面向对象的语言将这些离散的部件或模块组装起来,形成一个完整的系统,供最终用户使用。起来,形成一个完整的系统,供最终用户使用。4、功能模型的特点、功能模型的特点 功能模型既是功能模型既是动态的动态的动态的动态的,又是,又是静态的静态的静态的静态的。因为有。因为有的功能与系统运行的时间序列有关。的功能与系统运行的时间序列有关。5、功能模型的作用、功能模型的作用 功能模型既是数据库和数据结构设计的功能模型既是数据库和数据结构设计的基基基基础础础础,又是功能模块(功能部件)设计、编程实,又是功能模块(功能部件)设计、编程实现和测试验收的依据。现和测试验收的依据。7.1.4 数据模型数据模型 企业信息系统中的企业信息系统中的数据模型数据模型数据模型数据模型,是指它的,是指它的E-RE-RE-RE-R图及图及图及图及其相应的数据字典其相应的数据字典其相应的数据字典其相应的数据字典。这里的数据字典,包括实体字。这里的数据字典,包括实体字典、属性字典、关系字典。典、属性字典、关系字典。 1、数据模型是什么?、数据模型是什么? 数据模型分为数据模型分为概念数据模型概念数据模型概念数据模型概念数据模型CDMCDMCDMCDM和和物理数据模型物理数据模型物理数据模型物理数据模型PDMPDMPDMPDM两个层次两个层次两个层次两个层次。CDMCDM就是就是数据库的逻辑设计数据库的逻辑设计数据库的逻辑设计数据库的逻辑设计,即,即E-RE-R图。图。PDMPDM就是就是数据库的物理设计数据库的物理设计数据库的物理设计数据库的物理设计,即物理表。,即物理表。 2、数据模型的表示方法、数据模型的表示方法 系统的概念数据模型系统的概念数据模型CDMCDM和物理数据模和物理数据模型型PDMPDM,加上相应的表结构。,加上相应的表结构。 UMLUML规定,用规定,用类图加上对象图类图加上对象图来表述数来表述数据模型。在据模型。在UMLUML的实现工具的实现工具Rose 2003Rose 2003中,中,可以建立系统的数据模型。可以建立系统的数据模型。3、数据模型的特点、数据模型的特点 数据模型本身是数据模型本身是静态静态的,但是在设的,但是在设计者心目中,应该尽量将它计者心目中,应该尽量将它由静态变成由静态变成动态动态。 设计者可以想象数据(或记录)在设计者可以想象数据(或记录)在相关表上的流动过程,即增加、删除、相关表上的流动过程,即增加、删除、修改、传输与处理等。修改、传输与处理等。图书销图书销售系售系售系售系统统数据数据数据数据库库CDMCDM7.2 数据模型设计概论数据模型设计概论 “ “以不变应万变以不变应万变”,就是当用户的功能需求发,就是当用户的功能需求发生某些变化时,数据库设计的框架不需要做任何生某些变化时,数据库设计的框架不需要做任何改动,就可以适应用户的功能需求。改动,就可以适应用户的功能需求。1、什么是好的数据模型?、什么是好的数据模型? (1) (1) 一是满足一是满足功能功能需求需求 (2) (2) 二是满足二是满足性能性能需求需求 (3) (3) 三是该模型能长期三是该模型能长期稳定稳定,尽量做到,尽量做到“以不以不变应万变变应万变”。 数据库设计的难易程度取决于两个要素:数据库设计的难易程度取决于两个要素: (1). “(1). “数据关系的复杂程度数据关系的复杂程度” (2). “(2). “数据量的大小数据量的大小”。2、数据库设计的主要工作、数据库设计的主要工作 设计数据库的表,表的结构就是数据的存储设计数据库的表,表的结构就是数据的存储结构。结构。7.2.1 数据库与数据库管理系统数据库与数据库管理系统 管理用户的数据库及其在数据库上的各种操作,管理用户的数据库及其在数据库上的各种操作,以及数据库对外的各种接口。以及数据库对外的各种接口。1、两者区别?、两者区别? 数据库和数据库管理系统是有区别的,前者数据库和数据库管理系统是有区别的,前者是是应用软件应用软件,后者是,后者是系统软件系统软件。2、数据库管理系统基本功能、数据库管理系统基本功能 关系数据库管理系统关系数据库管理系统RDBMSRDBMS自带许多编程语句自带许多编程语句(命令),这些语句可分为三大类:(命令),这些语句可分为三大类:数据定义语言数据定义语言数据定义语言数据定义语言DDLDDLDDLDDL,如,如CREATECREATE,ALTERALTER,DROPDROP;数据操纵语言数据操纵语言数据操纵语言数据操纵语言DMLDMLDMLDML,如,如SELECTSELECT,UPDATEUPDATE,INSERTINSERT,DELETEDELETE;数据控制数据控制数据控制数据控制语言语言语言语言DCLDCLDCLDCL,如分支语句、循环语句。,如分支语句、循环语句。 7.2.2 数据库的组成数据库的组成 数据库是表的集合,表由字段组成,表中存数据库是表的集合,表由字段组成,表中存放着记录。由于记录的数据可以是原始数据、信放着记录。由于记录的数据可以是原始数据、信息代码数据、统计数据和临时数据息代码数据、统计数据和临时数据4 4种,所以又可种,所以又可将表划分为将表划分为基本表基本表、代码表代码表、中间表中间表和和临时表临时表4 4种。种。 1 1、组成、组成、组成、组成 一个数据库由一台数据库服务器、一个数据库管一个数据库由一台数据库服务器、一个数据库管理系统理系统DBMSDBMS、一个数据库管理员、一个数据库管理员DBADBA、多张表(每张、多张表(每张表中有许多条记录)、表上的视图和索引、许多用表中有许多条记录)、表上的视图和索引、许多用户和角色所组成。户和角色所组成。2 2、表的划分、表的划分、表的划分、表的划分 原始数据和信息代码数据,统称为基础数据。原始数据和信息代码数据,统称为基础数据。本表和代码表,统称为本表和代码表,统称为基表基表。 数据库设计主要是指数据库设计主要是指基本表设计基本表设计,包括代码表、,包括代码表、中间表、临时表和视图的设计,基本表的设计较难,中间表、临时表和视图的设计,基本表的设计较难,代码表、中间表、临时表和视图的设计较易。代码表、中间表、临时表和视图的设计较易。3 3、数据库的表、数据库的表、数据库的表、数据库的表 (1)(1)存放原始数据的表,称为存放原始数据的表,称为基本表基本表。 (2)(2)存放信息代码数据的表,称为存放信息代码数据的表,称为代码表代码表。 (3)(3)存放统计数据的表,称为存放统计数据的表,称为中间表中间表。 (4)(4)存放临时数据的表,称为存放临时数据的表,称为临时表临时表。 基本表与中间表、临时表不同基本表与中间表、临时表不同, ,有如下有如下4 4个特性:个特性:(1 1)原子性原子性。基本表中的字段是不可再分解的。基本表中的字段是不可再分解的。(2 2)原始性原始性。基本表中的记录是原始数据的记录。基本表中的记录是原始数据的记录。(3 3)演绎性演绎性。由基本表与代码表中的数据,可以派生。由基本表与代码表中的数据,可以派生出所有的输出数据。出所有的输出数据。(4 4)稳定性稳定性。基本表的结构是相对稳定的,表中的记。基本表的结构是相对稳定的,表中的记录是需要长期保存的。录是需要长期保存的。4 4、基本表的性质、基本表的性质、基本表的性质、基本表的性质 基表和中间表由基表和中间表由DBADBA维护,临时表由维护,临时表由程序员程序员自己自己用程序自动维护。用程序自动维护。5 5、其他表、其他表、其他表、其他表 代码表代码表又称为又称为“数据字典数据字典”,它是存放单位代,它是存放单位代码、物资代码、人员代码、科目代码等等码、物资代码、人员代码、科目代码等等信息编码信息编码的表。的表。 中间表中间表是存放统计数据的表,它是为数据仓库、输是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的。出报表或查询结果而设计的。 临时表临时表是程序员个人设计的,存放临时记录,为个是程序员个人设计的,存放临时记录,为个人所用。人所用。 视图视图是一种是一种虚表虚表,它依赖数据源的实表而,它依赖数据源的实表而存在,这些实表是基本表和代码表。存在,这些实表是基本表和代码表。6 6、数据库视图、数据库视图、数据库视图、数据库视图 视图视图是供程序员使用数据库的一个窗口,是是供程序员使用数据库的一个窗口,是基表数据综合的一种形式基表数据综合的一种形式, , 是数据处理的一种方是数据处理的一种方法,是用户数据保密的一种手段。法,是用户数据保密的一种手段。7.2.3 数据库设计的内容与步骤数据库设计的内容与步骤(三项内容三项内容,十大步骤十大步骤)数据库需求分析的步骤:数据库需求分析的步骤: (1) 收集收集系统所有的原始单据系统所有的原始单据(信息源产生的数据信息源产生的数据)和和统计报表统计报表 (2) 弄清弄清楚两者之间的关系,写明输出数据项中的数楚两者之间的关系,写明输出数据项中的数据来源与算法据来源与算法 (3) 若原始单据若原始单据覆盖覆盖了所有需要的业务内容,并且能了所有需要的业务内容,并且能满足满足所有统计报表的输出数据要求,则需求分析完毕所有统计报表的输出数据要求,则需求分析完毕 (4) 反之继续分析,重复步骤反之继续分析,重复步骤(1)-(3)。 1、数据库需求分析、数据库需求分析【例例7-17-1】 “ “姓名,性别,身高,体重,民族姓名,性别,身高,体重,民族”这一组相关这一组相关元数据的集合,就组成人这个实体。而元数据的集合,就组成人这个实体。而“张三,男,张三,男,1.81.8,9090,汉族,汉族” ” 就是人这个实体的一次表现,它不是一个实体,就是人这个实体的一次表现,它不是一个实体,而是一个实例。如果将而是一个实例。如果将“体重体重”改为改为“毛重毛重”,则,则“姓名,姓名,性别,身高,性别,身高,毛重毛重,民族,民族”就不是一个实体,因为人不能用就不是一个实体,因为人不能用毛重、净重描述,猪和货物可以用毛重、净重描述。毛重、净重描述,猪和货物可以用毛重、净重描述。 概念设计的概念设计的特点特点是:与具体的数据库管理系统和网络系是:与具体的数据库管理系统和网络系统统无关,无关,它就是数据库的逻辑设计它就是数据库的逻辑设计。2、数据库概念设计、数据库概念设计 数据库概念设计数据库概念设计是指设计出数据库的概念数据模型是指设计出数据库的概念数据模型CDMCDM,以及相应的数据字典(,以及相应的数据字典(DDDD)。)。 所谓实体,就是一组相关元数据的所谓实体,就是一组相关元数据的集合集合。所谓实例,就。所谓实例,就是实体的一次是实体的一次表现表现。数据库物理设计的数据库物理设计的方法方法是:是: (1 1)确定确定关系数据库管理系统平台,即选定具体的关系数据库管理系统平台,即选定具体的RDBMSRDBMS。 (2 2)利用数据库提供的命令和语句,)利用数据库提供的命令和语句,建立建立表、索引、表、索引、触发器、存储过程、视图等。触发器、存储过程、视图等。 (3 3)列出表与功能模块之间的)列出表与功能模块之间的关系矩阵关系矩阵,便于详细,便于详细设计。设计。 3、数据库物理设计、数据库物理设计 数据库数据库物理设计物理设计是指设计出数据库的是指设计出数据库的物理数据物理数据模型模型PDMPDM,包括数据库服务器,包括数据库服务器物理空间物理空间上的表、字上的表、字段、索引、视图、储存过程、触发器,以及相应段、索引、视图、储存过程、触发器,以及相应的数据字典。的数据字典。数据库设计十大步骤数据库设计十大步骤设计步骤设计步骤设设 计计 内内 容容第第1 1步步 将原始单据分类整理,理清原始单据与输出报表之间的数将原始单据分类整理,理清原始单据与输出报表之间的数据转换关系及算法,澄清一切不确定的问题据转换关系及算法,澄清一切不确定的问题第第2 2步步 从原始单据出发,划分出各个实体,给实体命名,初步分从原始单据出发,划分出各个实体,给实体命名,初步分配属性,标识出主键或外键,理清实体之间的关系配属性,标识出主键或外键,理清实体之间的关系第第3 3步步 进行数据库概念数据模型进行数据库概念数据模型CDMCDM设计,画出实体关系图设计,画出实体关系图ERDERD,定义完整性约束定义完整性约束第第4 4步步 进行数据库物理数据模型进行数据库物理数据模型PDMPDM设计,将概念数据模型设计,将概念数据模型CDMCDM转转换为物理数据模型换为物理数据模型PDMPDM第第5 5步步 在特定的数据库管理系统上定义表空间,物理建表与建索在特定的数据库管理系统上定义表空间,物理建表与建索引引第第6 6步步 定义触发器与存储过程定义触发器与存储过程第第7 7步步 定义视图,说明数据库与应用程序之间的关系定义视图,说明数据库与应用程序之间的关系第第8 8步步 数据库加载测试数据库加载测试第第9 9步步 数据库性能优化数据库性能优化第第1010步步 数据库设计评审数据库设计评审7.3 数据库设计的理论与方法数据库设计的理论与方法 原始单据与实体之间关系原始单据与实体之间关系在一般是在一般是一对一一对一的关系,即一的关系,即一张原始单据对应且只对应一个实体。在特殊情况下,它张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系。们可能是一对多或多对一的关系。这里的实体可以理解这里的实体可以理解为基本表为基本表。 【例例7-27-2】 在人力资源信息系统中,一份员工履历对应在人力资源信息系统中,一份员工履历对应三个基本表:员工基本情况表、社会关系表、工作简历三个基本表:员工基本情况表、社会关系表、工作简历表。这就是表。这就是“一张原始单据对应多个实体一张原始单据对应多个实体”的典型例子。的典型例子。 1、数据库原始单据与实体之间的关系、数据库原始单据与实体之间的关系 实体在哪儿呢?实体在哪儿呢?即如何即如何发现、找到、抽象发现、找到、抽象出实体呢?其出实体呢?其实,实体就蕴涵在原始单据中!实,实体就蕴涵在原始单据中! 主张主键主张主键原子化原子化,即,即只用一个字段做主键只用一个字段做主键。其。其中中外键必须对应主键外键必须对应主键。 2、主键与外键、主键与外键 一个实体不能既无主键一个实体不能既无主键 (PK)(PK),又无外键,又无外键 (FK)(FK)。在。在E-RE-R图中图中, , 处于叶子部位的实体处于叶子部位的实体, , 可以不定义可以不定义主键主键(因为它无子孙)(因为它无子孙), , 但必须要有但必须要有外键外键(因为它有父亲)(因为它有父亲)。 PKPK是供程序员使用的表间连接工具,可以是一个无是供程序员使用的表间连接工具,可以是一个无物理意义的数字串物理意义的数字串, , 由程序自动加由程序自动加1 1来实现;也可以是来实现;也可以是有物理意义的字段名或字段名的组合,不过前者比后有物理意义的字段名或字段名的组合,不过前者比后者好。者好。 第三范式:第三范式:3NF3NF是对字段是对字段冗余性的约束冗余性的约束,即任何字段不,即任何字段不能由其他字段派生出来,它要求字段没有冗余。能由其他字段派生出来,它要求字段没有冗余。3、通俗地理解范式理论、通俗地理解范式理论 第一范式:第一范式:1NF1NF是对属性的是对属性的原子性约束原子性约束,要求属性具,要求属性具有原子性,不可再分解。有原子性,不可再分解。 第二范式:第二范式:2NF2NF是对记录的是对记录的惟一性约束惟一性约束,要求记录有,要求记录有惟一标识,即实体的惟一性。惟一标识,即实体的惟一性。 在数据库设计时,作为惟一性标志的主键,最在数据库设计时,作为惟一性标志的主键,最好是一个字段,而不是组合字段,这就是好是一个字段,而不是组合字段,这就是主键的原主键的原子性。子性。 数据库设计规范化理论的实质数据库设计规范化理论的实质,就是引导并帮助设,就是引导并帮助设计人员实现计人员实现“实体、属性、主键的原子化实体、属性、主键的原子化”! 其他更高级的范式:其他更高级的范式:BCFBCF、4NF4NF、5NF5NF等各级范式,等各级范式,研究的内容是解决研究的内容是解决实体本身的原子性实体本身的原子性问题。问题。 “ “只要实现了属性、主键、实体三者的原子化,只要实现了属性、主键、实体三者的原子化,就从根本上符合了各级范式的要求了就从根本上符合了各级范式的要求了”。这就是。这就是范范式理论的实质式理论的实质! 降低范式降低范式就是增加字段,允许冗余。常称就是增加字段,允许冗余。常称“降低降低范式的过程范式的过程”为为“反规范化设计过程反规范化设计过程”。没有冗余的数据库设计没有冗余的数据库设计 为了提高运行效率,必须降低范式标准,适当保为了提高运行效率,必须降低范式标准,适当保留冗余数据,这就是用留冗余数据,这就是用空间换时间空间换时间。具体做法是:。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。准的工作放到物理数据模型设计时考虑。低级冗余和高级冗余低级冗余和高级冗余 主键与外键在多表中的重复出现主键与外键在多表中的重复出现, , 不属于数据冗余。不属于数据冗余。非键字非键字段的重复出现段的重复出现, , 才是数据冗余,而且是一种低级冗余,即重复才是数据冗余,而且是一种低级冗余,即重复性的冗余性的冗余。高级冗余高级冗余不是字段的重复出现,而是字段的派生出不是字段的重复出现,而是字段的派生出现。现。 低级冗余会导致数据的不一致!低级冗余会导致数据的不一致! 【例例7-37-3】 有一张存放商品的基本表,如有一张存放商品的基本表,如P163P163表表7-37-3所示。所示。“金额金额”这个字段的存在,表明该表的设计不满足第三范这个字段的存在,表明该表的设计不满足第三范式,因为式,因为“金额金额”可以由可以由“单价单价”乘以乘以“数量数量”得到,说得到,说明明“金额金额”是冗余字段是冗余字段。但是,增加。但是,增加“金额金额”这个冗余字这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的做段,可以提高查询统计的速度,这就是以空间换时间的做法。法。 在在Rose 2002Rose 2002中,规定列有两种类型:中,规定列有两种类型:数据列和计算列数据列和计算列。“金额金额”这样的列被称为这样的列被称为“计算列计算列”,而,而“单价单价”和和“数量数量”这样的列被称为这样的列被称为“数据列数据列”。4数据库设计中的两大窍门数据库设计中的两大窍门 窍门之二:窍门之二:要建立稳定的数据模型,就要掌握要建立稳定的数据模型,就要掌握“以不以不变应万变变应万变”的设计技巧,这个技巧就是的设计技巧,这个技巧就是“列变行列变行”。 站在站在ITIT企业的数据库开发上讲,数据库设计的企业的数据库开发上讲,数据库设计的核心窍门只有两个:核心窍门只有两个: 窍门之一:窍门之一:如果两个实体如果两个实体( (或多个实体或多个实体) )之间的关之间的关系非常复杂,那么它们之间就可能存在系非常复杂,那么它们之间就可能存在多对多的多对多的关系关系。对于这种情况,我们不但要善于认别它,。对于这种情况,我们不但要善于认别它,而且要正确处理它而且要正确处理它( (增加增加第三者第三者) )。 增加第三者的增加第三者的实质实质,是,是解决关系的原子化问题解决关系的原子化问题。 在现实生活中,到处存在多对多的关系。例如:老师在现实生活中,到处存在多对多的关系。例如:老师与课程、学生与课程、读者与图书、旅客与客房、司机与与课程、学生与课程、读者与图书、旅客与客房、司机与车辆、船舶与货物、飞机与机场、运动员与项目等。车辆、船舶与货物、飞机与机场、运动员与项目等。增加第三者增加第三者增加第三者增加第三者 寻找寻找“笛卡尔积的子集笛卡尔积的子集”的窍门,就是的窍门,就是“要善于要善于认别认别与与正确正确处理处理实体之间的多对多关系实体之间的多对多关系”。 两者之间两者之间增加第三个实体增加第三个实体。这样,原来一个多对多的关。这样,原来一个多对多的关系,现在变为两个一对多的关系。系,现在变为两个一对多的关系。 剩下的问题是:要将原来两个实体的剩下的问题是:要将原来两个实体的共同属性共同属性分配到第分配到第三个实体中去,还要将原来两个实体的主键当作第三个实三个实体中去,还要将原来两个实体的主键当作第三个实体的外键。这里的第三个实体,就是体的外键。这里的第三个实体,就是“笛卡尔积的笛卡尔积的子集子集”,它是一个,它是一个实体实体,对应一张,对应一张基本表基本表。多对多关系多对多关系多对多关系多对多关系 具体做法,请看具体做法,请看P165P165【例例7-77-7】 学生成绩单的管理,学生成绩单的管理,就是一个就是一个“列变行列变行”的例子。的例子。 列变行列变行列变行列变行 所谓所谓“列变行列变行”,就是将第一个表中的某些列,变,就是将第一个表中的某些列,变为第二个表中的某些行。将原来设计不科学的一个表,为第二个表中的某些行。将原来设计不科学的一个表,变为现在设计很科学的两个表:其中一个为主表或父变为现在设计很科学的两个表:其中一个为主表或父表,另一个为从表或子表表,另一个为从表或子表( (又称明细表又称明细表) ),通过主键与,通过主键与外键,两个表进行连接,共同完成相关的操作。外键,两个表进行连接,共同完成相关的操作。(1). “列变行列变行”之前的表结构之前的表结构 学号学号姓名姓名性性别电话地址地址EmailEmail课程程1 1成成绩1 1 课程程3030成成绩303005010501张晶晶女女英英语8888 数据数据库858505020502刘路刘路男男英英语9898 数据数据库909005030503 (2). “列变行列变行”之后的表结构之后的表结构 学号学号姓名姓名性性别电话地址地址EmailEmail05010501张晶晶女女05020502刘路刘路男男05030503学号学号课程程成成绩05010501英英语888805010501哲学哲学7878050105010501050105010501数据数据库858505010501日日语909005010501法法语9696列变行之后的输出方案列变行之后的输出方案-建立建立“学生成绩表学生成绩表”视图视图 Create View 学生学生成成绩表表 As Select 学生表学生表 .学号,姓名,课程名称,成绩学号,姓名,课程名称,成绩 From 学生表学生表 ,成成绩表表 Where 学生表学生表 .学号学号=成成绩表表.学号学号“列变行列变行”的实质的实质 “ “列变行列变行”的的实质是解决实体的原子性问题实质是解决实体的原子性问题。 在现实生活中,到处存在需要在现实生活中,到处存在需要“列变行列变行”的例子,因的例子,因为到处有主表与明细表的关系。例如:部门与员工、员为到处有主表与明细表的关系。例如:部门与员工、员工基本情况与个人简历、月基本工资与月补贴、订单头工基本情况与个人简历、月基本工资与月补贴、订单头与订单体等等。与订单体等等。 “列变行列变行”之后的表结构设计中的优点,就是之后的表结构设计中的优点,就是“实事实事求是求是”。第一,在四年级之前,他们没有学完三十门课。第一,在四年级之前,他们没有学完三十门课程,这种设计也不会浪费一点存储空间;第二,到四年程,这种设计也不会浪费一点存储空间;第二,到四年级时,即使个别学生修了两个学位,共计有三十多门课级时,即使个别学生修了两个学位,共计有三十多门课程,这种设计也不需要改动表结构,达到了程,这种设计也不需要改动表结构,达到了“以不变应以不变应万变万变”的目的。的目的。5西瓜理论和西瓜方法西瓜理论和西瓜方法 【定义定义7-57-5】 所谓所谓西瓜方法西瓜方法,就是在数据库设计时,就是在数据库设计时,如果将属性比作芝麻,将主要实体比作大西瓜,将如果将属性比作芝麻,将主要实体比作大西瓜,将次要实体比作小西瓜,那么在用次要实体比作小西瓜,那么在用CASECASE工具设计工具设计E-RE-R图时,应先画出大西瓜,后画出小西瓜,用西瓜统图时,应先画出大西瓜,后画出小西瓜,用西瓜统帅芝麻,用大西瓜统帅小西瓜。帅芝麻,用大西瓜统帅小西瓜。 【定义定义7-47-4】 所谓所谓西瓜理论西瓜理论,就是在,就是在数据库分析时数据库分析时,如果将属性比作芝麻,将主要实体比作大西瓜,将如果将属性比作芝麻,将主要实体比作大西瓜,将次要实体比作小西瓜,那么芝麻必须围绕西瓜转,次要实体比作小西瓜,那么芝麻必须围绕西瓜转,小西瓜必须围绕大西瓜转。小西瓜必须围绕大西瓜转。 “ “西瓜理论和西瓜方法西瓜理论和西瓜方法”排除了排除了“属性主导型属性主导型”方法,主张方法,主张“实体主导型实体主导型”方法。方法。 “实体主导型实体主导型”方法只是提出了方法只是提出了“以实体统帅属性以实体统帅属性”的思想,在数据库分析与设计时,首先要抓住实体,的思想,在数据库分析与设计时,首先要抓住实体,从实体出发去寻找、发现、确定属性,而不要采取从实体出发去寻找、发现、确定属性,而不要采取本末倒置的本末倒置的“属性主导型属性主导型”方法,即从属性出发,方法,即从属性出发,通过属性的分解与归约,来寻找、发现、确定实体。通过属性的分解与归约,来寻找、发现、确定实体。 (1) (1) 在数据库需求分析和设计时,一方面要以实体去在数据库需求分析和设计时,一方面要以实体去统帅属性,另一方面要以主要实体去统帅次要实体;统帅属性,另一方面要以主要实体去统帅次要实体; (2) (2) 不但要使属性围绕实体转,而且要使次要实体围不但要使属性围绕实体转,而且要使次要实体围绕主要实体转;绕主要实体转; (3) (3) 在任何信息系统的全局在任何信息系统的全局E-RE-R图中,其主要实体的图中,其主要实体的数目都是数目都是有限的有限的,数据库分析与设计的任务,就是善,数据库分析与设计的任务,就是善于发现、捕获主要实体,并用主要实体去组织、规划、于发现、捕获主要实体,并用主要实体去组织、规划、设计全局设计全局E-RE-R图。图。 “西瓜理论和西瓜方法西瓜理论和西瓜方法”除了继承除了继承“实体主实体主导型导型”方法的特点之外,方法的特点之外,还更进一步地提出还更进一步地提出:画画E-R图的步骤图的步骤 在西瓜理论和西瓜方法的指导下,利用在西瓜理论和西瓜方法的指导下,利用CASECASE工具工具画画E-RE-R图图的步骤的步骤是:是: (1) (1) 先画主要实体先画主要实体 ( (抓大西瓜抓大西瓜) ) ,用大西瓜来统帅中小,用大西瓜来统帅中小西瓜;西瓜; (2) (2) 再画次要实体再画次要实体 ( (抓中西瓜抓中西瓜) ) ,使中西瓜围绕大西瓜,使中西瓜围绕大西瓜转转 ; (3) (3) 后画代码实体后画代码实体 ( (抓小西瓜抓小西瓜) ) ,使小西瓜围绕中西瓜,使小西瓜围绕中西瓜转;转; (4) (4) 最后分配或补充实体的属性最后分配或补充实体的属性 ( (捡芝麻捡芝麻) ) ; (5) (5) 画关系,调整画关系,调整E-RE-R图的部署,检查数据库设计是否实图的部署,检查数据库设计是否实现了现了四化四化( (属性、实体、主键、关系的原子化属性、实体、主键、关系的原子化) )。6完整性约束表现在三个方面完整性约束表现在三个方面(3 3)用户定义完整性用户定义完整性:它是用户单位规定的一些业务规则,:它是用户单位规定的一些业务规则,这些业务规则有时用存储过程实现,有时用触发器来实这些业务规则有时用存储过程实现,有时用触发器来实现,有时用定义域(对字段的取值范围进行定义)来实现,有时用定义域(对字段的取值范围进行定义)来实现。业务规则反映用户单位的业务逻辑,必须在数据库现。业务规则反映用户单位的业务逻辑,必须在数据库需求分析时彻底搞清。需求分析时彻底搞清。(1 1)实体实体完整性:每个实体必须有唯一性标志,这个唯完整性:每个实体必须有唯一性标志,这个唯一性标志是用实体的主键(一性标志是用实体的主键(PKPK)来实现。)来实现。(2 2)参照参照完整性。就是由主表到从表的方向是参照关系,完整性。就是由主表到从表的方向是参照关系,由从表到主表的方向是依赖关系。参照和依赖关系,是由从表到主表的方向是依赖关系。参照和依赖关系,是通过主键(通过主键(PKPK)、外键()、外键(FKFK)和触发器来加以实现。)和触发器来加以实现。关关系数据库的本质系数据库的本质,就是分析、研究、处理主表与从表的,就是分析、研究、处理主表与从表的关系,即主键与外键的关系。关系,即主键与外键的关系。7防止数据库设计打补丁的方法是防止数据库设计打补丁的方法是“三少原则三少原则” (3 3)一个表中的字段个数越少越好一个表中的字段个数越少越好。只有字段的个数少,才。只有字段的个数少,才能说明系统中不存在数据重复,且很少有数据冗余,学会能说明系统中不存在数据重复,且很少有数据冗余,学会“列变行列变行”,这样就防止了将子表中的字段拉入到主表中去,这样就防止了将子表中的字段拉入到主表中去,在主表中留下许多空余的字段。在主表中留下许多空余的字段。 (1 1)一个数据库中表的个数越少越好一个数据库中表的个数越少越好。只有表的个数少了,。只有表的个数少了,才能说明系统的才能说明系统的E-RE-R图少而精,去掉了重复的、多余的实体,图少而精,去掉了重复的、多余的实体,形成了对客观世界的高度抽象。形成了对客观世界的高度抽象。 (2 2)一个表中)一个表中组合主键的字段个数越少越好组合主键的字段个数越少越好,最好是用一个,最好是用一个字段做主键,即字段做主键,即主键原子化主键原子化。因为主键的作用,一是建立主。因为主键的作用,一是建立主键索引,二是作为从表的外键,所以组合主键的字段个数少键索引,二是作为从表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间。了,不仅节省了运行时间,而且节省了索引存储空间。7.4 信息系统建模实例分析信息系统建模实例分析 省级新华书店信息系统建模案例省级新华书店信息系统建模案例 以上面三个主要实体为中心,并将所有的次要实体统帅以上面三个主要实体为中心,并将所有的次要实体统帅起来,使所有的次要实体都以这三个实体为中心,形成一起来,使所有的次要实体都以这三个实体为中心,形成一个完整的新华书店信息系统数据模型。个完整的新华书店信息系统数据模型。1数据模型分析数据模型分析从全局实体关系图中,从全局实体关系图中,CDMCDM有以下有以下3 3个主要实体:个主要实体: (1 1)图书:它存放了新华书店)图书:它存放了新华书店历年历年来发行的全部图书信息。来发行的全部图书信息。 (2 2)仓库图书:它存放了储运中心)仓库图书:它存放了储运中心仓库现有仓库现有的全部图书信息。的全部图书信息。 (3 3)门市图书:它存放了书城或连锁)门市图书:它存放了书城或连锁书店各自现有书店各自现有的全部图的全部图书信息。书信息。 数据模型分析数据模型分析(续续) 每个实体的名称、主键、属性在每个实体的名称、主键、属性在CDMCDM图上显示得很清楚。图上显示得很清楚。根据概念数据模型根据概念数据模型CDMCDM,利用利用Power Designer Data Power Designer Data ArchitectArchitect工具,就可自动生成物理数据模型工具,就可自动生成物理数据模型PDMPDM。 在省级新华书店信息系统的概念数据模型在省级新华书店信息系统的概念数据模型CDMCDM中,与中,与“图书图书”直接关联的实体有:出版社、仓库图书、书城入库、直接关联的实体有:出版社、仓库图书、书城入库、订购单体、书城订单、图书警戒线。订购单体、书城订单、图书警戒线。 与与“仓库图书仓库图书”直接关联的实体有:现货批销、付退直接关联的实体有:现货批销、付退货、图书报废、入库单、仓库货位、市外调拨、内部迁移、货、图书报废、入库单、仓库货位、市外调拨、内部迁移、内退入库、市内配送、图书。内退入库、市内配送、图书。 与与“门市图书门市图书”直接关联的实体有:市内配送、内退入直接关联的实体有:市内配送、内退入库、销售记录、书店、书城入库。库、销售记录、书店、书城入库。2功能模型分析功能模型分析 (1)(1)“输入内容输入内容”是用户对信息系统的录入。是用户对信息系统的录入。 (2)(2)“输出内容输出内容”是信息系统对外的显示或打印。是信息系统对外的显示或打印。 (3)(3)“系统响应系统响应”是系统对用户操作的处理过程。是系统对用户操作的处理过程。 省级新华书店信息系统的功能模型具有省级新华书店信息系统的功能模型具有1616项项功能,功能,用用“功能点列表功能点列表”的方式来描述和分析,现将分析结的方式来描述和分析,现将分析结果列在表果列在表7 7-7-7之中。之中。3业务模型分析业务模型分析 步骤步骤1 1:制作订购单操作流程。:制作订购单操作流程。 步骤步骤2 2:制作订单操作流程。:制作订单操作流程。 步骤步骤3 3:图书期货入库操作流程。:图书期货入库操作流程。 步骤步骤4 4:图书配送操作流程。:图书配送操作流程。 步骤步骤5 5:图书销售操作流程。:图书销售操作流程。 步骤步骤6 6:图书退货操作流程。:图书退货操作流程。 步骤步骤7 7:图书调拨操作流程。:图书调拨操作流程。 步骤步骤8 8:图书现货批销操作流程。:图书现货批销操作流程。 步骤步骤9 9:查询统计。:查询统计。 步骤步骤1010:制作记账凭证。:制作记账凭证。 业务模型属于业务模型属于动态模型动态模型,本实例分析中用,本实例分析中用“业务操业务操作步骤作步骤”来描述。省级新华书店信息系统的业务模型来描述。省级新华书店信息系统的业务模型由下列由下列1010大步骤组成。大步骤组成。4分析结论分析结论 在此基础上,再对新华书店信息系统进行在此基础上,再对新华书店信息系统进行概要设计概要设计和详细设计和详细设计。 当详细设计评审通过(不符合项为零)后,再利用当详细设计评审通过(不符合项为零)后,再利用Power BuilderPower Builder,DelphiDelphi,C+C+等语言进行实现,加上面等语言进行实现,加上面向功能的测试和面向过程的管理,系统按计划(进度、向功能的测试和面向过程的管理,系统按计划(进度、成本、质量)实现。成本、质量)实现。 对上述对上述“三个模型三个模型”研究分析之后,完成了研究分析之后,完成了需求需求分析的主要工作量分析的主要工作量及概要设计中的主要内容及概要设计中的主要内容数据数据库设计库设计。7.5 三个模型建模思想总结三个模型建模思想总结 (2 2)符合客观事物的发展规律。)符合客观事物的发展规律。 做什么?系统做什么?系统“功能模型功能模型”的任务。的任务。 怎么做?系统怎么做?系统“业务模型业务模型”的任务。的任务。 在在什什么么地地方方做做?做做事事的的原原材材料料在在什什么么地地方方?做做完完后后的的产产品品放放到到什什么么地地方方?这这就就是是系系统统“数数据据模模型型”的的任任务。务。1三个模型建模思想的优点三个模型建模思想的优点(1 1)符合中国人的心理:)符合中国人的心理: 系统有什么功能?对应系统的系统有什么功能?对应系统的“功能模型功能模型”。 系统怎么操作?对应系统的系统怎么操作?对应系统的“业务模型业务模型”。 系统的数据怎样组织?对应系统的系统的数据怎样组织?对应系统的“数据模型数据模型”。(4 4)符合)符合“简单、方便、直观简单、方便、直观”的原则。的原则。 “功能模型功能模型”看得见:菜单、界面、报表。看得见:菜单、界面、报表。 “业业务务模模型型”摸摸得得着着:操操作作说说明明书书、业业务务流流程程图图、业务规则。业务规则。 “数据模型数据模型”听得懂:实体、属性、关系、表、字听得懂:实体、属性、关系、表、字段、记录、数据字典、原始数据、统计数据、临时数段、记录、数据字典、原始数据、统计数据、临时数据。据。(3 3)符合将复杂问题简单化的哲学思想。)符合将复杂问题简单化的哲学思想。 项目经理主要负责项目经理主要负责 “三抓三抓”:抓系统的:抓系统的“功能模型功能模型”。,抓系统的,抓系统的“业务模型业务模型”,抓系统的,抓系统的“数据模型数据模型”。 (6(6)三个模型的建模思想既适合应用软件建模,又适合)三个模型的建模思想既适合应用软件建模,又适合系统软件建模。系统软件建模。 (5(5)符符合合节节省省成成本本降降低低费费用用的的经经济济效效益益目目标标。中中国国软软件件的的开开发发方方法法与与文文档档标标准准,不不应应该该完完全全与与发发达达国国家家相相同同,而结合中国的国情来做。而结合中国的国情来做。 (3 3)只能覆盖需求分析和设计两个阶段只能覆盖需求分析和设计两个阶段,不能覆盖整个软件,不能覆盖整个软件生存周期。业务模型和功能模型主要适合在软件需求阶段建生存周期。业务模型和功能模型主要适合在软件需求阶段建模,数据模型主要适合在软件设计阶段建模。模,数据模型主要适合在软件设计阶段建模。2三个模型建模思想的缺点三个模型建模思想的缺点 (1 1)功能模型表述不规范功能模型表述不规范:目前,功能模型还只能用:目前,功能模型还只能用“功功能点列表、性能点列表、接口列表能点列表、性能点列表、接口列表”这三个列表来表示,这三个列表来表示,或者用或者用UMLUML的用例图和用况规约来描述,其他还没有找到更的用例图和用况规约来描述,其他还没有找到更好的方法。好的方法。(2 2)业务模型表述不规范业务模型表述不规范:目前,业务模型还只能从:目前,业务模型还只能从“业务业务操作步骤、业务流程图、用户操作手册操作步骤、业务流程图、用户操作手册”这三个方面来表这三个方面来表示。在示。在UMLUML中,完整的业务模型由用例图、时序图、交互图、中,完整的业务模型由用例图、时序图、交互图、状态图、活动图来表述,其他还没有找到更好的办法。状态图、活动图来表述,其他还没有找到更好的办法。(2 2)数据模型能否可以用类图来创建呢数据模型能否可以用类图来创建呢?不可以。?不可以。 UMLUML中新增加了数据模型的语法,其实现工具中新增加了数据模型的语法,其实现工具Rose 2003Rose 2003支持支持这一功能。在这一功能。在Rose 2003Rose 2003的逻辑视图中,可以创建表以及表中的逻辑视图中,可以创建表以及表中的字段、约束、主键、外键、关系、索引、触发器和存储过的字段、约束、主键、外键、关系、索引、触发器和存储过程。这样,就将程。这样,就将RoseRose的建模方式与三个模型的建模思想结合的建模方式与三个模型的建模思想结合在一起。在一起。3值得思考的问题值得思考的问题(1 1)业务模型和功能模型业务模型和功能模型描述方法的改进和提高,是三个模型描述方法的改进和提高,是三个模型建模思想的发展方向。建模思想的发展方向。UMLUML只是一种建模语言,不是一种方只是一种建模语言,不是一种方法论,它独立于过程,不包括过程中的方法与步骤。方法论法论,它独立于过程,不包括过程中的方法与步骤。方法论与语言工具是不同的,三个模型的建模思想属于方法论,与语言工具是不同的,三个模型的建模思想属于方法论,UMLUML属语言工具。属语言工具。 (4 4)“三个模型三个模型”的思想,加上的思想,加上“五个面向五个面向”的实施理论,的实施理论,就构成了一个完整的方法论,该方法论不仅适合信息系统建就构成了一个完整的方法论,该方法论不仅适合信息系统建设,而且也适合其他应用软件和系统软件的建设。设,而且也适合其他应用软件和系统软件的建设。 (3 3)三个模型应以)三个模型应以数据模型为中心数据模型为中心,以,以业务模型业务模型和和功能模功能模型型为两个基本点。尤其是在企业信息系统的分析、设计和为两个基本点。尤其是在企业信息系统的分析、设计和实现中,因为关系型数据库管理系统实现中,因为关系型数据库管理系统RDBMSRDBMS仍然是其支撑平仍然是其支撑平台,所以应该这样去理解三个模型的建模思想。台,所以应该这样去理解三个模型的建模思想。*7.6 UML的建模思想的建模思想7.6.1 UML对软件工程的重大影响对软件工程的重大影响 UMLUML不是一种建模思想,只是一种建模语言或工具。不是一种建模思想,只是一种建模语言或工具。 UMLUML和和 RoseRose的组合已构成了一种新的软件建模思想的组合已构成了一种新的软件建模思想和开发方式,势必会对软件工程的发展与创新产生重和开发方式,势必会对软件工程的发展与创新产生重大影响,这种影响将主要表现在如下四个方面:大影响,这种影响将主要表现在如下四个方面: UMLUML是是Rational RoseRational Rose的的理论基础理论基础,Rational RoseRational Rose是是UMLUML的建模的建模实现途径实现途径,即,即RoseRose是是UMLUML的实现工具。的实现工具。UMLUML对软件工程的重大影响对软件工程的重大影响(1 1)软软件件生生存存周周期期:UMLUML用用统统一一的的软软件件开开发发生生存存周周期期 RUP RUP 来替代原有的软件生存周期。来替代原有的软件生存周期。(2 2)软软件件建建模模方方式式:UMLUML用用可可视视化化的的语语言言实实现现软软件件整整个个生生存周期各个阶段的建模。存周期各个阶段的建模。(3 3)软软件件文文档档规规范范:正正向向工工程程和和逆逆向向工工程程的的文文档档全全部部由由UMLUML建模工具自动产生。建模工具自动产生。(4 4)软软件件人人员员分分工工:UMLUML使使得得分分析析、设设计计、实实现现、维维护护的的岗位界线逐渐趋向模糊。岗位界线逐渐趋向模糊。7.6.2 UML的概念模型的概念模型 (1)(1)面向对象的基本面向对象的基本“构造块构造块”( (积木块积木块) ) (2)(2)支支配配这这些些构构造造块块放放在在一一起起建建模模的的“规规则则”( (建建模的模的粘合剂粘合剂) ) (3)(3)运运用用于于整整个个UMLUML的的“公公共共机机制制”( (模模型型的的图图纸纸说说明明 ) ) 使使用用UMLUML的的关关键键是是用用它它来来简简明明、准准确确地地建建立立模模型型。为为了理解了理解UMLUML的建模元素,关键是要学习它的三个要素:的建模元素,关键是要学习它的三个要素:第第1 1种构造块:事物。种构造块:事物。 事事物物是是构构造造块块,UMLUML中中有有4 4种种事事物物,它它们们分分别别是是结结构构事物、行为事物、分组事物和注释事物。事物、行为事物、分组事物和注释事物。 (1 1)结构事物结构事物(Structural ThingStructural Thing),它是),它是UMLUML模型中模型中的静态元素,包括类、接口、协作、用况、主动类、构的静态元素,包括类、接口、协作、用况、主动类、构件和节点件和节点7 7种元素。种元素。1 1UMLUML的的“构造块构造块” UMLUML中有中有3 3种基本构造块,分别是种基本构造块,分别是“事物事物”、“关系关系”和和“图图”,它们是,它们是UMLUML建模中的积木元素或积木组合建模中的积木元素或积木组合体。体。 (4 4)注释事物注释事物(AnnotationalAnnotational Thing Thing),它是),它是UMLUML模型的模型的解释元素,主要是注解(解释元素,主要是注解(NoteNote),用一个包含注解内容),用一个包含注解内容的右上角为折角的矩形表示。的右上角为折角的矩形表示。 (2 2)行为事物行为事物(Behavioral ThingBehavioral Thing),它是),它是UMLUML模型中模型中的动态元素,包括交互和状态机的动态元素,包括交互和状态机2 2种元素。种元素。 (3 3)分组事物分组事物(Grouping ThingGrouping Thing),它是),它是UMLUML模型的组模型的组织元素,主要是包(织元素,主要是包(PackagePackage),用一个包含名称的左),用一个包含名称的左上角带有一个小矩形的大矩形表示。上角带有一个小矩形的大矩形表示。UML UML 事物事物 结构事物结构事物1)Class(类)类)2)Interface(接口)接口)q描述了一个类或构件的服描述了一个类或构件的服务(操作)集。务(操作)集。ISpelling 类名类名属性属性操作操作open( )close( )move( )display( )originsizeWindow3)Collaboration(协作)协作)q合作完成某个特定任务的一组类及其关联的合作完成某个特定任务的一组类及其关联的集合,用于对集合,用于对Use case的实现建模。的实现建模。4)Use Case(用例)用例)q表示系统想要实现的行为,不关心这些行为表示系统想要实现的行为,不关心这些行为是怎样实现的。是怎样实现的。吃饭吃饭吃炒菜吃炒菜用例用例协作协作泛化泛化5)Active Class(主动类)主动类) 与一般类相同,但它至少拥有一个进程或线程,与一般类相同,但它至少拥有一个进程或线程,故能够启动控制活动。故能够启动控制活动。6)Component(构件)构件)q系统中物理的、可替系统中物理的、可替 代的部件。代的部件。Orderform.java suspend()flush()EventManager7)Node(节点)节点)q系统在运行时存在的物理元素。系统在运行时存在的物理元素。数据库数据库服务器服务器应用应用服务器服务器课程课程管理管理成绩成绩管理管理UMLUML事物事物 行为事物行为事物8)Interaction(交互)交互)q由在特定环境中共同完成一定任务的一组对由在特定环境中共同完成一定任务的一组对象之间交换的消息组成。象之间交换的消息组成。p:Person:CompanyAssign(development)消息消息有名对象有名对象匿名对象匿名对象9)State Machine(状态机)状态机)q描述了一个对象或一个交互在生存期内响应描述了一个对象或一个交互在生存期内响应事件所经历的状态序列。事件所经历的状态序列。initializingcommandidleKey pressFinishedExitUMLUML事物事物 分组事物分组事物10)package(包)包)用户接口用户接口包包业务对象业务对象包包数据库包数据库包应用包应用包UMLUML事物事物 注释事物注释事物11)Note(注释)注释)q依附于一个元素或一组元素之上,对其进行依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。约束或解释的简单符号。CashAccountpresentValue()See policy8-5-96.doc for details about these algorithms. 关关系系也也是是构构造造块块,UMLUML中中有有5 5种种关关系系,利利用用这这些些关关系系可可以设计出结构良好的模型。以设计出结构良好的模型。 (1)(1)依赖依赖(DependencyDependency) (2)(2)关联关联(AssociationAssociation) (3)(3)泛化泛化(GeneralizationGeneralization) (4)(4)实现实现(RealizationRealization) 第第2 2种构造块:关系。种构造块:关系。UML RelationshipsUML Relationships(关系)关系)1)Dependency(依赖)依赖)q两个事物之间的语义关系,其中一个事物发两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。生变化会影响另一个事物的语义。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator2)Association (关联)关联)q一种描述一组对象之间连接的结构关系。一种描述一组对象之间连接的结构关系。q聚合是一种特殊类型的关联,描述了整体和聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。部分间的结构关系。3)Generalization (泛化)泛化)q一种一般化一种一般化特殊化的关系。特殊化的关系。employeremployee0.1*EventConsoleWindowDialogBoxControl依赖依赖泛化泛化关联关联 Windowopen()close()move()display()handleEvent()4)Realization(实现)实现)q类之间的语义关系,其中的一个类元指定了类之间的语义关系,其中的一个类元指定了由另一个类保证执行的契约。由另一个类保证执行的契约。q两种情况出现实现关系:两种情况出现实现关系: (1)在接口和实现它们的类或构件之间;)在接口和实现它们的类或构件之间; (2)在用例和它们的协作之间。)在用例和它们的协作之间。Place OrderOrderManagement用例用例协作协作实现实现 (1)(1)类图类图(Class DiagramClass Diagram) (2)(2)对象图(对象图(Object DiagramObject Diagram) (3)(3)用况图用况图(Use Case DiagramUse Case Diagram) (4)(4)顺序图顺序图(Sequence DiagramSequence Diagram) (5)(5)协作图(协作图(Collaboration diagramCollaboration diagram) (6)(6)状态图(状态图(StatechartStatechart Diagram Diagram) (7)(7)活动图(活动图(Activity DiagramActivity Diagram) (8)(8)构件图(构件图(Component DiagramComponent Diagram) (9)(9)实施图(实施图(Deployment DiagramDeployment Diagram) 第第3 3种构造块:图种构造块:图。图也是构造块,图也是构造块,UMLUML中有中有9 9种图。种图。类类属性属性操作操作对象对象属性属性操作操作接口接口用例用例构件构件节点节点状态机状态机包包注释注释依赖依赖关联关联泛化泛化实现实现聚合聚合复合复合 模型中主要的图形元素模型中主要的图形元素UML模型的图形模型的图形Use CaseDiagramsUse CaseDiagrams用例图用例图用例图用例图ScenarioDiagramsScenarioDiagrams协作图协作图StateDiagramsStateDiagrams构件图构件图ComponentDiagramsComponentDiagrams部署图部署图StateDiagramsStateDiagrams对象图对象图ScenarioDiagramsScenarioDiagrams状态图状态图Use CaseDiagramsUse CaseDiagrams顺序图顺序图StateDiagramsStateDiagrams类图类图类图类图活动图活动图模型模型1. 1. 用例图用例图(use case diagram)(use case diagram)n用例图展现了一组用例、参与者以及它们间的关用例图展现了一组用例、参与者以及它们间的关系。系。n可以用用例图描述系统的静态使用情况,它可以用用例图描述系统的静态使用情况,它定义定义了系统的功能需求,但这是从系统的外部观看系了系统的功能需求,但这是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。统功能,并不描述系统内部对功能的具体实现。n在对系统行为组织和建模方面,用例图是相当重在对系统行为组织和建模方面,用例图是相当重要的。要的。查询商品价格查询商品价格顾客顾客库存系统库存系统售货员售货员总账系统总账系统查询商品信息查询商品信息预售商品预售商品网上销售商品网上销售商品打折销售商品打折销售商品出售商品出售商品查询商品成分查询商品成分商品查询商品查询售货管理售货管理说说 明明顾客持所欲购买的商品至收银台结帐,店员刷商品条码后,顾客持所欲购买的商品至收银台结帐,店员刷商品条码后,根据数量及单价计算总金额。商品售出后,商品编码、单根据数量及单价计算总金额。商品售出后,商品编码、单价、总金额存入电脑,数据记载到价、总金额存入电脑,数据记载到“库存系统库存系统”和和“总帐总帐系统系统”中(含预售、网络购物、打折销售)。中(含预售、网络购物、打折销售)。事件流事件流基本事件流基本事件流刷刷条码条码结算金额结算金额付款付款扣库存扣库存记入日记账记入日记账打印发打印发票票异常事件流异常事件流 第一异常事件流第一异常事件流顾客结帐后更换商品顾客结帐后更换商品 第二异常事件流第二异常事件流顾客将已售商品退回顾客将已售商品退回特殊需求特殊需求 第一个特殊需求第一个特殊需求允许退货允许退货, ,并将退回商品加回库存并将退回商品加回库存 第二个特殊需求第二个特殊需求记录顾客的性别记录顾客的性别, ,年龄年龄, , 供后续统计分析用供后续统计分析用用例规格说明:销售商品用例规格说明:销售商品用例规格说明:销售商品用例规格说明:销售商品2. 2. 类图类图 (class diagram)(class diagram)n类图展示了一组类、接口和协作及它们间的关系。类图展示了一组类、接口和协作及它们间的关系。n类图没有时间概念,是概念数据模型(如类图没有时间概念,是概念数据模型(如E-R图)图)的一种延伸。的一种延伸。n用类图说明系统的静态结构视图,包含主动类的用类图说明系统的静态结构视图,包含主动类的类图类图专注于系统的静态处理视图。专注于系统的静态处理视图。n系统可有多个类图,单个类图仅表达了系统的一系统可有多个类图,单个类图仅表达了系统的一个方面。要在高层给出类的主要职责,在低层给个方面。要在高层给出类的主要职责,在低层给出类的属性和操作。出类的属性和操作。n n类图是从系统构成的角度来描述正在开发的系统。类图是从系统构成的角度来描述正在开发的系统。类图是从系统构成的角度来描述正在开发的系统。类图是从系统构成的角度来描述正在开发的系统。n n类的表示类的表示类的表示类的表示类的名称类的名称类的名称类的名称属性属性属性属性属性属性属性属性 : : : :数据类型数据类型数据类型数据类型属性属性属性属性 : : : :数据类型数据类型数据类型数据类型 = = = = 初值初值初值初值操作操作操作操作操作操作操作操作( ( ( (参数表参数表参数表参数表):):):):结果类型结果类型结果类型结果类型限定关联限定关联限定关联限定关联类类1 1类类2限定词限定词关联名称关联名称角色角色1角色角色2聚合、引用和重复度聚合、引用和重复度聚合、引用和重复度聚合、引用和重复度0.*0.10.*整体整体 类名类名部分部分 类名类名2部分部分 类名类名1 10.1聚合聚合简单引用简单引用复合聚合复合聚合双方捆绑双方捆绑关联名关联名类类1类类2关联类名关联类名属性属性操作操作角色角色1角色角色2关联类关联类泛化关系泛化关系超类超类子类子类1子类子类2操作操作抽象类抽象类操作操作雇员雇员雇员标识雇员标识: char姓名姓名: char职务职务: char工资工资: long项目项目项目标识项目标识项目名称项目名称参与参与开始日期开始日期结束日期结束日期任务任务任务标识任务标识任务名称任务名称任务费用任务费用技能技能技能标识技能标识技能名称技能名称团队团队团队标识团队标识承担工作承担工作部门部门部门标识部门标识部门名称部门名称客户客户客户标识客户标识客户名称客户名称客户地址客户地址客户电话客户电话客户代表客户代表0.*0.*10.*1.*10.*1.*1.*110.*11.*0.*1.*3. 3. 对象图对象图 (object diagram)(object diagram)n对象图展示了一组对象及它们间的关系。对象图展示了一组对象及它们间的关系。n用对象图说明类图中类的对象实例的数据结构和用对象图说明类图中类的对象实例的数据结构和静态快照,即在某一时刻,一组对象的状态及其静态快照,即在某一时刻,一组对象的状态及其关系。关系。n对象图表达了系统的静态设计视图或静态过程视对象图表达了系统的静态设计视图或静态过程视图,除了现实和原型的方面的因素外,它与类图图,除了现实和原型的方面的因素外,它与类图作用是相同的。作用是相同的。c: 公司公司名称名称=“=“研发研发”d2: 部门部门d1: 部门部门名称名称=“=“销售销售”d3: 部门部门名称名称=“=“打印机销售打印机销售” : 联系信息联系信息地址地址=“清华产业楼清华产业楼411”p: 人员人员姓名姓名=“=“郑人杰郑人杰”雇员标识雇员标识= =6037职务职务=“=“销售副总销售副总”经理经理连接连接 link属性值属性值对象对象匿名对象匿名对象4. 4. 包图包图 (package diagram)(package diagram)n严格地讲,包图只是表明包及其之间的依赖的类严格地讲,包图只是表明包及其之间的依赖的类图。图。n包是对模型中涉及的元素分组所得的结果,是具包是对模型中涉及的元素分组所得的结果,是具有特定语义的一个子集,必须保证低耦合、高内有特定语义的一个子集,必须保证低耦合、高内聚。聚。n广义地讲,包可以包含类、接口、构件、节点、广义地讲,包可以包含类、接口、构件、节点、协作、用例等,还可以内嵌其他子包。协作、用例等,还可以内嵌其他子包。n包之间的访问权限通过包之间的访问权限通过输出输出(Export)和和导入导入(Import)设置,虚箭头设置,虚箭头 从源包到目标包。从源包到目标包。5. 5. 构件图构件图(component diagram)(component diagram)n构件图展现了一组构件之间的组织和依赖,用于构件图展现了一组构件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库等的系统对源代码、可执行的发布、物理数据库等的系统建模。建模。n构件图表示系统的静态实现视图。构件图表示系统的静态实现视图。CourseCourseOfferingStudentProfessorCourse.dllPeople.dll课程课程用户用户Register.exeBilling.exe课表系统课表系统6. 6. 部署图部署图 (Deployment Diagram)(Deployment Diagram)n部署图展现了对部署图展现了对运行时处理节点运行时处理节点以及其中以及其中构件的构件的配置配置。每一节点代表一个计算单元。每一节点代表一个计算单元。n它描述系统硬件的物理拓扑结构它描述系统硬件的物理拓扑结构(包括网络布局包括网络布局和构件在网络上的位置和构件在网络上的位置),以及在此结构上执行,以及在此结构上执行的软件(即运行时软构件在节点中的分布情况)。的软件(即运行时软构件在节点中的分布情况)。n用部署图说明系统结构的静态环境视图,即说明用部署图说明系统结构的静态环境视图,即说明分布、交付和安装的物理系统。分布、交付和安装的物理系统。 注册注册服务器服务器数据库数据库宿舍宿舍客户机客户机图书馆图书馆客户机客户机主排课主排课客户机客户机8. 8. 活动图活动图 (Activity Diagram)(Activity Diagram)n活动图是一种特殊的状态图,描述活动图是一种特殊的状态图,描述需要做的活动需要做的活动、执行这些活动的顺序执行这些活动的顺序(多为并行的)以及(多为并行的)以及工作流工作流(完成工作所需要的步骤)。它对于系统的功能(完成工作所需要的步骤)。它对于系统的功能建模特别重要,强调对象间的控制流程。建模特别重要,强调对象间的控制流程。n高层活动图用于表示任务高层活动图用于表示任务,即用于分析用例,理,即用于分析用例,理解涉及多个用例的工作流、多线程及并行,显示解涉及多个用例的工作流、多线程及并行,显示相互联系的行为整体,还可用于业务过程建模,相互联系的行为整体,还可用于业务过程建模,对系统的功能建模。对系统的功能建模。低层活动图用于表示类的方低层活动图用于表示类的方法法。按订单供货按订单供货接订单接订单开发票开发票结清订单结清订单快速交付快速交付正常交付正常交付收款收款起点起点分叉分叉活动活动分支分支合并合并汇合汇合结束结束 紧急订单紧急订单 非非紧急订单紧急订单变迁变迁9. 9. 状态图状态图 ( (StatechartStatechart Diagram) Diagram)n状态图展示了一个特定对象的所有可能状态以及状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。由于各种事件的发生而引起的状态间的转移。n一个状态图描述了一个状态机,用状态图说明系一个状态图描述了一个状态机,用状态图说明系统的动态视图。统的动态视图。n状态图对于接口、类或协作的行为建模尤为重要,状态图对于接口、类或协作的行为建模尤为重要,可用它描述用例实例的生存期。可用它描述用例实例的生存期。projectproject对象的状态图对象的状态图注册注册预售预售开发开发系统系统分析分析系统系统设计设计程序程序编码编码软件软件测试测试系统系统部署部署单元测试与调试单元测试与调试维护维护新新projectproject完完开始开始结束结束10. 10. 交互图交互图 (interaction diagram)(interaction diagram)n交互图展现了按一定的目的进行的一种交互,它交互图展现了按一定的目的进行的一种交互,它由在一个上下文中的由在一个上下文中的一组对象一组对象及及它们之间交互的它们之间交互的信息信息组成。组成。n交互图可用于描述一个用例的行为。顺序图交互图可用于描述一个用例的行为。顺序图 和和协作图都是交互图,它们可以相互转换。协作图都是交互图,它们可以相互转换。n如果希望查看如果希望查看单个对象跨用例单个对象跨用例的行为的行为, ,要使用要使用状状态图。态图。n如果希望查看如果希望查看跨用例跨线程跨用例跨线程的行为,要使用的行为,要使用活动活动图图。 10-1 10-1 顺序图顺序图 (Sequence Diagram(Sequence Diagram ) )n顺序图展现了顺序图展现了一组对象一组对象和由这组对象和由这组对象收发的消息收发的消息,用于用于按时间顺序对控制流建模按时间顺序对控制流建模。n对象表述为虚垂线顶端的矩形小框。对象表述为虚垂线顶端的矩形小框。n垂线是对象的垂线是对象的生命线生命线,说明对象的生命。,说明对象的生命。n生命线之间的箭头表示生命线之间的箭头表示消息消息。消息出现的次序自。消息出现的次序自上而下。上而下。n消息箭头可以回到同一条生命线,指明消息箭头可以回到同一条生命线,指明自调用自调用,即对象发给自己的消息。即对象发给自己的消息。n用用可表示条件,用可表示条件,用* *表明迭代依据。表明迭代依据。移动电话系统的用例图移动电话系统的用例图移动用户移动用户移动网络移动网络与与对方通话对方通话下载图符下载图符下载铃声下载铃声管理电话本管理电话本移动电话系统的顺序图移动电话系统的顺序图 : 移动用户移动用户 : 移动按键移动按键 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站按按数字键数字键显示按键号码显示按键号码按按发送键发送键连接基站连接基站建立连接建立连接连接成功连接成功显示连接成功显示连接成功10-2 10-2 协作图协作图(Collaboration Diagram)(Collaboration Diagram)n协作图展现了协作图展现了一组对象一组对象,这组对象之间的连接这组对象之间的连接以以及及这组对象收发的消息这组对象收发的消息。n它强调收发消息的对象的结构组织,按组织结构它强调收发消息的对象的结构组织,按组织结构对控制流建模。对控制流建模。n协作图中的协作协作图中的协作不是参与者与系统之间的交互不是参与者与系统之间的交互,而是而是系统内部某一个用例中各个对象之间信息传系统内部某一个用例中各个对象之间信息传递的方式递的方式。n消息上所附消息上所附编号编号指明执行顺序。指明执行顺序。 移动电话系统的协作图移动电话系统的协作图 : 移动用户移动用户1: 按数字键按数字键3: 按发送键按发送键 : 移动按键移动按键2: 显示按键号码显示按键号码 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站4: 连接基站连接基站5: 建立连接建立连接6: 连接成功连接成功7: 显示连接成功显示连接成功顺序图与协作图的比较顺序图与协作图的比较n顺序图和协作图都是表示在某一个用例中一条执顺序图和协作图都是表示在某一个用例中一条执行路径上的执行情况,表明这时各个对象之间的行路径上的执行情况,表明这时各个对象之间的交互。交互。n顺序图强调顺序图强调顺序顺序,易于看出其中出现的时间的顺,易于看出其中出现的时间的顺序。协作图可以利用序。协作图可以利用布局布局指明各个对象是如何连指明各个对象是如何连接的。接的。n对于有多个可供选择的情况,使用交互图太不方对于有多个可供选择的情况,使用交互图太不方便,可用便,可用 CRC卡片代替,描述卡片代替,描述 “类类职责职责协作协作”。 为了将为了将UMLUML的构造块有机地组装在一起形成一个结的构造块有机地组装在一起形成一个结构良好的模型,构良好的模型,UMLUML需要描述下列事物的需要描述下列事物的5 5种语义规则。种语义规则。 (1) (1) 命名:命名:为事物、关系和图命名为事物、关系和图命名 (2) (2) 范围:范围:给一个名字以特定含义的语境,即范围给一个名字以特定含义的语境,即范围 (3) (3) 可见性:可见性:怎样使用或看见名字,即可见性怎样使用或看见名字,即可见性 (4) (4) 完整性:完整性:事物如何正确、一致地相互联系事物如何正确、一致地相互联系 (5) (5) 执行:执行:运行或模拟动态模型的含义是什么,即执行运行或模拟动态模型的含义是什么,即执行2 2UMLUML运用构造块的运用构造块的“规则规则”UMLUML的规则的规则n命名命名 (names)q为事物、关系和图起名。如:为事物、关系和图起名。如:“student”、“PersonInfo:student”n作用域作用域 (scope)q把施于类而不是施于实例的把施于类而不是施于实例的操作操作和和属性属性说明说明为类作用域。相当于为类作用域。相当于C+静态变量。静态变量。订单订单getNumbergetNewNumber类类作用域作用域加下划线者加下划线者实例作用域实例作用域n可见性可见性 (visibility)q 对类中任一属性或操作定义存取权限。对类中任一属性或操作定义存取权限。q 加前缀:加前缀:+ (公用公用)、- - (私用私用)、# (保护保护)n完整性完整性 (integrity)q 保持事物之间联系的正确性和一致性。保持事物之间联系的正确性和一致性。q 单个模型是不充分的,应建立互补的连锁的单个模型是不充分的,应建立互补的连锁的模型,从整体描述软件的蓝图。模型,从整体描述软件的蓝图。q 保持模型与现实的一致性。保持模型与现实的一致性。n执行执行 (execution)q 通过运行或模拟动态模型,才能真正理解和通过运行或模拟动态模型,才能真正理解和领会程序代码的含义是什么。领会程序代码的含义是什么。3 3UMLUML的的“公共机制公共机制” UMLUML有有4 4种在整个语言中一致应用的机制,使得该语种在整个语言中一致应用的机制,使得该语言变得较为简单。言变得较为简单。 (1)(1)规格说明规格说明 (2)(2)修饰修饰 (3)(3)通用划分通用划分 (4)(4)扩展机制扩展机制UMLUML的公共机制的公共机制n规格说明规格说明 (specifications)q UML的的图形表示用来对系统进行可视化,图形表示用来对系统进行可视化,UML的的规格说明用来描述系统的细节。规格说明用来描述系统的细节。q 规格说明提供了对构造块的语法和语义的文规格说明提供了对构造块的语法和语义的文字叙述。字叙述。q 在增量式建模中,可有两种方式:在增量式建模中,可有两种方式:先画图,再增加语义到它的规格说明中;先画图,再增加语义到它的规格说明中;先创建规格说明,或对已完成的系统执行逆向先创建规格说明,或对已完成的系统执行逆向工程,创建这些规格说明的投影图。工程,创建这些规格说明的投影图。n修饰修饰 (adornments)q 对类的描述可以包含其他细节,表示为图形或对类的描述可以包含其他细节,表示为图形或文字修饰。文字修饰。q UML表示中每一个元素都有一个基本符号,表示中每一个元素都有一个基本符号,可将各种修饰细节加到这个符号上。可将各种修饰细节加到这个符号上。q 例如,下图是一个带修饰的类。例如,下图是一个带修饰的类。Transaction+ + execute()+ + roolback()# # priority()- - timestamp()公用操作公用操作保护操作保护操作私用操作私用操作n通用划分通用划分 (common divisions)对类和对象的划分对类和对象的划分接口和实现的分离接口和实现的分离 Spellingwizard.dllIUnknownISpellingCustomernameaddressphoneYin:Customer :Customerpressman有名有名Customer对象对象匿名匿名Customer对象对象由规格说明指定为由规格说明指定为一个一个Customer对象对象接口接口是契约,是契约,实现实现是契约是契约的一种实施。的一种实施。n扩展机制扩展机制 (extended mechanisms)约束约束 (Constraint)q 约束可增加新的语义或改变已有的规则。约束可增加新的语义或改变已有的规则。q 约束用约束用表明,放在相关元素附近。表明,放在相关元素附近。妻子妻子丈夫丈夫或或安全码安全码性别性别 : 女女, 男男个人个人经理经理银行存款银行存款公司公司0.10.1简单约束简单约束多个元素多个元素间的约束间的约束 衍型衍型 (Stereotype)q 如果发现需要一个模型构造,它如果发现需要一个模型构造,它不在不在UML中中但但又又与与UML的某一成分类似的某一成分类似,可以将它看作,可以将它看作UML构造的一个衍型。构造的一个衍型。q 例如,例如,UML接口是一个类,它只有一些不具有接口是一个类,它只有一些不具有方法实现和属性的公用操作,它是一种特别的方法实现和属性的公用操作,它是一种特别的类,可以定义它为类的衍型。类,可以定义它为类的衍型。q 可以把衍型看作一种可以把衍型看作一种元类型元类型,它创建了一种与,它创建了一种与UML元模型中的新类相当的等价物。元模型中的新类相当的等价物。q 当对节点或类建立衍型时,是当对节点或类建立衍型时,是通过创建类似于通过创建类似于已有构造块的新构造块来扩展已有构造块的新构造块来扩展 UML。q 在在UML表示法中可以用表示法中可以用表示衍型,将它表示衍型,将它放在其他元素名字上方。放在其他元素名字上方。q 衍型的别名是构造型。衍型的别名是构造型。EventQueue version = 3.2author = Yin add()remove()flush()exceptionOverflowOrderedStereotypeTagged ValueConstraint 标记值(标记值(Tagged Value)q 用标记值可为用标记值可为UML的的事物增加新的特性。事物增加新的特性。q 标记值与类的属性不同标记值与类的属性不同。标记值可以看作是元标记值可以看作是元数据,它的值应用到元素本身,而不是它的实数据,它的值应用到元素本身,而不是它的实例。例。q 标记值常用来详述与代码生成或配置管理有关标记值常用来详述与代码生成或配置管理有关的特性。如指定特定类映射到的编程语言,或的特性。如指定特定类映射到的编程语言,或描述一个构件的作者或版本。描述一个构件的作者或版本。q标记值用标记值用(标记标记) = (值值)表示。表示。7.6.3 UML的建模思想的建模思想 由于大型软件系统的复杂性,很难用一个模型、一由于大型软件系统的复杂性,很难用一个模型、一种图、一张视图来描述清楚,所以在种图、一张视图来描述清楚,所以在UMLUML中出现了多个模中出现了多个模型、图和视图。型、图和视图。1 1UMLUML的宏观建模思想的宏观建模思想 UMLUML的宏观建模思想,表现为它的的宏观建模思想,表现为它的“9 9个模型、个模型、9 9种图、种图、5 5张视图张视图”。 模型是对现实系统的一种简化与抽象,不同的模型模型是对现实系统的一种简化与抽象,不同的模型是对同一个现实系统的不同映射;图是目标系统的投影;是对同一个现实系统的不同映射;图是目标系统的投影;视图是体系结构的投影。视图是体系结构的投影。 5 5张张视视图图:用用况况视视图图、设设计计视视图图、进进程程视视图图、实实现现视视图和实施视图。图和实施视图。 9 9个个模模型型:业业务务模模型型、领领域域模模型型、用用况况模模型型(也也称称需需求求模模型型)、分分析析模模型型、设设计计模模型型、过过程程模模型型、部部署署模模型(也称实施模型)、实现模型和测试模型。型(也称实施模型)、实现模型和测试模型。 9 9种种图图:类类图图、对对象象图图、用用况况图图、顺顺序序图图、协协作作图图、状态图、活动图、构件图、部署图(也称实施图)。状态图、活动图、构件图、部署图(也称实施图)。2 2UMLUML的微观建模思想的微观建模思想 UMLUML的的微微观观建建模模思思想想,表表现现为为它它的的基基本本结结构构模模型型、高高级级结结构构模模型型、基基本本行行为为模模型型、高高级级行行为为模模型型、体体系系结结构构模模型型5 5个个方方面面上上,共共计计有有6666个个微微观观建建模模。如如表表7-117-11所所示。示。 作为系统分析、设计、实现、实施的建模工具,作为系统分析、设计、实现、实施的建模工具,UMLUML提供的模型、图、视图和提供的模型、图、视图和6666种微观建模方式。种微观建模方式。7.7 本本 章章 小小 结结 UMLUML提供了一大堆建模的可视化图形符号,并没有提供了一大堆建模的可视化图形符号,并没有告诉读者,应该在什么时候、用什么方法、去建立什告诉读者,应该在什么时候、用什么方法、去建立什么模型。么模型。 方法与语言的不同方法与语言的不同:方法不但包括模型,而且包括:方法不但包括模型,而且包括建模过程和建模结果。方法要告诉读者在建模过程中做建模过程和建模结果。方法要告诉读者在建模过程中做什么、怎么做、什么时候做、为什么做、做的过程中要什么、怎么做、什么时候做、为什么做、做的过程中要注意什么。注意什么。 信息系统的建模,其信息系统的建模,其核心核心是数据建模,即建立系是数据建模,即建立系统的数据模型。统的数据模型。 与与UMLUML不同,不同,“三三个模型个模型”既是一种软件建模思想,既是一种软件建模思想,又是一种建模方法。又是一种建模方法。“用例图、时序图、活动图和类用例图、时序图、活动图和类图图”等等UMLUML图形,只是实现图形,只是实现“功能模型、业务模型和功能模型、业务模型和数据模型数据模型”的工具。的工具。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号