资源描述
软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1第十章第十章面向对象设计面向对象设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2从面向对象分析(OOA)到面向对象设计(通常缩写为OOD),是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。尽管分析和设计的定义有明显区别,但是在实际的软件开发过程中二者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。分析和设计活动是一个多次反复迭代的过程软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 310.1 面向对象设计的准则l 模块化l对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。l 抽象l面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据类型,某些面向对象的程序设计语言还支持参数化抽象。l 信息隐藏l在面向对象方法中,信息隐藏通过对象的封装性实现:软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 410.1 面向对象设计的准则l 弱耦合l交互耦合:l如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。为使交互耦合尽可能松散,应该遵守下述准则。l尽量降低消息连接的复杂程度。l减少对象发送(或接收)的消息数。l继承耦合l与交互耦合相反,应该提高继承耦合程度。为获得紧密的继承耦合,特殊类应该确实是对它的一般化类的一种具体化,软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 510.1 面向对象设计的准则l强内聚l服务内聚l 一个服务应该完成一个且仅完成一个功能。l类内聚l 设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的。l一般特殊内聚l 设计出的一般特殊结构,应该符合多数人的概念,更准确地说,这种结构应该是对相应的领域知识的正确抽取。l可重用l尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类),l如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 610.2 启发规则l 设计结果应该清晰易懂l 一般特殊结构的深度应适当l 设计简单的类l 使用简单的协议l 使用简单的服务l 把设计变动减至最小软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 710.3 软件重用l重用l知识的重用l方法和标准的重用l软件成分的重用l软件成分的重用级别l代码重用l 源代码剪贴l 源代码包含l 继承l设计结果重用l 重用某个软件系统的设计模型l分析结果重用l典型的可重用软件成分l项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用户文档和技术文档、用户界面、数据、测试用例软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 8l 类构件l 可重用软构件应具备的特点l模块独立性l具有高度可塑性l接口清晰、简明、可靠l 类构件的重用方式l实例重用l继承重用l多态重用软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 910.4构件级设计l构件是计算机软件中的一个模块化的构造块l在UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。l面向对象的观点:l 构件包括一组协作类l 构件中的每一个类都被详细阐述,包括所有的属性和与其实现相关的操作。l 从分析模型开始,详细描述分析类(对于构件而言该类与问题域相关)和基础类(对于构件而言该类为问题域提供了支持性服务)。l传统观点:l 一个构件就是程序的一个功能要素,有处理逻辑、实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统构件称为模块l 模块控制构件,协调问题域中所有其他构件的调用;l 问题域构件,完成部分或全部用户的需求;l 基础设施构件,负责完成问题域中所需要相关处理的功能软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1010.4构件级设计l1:标识出所有与问题域相对应的设计类l2:确定所有与基础设施相对应的设计类l3:细化所有不能作为复用构件的设计类l在类或构件的协作时说明消息的细节l为每一个构件确定适当的接口l细化属性并且定义相应的数据类型和数据结构l详细描述每个操作中的处理流l4:说明持久性数据源(数据库和文件)并确定管理数据源所需要的类l5:开发并且细化类或构件的行为表示l6:细化部署图以提供额外的实现细节l7:考虑每一个构件级设计表示,并且时刻考虑其他选择软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1110.4构件级设计l基于类的构件设计原则基于类的构件设计原则l开闭原则(The Open-Closed Principle,OCP):模块应该对外延具有开放性,对修改具有封闭性。l替换原则(Subsitution Principle,SP):子类可以替换它们的基类。l依赖倒置原则(Dependency Inversion Principle,DIP):依赖于抽象、而非具体实现l接口分离原则(Interface Segregation Principle,ISP):多个用户专用接口比一个通用接口要好。l迪米特法则(最少知道原则)l合成复用原则l打包的原则l发布复用等价性原则(Release Reuse Equivalency Principle,REP):复用的粒度就是发布的粒度。l共同封装原则(Common Closure Principle,CCP):一同变更的类应该和在一起。l共同复用原则(Common Reuse Principle,CRP):不能一起复用的类不能被分到一组。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1210.4构件级设计l 有经验的软件开发者建立了既有通用原则又有惯用方案的指令系统来指导他们编制软件。l 如果以结构化形式对这些问题、解决方案和命名进行描述使其系统化,那么这些原则和习惯用法就可以称为模式。l基于职责设计对象(General Responsibility Assignment Software Patterns,GRASP)l 信息专家、创建者、控制器、高内聚、低耦合、多态、纯虚构、间接性和防止变异lGoF(Gang of Four)模式l 23种设计模式,其中基本的有适配器、工厂、单实例类、策略、组合、外观和观察者等模式软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1310.4构件级设计l 创建模式l工厂方法模式:如swing 中的BorderFactoryl 使用工厂类统一创建继承了同一接口的多个产品对象l抽象工厂模式l 为产品族提供了统一的创建接口l单例模式:如日历单例类 calendarl 一个类只有一个实例,并提供对该实例的全局访问l创造者模式如字符串建造者 StringBuilderl 将一个复杂对象的创建与它们的表示分开l原型模式:如进程建造者ProcessBuilderl 通过复制原型实例创建新的对象软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1410.4构件级设计l 结构型模式l讨论类和对象的结构l适配器模式:如Iterator,Enumeration,EventListenerl装饰模式:如I/O输入输出流管道l代理模式:如动态代理机制l外观模式l桥接模式l组合模式l亨元模式软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1510.4构件级设计l行为模式:类与对象之间的通信关系l父类与子类l 策略模式l 模板方法模式l类之间l 观察者模式l 迭代子模式l 责任链模式l 命令模式l类的状态l 备忘录模式l 状态模式l通过中间类l 访问者模式l 中介者模式l 解释器模式软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1610.4构件级设计l职责驱动设计也即基于职责的设计。在设计中软件对象具有职责,即对其所作所为进行抽象。lUML把职责定义为“类元的契约或义务”。就对象的角色而言,职责与对象的义务和行为相关。职责分为以下两种类型:l对象的行为职责包括:l 自身执行一些行为,如创建对象或计算l 初始化其他对象中的动作l 控制和协调其他对象中的活动l对象的认知职责包括:l 对私有封装数据的认知l 对相关对象的认知l 对其能够导出或计算的事物得认知l职责的粒度会影响职责到类和方法的转换软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1710.5 系统分解l大多数系统的面向对象设计模型,在逻辑上都由四大部分组成。这四大部分对应于组成目标系统的四个子系统,它们分别是问题域子系统,人-机交互子系统、任务管理子系统和数据管理子系统l当然,在不同的软件系统中,这四个子系统的重要程度和规模可能相差很大,规模过大的在设计过程中应该进一步划分成更小的子系统,规模过小的可合并在其他子系统中。某些领域的应用系统在逻辑上可能仅由3个(甚至少于3个)子系统组成。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1810.5 系统分解l在软件系统中,子系统之间的交互有两种可能的方式,l客户供应商(Client_supplier)关系(P 240)l平等伙伴(peer_to_peer)关系。(P 240)l总的说来,单向交互比双向交互更容易理解,也更容易设计和修改,因此应该尽量使用客户供应商关系l把子系统组织成完整的系统时,有水平层次组织和垂直块组织两种方案可供选择。l水平层次组织l 这种组织方案把软件系统组织成一个层次系统,每层是一个子系统。上层在下层的基础上建立,下层为实现上层功能而提供必要的服务。l垂直块组织l 这种组织方案把软件系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1910.6 设计问题域子系统l只要可能,就应该保持面向对象分析所建立的问题域结构。l面向对象设计仅需从实现角度对问题域模型作一些补充或修改,主要是增添、合并或分解类对象、属性及服务,调整继承关系等l 在面向对象设计过程中,可能对面向对象分析所得出的问题域模型作的补充或修改。l调整需求l重用已有的类l把问题域类组合在一起l增添一般化类以建立协议l调整继承层次 软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2010.6 设计问题域子系统软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2110.7 设计人机交互子系统l 设计人-机交互子系统的策略l分类用户l描述用户l设计命令层次l 研究现有的人-机交互含义和准则l 确定初始的命令层次l 精化命令层次l设计人机交互类软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2210.8 设计任务管理子系统l 分析并发性l通过面向对象分析建立起来的动态模型,是分析并发性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发的。l 设计任务管理子系统l常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。设计任务管理子系统,包括确定各类任务并把任务分配给适当的硬件或软件去执行。l设计步骤l 确定任务l 确定确实需要的任务l 确定资源l 把任务分配给硬件或软件软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2310.9 设计数据管理子系统l 选择数据存储管理模式l文件管理系统l关系数据库管理系统l面向对象数据库管理系统l 设计数据管理子系统l设计数据格式l设计相应的服务l 类中的服务设计和关联的设计(P252-P255)软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2410.10 面向对象详细设计l 面向对象详细设计的目的就是不断精化设计类l 1、领域模型精化l领域模型也称为概念模型、领域对象模型和分析对象模型。l领域模型的精化对类图和交互图的精化起了至关重要的作用,也是设计个良好系统的关键。l使用泛化、关联类、时间间隔、组合和包等概念精化领域模型。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2510.10 面向对象详细设计l泛化l 泛化是在多个概念中识别共性和定义超类(普遍概念)与子类(具体概念)关系的活动。l 在领域中识别父类和子类是一个有价值的活动,这样可以使我们对概念有更概括、精炼和抽象的描述。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2610.10 面向对象详细设计l 将概念类划分为子类的动机有:l子类有额外的有意义的属性;l子类有额外的有意义的关联;l子类概念的操作、处理、反应或使用的方式不同于其超类或其他子类,而这些方式是我们所关注的;l子类概念表示了一个活动体,其行为与超类或者其他子类不同,而这些行为是我们所关注的。l 泛化和定义概念超类的动机:l潜在的概念子类表示的是相似概念的不同变体;l子类满足100%准则(即概念超类的定义必须100%适用于子类,子类必须100%与超类一致。);l所有子类都具有相同的属性,可以将其解析出来并在超类中表达;l所有子类都具有相同的关联,可以将其解析出来并与超类关联。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2710.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2810.10 面向对象详细设计l关联类l 在POS机系统中,授权服务给每个商店分配一个商业ID,商店发送授权服务的支付授权请求需要商业ID标识商店,商店对于每个服务有不同的商业ID。Store可能有多个merchantID值,所以将merchantID作为Store的属性是不正确的。同理,放入Authorization Service中也不正确。l 原则:在领域模型中,如果类A可能同时有多个相同的属性B,则不要将属性B置于A之中。应该将属性B放在另一个类C中,并且将其与类A关联。这样就得出一个关联类C。l 可以用一个关联类ServiceContract来拥有属性merchantIDl 关联类的增加具有原则:l有某个属性与关联相关;l关联类的实例具有依赖于关联的生命期;l两个概念之间有多对多关联,并且存在与关联自身相关的信息。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 2910.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3010.10 面向对象详细设计l(聚合)关系和(组合)关系l 共享聚集是UML中的是UML中的一种模糊关联,其不明确的暗示了整体和部分关系l 组合聚集也称组成聚集,是一种强的整体部分聚合关系,并且在某些模型中具有效用。组合关系意味着:l 在某一时刻,部分的一个实例只属于一个组成实例;l 部分必须总是属于组成;l 组成要负责创建和删除部分,可以自己创建和删除部分也可以和其它对象协作进行创建和删除部分;l 组成被销毁,其部分必须要销毁。l 组合关系的识别准则是:l 部分的生命期在组成的生命期之内,部分的创建和删除依赖于整体;l 在物理或者逻辑组装上,有明确的整体部分关系;l 组成的某些属性会传递给部分;l 对组成的操作可能传递给部分。l 识别组合聚集的好处l 有利于澄清部分对整体的依赖的领域约束;l 对整体的复制、拷贝这些操作经常会传递给部分软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3110.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3210.10 面向对象详细设计l时间间隔l 例如,POS机系统在初始设计时,SalesLineItems与ProductDescriptions关联,记录了销售项的价格。在精化过程中,需要关注与信息、合同等相关的时间间隔问题。如果SalesLineItems从ProductDescriptions取得当前价格,当价格改变时,以前的销售将指向新的价格,这很显然是不正确的。l 需要区别销售发生时的历史价格和当前价格。l 基于信息需求,可以采用两种方法对此问题解决:l 一是可以在ProductDescriptions中保存当前价格,仅将销售发生时的价格写入SalesLineItem;l 二是将一组ProductPrices与ProductDescriptions关联,每个ProductPrices关联适用的时间间隔。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3310.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3410.10 面向对象详细设计l使用包来组织领域模型l 将领域模型划分成包结构时,将满足下述条件的元素放在一起:l在同一个主题领域,概念或目标密切相关的元素;l在同一个类层次结构中的关系;l参与同一个用例的元素;l有很强的关联性的元素。l 例如,在POS机系统领域模型中包的结构软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3510.10 面向对象详细设计l 2、精化的交互图l在交互图中,领域模型指出了需要设计的软件对象,设计模型中的设计类是以领域模型的类为基础的。l在顺序图和协作图精化设计中,一些类直接来自前面的分析模型中的类,还有一些针对软件系统的更好的实现虚构出来的。l例如设计makeNewSale操作。要处理一次新的销售,首先必须创建软件对象Sale。根据控制器模式我们还需要设计一个转发makeNewSale请求的对象Register。Register是记录Sale的类。又根据创建者模式得出应该由Register创建Sale。l在销售过程中必须设计一个集合来存储一系列的商品,所有由Sale对象创建了记录所有将来会添加的集合SalesLineItem实例。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3610.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3710.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3810.10 面向对象详细设计软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 3910.10 面向对象详细设计l 3、精化的类图l类图和对象图是设计阶段的主要制品l顺序图和协作图中的消息映射为类图中的方法,交互消息的对象映射为类的对象,每个消息的交互实现映射为类图和对象图中方法的实现。l在类图的精化设计中不仅要得到每个类中的属性和方法,还要有方法的粗略实现(也即方法的实现过程)软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4010.10 面向对象详细设计l可见性的设计主要有四种:l 属性可见性:一个类中有另一个类的对象l 参数可见性:一个对象是另一个对象中方法的参数l 局部可见性:一个类对象的方法中有另一个类的对象作为其方法的局部变量l 全局可见性:一个类对象具有某中方式的全局可见性,不提倡l类图的细化l 类图的设计是以交互图的设计为基础的,类图中的元素也是从交互图中抽象提取出来的。l 通过交互图中对象之间的交互,找出对象所属的类以及类之间的关系。l 通过对交互图中对象之间消息的交互的分析和细化得到类图中的属性和方法。l 对类图进行分析的时候也必须理解类图和类之间的关系如何映射得到具体的实现类。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4110.11 设计优化l 提高效率的几项技术l增加冗余关联以提高访问效率l调整查询次序l保留派生属性软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4210.11 设计优化l 调整继承关系l在面向对象设计过程中,建立良好的继承关系是优化设计的一项重要内容l抽象与具体 l 首先创建一些满足具体用途的类,然后对它们进行归纳,一旦归纳出一些通用的类以后,往往可以根据需要再派生出具体类l为提高继承程度而修改类定义 l 如果在一组相似的类中存在公共的属性和公共的行为,则可以把这些公共的属性和行为抽取出来放在一个共同的祖先类中,供其子类继承l利用委托实现行为共享 l 仅当存在真实的一般特殊关系(即子类确实是父类的一种特殊形式)时,利用继承机制实现行为共享才是合理的。l 如果只想把继承作为实现操作共享的一种手段,则利用委托(即把一类对象作为另一类对象的属性,从而在两类对象间建立组合关系)也可以达到同样目的,而且这种方法更安全。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4310.11 设计优化软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4410.12 举例l POS机系统l收银员可以记录销售商品信息,系统计算总价。l收银员能够通过系统处理支持,包括现金支付、信用卡支付和支票支付。l经理还能处理顾客退货。l系统要求具有一定的容错性,即如果远程服务(如库存系统)暂时中断,系统必须仍然能够获取销售信息并且至少能够处理现金付款。lPOS机必须支持日益增多的各种的客户终端和接口,比如多种形式的用户图形界面、触摸屏输入装置、无线PDA等。l系统需要一种机制提供灵活的处理不同客户独特的业务逻辑规则和定制能力。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 4510.12 举例lPOS机系统的相关者l收银员:能够准确、快速地输入,而且没有支付错误,因为如果少收货款,将从其薪水众扣除。l售货员:自动更新销售提成。l顾客:希望以最小代价完成购买活动并得到快速服务。便捷、清晰地看到所输入的商品项目和价格。得到购买凭证,以便退货。l公司:希望准确地记录交易,满足顾客要求。确保记录了支付授权服务的支付票据。有一定的容错性。能够自动、快速地更新记帐和库存信息。l经理:能够快速执行超控操作,并易于更正收银员的不当操作。l支持授权服务:依据正确的通信格式进行授权服务。l库存系统:正确的方式更新库存信息。l记账系统:能够准确地记录每次销售支付信息。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 46软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 47l 用例图软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 48l 主要功能l处理销售:收银员完成一次销售记录,并出具票据和更新库存系统和帐务系统。l处理支付:完成一次销售对应的支付,包括现金支付,信用卡支付和支票支付。l处理退货:根据顾客请求完成商品退货处理。l办理会员卡:注册、注销和更新会员记录软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 49l用例文档l用例名称:用例名称:处理销售l范围范围:POS机应用l级别级别:用户目标l主要参与者主要参与者:收银员l涉众及其关注点涉众及其关注点:l 收银员:希望能够准确、快速地输入,而且没有支付错误,因为如果少收货款,将从其薪水众扣除。l 售货员:希望自动更新销售提成l 顾客:希望以最小代价完成购买活动并得到快速服务。希望便捷、清晰地看到所输入的商品项目和价格。希望得到购买凭证,以便退货。l 公司:希望准确地记录交易,满足顾客要求。希望确保记录了支付授权服务的支付票据。希望有一定的容错性,即便在某些服务器构件不可用时(如远程信用卡验证),也能够完成销售。希望能够自动、快速地更新帐户和库存信息。l 经理:希望能够快速执行超控操作,并易于更正收银员的不当操作。l前置条件前置条件:收银员必须经过确认和认证。l成功保证(或后置条件)成功保证(或后置条件):存储销售信息,更新帐户和库存信息,记录提成,生成票据,记录支付授权的批准。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 50l主要交互过程l 1.顾客携带所购商品或服务到收银台通过POS机付款。l 2.收银员开始一次新的销售交易。l 3.收银员输入商品条码。l 4.系统逐步记录出售的商品,并显示该商品的描述、价格和累计额。价格通过一组价格规则来计算。收银员重复34步,直到输入结束。l 5.系统显示总额和计算折扣。l 6.收银员告知顾客总额,并请顾客付款。l 7.顾客付款,系统处理支付。l 8.系统记录完整的销售信息,并将销售和支付信息发送到外部的账务系统(进行账务处理和提成)和库存系统(更新库存)。l 9.系统打印票据。l 10.顾客携带商品和票据离开。软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 51l用活动图描述交互过程软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 52用活动图描述交互过程软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 53边界类、控制类、软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 54软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 55l“处理销售”用例的类图软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 56l“处理销售”用例的协作图软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 57l 处理销售的顺序图l1创建一次新的销售软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 58l 2、添加商品项软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 59l 3、计算总价软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 60l 处理支付软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 61l 状态图软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 62l 逻辑架构软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 63l 设计l顺序图l创建一次新销售软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 64l 输入商品软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 65l 计算总价软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 66l 处理支付软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 67l 类图软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 68OOOO分析模型转换到分析模型转换到OOOO设计模型设计模型 OO分析模型转换到分析模型转换到OO设计模型设计模型消息设计消息设计类及对象设计类及对象设计子系统设计子系统设计责任责任设计设计设计模型设计模型属性、操作、属性、操作、协作者协作者对象对象-行为模行为模型型对象对象-关 系 模关 系 模型型类类/对对象象模型模型使用使用实例实例分析模型分析模型可由整体客户可由整体客户需求(用例)需求(用例)和外部可观察和外部可观察到的事件和状到的事件和状态(对象态(对象-行为)行为)导出导出由由包含在类包含在类/对象模型中的对象模型中的属性、操作和属性、操作和协作的描述而协作的描述而映射得来映射得来可由对象可由对象-关系关系模型导出模型导出利用类利用类/对象对象模型中的属性、模型中的属性、操作和协作导操作和协作导出出软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 69l需求分析l图书馆将书和杂志借给读者,读者和书、杂志一样必须在系统中注册l图书馆负责购买图书。对于流行的书一般要多买几本。如果旧书或杂志过期了或很破烂则可以从图书馆中删除l图书馆管理员是图书馆的雇员,负责与客户(借书者)打交道。l借书者可以预定目前借不到的书或杂志,一旦预定的书被返还给图书馆或图书馆新购买的书到达,就立即通知预定者l图书馆可以方便的产生、更新和删除系统中与书目、借书者、借书和预定的有关信息l系统能够在所有流行的技术环境下运行(UNIX,Windows,OS/2等等),还应该有一个非常好的图形用户界面(GUI)l系统应该具有很好的可扩展性软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 70Borrower the BookReturn the BookBorrowerManagerReserve the BookSearch for BookQuery InfoBorrowerReturn With FineKnow the Title of the BookLogon the SystemMaintenance BooksMaintenance TitlesMaintenance BorrowersSystem Manager软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 71l用例定义l定义actorl 图书管理员l 借书者:不直接参与系统交互l用例l 借出书目(Lend Item)l 返还书目(return Item)l 预定(Make Reservation)l 删除预定(Remove Reservation)l 增加标题(Add Title)l 更新和删除标题(Updata or Remove Title)l 增加书目(Add Item)l 删除书目(Remove Item)l 增加借书者(Add Borrower)l 更新和删除借书者(Updata or Remove Borrower软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 72l图书馆将书和杂志借给读者,读者和书、杂志一样必须在系统中注注册册l图书馆负责购买图书。对于流行的书一般要多买几本。如果旧书或杂志过期了或很破烂则可以从图书馆中删除l图书馆管理员是图书馆的雇员,负责与客户(借书者)打交道。l借书者可以预定预定目前借不到的书或杂志,一旦预定的书被返还给图书馆或图书馆新购买的书到达,就立即通知预定者l图书馆可以方便的产生、更新和删除系统中与书目、借书者、借书和预定的有关信息l系统能够在所有流行的技术环境下运行(UNIX,Windows,OS/2等等),还应该有一个非常好的图形用户界面(GUI)l系统应该具有很好的可扩展性软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 73l 问题域对象l 类l借书者l标题l书的标题l杂志的标题l书目l预定l借书软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 74LoginFormBorrowBookFormReturnBookFormReserveBookFormQueryInfoFormSearchBookFormMainBookFormMainBorrowerFromMainTitlesFormBookBorrowerTitleMagazineLoanRecordReserveRecordLoanReturnReserveManage软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 75MagazineBookItemLoanReserve1111ReserveRecordBorrower0.n10.n10.n10.n1LoanRecordReturnTitle11.n11.n1111软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 76:BorrowerPeople:BorrowerM.:BorrowBookForm:Loan Find Borrower:Title:Item:Borrower:LoanRecord1:Begin Loan2:Logo the system3:request Loan4:Check book item5:find item6:Find Borrower7:8:Create Record软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 77NewBorrowerAvailabledo/Check the number of borrowerloan or return number max loan number=0 UnavailabneLoan number=Max-1 ReturnNewStateDelete number=0 软件工程(Software Engineering)沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 78
展开阅读全文