面向对象系统分析与设计.ppt_第1页
面向对象系统分析与设计.ppt_第2页
面向对象系统分析与设计.ppt_第3页
面向对象系统分析与设计.ppt_第4页
面向对象系统分析与设计.ppt_第5页
免费预览已结束,剩余137页可下载查看

下载本文档

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

文档简介

1、面向对象系统分析与设计 Object-Oriented Systems Analysis and Design,河北农业大学信息科学与技术学院 滕桂法 教授,第三章 面向对象分析与设计,什么是面向对象分析与设计 面向对象分析的实践 面向对象分析与设计中再利用的实践,什么是面向对象分析与设计,面向对象是一种从下到上的思想,面向对象的软件开发,OOA 面向对象分析,分析 明确问题,OOD 面向对象设计,设计 决定如何解决问题,OOP 面向对象编程,编程 根据解决方案实现解决,什么是面向对象分析与设计,面向对象实现软件开发的一贯性,利用面向对象方法的软件开发历程,软件开发的工业化、大众化,分析,设计

2、,编程,设计,编程,编程,上 流,下 流,开发过程,80年代前,80年代中,80年代后,爱好者研究者,一般SE,面向对象分析阶段,要求模型的构建 3种模型的表现 分析阶段中的对象,要求文件,要求说明 (要求模型),消除不完整性、模糊、赘长,承担者对问题的理解,模型化,委托方,委托者+承担者,承担者,分析阶段的目的,面向对象分析阶段,代表性的方法论中的3种模型,分析阶段的实例,对象模型的建立 动态模型的建立 功能模型的建立,accept,abstract,Abstract 1,6,7 Accept 2,4,5,1,文件,行序号,单词,索引,文件索引的制作,分析阶段的实例,初期状态,登录中,项目登

3、录,开始,开始,项目 登录,索引 印刷,文件,索引,单词,行序号,对象群的静态构造,文件索引制作系统的分析阶段的3种模型,对象的动态动作,项目登录索引印刷,对应表,对象的功能,设计阶段,设计阶段是软件开发的中心部分 基本设计和详细设计 逻辑设计和物理设计,设计阶段的内容,设计阶段,设计阶段的实例1,索引生成程序的设计为实现追加对象3种模型的扩展(见图:索引生成程序中设计阶段的3种模型),设计阶段的实例1,单词,文件,行号,过滤器,树,队列,设计阶段的实例2,初期状态,登录中,表示中 Do:display,Add/insert,MakeReport,文章,过滤,索引,Tree,Queue,单词,

4、行号,main,输出报告,读取单词,读取行号,打印,下面没有单词,01,索引生成程序中设计阶段的3种模型,对象群的静态构造,对象的动态处理过程,对象的行为功能,设计阶段的实例2,编程分析、设计、编程的连续性,对象(静态)模型,动态模型,功能模型,静态模型,动态模型,功能模型,接口部分,实现部分,OOA,OOD,OOP,从3种模型的分析到编程的流程,编程,设计,分析,整体流程,面向对象的开发过程 来回型的开发形态,整体流程,抽象化,U1,问题领域,再利用,要求,OOA,OOD,OOP,面向对象开发过程,现实世界,追加,数据管理,任务管理,计算机,追加,细化,整体流程,来回型开发形态,分析,设计,

5、编程,分析,设计,编程,瀑布型,来回型,原型,原型,各种方法,4大方法的特征,中大规模,小规模,小中规模,小大规模,对象规模,中,高,特别高,低,技术公开度,Rose,OOATool,OMTool,Teamwork,辅助工具,丰富,少,少,丰富(1979-),适用成绩,1990年,1990年,1991年,1988年,发表年,- -,- 高,自然 高,自然 低,分析.设计过程 OOD的联结度,扩充了Ada用的方法论的旧Booch法。从HOOD,OOSD等Ada用的方法论的影响大,也受E-R,JSD法的影响 高,组合E-R图及Shlaer&Mellor的方法和OOP及知识库系统的概念而发展而来 低

6、,从结构化分析继承数据流和状态转换图,对象、建摸受E-R图等的影响 高,将意义模型作为基础 高,概要 记述力,Grady Booch/美国Rational公司,Peter Coad/美国Object International公司,J.Rumbaugh等General Electric公司研究开发中心,Sally Shlaer/美国Project Technology公司,开发者/公司,Booch方法,Coad&Yourdon,OMT方法,Shlaer&Mellor,方法,各种方法,4大方法的特征,S-M法: 作为对象意识到实时系统,辅助特别细致的动态建模 C-Y法: 没有细微的限制,对于用户

7、自由度高,是4种方法中 最通用的。 OMT法: 是4种方法中唯一从分析到设计、编程连贯下来的方法 Booch法:以面向对象设计为对象,与其他方法比较,对于各种 面向对象语言有种种表现形态,与面向对象语言的连 接明确,软件的重用,软件的重用,组件重用中的技术课题,组件重用的 技术课题,重用单位,登录方法,修改顺序,检索方法,组件的体系化,各个阶段的成果都是重用的候补,开发阶段与重用组件,利用类和库进行面向对象开发的组件重用,问题领域,设计中已有的Pro,类管理,数据管理,UI管理,重用Ob,重用Pro,重用Ob,新Ob,新Ob,新Pro,类 和 库,新系统,分 析,设 计,编 程,下层,上层,检

8、索,登录,登录,检索,登录,检索,Ob:对象 Pro:程序,饭店综合信息系统,顾客,收款员,餐桌,服务员,来店,点菜,就餐,收银,后付款方式,目的:考虑两种饭店均可用的对象/模型/动态模型,饭店综合信息系统,先付款方式,顾客,餐桌,收款员,服务员,饭店综合信息系统,对象/模型,用OMT方法建立对象/模型 首先分析领域对象,实际可能有很多对象,现仅选与分析目的有关的5个对象来建立对象模型。 顾客-区分顾客的属性 菜单-菜单项目和价格,按此来收款 点菜-相当于传票,其属性有点菜号、时间、品种 服务员-接受点菜、供菜 收款员-管理收款、每日的收款总数和欠帐管理 在明确属性后,就可以定义其操作了。例如

9、,点菜的操作是:点菜、供菜、收款、统计累加。,饭店综合信息系统,饭店综合信息系统,用OMT方法建立动态模型 在建立对象模型后,建立动态模型。 建立动态模型的顺序: 首先针对某作业,制作表示事件发生的流程的序列。 然后根据其序列作成规定对象间事件流程的事件跟踪图。 饭店1 的事件跟踪图的建立。,饭店综合信息系统,动态模型(1) 饭店1 的序列,服务员记录顾客的点菜,服务员将顾客的点菜记录到订单,服务员上菜,服务员在订单上加注上菜标记,用餐后、顾客付款,收款员向订单上加注已收款标志,饭店综合信息系统,动态模型(1) 饭店1 的动态模型的事件跟踪图,口头点菜,订单记录,(生成),(菜做好),(点菜)

10、,上菜,订单执行,(执行),结帐(交钱),结帐完毕,饭店综合信息系统,动态模型(1) 饭店1 中的“订单”对象的状态变换图,会计处理(金额),点菜(品种、顾客层),上菜,统计,点菜,上菜服务,结帐完成,统计完,保存,会计的事件,服务员的事件,统计的事件,饭店综合信息系统,动态模型(2) 饭店2 的序列,服务员记录顾客的点菜,服务员将顾客的点菜记录到订单(输入到机器里),顾客付款,收款员在订单标已收款,服务员给顾客上菜,服务员向订单上加注上菜记录,饭店综合信息系统,对象模型一样 但动态模型不一样,饭店综合信息系统,饭店综合信息系统,饭店综合信息系统,多视点状态变换模型 适合饭店2的多视点状态变换

11、模型(“订单” 对象),点菜,服务完,未结帐,已结帐,已调查,服务员,会计,统计处理,服务,统计,会计处理(金额),点菜(品种、顾客层),实现组件的标准化,对于饭店1的“订单”对象,在饭店2中怎样? 订单的动态模型的状态变换关系没有变化,唯一变化是:点菜事件的起源由服务员变成会计了。这样就可是县实现了面向对象中的组件标准化。 多视点状态变换的考虑方法对模型化十分有效。从多个视点不考虑之间的关系建立起独立的模型,这样模型化较容易和提高理解性。,设计变更过程的固定化,过 程,设计变更,可重用部分及追加修改部分的特定化,追加/修改/消除,多视点状态变换模型的修改,可重用部分-对象、模型 追加修改部分

12、-动态模型,处理的变更: 先付款方式-后付款方式,(例)饭店综合信息系统,设计变更的过程,面向对象分析与设计,面向对象开发过程概述 面向对象开发过程的特征 面向对象分析、设计方法论 OMT法 Booch法 其他方法论 第二代OMT法 案例介绍,面向对象开发过程概述,面向对象分析 系统分析、设计 用户接口设计与面向对象设计 编程(面向对象编程) 再利用的准备,各种方法,中大规模,小规模,小中规模,小大规模,对象规模,中,高,特别高,低,技术公开度,Rose,OOATool,OMTool,Teamwork,辅助工具,丰富,少,少,丰富(1979-),适用成绩,1990年,1990年,1991年,1

13、988年,发表年,- -,- 高,自然 高,自然 低,分析.设计过程 OOD的联结度,扩充了Ada用的方法论的旧Booch法。从HOOD,OOSD等Ada用的方法论的影响大,也受E-R,JSD法的影响 高,组合E-R图及Shlaer&Mellor的方法和OOP及知识库系统的概念而发展而来 低,从结构化分析继承数据流和状态转换图,对象、建摸受E-R图等的影响 高,将意义模型作为基础 高,概要 记述力,Grady Booch/美国Rational公司,Peter Coad/美国Object International公司,J.Rumbaugh等General Electric公司研究开发中心,Sa

14、lly Shlaer/美国Project Technology公司,开发者/公司,Booch方法,Coad&Yourdon,OMT方法,Shlaer&Mellor,方法,4大方法的特征,S-M法: 作为对象意识到实时系统,辅助特别细致的 动态建模 C-Y法: 没有细微的限制,对于用户自由度高,是4种 方法中最通用的。 OMT法: 是4种方法中唯一从分析到设计、编程连贯下 来的方法 Booch法:以面向对象设计为对象,与其他方法比较, 对于各种面向对象语言有种种表现形态,与 面向对象语言的连接明确,四种方法没有本质的区别,四种方法的描述方法确实不同,但没有本 质区别。 这些方法没有具体到现场怎么

15、用,所以对 于具体问题有必要适当改变再应用。 可能几种方法混合使用和引用。 这些方法都在进一步完善。,方法实例之一:S&M方法介绍,1988年提出的方法,原型始于1979年左右应用于大规模实时系统为中心的系统分析。1992年进一步完善。 用法上的注意点:S&M法中,现实世界中的事务叫【事例】,抽象化后的事例叫【对象】。 模型:信息模型(对象模型)、状态模型(动态模型)、处理模型(功能模型),方法实例之一:Shlaer&Mellor法,S&M方法介绍,模型扩展,在3个基本模型的基础上增添4个原创模型: (1)对象通信模型,(2)对象存取模型,(3)领域模型, (4)子系统模型。 对象通信模型表示

16、对象间的消息关系。 对象存取模型表示对象间数据的参照关系。 领域模型与子系统模型是为适用于大规模开发而设置的模型。,S&M方法介绍,模型扩展,大系统的情况下,要考虑分割成领域。领域由一些子系统构成。为了描述这两个模型,还有表示系统整体对应的领域图以及描述领域中各种子系统间的事件通信的子系统模型等的模型。这样就需要各种文件,其特征就是明确其关系。以下几节就介绍上述的用S&M法的分析建模。,领域模型和子系统模型,方法实例之二:信息模型(1)所谓对象,对象就是事物的抽象 首先有必要识别事物。进而,还必须抽出现实事物间的静态关系。将事物作为对象模型化,然后将事物共有的性质作为属性附加于对象。事物间的静

17、态关系作为对象间的静态关系来模型化。,方法实例之二:所谓对象(图示),事物的识别,对象,事物间的静态关系,对象的属性 对象间的静态关系,方法实例之二:对象的候补,对象的候补 对象的候补首先是有形的东西,是现实存在的事物的抽象。其次,是找出其目的或任务抽象的作用(如大学,教师和学生)、发生现象的抽象(如选举、地震)、对象间关联产生的相互作用(如合同)、表征其规则或标准的规则(如烹调方法)。 候补的抽出没有固定顺序,可以是:先从要求文中出现的有形事物的抽出开始,按上述的项目的顺序抽出对象。这个顺序就是表示从分析阶段出现的对象到设计阶段出现的对象的顺序流程。,方法实例之二:对象的候补(图),方法实例

18、之二:对象抽出难,对象的抽出较难 面向对象软件开发中最重要的项目就是对象的抽出。 抽出的好,则以后各个阶段进展顺利,否则,就出现返工,难以进入实质开发。 对象的抽出不仅从名词句中,而且从要求书中的动词句的动作主体和动作对象中抽出。一般先从动词句着手效率更高些。 尽量抽出较多的候补对象来,然后再去掉。尤其是在定义属性时可以验证对象要否,这也是循环开发的技巧。,方法实例之三:信息模型(2)所谓属性,对象性质的描述 对象共有的性质就是属性。 针对于对象的事例具有各自属性的属性值。属性值的不同产生了事例的唯一性。能够区别事例的叫做【识别符】。对象一定要有识别符。,方法实例之三:属性的种类,属性的种类

19、分析中对象的属性有【描述属性】、【赋名属性】和【参照属性】等3种。 【描述属性】赋予对象的各个事例固有的事实和性质。 【赋名属性】给事例赋予名称或标签。 【参照属性】与其他对象的事例建立联系。(举例见下页),方法实例之三:属性的举例,举例 “职工”对象的描述属性有:参加工作日期、职称、家庭电话等; 赋名属性有:职工号码、姓名; 参照属性有:所属科室名称。 所以,职工号码就是唯一确定某一职工的识别符(同名同性可能);所属科室名称是将职工对象与部或科对象建立关系的属性。,方法实例之三:属性的举例(图),方法实例之三:参照属性的举例(图),方法实例之三:属性的规则,规则1:各属性必须拥有一个值; 规

20、则2:属性不能含有内部构造; 规则3:识别符以外的属性不能表示识别 符的性质。 规则4:不表示其他属性的性质。 以上规则是根据关系型数据库原理产生的。,方法实例之四:信息模型(3)所谓关系,对象间的关系 现实世界中不同事物之间存在着某种关系。比如,宠物和宠物的拥有者之间,宠物的拥有者“拥有”宠物,或者说,宠物被宠物的拥有者“所拥有”,具有这样的关系。这样的联系在信息模型中,作为对象间的关系加以模型化。一般现实世界中存在的关系有【多重性】和【条件性】。,方法实例之四:信息模型(3)所谓关系(图),方法实例之四:关系的多重性,所谓的多重性就是宠物的所有者有多个宠物的情况那样,其关系不是一对一而是指

21、一对多。关系多重性中存在多对多的关系。比如上例中某一宠物实际由多个所有者共有的情况。这样的多对多的关系的情况可以模型化。这种对象叫做有关联对象。动态变化关系的情况也可模型化。即关系具有状态模型的情况。或者说,对于有关联对象可以追加新的属性。这样的把关系作为对象进行模型化是面向对象分析的一个重要特征。可以说与意义模型有决定性不同。,方法实例之四:关系的多重性(图),方法实例之四:关系的条件性,条件性有【无条件】和【有条件】之分。所谓无条件就是指属于关系,所有的事例都成立的情况。有条件就是指属于事例,但某种情况下关系成立,其他的情况下关系不成立。 条件性是关系仅存在于一侧的事例的情况和也有存在于两

22、侧的事例的情况。也允许多重性的融合,所以关系的所有的可能性有10个。 关系的丰富性是S&M法的重要特征。,方法实例之五:状态模型,对象状态抽象化 对象是把现实世界中事物的集合抽象化的实体,事物中有状态。所以在将事物抽象化的同时有必要将其所拥有的状态抽象化。对象的所有事例必须遵循同一处理规则。分析的目的是正确的理解事物,必须定义对象的动态时序中的处理过程。即,对象有状态的变化。把这称之为对象有生命周期。明确地处理对象状态地变化是分析的重要特征。,方法实例之五:状态模型,状态模型按状态的集合、事件的集合、变迁规则及其操作来定义。状态模型的典型例子就是状态迁移图。状态是对象的某一状态、事件表示引起状

23、态变迁的事件和指示。变迁规则是某状态的事例在接受某事件时规定转移到哪个状态。行为是状态中所引发的一系列动作。,方法实例之五:状态模型生命周期(图),时间,方法实例之五:状态模型,通过状态变化分析使功能明显化 虽然定义对象,但如果将定义生命周期作为第一目的地话,第二目的是根据状态地变化,找出必要的事件或处理。事件含有来自周围对象的消息,依据此就可使与周围对象的动态关系显性化。处理可是对象潜在的功能显性化。处理的抽出与下节要讲到的处理模型的描述相关。,方法实例之五:状态模型与处理模型(图),状态模型,状态,对象的状态,事件,引起迁移的触发,迁移规则,接受新事件时 转移到新的状态,处理,在状态中引起

24、的 一连串的动作,状态 迁移图,处理模型,对象属性,处理,数据流图,方法实例之五:状态模型,生命周期间的协调 不同对象的生命周期也有相互协调。某对象的状态的迁移引起的处理变成了事件,这是因为也可引起其他对象状态的迁移。将这样的不同对象间交叉的事件模型化的是对象的通信模型,将在后面的章节介绍。对象通信模型是对象间消息流的基础。,方法实例之六:处理模型,行为、数据流图 在对象分析中,状态的着眼点是在使动态侧面显性化的同时,找出各状态的行为。状态中的行为称之为处理模型,处理模型用“行为、数据流图”表示。即,行为、数据流图是行为内部的处理单元与其处理单元间的相互通信用图示来表示。 行为、数据流图由(1

25、)数据存储;(2)数据流;(3)控制流;(4)处理构成。,方法实例之六:处理模型(图),面向对象与结构化的数据流图,方法实例之六:对象存取模型,处理除了自身的属性以外,也可存取其他对象属性。有必要描述对象间的数据存取,要进行此描述,就要用对象存取模型。 对象存取模型由对象群及连接对象间的箭头组成。箭头用处理名作为标识,见下图。,方法实例之六:对象存取模型(图),处理模型,对象存取模型,处理模型,对象A,对象B,方法实例之七:对象通信模型,描述系统整体的动态处理过程 不仅描述对象,也有必要描述系统整体的动态处理过程。对象间、还有与外部实体的事件通信的描述、以及对象间协调的处理也需要描述。对象通信

26、模型就是描述这些信息的,描述对象间消息流的。相当于OMT法的事件流。但是,SM法中,是在状态模型后建立,OMT法中正好相反,模型建立的顺序不同。 在对象通信模型中,对象呈多层化,功能丰富的对象置于上面,不丰富的放在下位。针对多层化的对象按外部事件驱动模式分上位驱动和下位驱动。另外,外部事件还有先于系统的行为引起的和后引起的区别。,方法实例之七:对象通信模型(图),系统整体的 动态处理,对象间的事件通信,与外部实体的事件通信,对象间协调的处理,对象通信模型,方法实例之七:对象的多层化(图),方法实例之七:控制链,控制链是内部的控制队列 把外部引起的内部行为,即内部的控制队列叫做控制链。控制链由行

27、为和事件列组成,呈横断多层化的对象群的形态。 对于分析人员来说,它具有一定的意义。对于特定状态的系统来说,外部事件发生时,描述系统内部产生的现象。要弄清对于外部事件系统整体的响应,可通过模拟并追踪控制链来实现。根据模拟的结果,可以评价所有的属性与其他的属性是否整合,系统是否对外部事件作出了期望的响应。,方法实例之七:控制链(图),方法实例之八:领域模型,4种领域模型 在构筑大型系统时,分析人员一般要处理许多不同的内容,即要处理领域。可以认为各个域不论多少都独立于其他领域。 领域模型有4种: (1)从系统最终用户角度描述的“应用域”(分析阶段); (2)描述支持应用领域的实体函数的“服务域”(设

28、计阶段); (3)管理系统整体数据及控制的“结构域” (设计阶段); (4)考虑到编程语言、OS、类和库的“实现域”(实现阶段) 目前为止讲到的分析问题就是这里的应用域的问题,即弄清用户对系统的要求。,方法实例之八:领域模型(图),方法实例之八:域模型间联系,这些模型构成整个系统。特别是结构域与实现域关联密切。比如,实现语言不同,那么结构域中的讨论项目也不同。 某个域用其他域提供的算法或功能时,两域间有个“桥”。系统中必要的域和桥的关系用域图来表示。按惯例,图的上位表示应用域,下位表示实现域。 域用椭圆来表示。在实现了的系统中,两域间的联系表示上位域利用下位域提供的功能。 下图例中,作为域的例

29、子,铁路操作意味着列车与货车日程的监视。桥的例子,意思是铁路操作利用警报域来管理铁路的故障情况;另外,【警报】与【用户接口】间的桥,表示警报用用户接口的功能向操作员报告故障状态。 在域中作为整体分析来说也有特别小,多的不能管理程度的含有对象的域。这种情况,下节中讲到,把域分割成子系统。,方法实例之八:举例(图),方法实例之九:文档体系与项目矩阵,3种子系统模型 分析的对象是较大问题时,就要分割成子系统模型化。这就叫做子系统模型。有3种子系统模型: (1)子系统关系模型(SRM) 表示子系统内信息模型间的关系; (2)子系统通信模型(SCM) 表示子系统间的事件通信; (3)子系统存取模型(SA

30、M) 表示对象、存取、模型间的关系。 域图和项目矩阵是关于系统整体作成的。针对各个域定义上面3种子系统模型。,方法实例之九:子系统模型(图),方法实例之九:子系统为单位构建,子系统为单位构建 分析工作成果的大部分是作到子系统程度。即,3种模型以及与其相关的各个子系统的辅助表或清单。子系统下有构成其的对象。针对具有行为的各个对象及其各个关系,描述其状态模型。针对各个状态模型作成行为、数据流图。最后针对行为的复杂处理,作成各个处理的描述。下图是铁路管理系统的分析成果例。,方法实例之九:子系统为单位构建(图),方法实例之九:用项目矩阵管理,项目管理矩阵是表示作业和计划的一种简明的表达形式。 在矩阵中

31、,作业的人员配置、作业成果、计划工时、当前的作业状态(完成、进行中、未开始)、作业的开始及完成的预定日期、实际工时等用矩形文本框表示。将此表张贴在现场,有助于监视和控制进度。面向对象的项目管理问题较多,这可作为解决方法之一。,方法实例之十:方法与消息(对象中),S&M对象中的方法 S&M法与其他方法的区别还在于对象仅有属性而没有方法(method)。在面向对象语言中当然有方法,下面介绍S&M法是如何处理方法和消息的。 以手法六中的处理模型为例,下图中(a)表示对象A和对象B的处理模型。对象A有四个处理,这就相当于4个方法。,方法实例之十:方法和消息(图),方法实例之十:方法与消息(通信模型中)

32、,S&M通信模型中的方法与消息 S&M法中,消息可以从对象通信模型和对象存取模型获取。 对象通信模型表示对象间的事件通信或者说对象间协调的处理。例如:对象A发出的事件引起对象B的状态的变迁。这可解释为消息由对象A向对象B发出的。对象A发出的消息由对象B的方法接收。这可证明方法是存在的。对于对象B来说,虽然作为生命周期来描述状态模型,但在状态模型中,由对象A的事件引起的新的状态变迁时的动作相当于方法。 下图中对象B从对象A得到作为消息的内部事件1,其结果对象B的状态从Q变为R,作为方法执行处理行动1。,方法实例之十:方法和消息(图),方法实例之十:方法与消息(存取模型中),S&M存取模型中的方法

33、与消息 S&M法中,对象存取模型中也有消息和方法。 对象存取模型是对象在存取其他对象的属性时用到的模型。 在面向对象里,因为被封装,所以不能直接访问其他对象的属性,因此,要实现象前面的图中(a)的对象存取模型时,(b)里要追加用红色表示的处理。即,对象A要访问对象B的属性时要通过对象B的用红色表示的处理来实现。 作为获取方法和消息信息的模型,列出了对象通信模型和对象存取模型,前者着重事件的抽出、而后者着重处理(行动)的抽出,两模型相互补充。,方法实例之十一:分析向设计的转换,OODLE图 关于从分析向设计的转换,在S&M法中,用OODLE(Object-Oriented Design Lang

34、uagE)来描述。OODLE是不依赖于语言的设计描述方法,OODLE可以说成是Language,但其内容是图式描述法,使用4种图: 类图描述类的外观; 类构造图表示与类内操作相对应的代码的内部构造; 依存图描述起动关系和友元关系; 继承图表示类间的继承关系。 这些图间的关系明确后,对于设计人员来说,就有了一个比较明晰的体系。,方法实例之十一:分析向设计的转换(图),方法实例之十一:分析向设计的转换,类图是一个类一个类的描述。类图是为设计类的内部构造提供外部规格或接口规格设计。 类构造图以原有的构造图为基础,是承担类内部设计人员的工具,在表示类内数据及其控制的流向、代码构造时使用。针对各个类画出

35、类构造图。 依存图用于描述起动关系和友元关系。所谓起动关系就是某个类起动其他类的公开操作。友元关系指的是某个类起动其他类的内部操作或者直接访问数据。 继承图描述类间的继承关系,设计人员写出继承构造、修改或在想修改嵌套在构造中的类时使用。 有从分析结果向OODLE变换的规则,进而也能向C+的模板变换。,方法实例之十一:分析向设计的转换(图),OODLE图间的关系,继承图,依存图,类图,类构造图,方法实例之十一:分析向设计的转换,作为从分析向设计转换的基本方法,制定了从分析模型的构成要素向设计的构成要素变换的规则。以这种规则为基础,生成主程序、4个结构类、几个应用类。 主程序的功能是类的各种初始化

36、操作的调用、开始控制队列或者继续生成外部事件、定时事件的生成。 结构类由(1)有限状态模型,(2)迁移,(3)主动事例,(4)定时构成。有限状态模型、迁移、主动事例作为结构的状态机械算法来实现;定时类用时间对象来对应。 应用类由分析结果的对象与状态模型导出。作成被动类、主动类和分配子3种。被动类是没有状态模型的对象,主动类是拥有状态机械的对象,分配子在OOA里成为对应分配子的类。应用类的内部设计用类构造图来表示。如果将其分类的话,可分为被动类、主动类和分配子类3种。,四种方法的比较评价1,用法的不同,联系的表示见下图,四种方法的比较评价1,三种方法的规格化过程和文档(a),属性,层次,关联,状

37、态,动作,的定义,的定义,的定义,的定义,的定义,三种方法的规格化过程和文档(b),四种方法的文档,四种方法的文档,面向对象分析过程,Coad&Yourdon的面向对象方法论(P48) C&Y对象模型的部件 一个对象模型的部件是类的一个分组。这些分组包括: 问题域PD(problem domain) 人机交互HI(human interaction) 数据管理DM(data management) 系统交互SI(system interaction),面向对象分析过程,Coad&Yourdon方法的活动项目 确定目的和特点; 确定对象和模式:对象的确定、构造定义、部件确定; 建立对象责任:属性

38、定义; 定义服务场景:服务定义; 对于每个问题域PD、人机交互HI、 数据管理DM 、 系统交互SI都要重复上述后3个活动。它们是同时进行的,也可按任意顺序进行,也可以忽略其中一个或多个活动。是交互和螺旋式进行的。,面向对象分析过程,Coad&Yourdon方法的活动项目(P47),要对四个部件的每一个确定对象和模式,C&Y方法论的交互视图,C&Y法的对象模型符号,C&Y法的分析过程,本章主要介绍以下2个内容: C&Y法的具体分析顺序 基于实例的OOA过程的模型化,C&Y法的具体分析顺序,C&Y法的具体分析顺序,本章以“直升机自动着陆系统”为例。 以有“需求文档”为前提。有的“需求文档”往往仅

39、是描述系统的问题领域。所以,为了提高分析效率,对“需求文档”作必要的整形。首先,将被动态句子转为主动语句;其次是补充被省略了的动词主体(动词词组的主语);最后,将动词词组中出现的代名词置换成所指的具体的名词语句(没有合适词汇时造词)。,C&Y法的具体分析顺序(需求文档),直升机的自动着陆系统 P.Pfilers公司从事首都圈的货物配送业务。作为经理和创始人的P.Pfilers确立了在诺大的首都圈两点间配送时间仅需1520分钟的公司的声誉。因为他拥有直升机队和最近购置的250个废弃厂房用地改造的停机场,所以他可以实现其目标。在各个停机场里有自行车和自行车停车场,配送员用自行车将货物从直升机运到目

40、的地。这个快的令人难以置信的服务尽管可使他的运费很高,但他的业务得以迅速扩大。然而,上周他的公司遇到了2个大问题。开始是星期二整个城市被浓雾所笼罩,可见度为零,直升机不能起飞。更糟糕的是他的客户很狼狈。出现了考虑起诉他的人。为什么,因为他声称最长运送时间20分钟不受天气影响。第二个问题是星期四的事,当一个飞行员想着陆时,心脏病发作了,导致直升机坠毁,货物破损。幸运的是飞行员得以救助,现在住院恢复中。这样的事情肯定是坏事,但顾客再次支付这种服务昂贵的费用,因为他们并不认为他们的重要货物会破损。 P.Pfilers为了保证他承诺的服务水平,他决定在250个停机场安装控制安全着陆的系统是最好的办法。

41、这个系统必须保证在能见度为零时,飞行员神智不清时都能高效的操作。他跟我们签订了开发这样系统的合同。,C&Y法的具体分析顺序(名词抽出),名词词组、动词词组的抽出 名词是类、属性和属性值的候补。 名词词组分析完成后分成“类”、“属性”、“属性值”、“不要信息”四种类型。,C&Y法的具体分析顺序(名词抽出例),名词词组的抽出例(31个) 货物,首都圈,经理,创始人,公司,公司的声誉,服务,直升机,停机场,楼房用的,自行车停车场,自行车,飞行员,目的地,价格,业务,问题,城市,雾,可见度,顾客,天气,最长配送时间,心脏病发作,医院,发生的事情,费用,最好的办法,服务水平,系统,分析人员,C&Y法的具

42、体分析顺序(动词抽出),动词词组的抽出 抽出动词词组时,整理附属的信息(谁、做什么、给谁)。 首先,抽出动词的主体,即动词词组的主语; 其次,动作对象,即直接宾语或间接宾语;,动词词组的抽出、整理 动词主体(动词词组主语) 动作对象(动词词组的直接宾语) 间接宾语(动词词组的间接宾语),C&Y法的具体分析顺序(动词抽出),动词词组的抽出例(27个),C&Y法的具体分析顺序(类候补的抽出),类候补的抽出 在抽出类候补时的注意事项: 按固有名词、动作主体、动作对象、间接宾语、名词词组的顺序来调查和抽出。(22个类候补),固有名词 (检查含有固有名词的有抽象概念意义的名词词组的存在,若存在就是类,并

43、且可能是Gen-Spec构造) 从动作主体中抽出(动词词组的主语名词是类的候补) 从动作对象、间接宾语中抽出(动词词组的动作对象、间接宾语的名词是类的候补,间接宾语是类的可能性高(在消息交换时模型化),类候补所涉及到的动词词组作为服务(方法)的候补登记下来供服务定义用) 从名词词组中抽出(属于以下7种类的就作为类候补) 装置、组织、场所、应记录的事情、作用、操作过程、其他系统 (对不上以上种类的很难判断) 注意: 在名词词组前先从动词词组研究 在该阶段尽量搜集候补,不合适的也不要抛弃,以备后用。,类候补的抽出例,类候补的验证,类候补的验证和选定 验证抽出的类作为类是否妥当 隐藏有关设计、实现的

44、信息 排除从其他信息(对象、属性)可能导出的候补 有无属性或服务,类候补的验证,隐藏有关设计、实现的信息 涉及到设计和实现的类候补要从分析对象中剔除(但,要保存以备后用)。另外,有关设计和实现的各种约束(如性能要求)也要标记到相关候补上。 排除从其他信息(对象、属性)可能导出的候补 把从某类候补的属性的信息可以导出的类候补从类候补中去掉。定义属性后有必要检查这样的类。 检查无属性或服务的类 有无属性或服务是很大的检查项目。如果没有就不能是类。但是,在此阶段还没定义属性和服务,所以检查后放。当然,类的抽出、属性定义和服务定义的3种作业可同时进行,但对初学者困难,在此不考虑。 类候补的验证分2回进

45、行 属性和服务未定义阶段、利用后面工程的结果(属性服务抽出)再检查,这样就循环进行。,属性的定义1 整体概要,属性的定义是重要的分析项目 各个类由属性和服务组成,类之间存在属性的参照关系及其服务的要求关系。面向对象分析不用说就是以将这些信息抽出并加以整理为目的。 首先,因为类必须有属性,所以属性的有无与类的存亡有关系。换言之,通过属性抽出,可以判断抽出的候补类是否正确。 其次,通过属性向类中的配置可以提供规定类间的Gen-Spec构造,或者说消息流向的信息。 进而,通过筛选属性值,可以定义类的状态迁移,使促使状态迁移的服务的存在明显化。 如上所述,属性定义对类及服务,进而对决定类间的构造有很大

46、的影响,在分析工作中有重要的作用。,属性的定义1 整体概要,属性的定义 1、从名词词组中抽出属性的候补 2、从没有属性的类中抽出候补 3、区分重复属性的类 4、描述规定类的状态迁移的属性 属性的定义顺序 1、从名词抽出属性 2、非属性类的验证 3、属性联接(也叫事例联接)的定义 4、描述规定类的状态迁移的属性,名次词组,类,有属性类,非类名词词组,非属性名词,再斟酌,属性候补,无属性类,不知是类否,属性候补,再斟酌,类中不重复的属性,类中重复的属性,所有属性,所有属性,参照属性,事例联接,属性值,类的状态迁移,选择,整理,代入值,1,2,3,4,属性的定义顺序,属性的定义顺序,属性的定义2 名

47、词中属性的抽出,没成为类的名词的审查 在从名词抽取属性时,首先对未成为类的名词审查其作为类属性的可能性。对于动词语句的附属信息,着重动作的对象。动作主体是类但其动作的对象不是类的情况下,动作对象为属性。但是,具体是不是动作主体的属性不能确定,根据句型和动词来判断。结果就会产生多数类拥有同一属性的情况。这可通过事例联接的定义来解决。,没成为类的名词作为属性的可能性,属性的定义2 名词中属性的抽出,其它类的属性 审查某类作为其他类的属性的可能性。检查已经作为类的名次词组是不是作为其他类的属性好。比如,【创始人】作为【公司】的属性。但是,这样的判断最好在全部分析后返过来再审查。服务的有无和归属是关键

48、。 接下来是所有格的检查。检查某一名词语句是否成为了某一名词词组的所有格。所有格的情况下,自然就成为属性。该例中【公司的声誉】,【声誉】是【公司】的属性,在【服务水平】中,水平是【服务】的属性。下一步是检查作为属性值的名词语句。本例中1520分钟是【最长配送时间】的属性值。名词语句中,可以认为有常数值存在,一般其意义在需求文档中有标示。关于未使用的名词语句调查是否存在可作为属性值的常数,赋予适当的属性名。 需求文档中没有出现的属性的补充,作为默然的了解事项来定义需求文档中没有表现的属性。如果必要可通过谈话来补充。如下表所示补充属性。 最后处理未使用的名词,完成上述分析后,作为属性和类没有被采用

49、的名词,再度分析其作为属性应有的类。,属性的定义2 名词中属性的抽出,分析人员补充完属性,属性的定义2 名词中属性的抽出,从名词抽出属性的候补的规则,对于未成为类的名词仔细审查其作为类属性的可能性 仔细研究某类作为其他类的属性的可能性 成为所有格的名词 作为属性值的名词 原始输入信息中未出现的属性的补充 未使用名词的处理,属性的定义3: 事例联接的定义,没有属性的类的验证,首先,研究某类作为他类的属性的可能性。即,检查作为类已经登录了的名词作为其他类的属性好不好。 属性不存在的情况下,就可能怀疑是否是类。如果可以作为其它类的属性的化,那么几乎可以考虑它不是类。没有属性的类是否为类的判断可以在【

50、服务定义】阶段进行。因为通过考察服务,就会出现执行服务所必须的属性。 通过抽出服务可以发现新的属性,其结果就是可以验证类的候补。,没有属性的类的验证,属性的定义3: 事例联接的定义,从没有属性的类抽出属性的候补的规则: 仔细考察类作为其它类的属性的可能性 在【服务定义】阶段再仔细考察,属性的定义3: 事例联接的定义,事例联接的定义,其次,是表示属性之间联系的事例联接的定义。 对于多个类所拥有的任意的属性要整理成属性与类的所有关系未1对1关系。对于多个类拥有同名属性的状态,不一定就是非法状态,有时也是正确的。 下面的事例联接的作成顺序是针对分析人员认为是同一概念的属性来进行的: 比如:【顾客】的

51、属性【费用】和【服务】的属性【价格】是同一概念,所以都统一成【费用】。首先,决定应该保持属性的类。如果某个属性永远属于那个类,就认为是拥有属性。 另一方面,不是拥有属性但在执行服务时参照的属性叫参照属性,参照属性用事例联接来表示。如果类A为执行自己的服务要用到B类的拥有属性时,就叫做【类A与类B间存在事例联接】。可能是Gen-Spec构造。也就是说存在参照类到拥有类有消息,因为它不能直接访问。,属性的定义3: 事例联接的定义,重复属性的类的区别规则: 决定应保持属性的类 事例联接的设定,属性的拥有类和参照类,属性的定义4:描述规定类状态迁移的属性,规定类的状态迁移 属性抽出顺序的最后一步就是描

52、述规规定类的状态迁移的属性。即,明确成为服务的动作(分叉、起始)条件的属性,作成表示其属性变化的迁移图。 首先,筛选出属性值。属性值从以下信息中抽出:名词中抽出(在分析过程中判断为属性值的名词)、形容词中抽出(名词的修饰语)、分析人员来抽出(需求书中没有记录的属性值的补充)。 其次,用以下2个检查重点来验证、修正抽出的属性值。第一个是属性值难以考虑的情况,这种情况的属性就值得怀疑。比如,【最好的办法】就属这种。第二个是考虑更加抽象的概念的属性值。比如,【飞行员】的属性【心脏病发作】作为属性【状态】的属性值就比较自然,其他属性值也容易联想。这一点的斟酌有必要对所有的属性进行。最后,相互参照属性的类可考虑应该统合的情况。比如,【货物】与【目的地】。这种情况下,目的地就是【货物】的属性。 属性值筛选出后接下来是属性值的意义上的分类。根据在问题领域中属性拥有的意义来分割属性值的值域。,属性的定义4:描述规定类状态迁移的属性,状态迁移图的作成 描述规定类状态迁移的属性的最后是状态迁移图的作成。明确成为服务的动作(分叉、起始)条件的属性,根据属性值意义上的分类作成状态迁移图。比如,【直升机】的属性之一【状态】表示直升机某一时点的状态,【终止状态】、【起飞状态】、【飞行状态】、【着陆状态】的迁移。在这里,关键是对各个状态对应的行为进行服务的定义。 描述规定类状态迁

温馨提示

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

评论

0/150

提交评论