软件工程教案5(第三章).ppt
3.4 分析建摸方法,结构化分析(传统建模方法)面向对象分析,计算机世界,现实世界,影射,计算机世界,现实世界,结构化开发方法,结构化分析,结构化设计,结构化编程,OOA,OOD,OOP,面向对象开发方法,3.4.2 面向对象分析方法,思考题软件开发中为什么要使用面向对象 方法?面向对象分析方法与结构化分析方 法有哪些相似之处?有何区别?面向对象方法是对过去的一个完全 突破,还是“换汤不换药”?,对象(object),现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。对象具有的含义:在现实世界中:是客观世界中的一个实体 在面向对象程序中:表达成计算机可理解、可操纵、具有一 定属性和行为的对象 在计算机世界中:是一个可标识的存储区域,面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。,面向对象=对象+类+继承+消息通信,面向对象的主要特征:封闭性(Encapsulation)继承性(Inheritance)多态性(Polymorphism),类(class),具有共同属性和行为的对象的抽象类与对象的关系类是对象的抽象对象是类的实例,类,对象,对象、实体与类,对象,实体,类,抽象数据类,计算机世界,现实世界,计算机逻辑的实现,影射,抽象,实例化,抽象,概念世界,封装,封装是软件开发方法的重要原则,有两个涵义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐蔽),传统方法数据与过程是分离的,过程1,输入,输出,过程2,过程3,数据实体,属于该对象的数据,对象,处理数据的方法,消息,消息,对象把数据和处理数据的方法封状成一个单元,传统方法和面向对象方法的比较,传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出,面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息,继承(继承性inheritance),继承性是父类和子类之间共享数据和方法的机制继承性具有传递性继承性包括单继承和多重继承,子类,继承部分,增加部分,父类,共性部分,继承性作用,使软件系统具有开放性 更好地进行抽象与分类 增强代码的重用率,多态(多态性polymorphism),不同的对象收到同一消息可产生完全 不同的结果,这一现象叫做多态多态的效果 用户发送一个通用的消息,而实现的细节则由接收对象自行决定,多态性的作用,增强了操作的透明性,可理解性和可扩展性 增强了软件的灵活性和重用性,消息(message),消息 对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明消息内容 通常包含接收方及请求接收方完成的功能信息发送方 发出消息,请求接收方响应接收方 收到消息后,经过解释,激活方法,予以响应,为什么对面向对象方法感兴趣?,面向对象方法的主要优点:自然性 追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。软件复用 可复用性(可重用性)reusebility可扩展性可管理性,可复用性(可重用性)面向对象技术允许复用的不仅仅是代码,通过面向对象技术,我们可以复用需求、分析、设计、测试计划、用户界面以及体系结构等等,事实上,软件工程生存期中的每个部分都可以复用。,传统系统分析:面向功能,把系统看成 一组功能OOA:把问题当作一组相互作用 的实体,并确定实体间关系,面向对象技术是一个有全新概念的开发模式,其特点是:(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的;(2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;(3)将OOA、OOD、OOP集成到生存 期的相应阶段.,开发方法的组合,OO方法的开发过程,OO方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的“部件”都是类,在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。,类的生存期模型,类的规格说明,从废弃型开发,既存类的复用,渐增式的实现,渐增式的测试,求精和 维护,测试用例和测试 的开发,实现,从既存类演变,类的设计与实现,类的规格说明指导对存放现存类的软件库进行查找现存类提供当前应用所需功能三种可能利用现存类的方向:现存类的复用 从现存类进行演变 从废弃类进行开发,对象之间的联系与对象模型,面向对象方法开发软件通常建立的三种形式的模型 描述系统数据结构的对象模型 描述系统控制结构的动态模型 描述系统功能的功能模型 三种模型从三个不同但由密切相关的角度模拟目标系统。对象模型是最重要、最基本、最核心的。,对象模型 对象模型表示静态的、结构的系统数据的性质。对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。,类及对象间常见的联系 分类关系(归纳关系、一般与特殊的关系)组成关系(组合关系、整体/部分的关系)对象属性之间的静态的联系 对象行为的动态联系,分类关系(一般与特殊的关系)示例,学生,本科生,研究生,组成关系(整体与部分的关系)示例,学科部,办公室,学院,实验室,对象模型中表现上述联系的结构和连接,(1)分类结构(一般/特殊结构)分类是对象抽象的基础 分类结构表现的是事物的一般与特殊的关系,即“is-a”关系。面向对象术语中常把一般与特殊的关系称为泛化(Generalization)与特化(Specialization)联系,存户,一般/特殊结构举例,一般类(父类、基类、超类),特殊类(子类、具体类),继承,一个特殊类中的所有对象可继承一般类中的属性、服务、关系,账号姓名余额,存款取款,支票存户,储蓄存户,利息率,(2)组装结构(整体/部分结构)组装结构表示对象类之间的组成关系,即整体与部分的关系。整体对于部分是“has-a”关系。(部分对于整体是“a-part-of”关系)组装结构体现了面向对象方法的 聚合(也叫聚集 Aggregation)原则。,整体/部分结构表示法举例,微机,1+,电源,主机箱,键盘,监视器,鼠标,内存,CPU,硬盘,o,(3)实例连接(Instance Connection)实例连接表现了对象之间的静态联系,通过对象的属性来表现对象之间的依赖关系。面向对象术语中把对象之间的实例连接称为链接(Link),把类之间的实例连接称为关联(Association),实例连接示例及表示,教师,指导论文0,m 1,学生,教师为学生指导论文:,教师,教学0,m 0,n,学生,教师为学生授课:,关联关系(链属性)的表示 允许实例连接带有一组属性,这些属性通过关联来描述,类 1,连接名称m n,类 1,连接属性,关联关系(链属性),为之工作,工资职务,雇主,雇员,个人名字身份证号,公司名字地址,题目答辩时间成绩,教师,学生,指导论文0,m 1,(4)消息连接(Message Connection)对象之间的通信联系。一需要另一个对象的服务,便向它发出个对象请求服务的消息,接收消息的对象响应消息,触发所要求的服务操作。消息连接体现了对象行为的动态联系。,一家公司的对象模型(OMT)示例,为之工作,管理 0,1,姓名身份证号码地址,员工,名字电话号码主要产品地址,公司,职务,雇用解雇,项目名预算优先级,项目,产品名成本重量,产品,工人,经理,部门,部门名,主持,参加,1+,1+,1+,1+,1+,生产,网上商店对象模型(部分)示例(UML),销售代表 0.1,定货,nameaddress,顾客,creditRating():String,产品,雇员,1,dataReceivedisPrepaidnumber:Stringprice:Money,协作顾客,contactNamecreditRatingcreditLimit,creditCard#,个人顾客,creditRating()=“poor”,定货作业线,dispatch()close(),remind()billForMonth(),Quantity:Integerprice:MoneyisSatisfied:Boolean,1,*,*,*,*,1,物品,面向对象的方法论 方法论是如何对复杂系统进行“抽象”的工作,以及如何建立抽象模型。,二.面向对象分析建模(OOA)面向对象分析方法确实不同于结构化分析方法吗?Fichman,R.G and C.F.Kemerer,在“Object-oriented Conventional Analysis and Design Methodologies”中阐述:我们的结论是面向对象分析方法表现了相对面向过程的方法学(如结构化分析)的根本性变化,而且相对面向数据的方法学仅仅是增量性的变化。面向过程的方法学在建模过程中的关注点不是对象的内在性质,从而导致了和面向对象的三个基本原理相正交的问题域模型。,面向对象分析方法使得软件工程师能够通过对象、属性和操作(作为主要的建模成分)的表示来对问题建模。,建立分析模型5个基本原则:(1)建模信息域;(2)描述模块功能;(3)表示模型行为;(4)分解以模型显示更多细节;(5)早期模型表示问题的本质,而后期 模型提供实现细节。,OOA的意图是定义所有和被求解的问题相关的类(及同类关联的关系和行为),为了达到这个目标,必须完成以下任务:(1)必须在客户和软件工程师之间沟 通了解基本的用户需求;(2)必须标识类(定义属性和方法);(3)必须刻划类层次;(4)表示对象对象关系(对象连接);(5)必须建模对象行为;(6)任务(1)到(5)递进地反复使用,直至 完成建模,流行的几种面向对象方法:Booch方法Coad-Yourdon方法Rumbaugh 方法(简称OMT)(Object Modeling Technology)Jacobson 方法(简称OOSE)由Rumbaugh、Booch、Jacobson 提出的统一建模语言(Unify Modeing Language简称UML),目前流行的OOA方法概述Coad-Yourdon方法Coad-Yourdon的OOA过程概述:使用“寻找什么”标准来标识对象定义一般/特殊结构定义整体/部分结构标识主题(子系统构件的表示)定义属性定义服务,目前流行的OOA方法概述Booch方法Booch的OOA宏观开发过程概述:标识类和对象标识类和对象的语义标识类和对象间的关系进行精化,目前流行的OOA方法概述Rumbaugh方法(简称OMT)Rumbaugh的OOA过程概述:开发对问题的范围陈述建造对象模型开发动态模型构造系统的功能模型,不同面向对象分析方法的相似步骤:(1)使用基本需求作为指南选择类 和对象;(2)为对象标识属性和操作;(3)定义组织类的结构和层次;(4)建造对象-关系模型的;(5)建造对象-行为模型。,统一的OOA方法 由Rumbaugh、Booch、Jacobson 提出的统一建模语言(Unify Modeing Language简称UML),UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。,UML的开发历程,Booch91,其它方法,OMT-1,OOSE,Booch93,OMT-2,UML 0.8,UML 0.9&0.91,UML 1.0,UML 1.1,UML同行专家意见,OMG认证,10/95,10/96&9/96,OMG审核,1/97,OMG修正,9/97,OMG采用,11/97,UML 1.3,对象模型技术(OMT,Object Model Tech.),对象模型,动态模型,功能模型,基本模型:,三个模型分别从不同角度分析系统,分析模型对象模型:描述静态结构,定义做 事情的实体功能模型:描述处理(数据变换),指明系统应“做什么”动态模型:描述交互过程,规定什么 时候做,OMT模型系统分析和设计过程概观图,产生需求,结构及对象设计,建立模型,问题描述,对象模型、动态模型、功能模型,详细的对象模型详细的动态模型详细的功能模型,分析阶段,设计阶段,实例:饮料自动售货机系统设置 一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售 顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易 顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,步骤:(1)找出对象及其关联(2)赋予类及关联的属性数据(3)组织类的结构,OMT的对象图,找出饮料自动售货机系统中的对象设置 一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售 顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易 顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,对象模型 描述系统内部对象结构,包括对象本身的定义、对象的属性、操作,以及对象与其它对象之间的关系。对象模型是OMT方法论中最重要的部分,动态模型、功能模型都将依次而建立 对象模型以对象图形式呈现,对象图由类构成。,饮料自动售货机系统对象图,贩卖机,饮料号码价格,投币-接受饮料掉出金额显示按纽退币杆售完显示,存量计算器,饮料号码存量,递减售完显示重置,选择钮,选择钮状态,灯亮灯熄售完灯亮按钮,顾客,姓名硬币,投币-置入拿取饮料,退币杆,退币杆状态,拉动,金额计算器,金额,累加找零重置,购买,选取,被拉动,属于,属于,属于,属于,建立数据字典 为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员 约束 关联、属性、操作,动态模型 用来描述系统与时间相关的动态行为即系统的控制逻辑,表现对象彼此间经过相互作用后,随时间改变的不同运算顺序。动态模型以“事件”(Events)和“状态”(States)为其模型的主要概念。动态模型以状态图形式呈现,,事件:瞬时发生的行为;引起对象状态转换的控制信息。事件类和属性举例:飞机起飞(航线、航班号、城市)按动鼠标按钮(按钮、位置).,脚本和事件踪迹 脚本是系统某一次特定运行时期内发生的事件序列。(脚本也叫场景)事件追踪图 侧重说明发生于系统执行过程中的一 个特 定“场景(scenarios)”。,通话脚本(只包括影响电话线的事件),17.打电话者挂断电话,16.电话切断,15.接电话者挂断电话,14.通电话,12.接电话者电话停止振铃,13.铃声在打电话者电话中消失,11.接电话者回答,10.铃声在打电话者电话传出,9.接电话者的电话开始振铃,8.打电话者拨数字(3),7.打电话者拨数字(7),6.打电话者拨数字(3),5.打电话者拨数字(2),4.电话忙音结束,3.打电话者拨数字(8),2.电话忙音开始,1.打电话者拿起听筒,状态:对象属性和对象关联的抽象形式状态的特征表示方法举例:状态:闹铃响描述:闹铃响表示预定时间到产生本状态的事件序列:设置闹钟(预定时间)不包括清除闹铃的任何后续操作 当前时间=预定时间表征本状态的条件:闹铃=开,从预定时间起没有按键的情况下,目标时间当前时间 目标时间=20秒本状态接受的各种时间:事件 动作 下一个状态当前时间=目标时间+20 重新设置闹钟 正常按下按钮(任意按钮)重新设置闹钟 正常,动态模型表示方法,状态图 状态和事件的网络,侧重描述每一类对象 的动态行为。,状态图 例:,状态1,Do:活动1,状态2,.,事件1条件1/动作1,结束事件,初始事件,空闲,可视菜单,左边按钮按下/显示弹出菜单,左边按钮弹起/擦除弹出菜单,光标移动/高亮菜单项,弹出菜单动作,举例:饮料自动售货机系统的状态图,投入硬币(有效的),按下选择饮料键,Do:显示售货机在备用 所有灯都关闭,Do:显示金额总数,Do:显示金额已够 饮料选择灯亮,取出饮料 结算找零 扣减存量 完成交易,饮料“售完”灯亮,投入硬币金额(1元、5元、10元),金额不足再投币,存量为零,无效的硬币,取消,取消,回到备用状态,回到备用状态,事件追踪图举例:打电话的事件追踪图,挂断电话,电话切断,挂断电话,通 话,通 话,停止振铃,停止振铃,响应电话,电话振铃,铃 声,拨 号(3),拨 号(7,拨 号(3),拨 号(2),电话忙音结束,拨 号(8),电话忙音开始,拿起听筒,电话线,接电话者,打电话者,存量为零,找零,扣减存量,灯亮,余额,饮料,结算,选择键#,选择按纽,灯亮,金额总够,显示总额,总额,累加,投入硬币,金额计算器,存量计算器,顾客,售货机,选择键,举例:饮料自动售货机系统的事件追踪图,售完灯,3.功能模型 用来描述系统中数据的变换。传统DFD+控制流,对象A,对象B,过程1,过程2,数据存储区,控制流,数据流,基于三个模型的分析步骤 需求陈述 对象建模 动态建模 功能建模 添加操作反复建模,OMT支持整个软件生命周期:需求分析、系统设计、系统实现、测试与维护。,1.分析阶段 理解应用问题,建立对象模型、动态模型和功能模型,说明对象关联、控制流及数据变换。2.系统设计阶段 确定系统框架,考虑并发任务、通讯机制和数据存储策略。3.对象设计阶段 从实现的角度细化分析对象模型、动态模型和功能模型,OMT方法的特点:,开发重点在分析阶段 强调数据结构而不是功能 形式化描述能力强 开发步骤的衔接良好 重复性的开发过程,Yourdon的OOA方法 以类与对象图及对象状态图为辅助工具,建立问题域的五层模型.OOA模型被划分为五个层次(五个视图),OOA的结构,类的边界,Class&object layer(类及对象层),Attribute layer(属性层),Service layer(服务层),Structure layer(结构层),Subject layer(主题层),实例的边界,实例连接,消息连接,主题,服务,属性,分析阶段由五个活动组成:(1)标识类及对象(2)标识结构(3)标识主题(4)定义属性及实例连接(5)定义服务及消息连接五个步骤常根据需要交叉进行,步骤1:识别类与对象(1)发现对象主要策略:考虑问题域人员组织物品设备事件表格结构 考虑系统边界人员设备外系统 考虑系统责任,问题域描述中的名词,往往是候选的 及对象;根据问题域结构可提取候选 的类及对象;例:银行储蓄管理系统,与系统发生作用的其它系统和必要 的设备可作为候选的类及对象;如:打印机等(分析阶段可不把与实现有关的计算 机部件作为候选的类及对象),系统必须观测、记忆的与时间有关的 事件可作为候选的类及对象;如:建立帐户的日期 打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等,系统必须记忆、且不在问题域约束中 的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程事务等。其中属性是操作过程名,操作特权及操作 步骤的描述;系统需了解掌握的物理位置、办公 地点等可作为候选的类及对象;如:ATM机器、帐户等,(2)审查和筛选,舍弃无用的类 对象的精简只有一个属性的对象只有一个服务的对象 推迟到OOD考虑的对象,帐册,上级系统接口,供货员,销售事件,商品,特价商品,计量商品,收款机,商品一览表,超市销售管理系 统(对象层),步骤2:定义属性与服务定义属性定义服务对象的状态与状态转换图例:栈的状态/服务对照表,例:栈状态转换图,空,半满,满,创建,压入(未满)弹出(未空),压入(报错),弹出(报错),弹出(已空),压入,弹出,压入(已满),定义服务 对象行为分类 发现服务的策略 审查与调整 识别对象的主动行为 服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图),帐册,前班节余销售事件表收入累计上交款本班节余,接班计帐报帐交班,上级系统接口,帐目目册,消息发送查帐报帐价格更新种类增删,供货员,缺货登记表,缺货登记供货,销售事件,收款人购物清单应收款,销售计划入帐,商品,编号名称单价架上数量下限,售出补充价格更新,特价商品,开始日期结束日期,计量商品,*单价计量单位计价方式,*售出*补充*价格更新,收款机,本班收款员开始时间结束时间,登录 售货 结帐,商品一览表,商品目录,检索种类增删,超市销售管理系 统(特征层),建立数据字典 为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作,对象字典举例:类名 父类 提供的服务 需要的服务帐户 ATM 银行 出纳员,步骤3:定义结构与连接初步确定关联对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出筛选完善分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接,从一般类发现特殊类,公司职员,股东,姓名身分证号码,股份,职员,工资,公司职员,姓名身分证号码股份工资,?,?,从特殊类发现一般类,公司职员,股东,姓名身分证号码,股份,职员,工资,股东,姓名身分证号码股份,职员,姓名身分证号码工资,?,收款机,ABC,现钞收款机,DEF,现钞收款机,ABCDEF,XYZ,Z,XY,为支持复用建立结构,收款机类成为可供本领域其它系统复用的领域构件,取消没有特殊属性的特殊类,大学生,研究生,研究方向指导教师,学生,姓名学号班级,研究生,研究方向指导教师,学生,姓名学号班级,通过增加属性简化一般-特殊结构,人员,男人,女人,美国人,日本人,人员,性别国籍,中国人,两种结构的变通,冷藏车,汽车,制冷设备,冷藏车,汽车,制冷设备,仅用一般-特殊结构,两种结构同 用,冷藏车,汽车,制冷设备,仅用整体-部分结构,用整体-部分结构实现复用,车床,机床,刨床,起重机,电动机,钻床,送料车,筛选:删除下列关联已删去的类间的关联无关或实现关联瞬时事件三元关联派生关联,中央计算机,总行,通信,银行代码,ATM,拥有,分行计算机,出纳工作站,远程业务,现金卡,分行,帐户,储户,出纳员,出纳业务,通信,授权,存取,拥有,拥有,持有,组成,拥有,拥有,雇佣,进入,被进入,修改,修改,进入,ATM系统的初始对象图,步骤4:定义服务及消息连接 分析和认识对象之间在行为上的往来关系。,顺序系统中的消息传递,主动对象A,a,被动对象B,b,被动对象C,c,被动对象D,d1,d2,运行开始,运行结束,服务执行,消息发送,控制点返回示意,并发系统中 的消息传递,主动对象A,主动对象B,被动对象D,任务Task1 线程Ta,控制线程之间的消息连接,控制点返回示意,被动对象C,被动对象E,控制线程内部的消息连接,任务Task2 线程Tb,多个控制线程之间的消息与顺序系统中消息的不同之处(1)并发执行的控制线程之间传送的消息的不同用途:向接收者发出访问请求向接收者提交数据向接收者发布通知或事件信息向接收者传递同步控制信号(2)消息的同步与异步(3)接收者对消息的不同响应方式(4)发送者对消息处理结果的不同期待方式(5)消息的接收者是否唯一定向消息广播消息,OOA对消息的表示消息连接 消息连接是OOA(或OOD)模型中对对象之间行为依赖关系的表示 识别和表示的主要问题:对象之间是否存在消息?消息是同一线程内部的还是不同线程之间的?每一种消息是从发送者哪个服务发出的?由接收者哪个服务响应处理的?消息是同步还是异步?发送者是否等待消息的处理结果?,如何建立消息连接(1)建立控制线程内部的消息连接 基本策略:“服务模拟”“执行路线追踪”具体做法:人为地模拟当前服务的执行,通过考虑需要请求其它对象的服务来发现新消息。分析该消息的发送者与接收者在执行时是否属于同一控制线程,(2)建立控制线程之间的消息连接 对每个控制线程考虑:它在执行时是否需要请求其它控制线程中的对象为它提供服务?由哪个对象发出?由哪个对象中的服务处理?它在执行时是否要向其它控制线程中的对象提供或索取数据?它在执行时是否将产生对其它控制线程的执行有影响的事件?各个控制线程的并发执行是否要传递同步控制信号一个控制线程在何种条件下中止执行?中止后在何种条件下由其它控制线程用何法唤醒?,(3)对象分布问题及对消息的影响每台处理机上分布的一组对象中至少应有一个主动对象;同一台处理机上的对象之间的消息通信既可能是一个控制线程内部的,也可能是不同控制线程之间的。,帐册,前班节余销售事件表收入累计上交款本班节余,接班计帐报帐交班,上级系统接口,帐目目册,消息发送查帐报帐价格更新种类增删,供货员,缺货登记表,缺货登记供货,销售事件,收款人购物清单应收款,销售计划入帐,商品,编号名称单价架上数量下限,售出补充价格更新,特价商品,开始日期结束日期,计量商品,*单价计量单位计价方式,*售出*补充*价格更新,1,m,商品一览表,商品目录,检索种类增删,1,m,(关系层,完整的类图),收款机,本班收款员开始时间结束时间,登录 售货 结帐,步骤4:标识主题(主体)Coad/Yourdon方法中主题的概念:主题是把一组具有较强联系的类组织在一起而得到的类的集合。,主题概念及其用途主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;主题一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;主题有助于指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。,主题概念的特点是由一组类构成的集合一个主题内部的对象类应具有某种意义上的内在联系描述系统中相对独立的组成部分(如一个子系统)描述系统中某一方面的事物(如人员、设备)解决系统中某一方面的问题(如输入输出)主题的划分有一定的灵活性和随意性,主题的表示法三种表示方式:压缩方式 半展开方式 全展开方式,编号 主题名,压缩方式,编号 主题名,半展开方式:,类名 类名 类名,主题名,主题名,下层主题,主题的表示法,全展开方式:,编号,编号,编号,编号,类图上原有的全部内容,如何划分主题把每个结构作为一个主题;(选取结构中最上层的类作为一主题)通过实例连接互相联系的类可划分到一个主题;把不属于任何结构,也没有实例连接的类作为一个主题。,如何精练主题 从问题域和接口复杂性两方面入手:使用问题域精练主题,即用整体/部分结构对问题域进行划分,而不是按功能分解方法划分.按高内聚低偶合原则,通过使主题间依赖性和交互性最小原则保留能反映子问题域的主题.主题数目7个左右,则进一步精练主题.,何时引入主题 依赖于模型自身复杂性小系统:不需引入主题;中等系统:先标识类及对象,然后引入主题;大系统:先标识主题,对问题域进行 划分,分给不同的任务组;,主题层次的控制中小型系统可只设一层主题,最多不超过两层;大型系统可只设两层主题,最多不超过三层。,中央计算机,总行,通信,银行代码,ATM,拥有,分行计算机,出纳工作站,远程业务,现金卡,分行,帐户,储户,出纳员,出纳业务,通信,授权,存取,拥有,拥有,持有,组成,拥有,拥有,雇佣,进入,被进入,修改,修改,进入,把ATM系统划分为三个主题,2,3,1,1,1,1,2,2,2,3,3,3,3,帐册,前班节余销售事件表收入累计上交款本班节余,接班计帐报帐交班,上级系统接口,帐目目册,消息发送查帐报帐价格更新种类增删,供货员,缺货登记表,缺货登记供货,销售事件,收款人购物清单应收款,销售计划入帐,商品,编号名称单价架上数量下限,售出补充价格更新,特价商品,开始日期结束日期,计量商品,*单价计量单位计价方式,*售出*补充*价格更新,1,m,商品一览表,商品目录,检索种类增删,1,m,(关系层,完整的类图),收款机,本班收款员开始时间结束时间,登录 售货 结帐,1,1,1,1,3,3,3,3,2,2,2,2,范例:移动电话系统 移动电话系统的功能:用手机做移动通讯 下载铃声 下载图案 管理电话簿,移动电话系统的使用用例图,Talk to Others,Download Icons,Manage Phonebook,Download Rings,Mobile user,Mobile Network,定义移动电话系统的对象(简化)手机包括的对象:手机屏幕 手机按钮 手机(屏幕、按钮以外的部件)其它对象:基站,MButton,MDisplqy,MmobileStation,MmobileHandset,移动电话系统的类图,移动电话系统对象间的通信,MButton,MDisplqy,:MMobileStation,:MMobileHandset,Mobile user,1:pushDigButton()3:pushSendButton(),2:displayButtonNumber(),4:connectStation(),7:displayConnectSuccess(),6:connectSuccess(),5:createConnection(),移动电话系统的协作图,移动电话系统的顺序图,:MButton,:MDisplqy,:MMobileHandset,Mobile user,pushSendButton(),displayButtonNumber(),displayConnectSuccess(),connectSuccess(),createConnection(),pushDigButton(),connectStation(),:MMobileStation,MButton,MDisplqy,MmobileStation,MmobileHandset,移动电话系统的类图之二,pushDigButton()pushSendButton()pushDisconnectButton(),createConnection()destoryConnection()responseError(),displayError()displayButtonNumber()displayConnectSuccess()displayIncomingCall(),connectStation()disconnectStation()connectSuccess()Diaconnectsuccess(),