1、中程在线信息产业培训网中程在线信息产业培训网需求分析师培训需求分析师培训Day02中程在线信息产业培训网中程在线信息产业培训网Agenda需求分析最佳实践需求分析最佳实践需求建模最佳实践需求建模最佳实践用例驱动的需求过程实践用例驱动的需求过程实践中程在线信息产业培训网中程在线信息产业培训网Agenda需求分析最佳实践需求分析最佳实践需求建模最佳实践需求建模最佳实践用例驱动的需求过程实践用例驱动的需求过程实践需求分析是需求工程中的核心中程在线信息产业培训网中程在线信息产业培训网需求分析回顾需求分析回顾l所谓分析是指通过对问题域的研究,获得对该领域特性及存在于其中(需要解决)的问题特性的透彻理解并
2、用文档说明l分析方法:结构化分析法、面向对象分析法、面向问题域分析法l需求分析与需求捕获是交替进行的l需求分析的结果将通过建模、规格说明书编写的方式文档化中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 1l定义系统边界:评估原始需求,定义将要开发的系统的边界;确定哪些是系统需求,哪些是和系统相关的操作过程的需求,哪些是在系统范围之外的需求 主要效益:消除不必要的需求 引入成本:低 应用成本:低 实施指南:询问某项需求是否是基于不完整的或者不可靠的信息做出的?某项需求的实现是否需要在系统已定义的数据库之外的信息?某项需求是否和系统的核心功能相关?某项需求是否牵涉到系
3、统之外的功能或者设备的性能?中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 2l使用校验表进行需求分析:根据经验开发需求问题校验表,并将其用于需求的系统化分析,每一项需求都应按照校验表进行分析。主要效益:更快、更完整地进行需求分析 引入成本:低-中 应用成本:低 实施指南:校验表不超过10项草率设计:该需求包括不成熟设计或实现信息吗?组合需求:该需求是单独的需求还是可以细分为多个需求?多余需求:该需求只是系统的修饰,还是真正必需?使用非标准硬件:必须使用非标准的硬件还是软件?符合业务目标:符合在需求文档开始处定义的业务目标?需求多义性:不同人是否可以从不同方式来理
4、解?需求可实现性:基于当前技术,该需求可实现吗?需求可测试性:是否能够判断系统是否符合需求中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 3l使用软件支持协商:鼓励使用电子邮件来交换需求信息并且进行需求协商;也可以使用BBS、即时通信、群件系统来进行沟通与协商。主要效益:需求问题的更快解决 引入成本:低-中 应用成本:低-中 实施指南:电子邮件需指派一个问题管理人员,负责跟踪问题的提出、传递、回应和达成解决方案;BBS方案需要限制讨论的长度;群件方案需要事行定义好需求管理项的结构中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 4l对冲
5、突和冲突解决方案做好计划:任何需求集中都会有冲突、重叠和遗漏问题,应该安排会议讨论这些需求并解决分析过程中发现的问题。主要效益:需求问题的更快解决 引入成本:低 应用成本:低 实施指南:会议是解决需求冲突最快的方式,应聚焦于解决突出的需求问题;电子信息交换也是可取的方式之一;会议通常包括叙述阶段、讨论阶段和决策阶段;分析的结果要发给所有与会者中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 5l需求分级:每一项需求都应该标上优先级,以反映它们对项目相关人员的重要性和对整个系统成功与否的重要性。主要效益:关注最重要的需求 引入成本:低 应用成本:低 实施指南:在需求捕
6、获阶段就标明优先级是最理想的;通常需要进行了初始的分析工作才可能分配优先级;优先级的分配要由需求分析人员和项目相关人员共同完成;优先级不应太多,如必须的、有用的、希望的中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 6l使用多维方法进行需求分类:应对需求进行分类以便标记相关的需求,不必将单个需求只归到一个类,可以派生出多种分类方法。主要效益:有助于发现需求重叠和冲突 引入成本:低-中 应用成本:中 实施指南:可用系统、用户界面、数据库、通信、安全来进行分类;建议最多有56个分类;决定分类后,应把每个需求都和一到多个关键词关联起来;分类完成后,可以抽取很多组具有相同
7、分类的需求进行比较和分析中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 7l使用交互矩阵发现冲突与重叠:交互矩阵的每一行和每一列都代表一项需求,每一个元素都用来表示对应的需求是否冲突、重叠或者独立 主要效益:揭示需求重叠和冲突 引入成本:低 应用成本:中-高 实施指南:创建交互矩阵最简单的方法是使用电子表格程序,在首行、首列均标上需求标识符;然后如果需求冲突填入1、重叠填入1000,独立则填0;这样只需要用求和的方式来统计出各种数目;通常需求不应超过200条中程在线信息产业培训网中程在线信息产业培训网需求分析最佳实践需求分析最佳实践 8l评估需求风险:对每一项需求
8、或者一系列相关的需求进行风险分析,指出在实现需求过程中可能会发生的问题、这些问题发生的机率及其影响。主要效益:标识有问题的需求 引入成本:中 应用成本:中 实施指南:应考虑的风险主要有性能风险、安全风险、过程风险、实现技术风险、数据库风险、日程风险、外部风险、稳定风险中程在线信息产业培训网中程在线信息产业培训网Agenda需求分析最佳实践需求分析最佳实践需求建模最佳实践需求建模最佳实践用例驱动的需求过程实践用例驱动的需求过程实践需求建模是表述需求的关键手段中程在线信息产业培训网中程在线信息产业培训网讨论讨论l在你的实践中是否建模?l如果有建模,那么主要建哪些模型?有什么体会?l如果没有建模,主
9、要的原因是什么?中程在线信息产业培训网中程在线信息产业培训网模型是对现实的简化模型是对现实的简化中程在线信息产业培训网中程在线信息产业培训网建模的目的与原则建模的目的与原则l帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化 l仅当需要模型时,才构建它 l选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理。中程在线信息产业培训网中程在线信息
10、产业培训网系统建模最佳实践系统建模最佳实践 1l开发互补的模型:在单个模型中包含所有的系统规格说明信息是难以实现的,因为这样的系统将会特别复杂,不可能读懂,因此应该创建多个系统模型。主要效益:揭示规格说明中的错误和不一致 引入成本:低-中 应用成本:中 实施指南:通常会开发数据处理模型(DFD)、组合模型(E-R)、分类模型(类图)、刺激-响应模型(状态图、活动图)、过程模型等;选择什么模型取决于要说明的信息类型、模型的读者、模型开发者的技能、CASE工具中程在线信息产业培训网中程在线信息产业培训网系统建模最佳实践系统建模最佳实践 2l系统环境建模:为了理解需求,应该就系统环境开发一个或多个模
11、型,应该说明和本系统的接口和其他系统,以使用可能会使用本系统的业务过程。主要效益:记录必须说明接口的外部系统 引入成本:低 应用成本:低 实施指南:环境模型就是系统的使用语境模型,应包括和本系统直接交互的其他系统、可能和本系统共存并发生交互的系统、系统所在的业务过程。中程在线信息产业培训网中程在线信息产业培训网系统建模最佳实践系统建模最佳实践 3l系统体系结构建模:每次都应该开发系统的体系结构模型,用来说明系统是如何分解成子系统,还应解释子系统之间的通信。主要效益:有助于划分系统需求 引入成本:低-中 应用成本:低 实施指南:常用的体系结构模型包括客户机-服务器系统、分层系统、基于共享库通信的
12、系统、管道系统中程在线信息产业培训网中程在线信息产业培训网系统建模最佳实践系统建模最佳实践 4l用标准化方法进行系统建模:标准化方法是一种系统分析和设计方法,包括定义、开发和确认系统模型过程中用到的表示法、指南和规则。主要效益:使用标准的方式书写系统模型 引入成本:中-高 应用成本:中 实施指南:包括过程化(结构化)方法、面向对象方法,其主要包括一组推荐的系统模型和相应的开发该模型的表示法、一组建模规则、一组关于创建高质量系统模型的指南、一份描述、一些报告。中程在线信息产业培训网中程在线信息产业培训网系统建模最佳实践系统建模最佳实践 5l使用数据字典:系统建模中使用的名字都应当记录在数据字典中
13、,它是一份由计算机维护的名字列表以及相关的信息。主要效益:避免名字重复使用和误解 引入成本:中 应用成本:低 实施指南:进行数据字典的至少应包括模型中实体的名字、名字的别名及变化、实体类型、为何引入模型、针对实体的约束、指向相关实体的链接;数据字典必须由一台服务器维护,开发人员本机要与服务器经常实现同步中程在线信息产业培训网中程在线信息产业培训网系统建模最佳实践系统建模最佳实践 6l记录项目相关人员需求和系统模型之间联系:记录项目相关人员用自然语言描述的需求和说明这个系统的具体模型之间的关系。主要效益:便列发现受变更影响的需求和模型 引入成本:低 应用成本:中中程在线信息产业培训网中程在线信息
14、产业培训网UML基础基础中程在线信息产业培训网中程在线信息产业培训网UML发展历程发展历程中程在线信息产业培训网中程在线信息产业培训网UML特性与发展现状特性与发展现状lUML是一种Language(语言)lUML是一种Modeling(建模)LanguagelUML是Unified(统一)Modeling Languagel已进入全面应用阶段的事实标准l应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域l成为“产生式编程”的重要支持技术:MDA、可执行UML等中程在线信息产业培训网中程在线信息产业培训网为什么使用为什么使用UML建模建模lUML是一种统一的、标准化的建模语
15、言 lUML是一种应用面很广泛的建模语言模型的种类模型的用途业务模型对业务过程、工作流、组织的建模需求模型对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通设计模型包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息数据库模型设计数据库的结构、表结构以及与应用系统的交互实现模型用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导中程在线信息产业培训网中程在线信息产业培训网草图和蓝图草图和蓝图l蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型 l草图则通常是指手工绘制的、规范度较低的在纸张的UML模型 l大胆地绘制草图,尽可能基于草图进行讨论。对于
16、局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中 中程在线信息产业培训网中程在线信息产业培训网谁应该建模谁应该建模l业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与l需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与l设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。l实现模型:以资深开发人员(
17、设计人员)为主,架构师提供总体指导。l数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。中程在线信息产业培训网中程在线信息产业培训网常见认识误区常见认识误区lUML是一种方法论lUML就是一堆图形lUML只能够应用于面向对象开发中lUML就是Rose里的符号lUML的学习周期很长、很复杂中程在线信息产业培训网中程在线信息产业培训网UML的组成的组成l基本构造块:也就是建模元素,是模型的主体lUML规则:也就是支配基本构造块如何放在一起的规则l公共机制:运用于整个UML模型中的公共机制、扩展机制中程在线信息产业培训网中程在线信息产业培训网事物构造块事物构造块l事
18、物构造块是对模型中最具有代表性的成分的抽象 l结构事物:UML中的名词,它是模型的静态部分,描述概念或物理元素。l行为事物:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。l分组事物:UML中的容器,用来组织模型,使模型更加的结构化。l注释事务:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。中程在线信息产业培训网中程在线信息产业培训网面向对象视角下的世界面向对象视角下的世界l首先建立反应现实世界中不同事物的“构造块”,然后确定“构造块”之间的“关系”,再确定各个构造块的属性和“行为”。这样,在软件系统中就可以模拟现实世界的“构造块”之间的交互与协作 l面向对象
19、软件开发的核心思想就是高内聚(封装)、低耦合(消息驱动),使用简洁的接口拼合简单的部件中程在线信息产业培训网中程在线信息产业培训网结构事物结构事物l类(class)和对象(object)l接口(interface)l主动类(active class)l用例(use case)l协作(collaboration)l构件(component)l节点(node)中程在线信息产业培训网中程在线信息产业培训网类和对象类和对象l类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象 lUML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法 l对象则是类的一个
20、实例 中程在线信息产业培训网中程在线信息产业培训网接口接口l接口是描述某个类或构件的一个服务操作集中程在线信息产业培训网中程在线信息产业培训网主动类主动类l主动类实际上是一种特殊的类。引用它的原因,实际上是在开发中需要有一些类能够起到启动控制活动的作用 l主动类是指其对象至少拥有一个进程或线程,能够启动控制活动的类 中程在线信息产业培训网中程在线信息产业培训网用例与协作用例与协作l用例是著名的大师Ivar Jacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具 l用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个用例定义一组用例实例。l
21、协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构成的一个群体。l对于某个用例的实现就可以表示为一个协作中程在线信息产业培训网中程在线信息产业培训网构件构件l在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)l构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换 中程在线信息产业培训网中程在线信息产业培训网节点节点l为了能够有效地对部署的结构进行建模,UML引入了节点
22、这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件 l节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力 中程在线信息产业培训网中程在线信息产业培训网行为事物行为事物l交互(interaction):是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合 l交互的表示法很简单,就是一条有向直线,并在上面标有操作名 l状态机(state machine):是一个对象或交互在生命周期内响应事件所经历的状态序列 l在UML模型中将状态画为一个圆角矩形,并在矩形内写出状态名称及其子状态中程在线信息产业培训网中程在线信息产业培训网分组事物分组事
23、物l对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标中程在线信息产业培训网中程在线信息产业培训网注释事物注释事物l结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分中程在线信息产业培训网中程在线信息产业培训网关系构造块关系构造块关联关系关联关系l关联(Association)表示两
24、个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。l在UML中,使用一条实线来表示关联关系 l在关联关系中有两种比较特殊的关系:聚合和组合 l聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类间的关系是整体与部分的关系 l如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述中程在线信息产业培训网中程在线信息产业培训网关系构造块关系构造块其他关系其他关系l泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。l实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的
25、集合,这些操作用于规定类或组件的服务。l扩展表示将一个构造型附加到一个元类上,使得元类的定义中包括这个构造型。l有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖于元素X。中程在线信息产业培训网中程在线信息产业培训网UML规则规则l命名:也就是为事物、关系和图起名字。和任何语言一样,名字都是一个标识符 l范围:与类的作用域相似,包括所有者作用域和目标作用域两类 l可见性:可见性规则标准表示法Rose属性Rose方法public任一元素,若能访问包容器,就可以访问它+protected只有包容器中的元素或包容器的后代才能够看到它#private只有包容器中
26、的元素才能够看得到它-package只有声明在同一个包中的元素才能够看到该元素中程在线信息产业培训网中程在线信息产业培训网公共机制公共机制规格描述规格描述l在图形表示法的每个部分后面都有一个规格描述(也称为详述),它用来对构造块的语法和语义进行文字叙述。这种构思,也就使可视化视图和文字视图的分离:中程在线信息产业培训网中程在线信息产业培训网公共机制公共机制UML修饰与通用划分修饰与通用划分l在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类 lUML通用划分:1)类与对象的划分:类是一种抽象,对象是一个具体的实例 2)接口与实现的分离:接口是一种声
27、明、是一个契约,也是服务的入口;实现则是负责实施接口提供的契约 中程在线信息产业培训网中程在线信息产业培训网UML扩展机制扩展机制l构造型:在实际的建模过程中,可能会需要定义一些特定于某个领域或某个系统的构造块 中程在线信息产业培训网中程在线信息产业培训网UML扩展机制扩展机制l标记值:则是用来为事物添加新特性的。标记值的表示方法是用形如“标记信息”的字符串 l约束:是用来增加新的语义或改变已存在规则的一种机制(自由文本和OCL两种表示法)。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近中程在线信息产业培训网中程在线信息产业培训网
28、图名功能备注类图描述类、类的特性以及类之间的关系UML 1原有对象图描述一个时间点上系统中各个对象的一个快照UML 1非正式图复合结构图描述类的运行时刻的分解UML 2.0新增构件图描述构件的结构与连接UML 1原有部署图描述在各个节点上的部署UML 1原有包图描述编译时的层次结构UML中非正式图用例图描述用户与系统如何交互UML 1原有活动图描述过程行为与并行行为UML 1原有状态机图描述事件如何改变对象生命周期UML 1原有顺序图描述对象之间的交互,重点在强调顺序UML 1原有通信图描述对象之间的交互,重点在于连接UML 1中的协作图定时图描述对象之间的交互,重点在于定时UML 2.0 新
29、增交互概观图是一种顺序图与活动图的混合UML 2.0新增UML定义的图定义的图中程在线信息产业培训网中程在线信息产业培训网主要领域视图图结构静态视图类图设计视图复合结构图、协作图、构件图用例视图用例图动态状态视图状态机图活动视图活动图交互视图顺序图、通信图物理部署视图部署图模型管理模型管理视图包图特性描述包图UML视图和图视图和图中程在线信息产业培训网中程在线信息产业培训网UML图形分类图形分类中程在线信息产业培训网中程在线信息产业培训网4+1视图视图中程在线信息产业培训网中程在线信息产业培训网4+1视图视图l用例视图:它是最基本的需求分析模型,是可被最终用户看到的系统行为的用例组成。常用的模
30、型包括用例图、交互图、状态图、活动图等。l设计视图:又称为逻辑视图,以问题域的语汇组成的类和对象集合,用来描述类、接口、协作。常用的模型包括类图、交互图、状态图、活动图等。l进程视图:形成系统并发与同步机制的线程和进程,也就是将可执行线程和进程作为活动类的建模,可理解为设计视图的一次执行实例。它使用的模型与设计视图类似,区别在于更侧重于主动类。中程在线信息产业培训网中程在线信息产业培训网4+1视图视图l实现视图:对组成基于系统的物理代码的文件和组件进行建模,即装配与发布物理系统的构件和文件。常用的模型包括构件图、交互图、状态图、活动图。l部署视图:包含了形成系统硬件拓扑结构的节点,也就是描述组
31、件是如何物理地部署到一组物理的、可计算节点上的。常用的模型包括部署图、交互图、状态图、活动图。中程在线信息产业培训网中程在线信息产业培训网开发过程开发过程中程在线信息产业培训网中程在线信息产业培训网练习题练习题l 如果你想对一个类的用途进行简要描述,那么应该采用?请简要说明原因。A.标记值 B.规格描述 C.注释 D.构造型 l请列举出三个以上UML中的事物构造块。说说适合用来表示“系统向用户提供的功能”的构造块是什么l适用于模型管理的是哪张图?l下图所示的符号表示的是什么?它是关系构造块还是事物构造块?中程在线信息产业培训网中程在线信息产业培训网类图基础类图基础中程在线信息产业培训网中程在线
32、信息产业培训网理解面向对象思想理解面向对象思想中程在线信息产业培训网中程在线信息产业培训网理解面向对象思想理解面向对象思想l每个对象都扮演了一个角色,并为其它成员提供特定的服务或执行特定的行为。l在面向对象世界中,行为的启动是通过将“消息”传递给对此行为负责的对象来完成的;同时还将伴随着执行要求附上相关的信息(参数);而收到该消息的对象则会执行相应的“方法”来实现需求 l用类和对象表示现实世界,用消息和方法来模拟现实世界的核心思想中程在线信息产业培训网中程在线信息产业培训网如何用如何用UML表示一个类表示一个类l名称:每个类都有一个惟一的名称,通常采用CamelCase格式表示l属性:是已被命
33、名的类的特性,它描述该类实例中包含的信息 l操作:是类所提供的服务,它可以由类的任何对象请求以影响其行为l属性名和操作名也通常采用CamelCase格式表示,只不过首字母通常为小写。中程在线信息产业培训网中程在线信息产业培训网如何阅读类图如何阅读类图l先看清有哪些类,然后看看类之间存在的关系,并结合多重性来理解类图的结构特点以及各个属性和方法的含义中程在线信息产业培训网中程在线信息产业培训网读图过程读图过程l读出类:图中共有7个类,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcutl读出关系:从图中关系最复杂(也就是
34、线最密集)的类开始阅读,本图中最复杂的就是Order类。1)OrderItem和Order之间是组合关系,根据箭头的方向可知Order包含了OrderItem。2)Order类和Customer、Consignee、DeliverOrder是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。中程在线信息产业培训网中程在线信息产业培训网读图过程读图过程l多重性:用来说明关联的两个类之间的数量关系源类及多重性目标类及多重性分析Customer(1)Order(0n)订单是属于某个客户的,网站的客户可以有0个或多个订单Order(1)Consignee(1)每个订单只能够有一个收货人Ord
35、er(1)OrderItem(1n)订单是由订单项组成的,至少要有一个订单项,最多可有n个Order(1)DeliverOrder(1n)一个订单有一个或多个送货单说明:系统根据订单项的产品所属的商户,将其分发给商户,拆成了多个送货单!DeliverOrder(1)OrderItem(1n)一张送货单对应订单中的一到多个订单项DeliverOrder(1)Consignee(1)每张送货单都对应着一个收货人Peddlery(1)DeliverOrder(0n)每个商户可以有相关的0个或多个送货单OrderItem(1)Product(1)每个订单项中都包含着唯一的一个产品Peddlery(1)
36、Prodcut(0n)产品是属于某个商户的,可注册0到多个产品中程在线信息产业培训网中程在线信息产业培训网读图过程读图过程理解方法和图理解方法和图lOrder类,有两个方法:dispatch()和close(),从名字中可以猜出它们分别实现“分拆订单生成送货单”和“完成订单”。而在DeliveOrder()类中则有一个Close()方法,同理它应该表示“完成送货”。而在OrderItem中有一个stateChange()方法和deliverState,不难猜出它就是用来改变其“是否交给收货人”标志位的中程在线信息产业培训网中程在线信息产业培训网读图过程读图过程理解方法和图理解方法和图l先调用O
37、rder的dispatch()方法,它将根据其包含的OrderItem中产品信息,来按供应商户分拆成若干个DeliverOrder。商户登录系统后就可以获取其DeliverOrder,并在执行完后调用close()方法。这时,就将调用OrderItem的stateChange()方法来改为其状态。同时再调用Order的close()方法,判断该Order的所有的OrderItem是否都已经送到了,如果是就将其真正close()掉 中程在线信息产业培训网中程在线信息产业培训网使用了更多建模元素的类图使用了更多建模元素的类图中程在线信息产业培训网中程在线信息产业培训网辅助建模符号辅助建模符号l导航
38、箭号:类的实例之间只能沿着导航箭头的方向传递,在Order中可以获取其相应的Consignee,而从Consignee中是无法了解与其相关的Order的 l角色名称:Customer端有一个“+Owner”字符串,这表示Customer扮演的角色是Owner,也能对关联进行命名中程在线信息产业培训网中程在线信息产业培训网辅助建模符号辅助建模符号l导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名称前加上一个“/”符号。l限定符:在Order和OrderItem之间的组合关系中,OrderItem这端多了个方框,写着“ProductId”。在UML中称为限定符,存在限定符的关联称为受限
39、关联。它用来表示某种限定关系。在本例中说明:对于一张订单,每一种产品只能用一个订单项 l约束:用来说明规则,xorl职责:在类的属性栏中添加注释行表示,或增加了一个新的分栏中程在线信息产业培训网中程在线信息产业培训网对象约束语言对象约束语言环境与约束:每个OCL表达式都必须是针对某个元素的,因此在OCL表达式前必须说明它针对元素(这就称为环境)1)“context Object inv:”,其中Object是OCL表达式针对的建模元素名称;2)“Object”,其中Object是OCL表达式针对的建模元素名称。当声明了环境之后,就可以用self来引用它的变量 中程在线信息产业培训网中程在线信息
40、产业培训网对象约束语言对象约束语言l子集约束:l一致性:一个客户拥有零个或多个合同,发票是基于某个合同的,而一个客户将收到零张或多张发票 Invoice:self.contract.customer=self.customer中程在线信息产业培训网中程在线信息产业培训网对象约束语言对象约束语言l异或关系:l规定的取值范围:Rectangle:length0 and width0 中程在线信息产业培训网中程在线信息产业培训网用类图表示软件系统模型用类图表示软件系统模型l领域模型是从面向对象视角看待现实世界的结果,也就是通过类图描述现实世界中各种事物的关系。l分析模型和领域模型很相近,分析模型主要
41、是针对软件系统,领域模型则更多偏重对业务领域的分析 l设计模型则是在分析模型的基础上添加设计元素的结果。设计模型中的类的属性集更趋完善。中程在线信息产业培训网中程在线信息产业培训网用类图表示数据库逻辑模型用类图表示数据库逻辑模型l从某种意义上说UML中的类图是E-R图的超集,E-R图只针对存储的数据,而类图则在些基础上,增加了行为建模的能力。在使用类图来表示E-R模型时,要注意遵循以下策略 l将表示E-R模型的类,用UML的标准构造型“persistent”来表示;l展开类的结构性细节,并加强关联和多重性分析;l尽量消除循环关联、n-元关联 中程在线信息产业培训网中程在线信息产业培训网最常见的
42、域建模错误最常见的域建模错误l10.立即给关联指定多重度(multiplicity),确保每个关联都有明确的多重度。l9.对名词和动词做过度的分析,而背离初衷。l8.不对用例和时序图进行研究,就将操作分配给类。l7.对象和类的通用程度越高,在其他项目中重用它们的可能性就越大。l6.对于每个“一部分(part-of)”关联,就使用聚集还是组合(composition)而争论不休。中程在线信息产业培训网中程在线信息产业培训网最常见的域建模错误最常见的域建模错误l5.未对问题空间进行建模之前,就假定一种具体的实现策略。l4.将类命名为难以理解的名称cPortMgrIntf),而不是直观的名称(如Po
43、rtfolioManager)。l3.直接进入到实现结构,如友元关系和参数化类。l2.在域类和关系型数据库表之间建立一对一的映射。l1.过早地执行“模式化”,这将导致根据同用户问题毫无关系的模式创建解决方案。中程在线信息产业培训网中程在线信息产业培训网练习一练习一l下图是一个仓库管理系统的类模型局部,其中IncomeOrder是指入库单,OrderItem是指入库中的每一项,Product则是产品信息。请指出模型中的错误,说明原因并改正错误 中程在线信息产业培训网中程在线信息产业培训网练习二练习二l在描述“税务审批服务申请”时,它主要包含哪几个方面的内容?它有几种不同的类别?l对于每一条流转记
44、录,可能与几个“税务审批服务申请”相关?与几个处理人相关?中程在线信息产业培训网中程在线信息产业培训网练习三练习三cBinaryTreeOrderItemBookCatalog3过早考虑实现阶段的内容中程在线信息产业培训网中程在线信息产业培训网练习四练习四User PreferencesAccountcLoginMgrverifyPassword()User48LoginManager4.名字不直观8.太早定义类 的操作中程在线信息产业培训网中程在线信息产业培训网练习五练习五CatalogBookItemcSessionBeanShpngCartOrder(from Domain with A
45、ttributes)4564.名字不直观5.指定实现方 式EJB6.过早考虑聚 合或组合Shopping Cart中程在线信息产业培训网中程在线信息产业培训网练习六练习六Billing InfoAccount1.31BookOrder TableItemStatusShipping MethodOrderIDdatePlaceddateShippedrecipienttrackingNumberstatusshippingMethodforeignInventoryDBKeychangeStatus()retrieveShippingMethod()retrieveDetails()28102
46、.与数据库表 一一对应8.过早分配类 的操作10关联多重性Order中程在线信息产业培训网中程在线信息产业培训网练习七练习七Purchase OrderdatePlacedstatusitems:VectorOrderItemBooktitlepricepublishedDatethumbnailquantityOnHandreplenishThresholddiscountPctpublisherProxy OrderReal Order1251.使用了设计模 式:Proxy;2.price、quan publisher可能 成为关联类;5.用了Java中 的Vector中程在线信息产业培训
47、网中程在线信息产业培训网练习七练习七OrderPublisherStockPriceSchedulePurchase OrderBookItem中程在线信息产业培训网中程在线信息产业培训网练习八练习八Customer Reviewrate()Editorial ReviewCandidate Order(from Domain)Shopping CartOrderItemBookReviewwrite()585.使用了构造 型8.过早分配类 的操作Candldate OrderCustomer Review中程在线信息产业培训网中程在线信息产业培训网练习九:根据下面描述绘制类图练习九:根据下面
48、描述绘制类图 这是一个“碟片出租店”使用的系统,它将用于计算每一位顾客的消费金额并打印报表。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租凭时间和影片类型算出费用。影片分三类:普通片、儿童片和新片。除了计算费用,还要为常客计算机点数;点数会随着“租片种类是否为新片”而有所不同。中程在线信息产业培训网中程在线信息产业培训网练习九解答练习九解答 1 这是一个“碟片出租店”使用的程序,它将用于计算每一位顾客的消费金额并打印报表。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租期和影片类型算出其消费金额。影片分三类:普通片、儿童片和新片。除了计算消费金额,还要为常客计算累积点数;累积
49、点数会随着“租片种类是否为新片”而有所不同。中程在线信息产业培训网中程在线信息产业培训网练习九解答练习九解答 2 这是一个“碟片出租店”使用的程序,它将用于计算每一位顾客的消费金额并打印报表。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租期和影片类型算出其消费金额。影片分三类:普通片、儿童片和新片。除了计算消费金额,还要为常客计算累积点数;累积点数会随着“租片种类是否为新片”而有所不同。碟片出租店程序消费金额报表操作者顾客影片租期影片类型普通片儿童片新片累积点数中程在线信息产业培训网中程在线信息产业培训网练习九解答练习九解答 3碟片出租店程序消费金额 报表操作者 顾客影片租期影片类型
50、普通片儿童片新片累积点数在系统外系统本身应该是每次“交易”属性类!在系统外在系统外,但需记录,类!类!属性影片的属性类!类!类!顾客的属性报表顾客影片普通片儿童片交易交易新片中程在线信息产业培训网中程在线信息产业培训网练习九解答练习九解答 4新片顾客影片交易1.*111.*报表11.*1.*111.*11.*普通片儿童片中程在线信息产业培训网中程在线信息产业培训网练习十练习十l下图是小张绘制的一张关于网上商城用户管理的领域类图,但其中存在一些问题,请指出错误并说明理由 中程在线信息产业培训网中程在线信息产业培训网讨论讨论l类图有什么用?l用类图对领域进行建模时,主要的困难在于哪些方面?中程在线