1、面向对象技术及其UML实践 第二章 建模和UML概述,建一个狗窝,一个人可以完成 要求:少量的计划简单的过程简单的工具,建一幢住房,需要一组人,进行分工合作 要求:建模型(画图纸)很好地制定计划有力的工具,建一幢高层大厦,必须要庞大的组织机构 要求:建模型(详细的设计图)制定周密的计划,完善的管理功能强大的工具,建筑行业的建模,地图模型,定积分的含义:,爱因斯坦引力场方程:,数学模型,软件工程开发模型,什么是模型,在许多学科中,模型是设计者的语言 模型描述了将要建或已建成的系统 模型是对现实的简化 模型从不同的方面反映了系统 模型可以是结构性的,反映系统的静态方面 模型可以是行为性的,反映系统
2、的动态方面,教学进程,模型的概念,模型的分类(1),从学科分:,可以从不同方面对模型进行分类:,思维模型,社会模型,工程模型,建筑模型,软件模型,从形物化角度分:,逻辑模型,实体模型,模型的分类(2),软件建模的必要性, 软件的特性,教学进程, 软件的特性,智能性,软件是人智力劳动的产物,具有极高的智能特性。,软件建模的必要性, 软件的特性,智能性,软件是人智力劳动的产物,具有极高的智能特性。,无形性,软件没有物理实体的物理形态,而是智能、逻辑和算法的描述。,软件建模的必要性, 软件的特性,智能性,软件是人智力劳动的产物,具有极高的智能特性。,无形性,软件没有物理实体的物理形态,而是智能、逻辑
3、和算法的描述。,抽象性,软件具有高度抽象性。,软件建模的必要性, 软件的特性,智能性,软件是人智力劳动的产物,具有极高的智能特性。,无形性,软件没有物理实体的物理形态,而是智能、逻辑和算法的描述。,抽象性,软件具有高度抽象性。,复杂性,软件开发是高度复杂性工作,软件的规模越来越大,功能越来越复杂,服务领域越来越广泛。,综上,软件的开发和生产必须借助于模型,来反映和描述软件中间的开发过程和开发状态。,软件建模的必要性,软件模型的概念, 软件模型: 通过一定的形式和方法用来描述软件的模型。 软件建模:建立软件模型的过程被称为软件建模。,软件模型的内容,软件模型的内容,软件模型的内容,软件模型的内容
4、,软件的实现方案。 包括软件的实现结构,构件, 文件等。,软件模型的内容,软件模型的内容,教学进程,面向功能的软件建模(1),通过对软件功能的分析, 分步、分层建立软件模型 的方法。, 把侧重点放到软件的功能上面; 由上到下,由粗到细分层建模; 包括需求、设计、实现等多种模型; 属一类建模方法,而非一种方法。, 功能分解,面向功能的软件建模(2), 需求建模,面向功能的软件建模(3), 设计建模,软件结构建模,面向功能的软件建模(4), 设计建模,软件详细设计建模,面向功能的软件建模(5),通过对软件所处理的数据及其结构的分析, 分步、分层建立软件模型的方法。, 把侧重点放到软件的数据及其结构
5、上面; 由上到下,由粗到细分层建模; 包括需求、设计、实现等多种模型; 属一类建模方法,而非一种方法。,面向数据的软件建模(1), JSD建模的阶段和步骤,面向数据的软件建模(2), JSD实体结构建模,面向数据的软件建模(3), JSD系统实现图,面向数据的软件建模(4),教学进程, JSD系统程序结构图,面向数据的软件建模(5),在软件开发中,采用与人的思维过程相一致的,直接面向客观事物,面向所要解决的需求问题,并用一套对象、类、继承、消息等机制开发软件的系统性软件建模方法。, 对象是软件建模的重心; 包括需求、设计、实现等多种模型; 属一类建模方法,而非一种方法。,面向对象的软件建模(1
6、),建模是为了捕捉、描述系统的核心.Dr. James Rumbaugh,可视化建模就是用标准的图示化方法来进行建模工作,什么是可视化建模?,用例分析是从用户角度来描述业务过程的方法,可视化建模可表示业务过程,可视化建模可说明系统的结构和行为,可视化建模可用来来描述业务活动及其逻辑,可视化建模可用于应用系统的分析和设计,可视化建模可帮助我们理解复杂系统,常人只能同时管理59件事情,使你描述的系统能独立于 编程语言和系统平台,可视化建模可定义软件的体系结构,不同的应用系统,可视化建模有助于系统重用,可重用部件,代码 类(接口) 框架 模式,什么是UML?,UML 代表 Unified Model
7、ing Language(统一建模语言) UML 是最好的建模方法中最好部分的集成 UML是一种用可视化方法对软件系统进行描述、构造和文档化的标准语言,UML发展,Booch method,OMT,Rumbaugh Booch Jacobson,UML的创建人,OMT方法 Booch方法 OOSE方法,UML吸收和容纳的方法(英文),UML吸收和容纳的方法(中文),统一的标准:已成为面向对象的标准化的统一的建模语言。 面向对象: 支持面向对象方法. 可视化、表示能力强大: 独立于过程 概念明确,简洁,结构清晰,容易掌握。,UML的特点,一个比喻:,UML和程序设计语言的关系,Java、C+ 等
8、程序设计语言用来编码实现一个软件系统。 UML对一个软件系统建立模型。,UML构成概述,作为建模语言,UML由以下几部分构成:基本构造块: 语言的构成成分,包括:事物,关系,图语义规则: 语言的语法和语义规则公共机制: 规范说明,语言扩展等,UML的构成,UML中的事物,事物: UML语言的基本构成要素,包括四类:结构事物: 语言的静态构成要素,有7种 行为事物: 语言的动态构成要素,表示事物的变化和状态分组事物: 对模型中事物分组组织的要素注释事物: 对模型中事物标注和解释,结构事物(1),结构事物: UML语言的静构成要素,包括7种:,类: 描述一组具有相同性质的对象。,接口: 描述一个类
9、或一个构件的服务操作集。,主动类: 对象至少拥有一个进程或线程,能启动控制活动。,用例: 描述一组动作序列,参与者通过它能够完成一定的功能。,构件: 描述软件系统的构成件。,结点: 一个基本计算单元,可以是一个物理结点,客户机或服务器。,协作,结构事物(2),行为事物: UML的动态构成要素,包括2种:,交互: 一组对象之间为完成某一项任务而进行的一系列消息交换的行为说明。,状态机: 一个对象或一个交互在生命期内响应事件所经历的状态序列。,行为事物,分组事物: UML对模型的组织要素。,包:UML用包来对模型进行分组组织,一个包中包括若干个相关的模型元素。,分组事物,注释事物: 解释模型元素的
10、要素。,注释:对模型中的元素进行解释。,注释事物,UML中的关系,关系: UML定义的模型元素之间的关系,包括四种:依赖关联泛化实现,依赖,依赖: 两个事物之间的语义关系,其中一个事物(独立事物)发生变化会影响另外一个事物的语义。,关联,关联:本指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的链接描述。,泛化,泛化:在UML中,描述事物之间的一般和特殊关系。特殊事物具有并继承一般事物的特性。,实现,实现:描述类元之间的语义关系。一种是接口与实现它的类和构件;另一种是用例和实现它们的协作。,UML的应用领域,UML被用来为系统建模,具有很宽的应用领域,其中最常用的是
11、为软件系统创建模型,但UML也可用来描述其它非计算机软件的系统,如一个企业的机构或过程等。Enterprise information systemsBanking and financial servicesTelecommunicationsTransportationDefense/aerospaceRetailMedical electronicsScientificDistributed Web-based services,UML的价值,是一个开放的标准 支持整个软件开发周期 支持多种应用领域 基于业界的经验和用户的需要产生的 有多种工具提供支持,UML的模型和视图,模型是从一定的
12、角度对系统的完整表述。,视图是模型的一个投影,它可从一个透视图或优势位置看到, 而忽略了与其无关的实体。,视图():用例图,捕获用户看到的系统功能 在系统开发的早期阶段建立 由架构设计师和领域专家合作开发,目的 对系统的语境建模 捕获系统的需求 帮助理解系统的结构 驱动编码的实现和产生测试用例,UML图,用例图(use case diagram)用例图展示了一组用例、参与者以及它们之间的关系。用例图给出了系统的静态用例视图。,视图(二):类图、对象图,捕获系统的词汇 在开发的整个过程中建立和提炼 目的 命名和模化系统中的概念 对简单的协作建模 对逻辑数据库模式建模 由系统分析员、架构设计师和程
13、序员合作开发,显示系统中的实例和连接 在分析和设计阶段建立 由系统分析员、架构设计师和程序员合作开发 目的 图示数据对象的结构 对系统的对象快照建模,UML图,类图(class diagram)类图展现了一组对象、接口、协作和它们之间的关系。类图给出了系统的静态设计视图。在面向对象系统的建模中,建立的最常见的图就是类图。,UML图,对象图(object diagram)对象图展现了一组对象以及它们之间的关系。和类图类似,对象图也给出了系统的静态设计视图。,视图(三):构件图、部署图,捕获系统实现中的物理结构 作为系统的结构规范来建立 由架构设计师和程序员合作开发,目的 组织源代码 构造可执行的
14、版本发布 对物理数据库进行建模,捕获系统硬件的拓扑结构 是系统体系结构规范的一部分 由架构设计师和网络工程师合作开发,目的 对部件的分布进行建模 识别出系统性能上的瓶颈,UML图,组件图(component diagram)组件图展现了一组组件之间的组织和依赖。组件图专注于系统的静态实现图。它与类图是息息相关的,通常情况下,组件被映射成一个或多个类、接口或协作。,UML图,部署图(deployment diagram)部署图展现了在系统运行时,进行处理的节点和在节点上活动的组件的配置。部署图给出了体系结构的静态部署视图。,视图(三):顺序图、协作图、状态图,捕获动态行为(面向时序的) 目的 对
15、控制流建模 图示典型的场景,捕获动态行为(面向消息的) 目的 对控制流建模 图示对象间结构和控制上的协调关系,捕获动态行为(面向事件的) 目的 对象生命周期的建模 对反应性对象建模 (用户界面,设备等),UML图,顺序图(sequence diagram)顺序图是一种强调消息的时间顺序的交互图。交互图(interaction diagram)是指:它展现了一种交互,由一组对象和它们之间的关系组成,包括它们之间可能发送的消息。交互图是描述系统的动态视图。,UML图,协作图(collaboration diagram)协作图也是一种交互图,它强调收发消息的对象的组织结构。因为协作图和顺序图在结构上
16、是相同的,所以它们是可以互相转换的。,UML图,状态图(statechart diagram)状态图展现了一个状态机,它由状态、转换、事件和活动组成。状态图是描述系统的动态视图。状态图对于接口、类或协作的行为建模非常重要。,UML图,活动图(activity diagram) 活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。活动图是描述系统的动态视图。它强调了对象间的控制流程,因此对系统的功能建模非常重要。,在分析阶段,用户的需求用UML模型来描述。 在设计阶段,引入定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行性等问题的类)。 在实现阶段,用面向对象程
17、序设计语言将来自设计阶段的类转换成实际的代码。 UML模型还是测试阶段的依据。 单元测试使用类图和类规格说明 集成测试使用构件图和协作图 系统测试使用用例图来验证系统的行为,UML在系统开发各阶段的应用,分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图; 最终用户关心的是系统的功能,因此会侧重于逻辑视图; 程序员关心的是系统的配置、装配等问题,因此会侧重于实现视图; 系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程视图; 系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署视图。,对于同一个系统,不同人员所关心的内容并不一样:,UML各视图的作
18、用,需要多少个视图?,尽量用简化的模型来满足系统的需要 不是所有的视图都需要: 单处理器: 省略实施视图 单进程: 省略进程视图 很小的程序: 省略实现视图 附加的视图: 数据视图, 安全视图,一个UML的例子 (1),在Web浏览器中,显示“Hello, World!”的 Java applet程序:,import java.awt.Graphics;public class HelloWorld extends java.applet.Applet public void paint (Graphics g) g.drawString(“Hello, World!“, 10,10); ,在
19、UML中,对这个applet的建模如下图所示,类HelloWorld 用一个矩形表示。类HelloWorld 中给出了paint操作,在一个附属的note中说明了该操作的实现。,一个UML的例子 (2),前面这个类图反映出了“Hello World!”这个applet基本部分,并没考虑别的事物。根据代码,这个applet还涉及另外两个类,即Applet类和Graphics类。 Applet类是HelloWorld类的父类,Graphics类则在HelloWorld类的paint操作的特征标记(signature)和实现中被使用。在UML中,可用下图表示这两个类及与HelloWorld类的关系。,一个UML的例子 (3),JBuilder 中的所得到的类图:,一个UML的例子 (4),如果考虑类库及Applet上的继承关系,可以得到另一个类图,如下图所示:,一个UML的例子 (5),为了管理大规模的类层次图,可以用包来组织类,如下图所示:,一个UML的例子 (6),HelloWorld的一个顺序图:,顺序图,“HelloWorld!”是一个applet,不能单独运行,通常是嵌入在Web页中。下面是HelloWorld的构件图:,构件图,(1) 什么是可视化建模? (2) UML有哪些主要的视图?,本章作业,