面向对象软件开发与UML建模课件_第1页
面向对象软件开发与UML建模课件_第2页
面向对象软件开发与UML建模课件_第3页
面向对象软件开发与UML建模课件_第4页
面向对象软件开发与UML建模课件_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章面向对象

软件开发与UML建模第11章面向对象

软件开发与UML建模111.1面向对象软件开发概述 11.2UML简介 11.3基于UML的面向对象分析与设计概要11.1面向对象软件开发概述 211.1面向对象软件开发概述11.1.1传统软件开发方法存在的不足 11.1.2面向对象方法的主要概念 11.1.3面向对象方法的优势 11.1.4面向对象软件开发的过程 11.1.5典型面向对象软件开发方法 11.1面向对象软件开发概述11.1.1传统软件开发方311.1.1传统软件开发方法存在的不足互联网时代,用户为响应外部竞争环境的变化对业务应用系统要求:快速交付低成本维护系统柔性扩充同时,面向广域业务应用的大型分布式系统的规模和复杂性都显著提高。以结构化开发为代表传统软件开发方法确实存在难以逾越的鸿沟。11.1.1传统软件开发方法存在的不足互联网时代4传统开发方法主要的不足之处(1)软件重用性差传统的方法识别业务需求是在全局范围内以功能、数据或数据流为中心来进行分析。分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。极大地限制了软件的可重用性,导致对不同用户同样业务对象大量的重复性工作。传统开发方法主要的不足之处(1)软件重用性差5传统软件开发方法主要不足之处(2)可维护性差传统方法开发的系统通常是围绕着如何实现一定的功能行为来进行的,当系统功能易变,需要常作修改时,实施修改很困难。传统软件开发方法主要不足之处(2)可维护性差6传统软件开发方法主要不足之处(3)开发出的软件难以满足用户需要功能与数据分离的软件分析设计结构,分析、设计阶段表示体系不一致,和人的自然思维很不一致。对于开发大型软件系统,从分析到设计容易隐蔽一些对问题域的理解偏差,在开发需求模糊或需求动态变化的系统时,往往容易造成最终交付的系统不能真正满足用户的需要。传统软件开发方法主要不足之处(3)开发出的软件难以满足用户需711.1.2面向对象方法的主要概念面向对象软件开发方法不是从功能上,或是从处理问题的算法上来考虑,而是从系统的组成上来进行分解,对问题进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、可维护性好的软件,并能控制软件的复杂性和降低开发维护费用。11.1.2面向对象方法的主要概念面向对象软件开发8面向对象方法主要应用的概念:1.对象(Object)从认知角度,对象是人们要进行研究的任何事物,从具体的事物到抽象的规则、计划或事件均可看作对象。

以系统开发角度,对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组属性和对这组属性进行操作的一组服务组成。属性和服务是构成对象的两个基本要素:属性是用来描述对象静态特征的一个数据项。服务是用来描述对象动态特征(行为)的一个操作序列面向对象方法主要应用的概念:1.对象(Object)9人员对象姓名年龄性别职务住址……职务变迁改换住址……对象类型对象的属性对象的服务人员对象姓名职务变迁对象类型对象的属性对象的服务102.类(Class)类又称对象类(ObjectClass),是一组具有相同属性和服务的对象的集合。它为属于该类的全部对象提供了统一的抽象描述。类好比是一个对象模板,用它可以产生多个对象。类所代表的是一个抽象的概念或事物,在客观世界中实际存在的是类的实例,即对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性;类具有服务,它是对象的行为的抽象,用服务名和实现该服务的方法来描述。2.类(Class)类又称对象类(ObjectC11几何对象颜色位置移动(delta:矢量)选择(P:指针型):布尔型旋转(角度)图示类的描述人姓名:字符串年龄:整型职务变迁改换地址文件文件名文件大小最近更新日期打印(人)李四28绘图员人民路8号(人)张三24程序员无图示对象的描述对象和类的描述:

对象和类一般采用“对象图”和“类图”来描述。类名属性服务

对象图

类图几何对象图示类的描述人文件(人)(人)图示对象的描述12继承是以已有的定义为基础,建立新定义的技术。是父类和子类之间共享数据结构和服务的机制,这是类之间的一种关系。已有类定义父类(基类)新类定义子类(派生类)继承3.继承(Inheritance)继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义那些已在父类中定义过的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。继承的形式单重继承:一个子类只有一个父类。即子类只继承一个父类的信息结构和行为。多重继承:一个子类可有多个父类。继承多个父类的信息结构和行为。轮船客轮货轮继承是以已有的定义为基础,建立新定义的技术。是父类和子类134.消息(Message)消息就是向对象发出的服务请求。对象之间的联系可表示为对象间的消息传递,即对象间的通信机制。在对象的服务操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种服务操作的信息。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、输入信息、应答信息。面向对象技术的封装机制使对象相互独立,各司其职,消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够相互配合,构成一个有机的运动的系统。4.消息(Message)消息就是向对象发出的服务请求14属性:姓名年龄单位职称工资属性:王五25电机系讲师1500服务:调工资评职称受聘操作:调工资(计算公式)评职称(步骤、条件)服务:调工资评职称受聘王五,调工资(••••••)数据结构数据值劳资处理例程向对象发消息执行的操作服务体类:教师对象:王五抽象实例抽象实例抽象方法名(参数)图示:对象、类和消息传递属性:姓名属性:王五服务:调工资操作:调工资服务:调工资王五155.封装(Encapsulation)封装是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。封装是面向对象方法的一个重要原则,系统中把对象看成是属性和对象的结合体,使对象能够集中而完整地描述一个具体事物。封装的信息隐蔽作用反映了事物的相对独立性,当我们从外部观察对象时,只需要了解对象所呈现的外部行为(即做什么),而不必关心它的内部细节(即怎么做)。5.封装(Encapsulation)封装是把对象166.对象结构和类结构为了使业务系统能够有效地映射问题域,系统开发者需认识并描述对象之间的存在的关系。几种常见重要的关系:(1)整体与部分之间的结构对象间由分解或组成所构成的关系,例如轮船由船体、船舱、船舵、发动机、螺旋桨等组成的关系。即一个对象能由其他对象构成,通常称为“包含”关系或“组装”关系。(2)一般与特殊结构它是由一组具有一般与特殊关系(即继承关系)的类所组成的结构。例如:6.对象结构和类结构为了使业务系统能够有效地映射问17其中,形如左图由一些单重继承关系的类形成层次结构;形如右图由一些多重继承关系的类形成网络结构。上层类有对下层类一般特性的“聚合”关系。人员教师学生研究生本科生交通工具轮船客运工具火车客轮客运列车其中,形如左图由一些单重继承关系的类形成层次结构;形18(3)对象间的“相关”关系——实例连接

实例连接反映对象之间的静态联系,它是通过对象的属性来表现对象之间的依赖关系。存在实例连接的对象类之间的联系称为“关联”。

例如,“人员”与“轮船”是独立的两个类,它们之间存在“乘坐或驾驶”联系,这种联系是通过类中的“出行路线”、“时间”、“地点”等属性建立起来的。(3)对象间的“相关”关系——实例连接

实例连接反映对象197.多态性(Polymorphism)多态性是指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。在体现一般与特殊关系的一个类层次结构中,不同层次的类可以共享一个操作,但多态性却使其有各自不同的实现。当一个对象接收到一个请求时,它根据其所属的类,动态地选用在该类中定义的操作。例如:面向对象绘图程序中,在父类“几何图形”中定义了一个服务“绘图”,但并不确定执行时绘制一个什么图形。子类“圆形”和“多边形”都继承了几何图形类的绘图服务,但其功能却不相同:一个是画圆形,一个是画多边形。圆形和多边形接收到请求绘图消息时各自执行不同的绘图算法。7.多态性(Polymorphism)多态性是指在2011.1.3面向对象方法的优势(1)增强了可理解性面向对象方法以对象为核心,强调对现实概念的模拟而不强调算法。它的基本原则是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统。(2)增强了可重用性面向对象方法引入类、继承、多态、封装、消息连接等概念,这些概念为复用提供了可能性。(3)增强了系统的稳定性面向对象方法以对象模拟实体,因为实体相对稳定,需求变化不会引起结构的整体变化,故软件系统也相应稳定。11.1.3面向对象方法的优势(1)增强了可理解性(2)21(4)增强了系统的可维护性面向对象方法从以下几方面改善了可维护性:①稳定性好:软件功能需求的变化不牵动全局,只需局部修改;②类的独立性强:只要修改不涉及类的对外接口,则内部修改完全不影响外部调用;③继承和多态性,使其很容易被修改和扩充;④容易理解;⑤容易测试、调试(5)增加了软件的总体效益可复用性、可维护和可扩展性带来的不仅是技术上的效益。更重要的还有业务效益。从用户的观点来看,真正的利益在于构建的系统更好、更快、更经济。(4)增强了系统的可维护性(5)增加了软件的总体效益2211.1.4面向对象的软件开发过程面向对象的软件开发过程可以大体划分为面向对象分析(OOA,ObjectOrientedAnalysis)、面向对象设计(OOD,ObjectOrientedDesign)、面向对象编程(OOP,ObjectOrientedProgramming)和面向对象测试(OOT,ObjectOrientedTesting)等主要环节。11.1.4面向对象的软件开发过程面向对象的软件23面向对象分析 面向对象分析从问题陈述入手,分析和构造所关心的现实世界问题的模型,并用相应的符号系统表示,面向对象分析的步骤为:确定问题域。包括定义论域,选择论域,根据需要细化和增加论域区分类和对象。包括定义对象,定义类,命名区分整体对象及组成部分,确定类的关系及结构。包括一般—具体结构、整体—部分结构、多重结构定义属性。包括确定属性,安排属性。确定实例联结定义服务。包括确定对象状态,确定所需服务,确定消息联结确定附加的系统约束。面向对象分析 面向对象分析从问题陈述入手,分析和构造所关心24面向对象设计

面向对象设计具体设计步骤如下:应用面向对象分析对用其他方法得到的系统分析的结果进行改进和完善设计交互过程和用户接口。包括描述用户及任务并根据需要分成子系统、把交互作用设计成类、设计命令层次、设计交互作用过程及接口并用相应符号系统表示设计任务管理。包括根据前一步骤确定是否需要多重任务、确定并发性、确定以何种方式驱动任务、设计子系统及任务之间的协调与通信方式、确定优先级设计全局资源协调。包括确定边界条件、确定任务或子系统的软、硬件分配设计类等。包括各个类的存储和数据格式、设计实现类所需的算法、将属性和服务加入到各个类的存储对象中、设计对象库或数据库面向对象设计 面向对象设计具体设计步骤如下:25OOP环节的工作就是用确定合适的面向对象的编程语言,把OOD模型中的每个成分书写出来。并将编好的各个类代码模块根据类的相互关系集成为完整的软件系统。使用OO语言来实现OO设计相对来说比较容易,因为语言的构造与设计的构造是相似的,OO语言支持对象、运行多态性和继承。程序开发人员着重要做的工作是:用具体的数据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的算法。面向对象编程OOP环节的工作就是用确定合适的面向对象的编程语言,把OOD26对于运用OO技术开发的软件,在测试过程中继续运用OO技术进行以对象概念为中心的软件测试。它以类作为基本测试单位,集中检查在类定义之内的属性、服务和有限的对外接口,大大减少了错误的影响范围。测试人员利用开发人员提供的测试样例和用户提供的测试样例,分别检验编码完成的各个模块和整个软件系统,并且测试可以与开发同步。

面向对象测试对于运用OO技术开发的软件,在测试过程中继续运用OO技术进行27Booch的方法Coad/Yourdon的面向对象分析与设计(OOA/OOD)Rumbaugh的对象建模技术(OMT)Jacobson的面向对象软件工程(OOSE)11.1.5典型面向对象软件开发方法介绍Booch的方法11.1.5典型面向对象软件开发方法介绍28Booch方法Booch是面向对象方法的最早倡导者之一。Booch认为开发过程为螺旋上升模式,每一次重复的步骤如下:从应用的问题域中发现类和对象;分析类和对象的功能、行为,确定其属性和操作;找出类、对象之间的关系;说明每个类和对象的界面和实现。Booch方法Booch是面向对象方法的最早倡导者之一。29Booch采用以下方法构筑系统模型:类图——在Booch方法中作为逻辑的、静态模型的描述方法;描述系统的构成。 类的图形表示: 类之间相互关系的表示:名称属性操作关联:继承:包含:使用:Booch采用以下方法构筑系统模型:名称关联:继承:包含:使30环境控制器管理计划作物实施()可否收获()暖气冷气灯光温度执行机构启动()关闭()定义气候11111n例:温室管理系统类图环境控制器管理计划暖气冷气灯光温度执行机构定义气候1111131对象图——在Booch方法中作为逻辑的、静态模型的描述方法;表示系统行为的基本结构。 例:计划分析管理计划谷物计划度量1:收获时间2:状态3:成熟时间4:产量5:作物产量6:成本对象图——在Booch方法中作为逻辑的、静态模型的描述方法;32状态迁移图——作为逻辑的、动态模型的描述方法;表示一个类的动态行为。交互作用图——作为逻辑的、动态模型的描述方法;表示几个对象在共同完成一个系统功能时表现出的交互关系(亦即:一个类的动态行为)。 交互作用图与OMT的事件追踪图十分相似,区别是:交互图主要表示操作而不是事件;是对象图的另一种表示形式。状态迁移图——作为逻辑的、动态模型的描述方法;表示一个类的动33计划分析计划度量管理计划C:作物C:谷物收获时间()状态()成熟时间()产量()产量()成本()例:温室管理系统的交互作用图计划分析计划度量管理计划C:作物C:谷物收获时间()状态34模块图——作为物理模型的描述方法;表示如何将类和对象分配到不同的软件模块中。 每个符号表示一个模块,每个模块是一个文件 连接文件的箭头表示两个文件的编译依赖关系。气候定义模块图——作为物理模型的描述方法;表示如何将类和对象分配到不35气候计划作物定义冷气暖气气候定义例:温室管理系统的模块图气候计划作物定义冷气暖气气候定义例:36进程图——作为物理模型的描述方法;表示如何将可同时执行的进程分配到不同的处理机上。 对于单处理级系统,表示处于活动状态的对象,及进程调度。温室工作站温室A温室B温室C温室管理系统的进程图进程图——作为物理模型的描述方法;表示如何将可同时执行的进程37Booch方法表示系统模型:系统模型静态模型动态模型逻辑模型物理模型类图对象图状态图交互作用图模块图进程图Booch方法表示系统模型:系统模型静态模型动态模型逻辑模型38Coad与Yourdon的方法是在信息模型化技术、面向对象程序设计语言及知识库系统的基础上发展起来的,这个方法分为OOA和OOD两部分。

Coad/Yourdon的方法Coad与Yourdon的方法是在信息模型化技Coa39一、面向对象的分析(OOA)Coad与Yourdon和其它描写面向对象方法的作者一样,认为OOA主要考虑与一个特定应用有关的对象及对象与对象之间在结构与相互作用上的关系。 1.OOA的任务 1)形式地说明所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。 2)明确地规定构成系统的对象如何协同合作,完成指定的功能。

一、面向对象的分析(OOA)40在OOA中,要建立分析模型来描述系统的功能第一个层次主要是识别类和对象,这是整个分析模型的基础。第二层和第三层是属性层和服务层,用以说明前面已识别的类和对象。第四层是结构层,OOA允许两种类型的基本结构:一是整体与部分结构,也叫组装结构,组装结构表示聚合,即由属于不同类的成员聚合而成新的类;二是泛化与特化结构,也叫分类结构。其中,特化类是泛化类的子类,泛化类是特化类的父类。分类结构具有继承性,泛化类和对象的属性与服务一旦被识别,即可在特化类和对象中使用。第五层是主题层,是一些类和对象的特定组合表示,用来帮助和指导模型的读者。

在OOA中,要建立分析模型来描述系统的功能41面向对象软件开发与UML建模课件422.OOA的步骤

1)找到类和对象首先确定问题空间中包含哪些对象,有哪些操作,这些对象之间有什么关系,它们与操作又有什么关系。对象应该是实际问题域中有意义的个体或概念实体,具有目标软件系统所关心的属性,还应该以某种方式与系统发生关联,即对象必须与系统中其他有意义的对象进行消息传递,并提供外部服务。有关对象命名的重要原则:

a.使用单个名词或名词短语; b.对象名称必须简洁、精确、易于理解; c.尽量使用用户熟悉的标准词汇。2.OOA的步骤432)确定结构第一种结构是分类结构,代表了确定的类中的继承等级。另一种结构是组装结构,即由属于不同类的成员聚合而成新的类。

3)定义主题确定主题通过将类和对象划分成更大的单元来完成。主题是类和对象的组合。每个主题的规模按有助于读者通过模型理解系统来选择。

2)确定结构444)定义属性对每个对象,确定划给该对象所需的属性。关键是识别与当前所处理的问题相关的属性。被确定的属性放到继承等级的正确层次。注意应避免冗余的或不正确的属性

5)定义服务对象怎样进行消息通信是用消息的联系来确定的。这些都用来指定某一个操作。综上所述,OOA大体上可以按照这个顺序进行。但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。4)定义属性45二、面向对象的设计(OOD)OOA到OOD实际上是一个逐渐扩充模型的过程。面向对象分析主要模拟问题空间和系统任务;而面向对象设计则是对其进行扩充,主要是增加各种组成部分。OOA识别和定义的类/对象,是一些直接反映问题空间和系统任务的;而OOD识别和定义的类/对象则是附加的,反映需求的一种实现。Coad与Yourdon在设计阶段中继续采用分析阶段中提到的五个层次,他们认为这有助于从分析到设计的过渡。不同的是,在设计阶段中,这五个层次是用于建立系统的四个组成成分上。这四个组成成分是:问题论域,用户界面,任务管理和数据管理。

二、面向对象的设计(OOD)46问题论域部分包括与所面对的应用问题直接有关的所有类和对象。

在其它的三个部分中,识别和定义新的类和对象。

问题论域部分包括与所面对的应用问题直接有关的所有类和对象。471.问题域部分(PDC)的设计

OOA阶段得到的有关应用的概念模型描述了所要解决的问题。在OOD阶段,主要是对OOA产生模型中的某些类与对象、结构、属性、操作进行组合与分解,或者增加必要的类、属性和联系。

1.问题域部分(PDC)的设计481)复用设计

根据问题解决的需要,把从现有的类库或其它来源得到的现存类增加到问题解决方案中去。

1)复用设计49面向对象软件开发与UML建模课件502)把问题论域的专用类关联起来3)为建立公共操作集合建立一般类4)调整继承级别

2)把问题论域的专用类关联起来512.用户界面部分(HIC)的设计

通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。2.用户界面部分(HIC)的设计521)用户分类通常可将其分为外行型、初学型、熟练型和专家型四类2)描述人及其任务的场景什么人、特点、期望软件用途、主要要求与喜好以及任务场景等。3)设计命令层尽量遵循用户界面的一般原则和规范,根据用户分析结果确定初步的命令系统,然后再优化。4)设计详细的交互5)设计HIC(人机交互)类1)用户分类533.任务管理部分(TMC)的设计

任务是进程的别称,是执行一系列活动的一段程序,或者说,任务是由目标软件系统中一段代码决定的处理行为。任务管理主要包括任务的选择和调整。

3.任务管理部分(TMC)的设计541)识别事件驱动任务一些负责与硬件设备通信的任务是事件驱动的,也就是说这些任务可由事件来激发,而事件常常是当数据到来时发出的一个信号。2)识别时钟驱动任务以固定的时间间隔激发这种事件,以执行某些处理。3)识别优先任务和关键任务

根据处理的优先级别来安排各种任务。在系统中,有些操作具有高优先级,因此必须在很强的时间限制内完成;有些操作具有较低的优先级,可进行时间要求较低的处理。关键任务是对系统的成败起关键作用的处理,这些处理要求有较高的可靠性。

1)识别事件驱动任务554)识别协调者

当有三个或更多的任务时,应当增加一个附加任务,专门负责任务之间的调度、协同和仲裁。5)评审各个任务6)定义各个任务定义任务的工作主要包括它是什么任务、如何协调工作及如何通信。任务的定义如下:name(任务名)description(描述)priority(优先级)servicesincluded(包含的操作)communicationvia(经由谁通信)

4)识别协调者564.数据管理部分(DMC)的设计

数据管理部分提供了在数据管理系统中存储和检索对象的基本结构

设计数据管理部分的目的是,将目标软件系统中依赖开发平台的数据存取部分与其他功能分离,数据存取通过一般的数据管理系统实现,但实现细节集中在DMC中。这样既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。

4.数据管理部分(DMC)的设计571)数据管理方法数据管理方法主要有三种文件管理关系数据库管理面向对象的数据库管理2)数据管理部分的设计数据存储管理部分的设计包括数据存放方法的设计和相应操作的设计

1)数据管理方法58OMT是美国通用电气公司在总结其内部多年来采用OO技术开发实践的基础上提出的一套系统开发方法学。OMT最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系DB设计。J.Rumbaugh在1991年正式把OMT应用于OO的分析和设计。它以面向对象思想为基础,通过构造一组相关模型(对象模型、动态模型和功能模型)来获得关于问题的全面认识(即问题领域模型),是在实体关系模型上扩展了类、继承和行为而得到的。

OMT(objectmodelingtechnique)方法OMT是美国通用电气公司在总结其内部多年来采用OO技术开发实59对象模型(objectmodel)代表了系统的静态的、结构方面的特性。动态模型(dynamicmodel)代表了系统对象之间的时间的、行为的、控制方面的特性。功能模型(functionalmodel)主要描述值与值之间的函数关系。这三个模型从不同角度对系统进行描述,分别抓住了系统的一个重要方面,组合起来构成了对系统的完整描述。OMT认为一个典型的软件过程是三个方面的合作:它的数据结构(对象模型)、它按时间顺序的操作(动态模型)和它所改变的值(功能模型)。

对象模型(objectmodel)代表了系统的静态的、结构60在分析阶段,应用领域的一个模型被建立,不考虑最后的实现。在设计阶段,解决领域的结构加入模型中,明确系统中各个类的定义和相互关系以及各个类中的操作,并考虑到重用效率,重新设计一些类和关系。在实现阶段,应用领域和解决领域的结构都被编码。

在分析阶段,应用领域的一个模型被建立,不考虑最后的实现。61模型有两层含义:从系统的观点看对象模型动态模型功能模型从开发阶段看分析模型设计模型实现模型模型有两层含义:62三种模型介绍

1.对象模型对象模型描述了系统中对象的结构,即它们的标识、它们与其它对象之间的关系、它们的属性以及它们的操作。对象模型为动态模型和功能模型提供了重要的框架,因为只有当事物变化时,动态模型和功能模型才有存在的意义。对象模型用包含对象及对象的关系图表示。

三种模型介绍63面向对象软件开发与UML建模课件64类之间的联系称为关系。类之间的关系在OMT符号中用一条线表示。对象图在关系线的端点用特定的符号表示多元性。

类之间的联系称为关系。类之间的关系在OMT符号中用一条线表示65对象模型中类之间的三种基本关系以OMT符号来表示

1)相关关系

对象模型中类之间的三种基本关系以OMT符号来表示662)包容关系

2)包容关系673)继承关系

3)继承关系68OMT建立一个对象模型的步骤大致如下:确定对象类定义一个DD,包括类、属性和关系的描述增加类之间的关系增加对象和联系的属性用继承组织和简化对象类用场景测试访问路径如有需要重复以上各步基于相近的关系和相关的功能将成组的对象形成模块

OMT建立一个对象模型的步骤大致如下:69 2.动态模型动态模型描述系统中与时间有关的方面以及操作执行的顺序,包括引起变化的事件、事件的序列、定义事件序列上下文的状态、以及事件和状态的主次。动态建模中的主要概念是事件和状态。一个对象的状态是指对象所拥有的属性值和连接关系。从一个对象到另一个对象的单个消息叫作一个事件。 在系统的一个特定的执行中发生的一系列事件叫一个场景。

2.动态模型70面向对象软件开发与UML建模课件71动态模型由多个状态图组成,每个用来描述一个类的重要动态行为,并表明整个系统的活动方式,不同类的状态图通过共享的事件组成一个动态模型。状态图的结点是状态,标有事件的线是转移。转移的箭头指向接收事件后的目标状态。

动态模型由多个状态图组成,每个用来描述一个类的重要动态行为,72面向对象软件开发与UML建模课件73面向对象软件开发与UML建模课件74建立一个动态模型的步骤准备典型的交互序列的场景确定对象之间的事件和为每个场景准备一个事件跟踪图为每个系统准备一个事件流图为每个有重要的动态行为的类开发一个状态图检验状态图之间的共享的事件的一致性和完整性。

建立一个动态模型的步骤75 3.功能模型对象模型指出事件要发生在什么方面,动态模型指出什么时候发生,功能模型则指出要发生什么。功能模型表示怎样从输入值得到输出值。包括函数、映射、约束和功能性依赖。功能模型由多个DFD组成,它们表示从外部输入,通过操作和内部数据存储,到外部输出这样一个流。DFD不表示控制或对象结构信息,这些分别属于动态模型和对象模型。功能是由动态模型的动作引起,并在对象模型里表示对对象的操作。一个DFD包括转换数据的过程,移动数据的DF,生产和消费数据的角色对象,以及被动地存储数据的数据存储对象。 3.功能模型76建立一个功能模型的步骤确定输入和输出值需要时用DFD表示功能的依赖性描述每个功能干什么确定限制,指定优化准则

建立一个功能模型的步骤77 4.三个模型之间的关系对象模型、动态模型和功能模型都包含了同样的概念、数据、序列和操作,但它们描述了系统的不同方面,同时也互相引用。对象模型描述了动态模型、功能模型所操作的DS。对象模型中的操作对应于动态模型中的事件和功能模型中的函数。动态模型描述了对象的控制结构,告诉我们哪些决策是依赖于对象值,哪些引起对象的变化,并激活了功能。功能模型描述了由对象模型中操作和动态模型中动作所激活的功能,而功能作用在对象模型说明的数据上,功能模型还表示对对象值的约束。

4.三个模型之间的关系78OMT的开发过程

1、分析阶段分析阶段关心和理解要处理的应用和领域并建模。分析阶段首先输入的是问题陈述,它主要描述了需要处理的问题,并提供了将要产生的系统概况。分析后的输出是一个描述了系统三个重要方面的形式化模型:对象和对象之间的关系、动态的控制流,以及函数性转换。系统分析文档包括问题陈述和三类模型。

OMT的开发过程79面向对象软件开发与UML建模课件802、系统设计阶段系统设计阶段决定系统的整个体系结构。系统设计是一个用于解决问题和形成解答的高层次的策略。它是最先的设计阶段,在这里将选择解决问题的基本方法。在系统设计阶段,总体的结构和风格被决定,这将为以后的设计阶段中更详细的决定提供依据。通过作出用于整个系统的高层决定,系统设计者以对象模型为依据,将系统划分成子系统,以便以后的工作可以由几个设计者独立地在不同的子系统上完成。系统设计文档包括系统的基本的体系结构以及高层的策略决定。2、系统设计阶段813.对象设计阶段在对象设计阶段中,从着重于应用概念逐步转移到着重于计算机概念上。对象设计阶段决定实现中所用的类和关系的全部定义,包括接口和用于实现操作的算法。在对象设计时,设计者执行系统设计期间所选的策略和给出细节。对象设计文档包括详细的对象模型、详细的动态模型和详细的功能模型。

3.对象设计阶段82 4、实现阶段实现是在良好的面向对象编程风格的编码原则指导下进行的。 4、实现阶段83面向对象的软件工程(OOSE)OOSE将面向对象的思想应用于软件工程中,建立五个模型:1、需求模型(RM)2、分析模型(AM)3、设计模型(DM)4、实现模型(IM)5、测试模型(TM)OOSE的开发活动主要分为三类:分析、构造和测试。分析构造测试面向对象的软件工程(OOSE)OOSE将面向对象的思想应84用例(Usecase)是OOSE中的重要概念,在开发各种模型时,用例贯穿了OOSE活动的核心,描述了系统的需求及功能。贸易经理风险分析设置边界进行交易交易估价更新帐目《使用》《使用》《扩展》营销人员超越边界评价记帐系统销售人员图示用例图分析模型usecase模型通过分析来构造。

设计模型usecase模型通过设计来具体化。

实现模型该模型依据具体化的设计来实现usecase模型。

测试模型用来测试具体化的usecase模型。用例(Usecase)是OOSE中的重要概念,在8511.2UML简介 UML概要UML由OMG与1997年11月批准为标准建模语言。UML建立在当今国际上最有代表性的三种面向对象方法(Booch方法,OMT方法,OOSE方法)的基础之上。UML是一种建模语言而不是一种方法,UML本身是独立于过程的。11.2UML简介 UML概要86UML的设计目标:运用面向对象概念来构造系统模型建立起从概念模型直至可执行体之间明显的对应关系着眼于那些有重大影响的问题创建一种对人和机器都适用的建模语言UML的设计目标:87UML为人们提供了从不同的角度去观察和展示系统的各种特征的一种标准表达方式。在UML中,从任何一个角度对系统所作的抽象都可能需要用几种模型图来描述,而这些来自不同角度的模型图最终组成了系统的完整模型。UML为人们提供了从不同的角度去观察和88一般而言,我们可以从以下几种常用的视角来描述一个系统:系统的使用实例:从系统外部的操作者的角度描述系统的功能。系统的逻辑结构:描述系统内部的静态结构和动态行为,即从内部描述如何设计实现系统功能。系统的构成:描述系统由哪些程序构件所组成。系统的并发性:描述系统的并发性,强调并发系统中存在的各种通信和同步问题。系统的配置:描述系统的软件和各种硬件设备之间的配置关系。一般而言,我们可以从以下几种常用的视89UML模型图(5类,10种):用例图静态图(类图,对象图,包图)行为图(状态图,活动图)交互图(顺序图,协作图)实现图(部件图,配置图)UML模型图(5类,10种):90UML语义元-元模型:元模型的基础体系结构,定义一种说明元模型的语言元模型:元-元模型的一个实例,定义一种说明模型的语言模型:元模型的一个实例,定义一种语言来描述信息领域用户对象:模型的一个实例,定义一个特定的领域UML语义91UML主要文件:UML概要(UMLSummary)UML语义(UMLSemantics)UML表示法指南(UMLNotationGuide)对象约束语言规约(ObjectContraintlanguageSpecification):该文件定义并介绍了一种对象约束语言(OCL),其用途是用来说明在图形化的系统模型中不能充分表达的建模信息。它是一种形式化语言。UML主要文件:92UML用例图从本质上将,一个用例是用户与计算机之间为达到某个目的的一次典型交互作用:用例描述了用户提出的一些可见的需求;用例可大可小;用例对应一个具体的用户目标UML用例图从本质上将,一个用例是用户93用例图描述系统外部的执行者与系统的用例之间的某种联系。所谓用例是指对系统提供的功能(或称系统的用途)的一种描述;执行者是那些可能使用这些用例的人或外部系统;用例和执行者之间的联系描述了“谁使用哪个用例”。UML用例图用例图描述系统外部的执行者与系统的用例94用例图着重于从系统外部执行者的角度来描述系统需要提供哪些功能,并且指明了这些功能的执行者是谁;用例图在UML方法中占有十分重要的地位,人们甚至称UML是一种用例图驱动的开发方法。UML用例图用例图着重于从系统外部执行者的角度来描述系统需要提供哪些功能95用例图中的图符:

用例执行者系统:用于界定系统功能范围,描述该系统功能的用例都置于其中,而描述外部实体的执行者都置于其外。关联:连接执行者和用例,表示执行者所代表的系统外部实体与该用例所描述的系统需求有关。UML用例图用例图中的图符:UML用例图96用例图中的图符:使用:由用例A连向用例B,表示用例A中使用了用例B中的行为或功能。扩展:由用例A连向用例B,表示用例B描述了一项基本需求,而用例A则描述了该基本需求的特殊情况。注释体:对UML实体进行文字描述注释连接:将注释体与要描述的实体连接,说明该注释体是针对该实体所进行的描述。«使用»«扩展»UML用例图用例图中的图符:«使用»«扩展»UML用例图97设置边界风险分析交易估计进行交易超越边界更新帐目评价贸易经理营销人员记帐系统销售人员«使用»«使用»«扩展»UML用例图设置边界风险分析交易估计进行交易超越边界更新帐目评价贸易经理98用例模型的获取:获取执行者获取用例UML用例图用例模型的获取:UML用例图99获取执行者:谁使用系统的主要功能(主要使用者)?谁需要系统支持他们的日常工作?谁来维护、管理系统使其能正常工作(辅助使用者)?系统需要控制哪些硬件?系统需要与其他哪些系统交互?对系统产生的结果感兴趣的是哪些人?UML用例图获取执行者:UML用例图100获取用例:执行者要求系统提供哪些功能?执行者需要读、产生、删除、修改或存储系统中的信息有哪些类型?必须提醒执行者的系统事件有哪些?执行者必须提醒系统事件有哪些?怎样把这些事件表示成用例中的功能?UML用例图获取用例:UML用例图101UML类图在面向对象的建模技术中,类、对象和它们之间的关系是最基本的建模元素。对于一个想要描述的系统,其类模型、对象模型以及它们之间的关系揭示了系统的结构。类图描述了系统中的类及其相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系(关联,子类型)。UML类图在面向对象的建模技术中,类、对象和它们之间的关系102类图中的图符:类:表示一个类,其中第一栏是类的名,第二栏是类的属性,第三栏是类的操作。包:包是一种分组机制,表示一个类图集合。关联:用于表示类的对象之间的关系。其特殊形式有组成关联和聚集关联。OperationsAttributesClassPackageUML类图类图中的图符:OperationsAttributesCla103类图中的图符:聚集关联:用于表示类的对象之间的关系是整体与部分的关系。组成关联:用于表示类的对象之间的关系:整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失。泛化关联:泛化关系(继承关系)定义了类和包间的一般元素和特殊元素之间的分类关系。UML类图类图中的图符:UML类图104类图中的图符:依赖关系:有两个类或包元素X、Y,修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖于元素X。对象:类的一个实例。链接:用于表示对象间的关联关系的一个实例。ValuesObjectUML类图类图中的图符:ValuesObjectUML类图105订单DateReceivedisPrepaidnumber:Stringprce:MoneyDispatch()close()订单项Quantity:Integerprice:MoneyisSatisfied:Boolean1*项客户NameaddressCreditRating():String团体客户ContactNamecreditRatingcreditLimitRemind()billforMonth(Intrger)雇员产品个人客户CreditCard#{creditRating()=“poor”}销售代表1*0..11**UML类图订单DateReceivedDispatch()订单项Qua106UML对象图对象图对象图是类图的一种变形。除了在对象名下面要加下划线以外,对象图中所使用的符号与类图基本相同。对象图是类图的一种实例化。一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系。UML对象图对象图107作者计算机名字:String内存:Ineger名字:String年龄:Integer0..1Uses1..*小王:作者小王的工作PC:计算机名字=“王小影”年龄=32小王的工作PC:计算机名字=“CompaqX”内存=32名字=“Dell486”内存=64类图对象图UML对象图作者计算机名字:String名字:String0..1Use108对象图并不象类图那样具有重要的地位,但是利用它可以帮助我们通过具体的实例分析,更具体直观地了解复杂系统类图的丰富内涵。对象图还常常被用作合作图的一部分,用以展示一组对象实例之间的动态协作关系。UML对象图对象图并不象类图那样具有重要的地位,但是利用它可以帮助我们通109UML包图包是类的集合。包图所显示的是类的包以及这些包之间的依赖关系。如果两个包中的任意两个类之间存在依赖关系,则这两个包之间存在依赖关系。包的依赖是不传递的。UML包图包是类的集合。110订单获取界面订单获取应用AWT邮件发送清单界面邮件发送清单应用订单顾客UML包图订单获取订单获取AWT邮件发送邮件发送订单顾客UML包图111何时使用包图:在大项目中,包图是一种重要工具(有专家建议,只要你不能将整个系统的类图压缩到一张A4纸上,你就应该使用包图);依赖产生耦合,应该尽量将依赖性减少到最低程度;包的概念对测试也是特别有用的。UML包图何时使用包图:UML包图112UML状态图状态图状态图是对类的一种补充描述,它展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况。在状态图中,状态由圆角矩形表示。状态的改变称作转移,状态转移由箭头表示,箭头旁可以标出转移发生的条件。状态转移可以伴随有某个动作,它表明当转移发生时系统要做什么。UML状态图状态图113下降状态在第一层上升状态向第一层下降空闲状态上升到达到达上升超时下降到达第一层UML状态图下降状态在第一层上升状态向第一层下降空闲状态上升到达到达上升114UML顺序图顺序图顺序图描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。顺序图由一组对象构成,每个对象分别带有一条竖线,称作对象的生命线,它代表时间轴,时间沿竖线向下延伸。顺序图描述了这些对象随着时间的推移相互之间交换消息的过程。消息用从一条垂直的对象生命线指向另一个对象的生命线的水平箭头表示。图中还可以根据需要增加有关时间的说明和其他注释。UML顺序图顺序图115:计算机:打印服务程序:打印队列:打印机打印文件打印文件[打印机空闲]保存文件[打印机忙]UML顺序图:计算机:打印服务程序:打印队列:打印机打印文件打印文件[打116P1P2P3e1e2e3e4e5e6e7e8e9e10UML顺序图P1P2P3e1e2e3e4e5e6e7e8e9e10UML117顺序图中的事件顺序:因果性(Causality):对同一消息而言,发送事件先于接收事件。可控性(Controlability):对同一对象而言,事件p出现在发送事件q的上方,则p先于q。队列性(FIFO):对同一对象而言,接收事件p出现在接收事件q的上方,并且它们分别对应的发送事件也位于同一个对象,则p先于q。UML顺序图顺序图中的事件顺序:UML顺序图118e1e2e3e4e5e6e8e7e9e10e12e11P1P2P3P1P2P3e1e2e3e4e6e5e7e8e9e11e10e12UML顺序图e1e2e3e4e5e6e8e7e9e10e12e11P1P119UML协作图协作图与顺序图作用相同,协作图也是用来描述系统中对象之间的动态协作关系。协作图侧重于描述各个对象之间存在的消息收发关系(交互关系),而不专门突出这些消息发送的时间顺序。在协作图中,对象同样是用一个对象图符来表示,箭头表示消息发送的方向,而消息执行的顺序则由消息的编号来表明。UML协作图协作图120UML协作图:计算机:打印队列:打印服务程序:打印机1.打印文件3.保存文件[打印机忙]2.打印文件[打印机空闲]UML协作图:计算机:打印队列:打印服务程序:打印机1.打121协作图的布局方法能更清楚地表示出对象之间静态的连接关系。顺序图突出执行的时序,能更方便地看出事情发生的次序。如果要描述在一个用例中的几个对象协同工作的行为,交互图是一种有力的工具。交互图擅长显示对象之间的协作关系,尽管它并不对这些对象的行为进行精确的定义。如果想要描述跨越多个用例的单个对象的行为,应当使用状态图;如果想要描述跨越多个用例或多个线程的多个对象的复杂行为,则需考虑使用活动图。UML协作图协作图的布局方法能更清楚地表示出对象之间静态的连接关系。UM122UML活动图活动图活动图描述系统中各种活动的执行顺序,通常用于描述一个操作中所要进行的各项活动的执行流程。同时,它也常被用来描述一个用例的处理流程,或者某种交互流程。活动图由一些活动组成,图中同时包括了对这些活动的说明。当一个活动执行完毕之后,控制将沿着控制转移箭头转向下一个活动。活动图中还可以方便地描述控制转移的条件以及并行执行等要求。UML活动图活动图123加水到容器中将咖啡放到过滤器中点燃咖啡炉取出咖啡杯把过滤器放到咖啡炉上冲调咖啡倒咖啡找饮料取一听可口可乐喝饮料人[找到可口可乐][没有可口可乐][没有咖啡][找到咖啡]熄灭咖啡炉UML活动图加水到容器中将咖啡放到点燃咖啡炉取出咖啡杯把过滤器放冲调咖啡124活动图最适合支持描述并行行为,这使之成为支持工作流建模的最好工具。活动图最大的缺点是很难清楚地描述动作与对象之间的关系。UML活动图活动图最适合支持描述并行行为,这使之成为支持工作流建模的最好125对于以下情况可以使用活动图:(1)分析用例;(2)理解牵涉多个用例的工作流;(3)处理多线程应用。在下列情况下,一般不要使用活动图:(1)显示对象间合作;(2)显示对象在其生命周期内的运转情况。UML活动图对于以下情况可以使用活动图:UML活动图126UML部件图部件图部件图描述软件构件以及它们之间的依赖关系,从而便于人们分析和发现当修改某个部件时可能对那些部件产生影响,以便对它们做相应的修改或更新。部件可以是源代码部件、二进制目标码部件、可执行部件或文档部件。UML部件图部件图127Whnd.cpp:窗口处理器Graphic.dll:图形库Comhnd.cpp:命令处理器Main.cpp:主类Whnd.obj:窗口处理器Comhnd.obj:命令处理器Main.obj:主类client.exe:客户程序UML部件图Whnd.cpp:Gr128UML配置图配置图配置图描述系统中硬件和软件的物理配置情况和系统体系结构。在配置图中,用结点表示实际的物理设备,如计算机和各种外部设备等,并根据它们之间的连接关系,将相应的结点连接起来,并说明其连接方式。在结点里面,说明分配给该结点上运行的可执行部件或对象,从而说明哪些软件单元被分配在哪些结点上运行。UML配置图配置图129客户A:个人电脑PC客户B:个人电脑PC数据库服务器:VAX服务器:02«TCP/IP协议»«TCP/IP»协议«DecNet协议»UML配置图客户A:客户B:数据库服务器:服务器:02«TCP/IP协议130UML应用领域最常用的是为软件系统建模,但不限于软件系统建模。UML还可用来描述其他非软件系统,如一个机构的组成或机构中的工作流程等。UML应用领域最常用的是为软件系统建模,但不限于软件131UML的应用领域UML被用来为系统建模,它可应用的范围非常广泛在不同系统中的应用信息系统技术系统嵌入式实时系统分布式系统商业系统UML的应用领域UML被用来为系统建模,它可应用的范围非常广132在软件开发不同阶段的应用需求分析分析设计构造测试在软件开发不同阶段的应用需求分析133UML应用---需求分析阶段UML的用例视图可以表示客户的需求,通过用例建模可以对外部的角色以及它们所需要的系统功能建模。UML应用---需求分析阶段UML的用例视图可以表134UML应用---分析阶段分析阶段主要考虑所要解决的问题。可用UML的逻辑视图和动态视图来描述,类图描述系统的静态结构;协作图、状态图、顺序图和活动图描述系统的动态特征。在分析阶段,只为问题领域的类建模,不定义软件系统的解决方案的细节(如用户接口的类数据库等)。UML应用---分析阶段分析阶段主要考虑所要解决的问题。135UML应用---设计阶段在设计阶段把分析阶段的结果扩展成技术解决方案,加入新的类来提供技术基础结构---用户接口,数据库操作等。分析阶段的领域问题类被嵌入在这个技术基础结构中,设计阶段的结果是构造阶段的详细的规格说明。UML应用---设计阶段在设计阶段把分析阶段的136UML应用---构造阶段在构造(或程序设计)阶段把设计阶段的类转换成某种面向对象程序设计语言的代码。UML应用---构造阶段在构造(或程序设计)阶137UML应用---测试阶段对系统的测试通常分为单元测试、集成测试、系统测试和接受测试几个不同级别。不同的测试小组使用不同的UML图作为他们工作的基础。单元测试使用类图和类的规格说明;集成测试典型地使用组件图和协作图;而系统测试实现用例图来确认系统的行为是否符合这些图中的定义。UML应用---测试阶段对系统的测试通常分为单元测试13811.3基于UML的面向对象

分析与设计概要UML是一种建模语言,是系统开发的一个组成部分,本身并没有关于开发过程概念的定义和表示符号。UML的创始者们在Rational公司的支持下综合了多种系统开发过程的长处,提出新的面向对象的开发过程,称为Rational统一过程(RationalUnifiedProcess,RUP)。RUP过程的核心工作流包括:业务建模、需求分析、系统分析与设计、实现、测试和系统配置。11.3基于UML的面向对象

分析与设计概要139运用UML进行面向对象

系统分析与设计的主要过程(1)识别系统的用例和角色首先对项目进行需求调研,依据项目的业务流程图和数据流程图以及项目中涉及的各级操作人员,通过分析,识别出系统中的所有用例和角色;接着分析系统中各角色和用例间的联系,再使用UML建模工具画出系统的用例图,同时,勾画系统的概念层模型,借助UML建模工具描述概念层类图和活动图。运用UML进行面向对象

系统分析与设计的主要过程(1)识别140(2)进行系统分析,并抽取类系统分析的任务是找出系统的所有需求并加以描述,同时建立特定领域模型。建立域模型有助于开发人员考察用例,从中抽取出类,并描述类之间的关系。运用UML进行面向对象

系统分析与设计的主要过程

(2)进行系统分析,并抽取类运用UML进行面向对象

系统分析141(3)系统设计,并设计类及其行为设计阶段由架构设计和详细设计组成。①架构设计是高层设计,其任务是定义包(子系统),包括包间的依赖关系和主要通信机制。包有利于描述系统的逻辑组成部分以及各部分之间的依赖关系。②详细设计就是要细化包的内容,清晰描述所有的类,同时使用UML的动态模型描述在特定环境下这些类的实例的行为。运用UML进行面向对象

系统分析与设计的主要过程

(3)系统设计,并设计类及其行为运用UML进行面向对象

系统142案例分析—图书馆管理系统目的通过一个具体的项目开发实例,简要介绍面向对象软件开发的一些基本机制。加深对面向对象方法和统一软件过程的理解。案例分析—图书馆管理系统目的143需求工程--需求收集需求获取是软件系统开发的起点。通常我们可以通过会谈、集体讨论等有效的方式获取、理解用户需求。并最终采用文档—需求规范文档的方式把所收集的需求文档化。需求工程--需求收集需求获取是软件系统开发的起点。通常我们可144需求收集在图书管理系统需求规范文档中可能指出如下内容:这是一个图书馆支持系统;图书馆将图书和杂志借给借书者。借书者已经预先注册,图书和杂志也预先登记;图书馆负责新书的采购。每一本图书都购进多本书。当旧书超期或破旧不堪时,从图书馆中处理掉。图书管理员是图书馆的员工。他们的工作就是和读者打交道并在软件系统的支持下工作。借阅人可以预定当前没有的图书和杂志。这样,当他所预定的图书和杂志归还回来或购进时,就通知预定人。当预定了某书的借书者借阅了该书后,预定就取消。或者通过显式的取消过程强行预定。需求收集在图书管理系统需求规范文档中可能指出如下内容:145需求收集图书馆能够容易地建立、修改和删除标题、借书者、借阅信息和预定信息。系统能够运行在所有流行的技术环境中,包括Unix,Windows和OS/2,并应有一个现代的图形用户界面。系统容易扩展新功能。这里我们暂时不必考虑预定的图书到达后通知预定人的功能,也不必检查借书过期的情况。需求收集图书馆能够容易地建立、修改和删除标题、借书者、借阅信146用例建模为了理解系统所要解决的业务问题,以便掌握用户需求,我们可以采用用例图进行需求建模。用例图描述了外部用户所能观察到的系统功能。它通过列出用例和角色,显示用例和角色的关系,从而给出了目标系统的功能。用例建模为了理解系统所要解决的业务问题,以便掌握用户需求,我147用例建模图书馆管理系统的用例有:借书(LendItem)返书(ReturnItem)预订图书(MakeReservation)删除预订(RemoveReservation)管理(Maintenance)增加书目标题(AddTitle)更新或删除书目标题(UpdateorRemoveTitle)添加书籍(AddItem)移除书籍(RemoveItem)增加借书者(AddBorrower)更新或删除借书者(UpdateorRemoveBorrower)用例建模图书馆管理系统的用例有:借书(LendItem)148用例建模图书管理系统用例图如下:用例建模图书管理系统用例图如下:149用例文档的编写应该为图书管理系统用例图中所有用例编写用例文档。用例文档中应包括如下内容:名称描述前置条件后置条件活动的基本过程;在用例文档中还可添加一些可选内容,如参与者、状态、扩展点、被包含的用例、变更历史。用例文档的编写应该为图书管理系统用例图中所有用例编写用例文档150用例文档名称:LendItem描述:读者借阅图书馆中的图书前置条件: 借书者已经预先注册,图书和杂志也预先登记;后置条件: 如果读者已经注册,且图书馆内读者所借图书处于可借阅状态,则读者借得图书,产生一条借阅记录。活动的基本过程:1、如果借书者没有预订:书名被识别;与书名对应的一本可用书被识别;借书者被识别;系统借出这本书;新的借出记录被登记。用例文档名称:LendItem151用例文档2、如果借书者有预订:借书者被识别书名被识别;与书名对应的一本可用书被识别;系统借出对应的书;新的借出记录被登记;删除预订。需求工程阶段得到的用例图在许多教材中称之为本质用例即EssentialUseCase--我们这里沿用这种称呼。用例文档2、如果借书者有预订:需求工程阶段得到的用例图在许多152确定构建内容--面向对象分析分析过程的主要成果以及它们之间的联系如下:需求工程关注理解用户和他们的使用,而分析关注于理解要构建的内容。分析是一个迭代的过程!用例图顺序图类图(分析)活动图用户界面原型确定构建内容--面向对象分析分析过程的主要成果以及它们之间的153确定构建内容--面向对象分析在分析阶段需要本质用例转化成系统用例。系统用例图除了包含本质用例的基本内容外,还添加了更多目标系统高级实现决策。系统用例的编写系统用例编写非常简单—从本质用例开始,修改它们并反映使用顺序图、活动图、用户界面原型等模型捕获的信息。依据RUP,软件开发过程的迭代性质,我们这里首先构建系统用例,然后使用顺序图可视化系统用例中部分用例的实现细节,最后适当调整系统用例。确定构建内容--面向对象分析在分析阶段需要本质用例转化成系统154确定构建内容--面向对象分析确定构建内容--面向对象分析155确定构建内容--面向对象分析用例LendItem的实现细节—顺序图:LenditemLendareserveditem确定构建内容--面向对象分析用例LendItem的实现细节156LenditemLenditem157LendareserveditemLendareserveditem158域分析(DomainAnalysis)系统分析也详细地列出了域(系统中的关键类)。为了导出一个域分析,可以阅读定义文档(specifications)和用例,查找哪一些概念应该被系统处理。或者组织一个集体讨论,在用户及领域专家共同的参与下指出系统中必须处理的关键概念,以及它们之间的关系。对象模型是面向对象分析和设计的支柱,它显示了系统的类,这些类之间的关系。在分析阶段,对象模型表示概念模型,它是问题域抽象的扩展。域分析(DomainAnalysis)系统分析也详细地列出159域分析图书馆系统中的域类如下:BorrowerInfo(如此命名是为了与用例图中的角色borrower区分开来),title,booktitle,magazinetitle,item,reservation和loan。这些类以及它们之间的关系记录在类图文档中,如下图所示:域分析图书馆系统中的域类如下:BorrowerInfo(如160类图类图161域分析其中有些类有状态图,用来显示这些类的对象可能具有的不同状态,以及触发他们的状态发生改变的事件。该例子中有状态图的类是item和title类。Item类的状态图:域分析其中有些类有状态图,用来显示这些类的对象可能具有的不同162人机界面分析当对顺序图建模时,必须提供窗体和对话框作为人机交互的界面。在本分析当中,只要知道借书、预定和还书需要窗体就可以了。在此,详细的界面不必考虑。为了把系统中的窗体类和域类分开,所有的窗体类组织在一起放在GUIPackage包中。域类组织在一起放在BusinessPackage包中。人机界面分析当对顺序图建模时,必须提供窗体和对话框作为人机交163人机界面分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论