1、2023-5-9共27页 第1页2023-5-9共27页 第2页面向对象方法学概述传统方法和面向对象方法有何不同?面向对象方法学的主要优点面向对象的概念面向对象建模2023-5-9共27页 第3页l什么是开发模式?什么是开发模式?l什么是面向对象开发模式?什么是面向对象开发模式?l为什么要用面向对象方法?为什么要用面向对象方法?2023-5-9共27页 第4页一、软件开发模式(一、软件开发模式(ParadigmParadigm)1 1、什么是开发模式、什么是开发模式 开发模式又称为范型、范例、风范或模式开发模式又称为范型、范例、风范或模式(Pattern)(Pattern)。开发模式定义了:。
2、开发模式定义了:特定问题和应用的开发过程中将遵循的特定问题和应用的开发过程中将遵循的;确定将用于表示问题和解的那些成分的确定将用于表示问题和解的那些成分的;利用这些成分表示与问题解决有关的利用这些成分表示与问题解决有关的;直接得到问题的直接得到问题的。2023-5-9共27页 第5页2 2、开发模式的影响、开发模式的影响 开发模式的选择影响到整个软件开发生开发模式的选择影响到整个软件开发生存期。开发模式支配了:存期。开发模式支配了:-设计方法-编码语言-测试和检验技术2023-5-9共27页 第6页3 3、几种流行的开发模式、几种流行的开发模式 目前流行的开发模式有多种,它们提供了可进行系统分
3、解的多种方法。面向过程的开发模式;面向过程的开发模式;-面向对象的开发模式;面向对象的开发模式;-面向存取的开发模式;面向存取的开发模式;-面向进程的开发模式;面向进程的开发模式;-逻辑性的开发模式;逻辑性的开发模式;-函数型的开发模式;函数型的开发模式;-说明性的开发模式。说明性的开发模式。2023-5-9共27页 第7页开发模式所具有的的共性:开发模式所具有的的共性:每个开发模式都有它的支持者和用户;每个开发模式都特别适合于某种类型的问题或子问题;每一个开发模式都用不同的方式考虑问题;每一个开发模式都使用不同的方法来分解问题;每一个开发模式都导致不同种类的块、过程、产生规则。2023-5-
4、9共27页 第8页4 4、混合开发模式、混合开发模式在大型系统的开发中,只用一种开发模式很难说哪种开发模式对整个问题的解决最好。系统开发时,通常把。这种设计。许多流行的功能不断增强的语言可支持不只一种设计开发模式。2023-5-9共27页 第9页 一个智能数据分析系统的设计,可把它看做是 4 个子系统。系统有:一个进行设计;用;一组用设计;用。2023-5-9共27页 第10页几个常用的术语2023-5-9共27页 第11页第七章第七章 面向对象分析l如何用如何用OO软件工程方式进行系统分析?软件工程方式进行系统分析?l如何描述如何描述OO系统?如何对系统?如何对OO系统建模?系统建模?l如何
5、建立对象模型?如何建立对象模型?l如何建立动态模型?如何建立动态模型?l如何建立功能模型如何建立功能模型2023-5-9共27页 第14页过程过程1 1过程过程2 2过程过程3 3数据实体数据实体属于该对象属于该对象的数据的数据对象对象处理数据的方法处理数据的方法2023-5-9共27页 第15页面向对象分析是软件开发过程中的问题定义阶段。这一阶段的两个重要步骤:领域域分析:建立概括的系统实现模型应用分析:根据特定应用的需求对论域分析的模型进行细化最后成果:得到对问题领域的清晰而精确的定义。2023-5-9共27页 第16页7.1 分析过程需要完成:找到特定对象 基于对象的公共特性组合这些对象
6、 标识出对问题的抽象 标识出抽象之间的关系2023-5-9共27页 第17页对象模型化技术用于把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。这个模型化的过程是一个迭代过程。2023-5-9共27页 第18页分析模型分析模型对象模型对象模型:描述静态结构描述静态结构,定义做定义做 事情的实体事情的实体功能模型功能模型:描述处理描述处理(数据变换数据变换),指明系统应指明系统应“做什么做什么”动态模型动态模型:描述交互过程描述交互过程,规定什么规定什么 时候做时候做 OMT模型系统分析和设计过程概观图模型系统分析和设计过程概观图产生需求产生需求结构及对象结构及对象设计设计建立
7、模型建立模型问题描述问题描述对象模型、动态模型、功能模型对象模型、动态模型、功能模型详细的对象模型详细的对象模型详细的动态模型详细的动态模型详细的功能模型详细的功能模型分分析析阶阶段段设设计计阶阶段段2023-5-9共27页 第20页基于三个模型的分析步骤:基于三个模型的分析步骤:需求陈述需求陈述 对象建模对象建模 动态建模动态建模 功能建模功能建模 添加操作反复建模添加操作反复建模2023-5-9共27页 第21页OOA的基本过程 从理解系统的使用方式开始,确定使用场景(脚本),构造问题域模型。OOAOOA概念模型由五个层次组成:主题层主题层类与对象层类与对象层结构层结构层属性层属性层服务层
8、服务层这五个层次是分析过程中的层次,每个层次的工作都为系统的规格说明增加了一个组成部分。2023-5-9共27页 第22页OOAOOA的层次结构的层次结构7.2 7.2 需求陈述(软件需求说明书需求陈述(软件需求说明书 (SRS))(Software Requirement Specification)需求分析阶段要完成的文档。需求分析阶段要完成的文档。SRSSRS的作用:的作用:开发者与用户间事实上的技术合同书开发者与用户间事实上的技术合同书开发者下一步设计和编码的基础开发者下一步设计和编码的基础测试验收目标系统的依据测试验收目标系统的依据SRS大大纲纲1 1引言引言1.11.1编写目的编写
9、目的1.21.2背景背景1.31.3定义定义1.4 1.4 参考资料参考资料2 2任务概述任务概述2.12.1目标目标2.22.2用户的特点用户的特点2.32.3假定盒约束假定盒约束3 3需求规定需求规定3.13.1对功能的规定对功能的规定3.23.2对性能的规定对性能的规定3.33.3输入输出要求输入输出要求3.43.4数据管理能力要求数据管理能力要求3.53.5故障处理要求故障处理要求3.63.6其他专门要求其他专门要求(GB9385-88)4 4运行环境规定运行环境规定4.14.1设备设备4.24.2支持软件支持软件4.34.3接口接口4.44.4控制控制2023-5-9共27页 第25
10、页7-3 7-3 对象模型对象模型对象模型是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。2023-5-9共27页 第26页(1 1)对象模型的表示:)对象模型的表示:2023-5-9共27页 第27页实例连接:实例连接:又称为链,用于表达对象之间的又称为链,用于表达对象之间的静态联系静态联系(通过对象属性表示一个对象对另通过对象属性表示一个对象对另一个对象之间的依赖关系。一个对象之间的依赖关系。(2 2)实例连接实例连接与关联关系的表示与关联关系的表示 类类1 连接名称连接名称m n类类2表示法:表示法:阶阶2023-5
11、-9共27页 第28页类类 1 连接名称连接名称m n类类 1连接连接属性属性链属性链属性的表示:的表示:允许实例连接带有一组属性,这些属性允许实例连接带有一组属性,这些属性通过关联来描述通过关联来描述 2023-5-9共27页 第29页 关联关系关联关系 (链属性链属性)为之工作为之工作工资工资职务职务雇主雇主雇员雇员 个人个人名字名字身份证号身份证号公司公司名字名字地址地址题目题目答辩时间答辩时间成绩成绩 教师教师学生学生 指导论文指导论文0,m 12023-5-9共27页 第30页(3 3)相关的图形符号:)相关的图形符号:多个多个0个个一个一个链属性链属性2023-5-9共27页 第3
12、1页说明:聚合:代表整体与部分的关系,这是一种特殊形式的关联。限定:用以对关联的含义做某种约束。角色:用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。连接属性:允许使用附加的属性说明对象之间的连接2023-5-9共27页 第32页(4 4)定义)定义结构结构和层次和层次 类模型的类模型的结构结构及由类和子类构成的类层及由类和子类构成的类层次,次,表示问题域中的复杂关系,是客观表示问题域中的复杂关系,是客观世界实体间关系的抽象。世界实体间关系的抽象。类及对象间的关系可概括为:类及对象间的关系可概括为:归纳关系归纳关系:(一般一般/特殊结构特殊结构、分类结构分类结构)针对事物类之
13、间的组织关系针对事物类之间的组织关系组合关系组合关系:(整体整体/部分结构部分结构、组装结构组装结构)表示事物的整体与部分之间的组合关系表示事物的整体与部分之间的组合关系2023-5-9共27页 第33页 一般一般/特殊结构表示法特殊结构表示法:子类的公共属性和操作归属于一般类子类的公共属性和操作归属于一般类并被每一个子类共享,每一个子类都并被每一个子类共享,每一个子类都继承继承了一般类的特征。了一般类的特征。一般类一般类(父类、基类、超类父类、基类、超类)特殊类特殊类(子类子类)一般类一般类特殊类特殊类特殊类特殊类.继承继承表示一般与表示一般与特殊结构特殊结构2023-5-9共27页 第34
14、页 存户存户一般一般/特殊结构举例特殊结构举例(归纳关系(归纳关系):):一般类一般类(父类、基类、超类父类、基类、超类)特殊类特殊类(子类子类)继承继承一个特殊类中的所有对象可继承一般类中一个特殊类中的所有对象可继承一般类中的属性、服务、关系的属性、服务、关系账号账号姓名姓名余额余额存款存款取款取款 支票存户支票存户 储蓄存户储蓄存户利息率利息率2023-5-9共27页 第35页建立对象模型2023-5-9共27页 第36页整体整体/部分结构部分结构(分类结构分类结构):2023-5-9共27页 第37页 整体整体/部分结构表示法部分结构表示法:一个整体对象可有不同类型的部分对象一个整体对象
15、可有不同类型的部分对象.一个部分对象也可同时属于多个整体对象一个部分对象也可同时属于多个整体对象.整体对象整体对象.m1,n1m1,n1m2,n2m2,n2p1,q1p1,q1p2,q2p2,q2部分对象部分对象部分对象部分对象表示整体与表示整体与部分结构部分结构传递性传递性2023-5-9共27页 第38页整体整体/部分结构表示法举例部分结构表示法举例 :汽车汽车1+方向盘方向盘车身车身车轮车轮离合离合发动机发动机油门油门l底盘底盘2023-5-9共27页 第39页建立对象模型2023-5-9共27页 第40页例:例:一家公司的对象模型一家公司的对象模型职员职员公司公司 为某公司开发信息管理
16、系统为某公司开发信息管理系统,该公司有三个部门该公司有三个部门,每个部门可以开发多个产品每个部门可以开发多个产品.该公司有该公司有多名多名项目经理项目经理,员工员工上百上百人人.有有四个四个正在进行的项目正在进行的项目,每个项目必每个项目必须有一个项目经理须有一个项目经理,每个员工可参与一个或多个项目每个员工可参与一个或多个项目.请画出该公司的对象模型请画出该公司的对象模型.2023-5-9共27页 第41页例:例:一家公司的对象模型一家公司的对象模型管理管理 0,1姓名姓名性别性别身份证号码身份证号码地址地址职员职员名名电话电话经营项目经营项目地址地址公司公司职务职务雇用雇用解雇解雇项目名项
17、目名预算预算优先级优先级项目项目产品名产品名成本成本重量重量产品产品职员职员经理经理部门部门部门名部门名主持主持参加参加1+1+1+1+1+生产生产2023-5-9共27页 第42页建立对象模型的步骤:标识类及对象标识类及对象标识结构标识结构标识主题标识主题定义属性及实例连接定义属性及实例连接定义服务及消息连接定义服务及消息连接五个步骤常根据需要交叉进行五个步骤常根据需要交叉进行2023-5-9共27页 第43页1 1、识别类和对象、识别类和对象面向对象分析的第一个层次主要是识别类和对象。类和对象是对与应用有关的概念的抽象。建立对象模型2023-5-9共27页 第44页基于语言的信息分析在发现
18、对象过程中,可以使用一种十分有用的工具,即LIALIA(基于语言的信息分析)。LIA的目的是标识出问题论域的所标识出问题论域的所有概念及这些概念之间的关系有概念及这些概念之间的关系。短语频率分析短语频率分析(PFA)(PFA)矩阵分析矩阵分析(MA)(MA)。建立对象模型2023-5-9共27页 第45页(1)找出候选的类&对象可感知的物理实体人或组织的角色应该记忆的事件两个多个事件的相互作用,通常具有交易或接触性质需要说明的概念建立对象模型2023-5-9共27页 第46页(2)筛选出正确的类&对象冗余无关笼统属性操作实现建立对象模型2023-5-9共27页 第47页2 2、标识结构(确定关
19、联)、标识结构(确定关联)面向对象分析的下一步工作是标识结构。一般化一般化-特殊化结构特殊化结构(Gen-SpecGen-Spec结构结构)整体整体-部分结构部分结构(Whole-PartWhole-Part结构结构)建立对象模型2023-5-9共27页 第48页标识Gen-Spec结构的方法和策略:对于每一个类和对象,对于每一个类和对象,将它看作是一个一将它看作是一个一般化的类般化的类,对它的所有特殊情况,考虑以,对它的所有特殊情况,考虑以下问题:下问题:它是否在问题论域中?它是否在问题论域中?它是否在系统的职责内?它是否在系统的职责内?继承性是否存在?继承性是否存在?它是否能够符合选择类和
20、对象的标准?它是否能够符合选择类和对象的标准?建立对象模型2023-5-9共27页 第49页标识Whole-PartWhole-Part结构的方法和策略应当寻找什么 总体总体-部分部分(Assembly-PartsAssembly-Parts)关联,如飞机飞机-发动机之间的关系。包容包容-内含内含(Container-ContentContainer-Content)关联,如飞机-飞行员之间的关系。收集收集-成员成员(Collection-MembersCollection-Members)关联,如机构-职员之间的关系。建立对象模型2023-5-9共27页 第50页将每一个类将每一个类看作是一
21、个看作是一个WholeWhole类类,对它,对它的所有可能的所有可能PartsParts情况,考虑以下问题:情况,考虑以下问题:它是否在问题论域中?它是否在问题论域中?它是否在系统的职责内?它是否在系统的职责内?它是否代表一个以上的状态值?它是否代表一个以上的状态值?若不是,是否将它变为若不是,是否将它变为WholeWhole中的一中的一个属性?个属性?它是否提供问题论域中有用的抽象?它是否提供问题论域中有用的抽象?建立对象模型2023-5-9共27页 第51页3 3、识别主题、识别主题将每一种结构(包括整体-部分结构、和一般化-特殊化结构)中最上层的类提升成为主题;将各不属于任何结构的类提升
22、主题;检查在相同或类似的问题论域中以前做面向对象分析的结果,看是否有可直接复用的主题。建立对象模型2023-5-9共27页 第52页4 4、标识属性及实例连接、标识属性及实例连接下一个层次称为属性层,对前面已识别的类和对象做进一步的说明。在这里,对象所保存的信息称为它的属性。类的属性所描述的是状态信息,每个实例的属性值表达了该实例的状态值。建立对象模型2023-5-9共27页 第53页标识属性的方法和策略找出属性找出属性将属性安放到适当的位置将属性安放到适当的位置找出实例连接找出实例连接检查特殊情况检查特殊情况描述属性描述属性考虑取值范围、极限值、缺省值、建立考虑取值范围、极限值、缺省值、建立
23、和存取权限、精确度、是否会受到其他和存取权限、精确度、是否会受到其他属性值等。属性值等。建立对象模型2023-5-9共27页 第54页属性层建立对象模型2023-5-9共27页 第55页5 5、识别继承关系、识别继承关系继承关系的建立实质上是知识抽取的过程,它应该反映出一定深度的领域知识可用两种方法建立:自底向上:抽象出现有类的共同性质泛化出的父类 自顶向下:将现有类细化成更具体的子类建立对象模型2023-5-9共27页 第56页6 6、反复修改、反复修改建立对象模型 实例:饮料自动售货机系统实例:饮料自动售货机系统设置设置 一个饮料自动售货机可以放置五种不同或部分相同的一个饮料自动售货机可以
24、放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置新设置售价,但售货机最多仅能放置5050罐饮料,其按罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。毕,则售完灯会亮。销售销售 顾客将硬币投入售货机,经累加金额足额的饮料选择顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼键灯亮,等顾客按键选
25、择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。掉出,并自动结算及找钱。取消交易取消交易 顾客可在按下选择键前任何一个时刻,拉动退币杆取顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。消交易收回硬币。找出饮料自动售货机系统中的对象找出饮料自动售货机系统中的对象设置设置 一个饮料自动售货机可以放置五种不同或部分相同的一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置新设置售价,但售货机最多仅能放置5050罐饮料,其按罐饮料,其按钮设计在各种饮料样本的下方,若经钮
26、设计在各种饮料样本的下方,若经金额计算器金额计算器累计累计金额足够,则选择键灯会亮;若某一种饮料已销售完金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。毕,则售完灯会亮。销售销售 顾客顾客将硬币投入将硬币投入售货机售货机,经累加金额足额的饮料,经累加金额足额的饮料选择选择键键灯亮,等顾客按键选择。顾客按键后饮料由取物楼灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。掉出,并自动结算及找钱。取消交易取消交易 顾客可在按下选择键前任何一个时刻,拉动顾客可在按下选择键前任何一个时刻,拉动退币杆退币杆取取消交易收回硬币。消交易收回硬币。饮料自动售货机饮料自动售货机系
27、统系统对象对象模型模型售货机售货机饮料号码饮料号码价格价格投币投币-接受接受饮料掉出饮料掉出金额显示金额显示按纽按纽退币杆退币杆售完显示售完显示存量计算器存量计算器饮料号码饮料号码存量存量递减递减售完显示售完显示重置重置选择钮选择钮选择钮状态选择钮状态灯亮灯亮灯熄灯熄售完灯亮售完灯亮按钮按钮顾客顾客姓名姓名硬币硬币投币投币-置入置入拿取饮料拿取饮料退币杆退币杆退币杆状态退币杆状态拉动拉动金额计算器金额计算器金额金额累加累加找零找零重置重置购买购买选取选取被拉动被拉动属于属于属于属于属于属于属于属于2023-5-9共27页 第60页7.4 7.4 建立动态模型建立动态模型动态模型着重于描述系统的
28、控制逻辑。它包括两个图,一是事件追踪图,事件追踪图,一是状态图状态图。2023-5-9共27页 第61页(1 1)事件)事件瞬时发生的行为每个事件都是单独发生的我们建立事件类,并给每个事件一个名字,以指明共同结构和行为。事件从一个对象向另一个对象传送信息。事件类的属性:例:火车开动事件(车道、车次、起点、终点、车厢数)2023-5-9共27页 第62页有些事件类可能传送的是简单的信号“要发生某件事”,而有些事件类则可能传送的是数据值。由事件传送的数据值叫做属性。列车出发列车出发(线路、班次、城市线路、班次、城市)按按下鼠标按钮下鼠标按钮(按钮、位置按钮、位置)拿起电话受话器拿起电话受话器 数字
29、拨号数字拨号(数字数字)2023-5-9共27页 第63页脚本与事件追踪图脚本与事件追踪图事件追踪图:侧重于说明发生于系统执行过程中的一个特定“场景”(脚本)。脚本:也叫做场景,是系统某一次特定是系统某一次特定运行时期发生的事件序列。运行时期发生的事件序列。场景通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件。2023-5-9共27页 第64页 打打电电话话者者拿拿起起电电话话受受话话器器 电电话话忙忙音音开开始始 打打电电话话者者拨拨数数字字(8 8)电电话话忙忙音音结结束束 打打电电话话者者拨拨数数字字(2 2).打打电电话话者者
30、拨拨数数字字(3 3)接接电电话话者者的的电电话话开开始始振振铃铃 铃铃声声在在打打电电话话者者的的电电话话上上传传出出 接接电电话话者者回回答答 接接电电话话者者的的电电话话停停止止振振铃铃 铃铃声声在在打打电电话话者者的的电电话话中中消消失失 通通电电话话 .例:例:通话脚本(只包括影响电话线的事件通话脚本(只包括影响电话线的事件)2023-5-9共27页 第65页2023-5-9共27页 第66页课堂练习:自动售货机的正常情况脚本,画事件跟踪图:顾客投硬币金额器累加显示金额给顾客金额足够,对应的选择键灯亮顾客选择按钮,选择键发消息给售货机售货机给顾客饮料金额计算器结算显示剩余金额顾客拉动
31、退币杆售货机找零售货机扣减存量显示存量为零售完灯亮 存量为零存量为零找零找零扣减存量扣减存量售完灯亮售完灯亮余额余额饮料饮料结算结算选择键选择键#选择按纽选择按纽灯亮灯亮金额总够金额总够显示总额显示总额总额总额累加累加投入硬币投入硬币金额计算器金额计算器存量计算器存量计算器顾客顾客售货机售货机选择键选择键举例:饮料自动售货机系统系统的事件追踪图退币杆退币杆拉退币杆拉退币杆2023-5-9共27页 第68页(2 2)状态图)状态图状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为。在状态图中,状态是对某一时刻中属性特征的概括。而状态迁移表示这一类对象在何时对系统内外发生的哪些事件做出何
32、种响应。2023-5-9共27页 第69页操作:是一个伴随状态迁移的瞬时发生的行为,与触发事件一起表示在有关的状态迁移之上。活动:则是发生在某个状态中的行为,往往需要一定的时间来完成,因此与状态名一起出现在有关的状态之中。状态图状态图 状态状态1Do:活动活动1状态状态2 .事件事件1条件条件1/动作动作1结束结束事件事件初始初始事件事件空闲空闲可视菜单可视菜单左边按钮按下左边按钮按下/显示弹出菜单显示弹出菜单左边按钮弹起左边按钮弹起/擦除弹出菜单擦除弹出菜单光标移动光标移动/高亮菜单项高亮菜单项 弹出菜单动作弹出菜单动作例:例:举例:举例:饮料自动售货机饮料自动售货机系统系统的状态图的状态图
33、 投入硬币投入硬币(无效的)(无效的)按下选择饮料键按下选择饮料键Do:显示售货机在备用显示售货机在备用 所有灯都关闭所有灯都关闭 Do:显示金额总数显示金额总数Do:显示金额已够显示金额已够 饮料选择灯亮饮料选择灯亮 取出饮料取出饮料结算找零结算找零扣减存量扣减存量完成交易完成交易饮料饮料“售完售完”灯亮灯亮 投入硬币金额投入硬币金额(1元、元、5元、元、10元元)金额不足金额不足再投币再投币存量为零存量为零无效的硬币无效的硬币 取消取消 取消取消 回到备用状态回到备用状态 回到备用状态回到备用状态投入硬币(有效的)投入硬币(有效的)金额已够金额已够2023-5-9共27页 第72页动态模型
34、由多个状态图组成。对于每一个具有重要动态行为的类都有一个状态图,从而表明所有系统活动的模式。各个状态图并发地执行,并可以独立地改变状态。各种类的状态图可以通过共享事件组合到一个动态模型中。2023-5-9共27页 第73页(3 3)状态图与事件追踪图的关系)状态图与事件追踪图的关系状态图叙述一个对象的个体行为,事件追踪图则给出多个对象所表现出来的集体行为。它们从不同侧面来说明同一系统的行为。例如,一个事件追踪图指出某一对象在接受一个事件之后发出另一事件,同一行为在此对象的状态图中也应当有所表示。2023-5-9共27页 第74页7.5 7.5 功能模型功能模型 功能模型由多个数据流图组成功能模
35、型由多个数据流图组成,它们,它们指明从外部输入,通过操作和内部存指明从外部输入,通过操作和内部存储,直到外部输出,这整个的数据流储,直到外部输出,这整个的数据流情况。情况。2023-5-9共27页 第75页功能模型中所有的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明。一般来讲,高层的过程相应于作用在聚合对象上的操作,而低层的过程则代表作用于一个简单对象上的操作。2023-5-9共27页 第76页7.67.6、定义服务及消息连接、定义服务及消息连接对象收到消息后所能执行的操作称为它可提供的服务。对每个对象和结构的增加、修改、删除、选择等
36、服务有时是隐含的,在图中不标出,但在存储类和对象有关信息的对象库中有定义。其它服务则必须显式地在图中画出。2023-5-9共27页 第77页服务层2023-5-9共27页 第78页定义服务的方法和策略找出每一个对象的所有状态,在各种状态需要做的工作。利用状态迁移图;找出必要的操作。建立消息连接。描述服务:利用状态转换图、脚本和事件追踪图,描述服务的功能。2023-5-9共27页 第79页消息连接的标识两个对象之间可能存在着两个对象之间可能存在着由于通信由于通信需要而形成的关系需要而形成的关系,这称为,这称为消息连消息连接接。消息连接表示从一个对象发送消息消息连接表示从一个对象发送消息到另一个对
37、象,由那个对象完成某到另一个对象,由那个对象完成某些处理。些处理。它们在图中用箭头表示,它们在图中用箭头表示,方向从发消息的对象指向收消息的方向从发消息的对象指向收消息的对象。对象。2023-5-9共27页 第80页找出消息连接的方法及策略对于每一个对象,执行:查询该对象需要哪些对象的服务,从该对象画一箭头到哪个对象;查询哪个对象需要该对象的服务,从那个对象画一箭头到该对象;循消息连接找到下一个对象,重复以上步骤。2023-5-9共27页 第81页用例模型用例模型 Ivar Jacohson提出了用例驱动的面向对象的软件方法,从组成系统的实际操作入手。首先分析系统是如何使用的,强调系统使用时与
38、不同的类型用户交互时的情况,即从用例出发。2023-5-9共27页 第82页什么是用例 用例是一个连贯的功能性单元,它由消息顺序表示的类元(系统、子系统或类)提供,这些消息与被系统执行的动作在系统与外部用户(表现为参与者)间交换。简单地说,它就是之通过利用系统中某些功能来使用系统的过程。用例的目标 用来定义类的一个行为,但不显示类的内部结构。每个用例说明类提供给它用户的一种的服务,也即一种对外部可见的使用类的特定方式。描述用户和类之间的交互的观点来初始化的完整顺序,以及由类执行的响应。2023-5-9共27页 第83页UMLUML的用例模型的用例模型统一建模语言(统一建模语言(UMLUML)是
39、一种通用的可)是一种通用的可视化建模语言,用于软件描述、可视视化建模语言,用于软件描述、可视化处理、构造和建立软件系统制品的化处理、构造和建立软件系统制品的文档。可用于各种软件开发方法、软文档。可用于各种软件开发方法、软件生命周期的各个阶段,各种建模方件生命周期的各个阶段,各种建模方法。法。执行者执行者(actor)(actor)实际上是一个类,它定义了用户所能对软件进行的实际上是一个类,它定义了用户所能对软件进行的所有操作。所有操作。用例用例(Use Case)(Use Case)2023-5-9共27页 第84页执行者执行者(actor)(actor)其集合是该系统的用户模型。同时还可以将
40、执行者其集合是该系统的用户模型。同时还可以将执行者按用户的行为进行合理划分。按用户的行为进行合理划分。执行者集合就是软件系统同所有用户交换的所有信执行者集合就是软件系统同所有用户交换的所有信息及操作的模型息及操作的模型在软件系统中要划定一个界限以区分执行者和用例在软件系统中要划定一个界限以区分执行者和用例执行者代表了用户所能起的某种作用,是描述一类执行者代表了用户所能起的某种作用,是描述一类的行为(可分为基本执行者和辅助执行者)的行为(可分为基本执行者和辅助执行者)2023-5-9共27页 第85页用例用例(Use Case)(Use Case)可以借助状态转换图来描述用例。可以借助状态转换图
41、来描述用例。由于有可能多个用例有着相同的子事务序列,由于有可能多个用例有着相同的子事务序列,因此只有当它的全部事务执行完毕后才能确因此只有当它的全部事务执行完毕后才能确定具体某一用例定具体某一用例用例是通过执行者确认的,每一个执行者初用例是通过执行者确认的,每一个执行者初始化一个时间过程从而确定一个用例始化一个时间过程从而确定一个用例将什么样的功能放在一个单独的用例中是一将什么样的功能放在一个单独的用例中是一个不容易确定的问题,因为有些功能可能只个不容易确定的问题,因为有些功能可能只是某一用例的一个变体是某一用例的一个变体寻找用例一般分为两个步骤:首先根据执行寻找用例一般分为两个步骤:首先根据
42、执行者找出用例,然后详细的设计用例文档,清者找出用例,然后详细的设计用例文档,清楚地描述出每个用例完成的功能及对应的执楚地描述出每个用例完成的功能及对应的执行者行者2023-5-9共27页 第86页用例图用例图是用于对系统的静态用例视图进行建模,这是用于对系统的静态用例视图进行建模,这就是说,一个单独的用例图不必包含一个系统用例就是说,一个单独的用例图不必包含一个系统用例视图中的所有事情,每个用例图只单独表示系统的视图中的所有事情,每个用例图只单独表示系统的一个方面。一个方面。2023-5-9共27页 第87页2023-5-9共27页 第88页协作图 对象图展示了对象与对象之间的静态关系,协作
43、图是对象图的扩展,除了描述关联之外还显示这些对象之间的消息传递.协作图的特征 协作图中的序号表示一个消息的时间顺序,可以嵌套,嵌套可以有任意深度.协作图中用路径指出一个对象如何与另一个对象链接可以在链的末端加上一个路径构造型来表示.如local表示制定该对象对发送对象而言是局部的.通常只需要表示这几种链的路径:local(局部),parameter(参数),global(全局)和self(自身),但是association(关联)不必特殊说明2023-5-9共27页 第89页2023-5-9共27页 第90页活动图 是状态图的变体,是一种特殊形式的状态图.活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态.通常假定活动图在整个计算过程中没有外部事件引起的中断.活动图对系统动态建模有两种方式:对操作建模,可以将活动图看成流程图,对操作中的细节部分建模 对过程建模,也就是对系统的工作流建模,主要关注与系统进行协作的参与者所看到的活动.2023-5-9共27页 第91页