《软件工程第9章-面向对象.ppt》由会员分享,可在线阅读,更多相关《软件工程第9章-面向对象.ppt(126页珍藏版)》请在三一办公上搜索。
1、1,第九章 面向对象方法学引论(Object-Oriented Methodology),1传统方法学的缺点2.软件工程的新途径3.基本概念4.Object Modeling Technique(OMT)5.Coad 与 Yourdon 的分析与设计6.Booch方法7.OOSE方法8.小结,2,本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(re
2、usability)较差.,2、SA-SD-SP 技术的缺点:,1 传统方法学的缺点1、瀑布模型的缺点:僵化,3,2.软件工程的新途径,1、快速原型法(Prototyping)适用于用户驱动的系统(即需求模糊或随时间变化的系统),Prototype,Feedback,Modification,4,2.软件工程的新途径,抛弃原型法(throw-away prototype)Brooks(1975):“Do it twice.”Version 1:a trial to verify requirements,and to get enough feedback.Version 2:produced
3、 following a waterfall model.,演化原型法(evolutionary prototype)螺旋模型(the spiral model):Boehm(1988),5,Risk analy-sis,Prototype 1,Simulations,models,benchmarks,Requirements plan,life-cycle plan,Concept of operation,Prototype 2,Risk analysis,Software requirements,Requirements validation,Develop-ment plan,Ri
4、sk analysis,Prototype 3,Software product design,Design validation and verification,Integration and test plan,Risk analysis,Operational prototype,Detailed design,Unit test,Code,Integration and test,Acceptance test,Implementation,Plan next phases,Develop,verify next-level product,Determine objectives,
5、alternatives,constrains,Evaluate alternatives,identify,resolve risks,Cumulative cost,Progress through steps,The spiral model,2.软件工程的新途径,6,渐增模型(the incremental model):Gilb(1988)The waterfall model is still followed,but for each separate increment.,2.软件工程的新途径,注:演化原型法与传统方法最大的不同,在于它是一种高度迭代的动态方法,系统的初始版本很
6、早就交付用户试用。,7,2.软件工程的新途径,2、面向对象方法学(OOM)特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,OOM的四要素:,对象(object):世界由对象组成。,类(class):对象可划分为类;单个对象可视为某一类的实例(instance)。,8,2.软件工程的新途径,继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。,消息(message):对象间只能通过发送消
7、息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,9,2.软件工程的新途径,如果一个软件系统是使用这样 4 个概念设计和实现的,则认为这个软件系统是面向对象的。一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。方法的唯一性,从生存期的一个阶段到下一个阶段的高度连续性,生存期后一阶段的成果只是前一阶段成果的修改和补充。系统结构的稳定性,系统的基本成分是对象,对象在软件开发和运行过程中是稳定的,经常变化的是功能。在面向对象系统中,功能是由对象中的操作和对象之间的消息序列来实现的,变更发生在对象内部。,10,2.软件
8、工程的新途径,OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎(deduction),OOM=Object+Class+Inheritance+Communication with messages,OOM的优点:,传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。,11,2.软件工程的新途径,OOM:以object模拟实体,需求变化不会引起结构的整体
9、变化,因为实体相对稳定,故系统也相应稳定。,传统方法:结构依赖于功能,不稳定。,传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。,OOM:一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,12,怎样建立一个好的继承层次类可以从父类继承,父类又可以从它的父类继承,形成多层次的继承结构。当增加一个新类时,不一定在最低层,可能需要插在中间层,这样可能需要调整原来的层次结构。,3.基本概念,13,各特化类中的底盘、发动机、轮胎
10、、驱动装置等可以作为共性集中到泛化类汽车类中。各个特化类可以从泛化类中继承共性,这样避免了重复。复用共同的描述,继承性往往被看作是软件复用的核心概念。,例:单 继 承,3.基本概念,14,现要建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。,3.基本概念,15,现要增加一个新类拖拉机。它的底盘、发动机等与汽车类不同,但驱动装置、轮胎等与汽车类相同。关系如下图所示。调整继承结构。建立一个新的一般的车辆类,把拖拉机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。车辆是抽象类,相关操
11、作到子类汽车找。,3.基本概念,16,另一种情形是在已有类的基础上加入新类,使得新类成为已有类的泛化类。例如,已经存在三角形类,四边形类,想加入一个多边形类,并使之成为三角形和四边形类的泛化类。,3.基本概念,17,前三个情况主要是通过查找(应用领域)类库,找到可以原封不动地继承的类或可以通过调整继承层次结构继承的类。但如果在已有的继承层次中找不到可以继承的已有类,就重新开始完全独立地建立一个类。,3.基本概念,18,注意:multiple inheritance 在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。,3.基本概念,例:多继 承,CardDeck,
12、GraphicalObject,GraphicalDeck,Method:Draw:=take a card from a deck,Method:Draw:=displaya graphical object,Method:Draw:=?,例:,19,4.Object Modeling Technique(OMT),软件开发需要把问题解决模型化。模型化是理解一个复杂系统的工具;模型是系统早期抽象的重要结构;常用的面向对象分析与设计模型 Rumbaugh 等人的 OMT 模型(Object-Oriented Analysis and Design,1991年)Coad 和 Yourdon 的模
13、型 Booch 开发模型 UML 统一建模语言,20,对象模型化技术的三类模型:描述系统数据结构的对象模型(object model).描述系统控制结构的动态模型(dynamic model).描述系统功能的功能模型(function model).这个模型化的过程是一个迭代过程通过不断更新、细化,直到切合系统真正需求为止。,4.OMT,21,OMT方法使用3种模型从不同角度来描述一个系统:(1)对象模型描述系统对象、类和它们之间关系的静态结构,反映了系统的“数据”性质。(2)动态模型用对象的状态和事件描述了瞬时的、行为化的系统的“控制”性质。(3)功能模型描述系统内的数据变化,指明了如何用输
14、入值得到输出值,即反映了系统的“功能”性质。,4.OMT,22,3个模型之间的关系:(1)通过3个模型,系统以3视图的形式呈现给设计人员,以便设计者采用统一的描述方法设计实现。(2)各模型可以独立地进行测试和理解,但不是无关的、绝对独立的。一个好的设计是指:实现了系统内部不同实质的分离,但又相互补充,限制耦合。,4.OMT,23,1.对象模型,也叫做静态模型,是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。面向对象的设计技术强调的是围绕对象,而不是围绕功能来构筑系统。在OMT中,类与类之间的关系叫做关联。关联代表一组存在于
15、两个或多个对象之间的某种语义上的联系。关联可以是物理的,也可以是逻辑的。,4.OMT,24,类名,属性,操作,类,类的实例,(类名)属性值,类定义示例,自动售货机,饮料编号价格,投入货币送出饮料显示金额按下按钮按退币杆显示售完,4.OMT,25,4.OMT,Instancediagram,一对一关联,26,限定,用来对关联的含义做某种约束。可减少多对一关联的阶数。角色,用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。附加的说明对象之间连接的连接属性。,4.OMT,27,4.OMT,28,4.OMT,链属性:关联的链的性质。,29,菱形框 表示整体侧对象,4.OMT,聚合关联(
16、整体部分关系),30,实例:,31,实例:,32,泛化关联(一般特殊关系),4.OMT,33,实例:工作站窗口系统的对象模型,34,例子:某个棒球手一年内可能为多个球队打球,也可能只为一个球队打球;每个球队有多个球员;每个球员又都有个人每年打球的输赢记录。,35,一对一及一对多关联的链属性可放入一方的类中,但对多对多关联则是不可能的例子:“职务工资”这一属性可以有2个方案,工作关联,公司,职工,名称地址,姓名社会保障号住址职务工资,36,属于一个类的所有关联都必须是唯一的,用角色名区分直接相关于给定对象的其他对象例子:某目录可能包含其他目录,也可以被其他目录所包含每一个目录都有相应的主权用户及
17、多个授权的其他用户。,37,2.动态模型,动态模型主要用来描述控制逻辑。动态模型是用“状态图”和“事件追踪图”表示。一个动态模型可由多个状态图表组成。基本概念:事件、脚本和事件追踪、状态、触发条件与事件、动作(操作)写脚本,然后确定各事件的发送和接收对象。时间从上至下递增。,4.OMT,38,事件事件发生于某一时刻的某件事,或一个触发行为。事件的时间性很强,强调事情发生的瞬间。如“用户按下鼠标左键”。事件是信息从一个对象到另一对象的单向传送,无需返回值。事件可以作为“类”来表示。事件发生的时间是所有事件的隐含属性。事件类的结构是层次性的。,39,40,脚本和事件追踪脚本(场景)是系统某一次特定
18、运行时期内发生的事件序列。通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件。事件跟踪图建立“事件-响应”关系的工具。描述一个事件将信息从一个对象传到另一个对象的轨迹。侧重于说明发生于系统执行过程中的一个特定“场景”。,41,打电话者拿起接收器拨号音开始拨号6拨号音结束拨号拨号接话方开始响铃打电话方电话铃声响受话方回答受话方铃声停止打电话方电话铃声停止电话连通受话方挂机电话断打电话者挂机,例子:使用电话的脚本:事件踪迹图:,42,自动售货机售货场景(事件序列),4.OMT,例子:,43,44,状态图,状态对象属性值和链的一种抽象形式,按
19、照影响对象显著行为的性质来将值集成组归并到一个状态中去。状态具有持续性,占有时间间隔同一状态内,属性值相同,不同状态下,属性值可以不同。状态图是一个反映状态和事件关系的网络,侧重于描述每一类对象的动态行为。,4.OMT,转换 事件名,45,46,4.OMT,例子:,47,为了解决复杂系统的状态描述,OMT引入了嵌套结构。例:自动售货机。,48,分发物品的状态子图:,状态可以拥有继承超级状态的子状态,就象类可以拥有继承超类属性和操作的子类一样。,49,触发条件与事件事件和触发引起的状态转换可以进一步分为:基于事件的触发仅由于事件发生引起了状态间的转换。基于条件的触发在条件满足的整个期间内,当事件
20、发生引起的转换。事件相同的几个转移之间的条件应该互斥。,50,51,操作在状态图中,除描述事件和状态外,必须指出对象对事件的反应。活动是需要时间来完成的操作。活动和状态有关。活动包含一些连续的操作。例如:在屏幕上显示一幅图形。活动也包括一段时间内的序列操作,该序列由自身终止。动作是瞬时操作。动作和事件有关。例如:“解除电话线连通”是对“挂机”事件做出的反应动作。,52,所有这些组成部分在状态图中是可选的:,53,4.OMT,三要素:事件(event):引发 object 状态改变的控制信息(瞬时)。状态(status):即 object 的 attributes 所处的情形(可持续)。行为(a
21、ction):Object 要达到某种 status 所做的操作(耗时)。,表示系统瞬时的控制性质。,表示方法:,注:当描述循环运行过程时,通常不关心是怎样启动的。,54,3.功能模型,功能模型描述了系统中所有的计算。功能模型考虑如何从输入值得到输出值,而不考虑参加计算的数据按什么时序执行。功能模型采用数据流图描述,一个功能模型由多个分层的数据流图组成。,55,顶层数据流图,4.OMT,3.功能模型,56,数据流图,4.OMT,57,4.OMT,4、三者关系,FM:做什么 What,DM:何时做 When,OM:操作的实体How,58,OM,DM,FM,Object,DM,Action,Pro
22、cess,Method,Data storage,Data flow,Attribute,Event,对每个object(class)建立DM;,Action对应DFD中的 process 以及OM中的 method;,FM中的 process 对应OM中的method;,FM中的数据存储及数据的源/终点对应OM中的 object;,FM中的数据流对应OM中的attribute,或是整个 object;,FM中的 process 产生DM中的 event;,OM描述了FM中的动作对象、数据存储及数据流的结构。,建立顺序,4.OMT,59,分析OMT一种软件工程方法学。软件工程方法学是运用预先定
23、义的技术和符号规则的一种有组织的软件生产过程。,60,OMT方法的组成:分析阶段(理解和设计应用模型及操作领域)系统设计阶段(确定系统的总体结构)对象设计阶段(完善、改进、优化),61,OMT方法强调:开发重心是分析和设计阶段。自底向上的归纳,自顶向下的分解 强调对象模型而不强调功能。不间断开发过程。迭代的而不是顺序的。OMT在分析阶段的任务是:建模。,62,63,分析阶段建立各个模型的步骤:1 对象模型的建立步骤和说明STEP1:识别对象与类。,64,STEP2:准备数据字典。精确描述每个对象类,以避免多种解释和二意性。STEP3:识别类之间的关联。关联常常来自于静态动词和动词短语。STEP
24、4:识别对象的链和属性。,65,STEP5:用继承性组织和简化对象类。STEP6:测试访问路径。STEP7:迭代并反复改进模型。STEP8:将类分组成模板。以便于画图、打印和阅读。,66,2动态模型的建立步骤和说明动态分析从寻找事件开始,然后用状态图归纳出每个对象允许的事件顺序。STEP1:预备典型交互次序的脚本。STEP2:识别对象间的事件。,67,STEP3:为每个脚本准备一个事件踪迹图。STEP4:构造一个状态图。STEP5:匹配对象间的事件。,68,3功能模型的建立步骤和说明 数据流图的过程(加工)对应于对象状态图中的活动和动作,而数据流对应于对象图中的对象和属性。构造具体功能模型的步
25、骤是:STEP1:确定输入和输出(上下文图)。,69,STEP2:构造数据流图。STEP3:描述函数。STEP4:识别对象间的约束(即:条件)。建立完初步的模型后,需要进一步增加操作,然后重复分析。,70,5 Coad/Yourdon方法,Coad P.and Yourdon E.Object-Oriented Analysis,1990 Coad/Yourdon方法是在信息模型化技术、面向对象的程序设计语言及知识库系统的基础上发展起来的。由面向对象的分析(OOA)和面向对象的设计(OOD)构成。强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。OOA 是用面向
26、对象的方法对目标系统的问题空间进行理解,分析和反映。通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构。OOD 是建立在分析产生的需求说明基础上,对计算机系统实现所需要的细节过程的设计,及对人机行为、任务管理及数据管理的设计等。,71,1.面向对象分析的概念模型,通过面向对象分析建立的系统模型是以概念为中心的,因此称为概念模型。这样的模型由一组相关的类组成。构造和评审面向对象分析概念模型的顺序和由五个层次组成,即类与对象、属性、服务、结构和主题。,5 Coad/Yourdon方法,72,73,基本过程:,Object model 由五个层次组成,相当于把五张透明胶片(transpar
27、encies)叠在一起,每一层显示更多的细节。,74,识别类和对象,面向对象分析的第一个层次主要是识别类和对象。类和对象是对与应用有关的概念的抽象。不仅是说明应用问题的重要手段,同时也是构成软件系统的基本元素。这一层工作是整个分析模型的基础。识别开始于搜索选定的问题陈述,标识可以表示问题领域概念的术语。对它们进行评估。,75,选择类和对象的原则:,对象类应当提供某些服务或处理多属性所有属性对于类中所有实例都应有意义对象类应表示问题领域的需求 排除不必要的类和不正确的类:冗余类模糊类不相干的类,-属性-操作,76,标识结构,面向对象分析的下一步工作是标识结构。典型的结构有两种:一般化-特殊化结构
28、(Gen-Spec结构)整体-部分结构(Whole-Part结构),77,一般化-特殊化结构,78,以特殊化的视点来看,一个 Gen-Spec 结构可以看作是“is a”或“is a kind of”结构。例如,a Truck Vehicle is a Vehicle a Truck Vehicle is a kind of Vehicle在 Gen-Spec 结构中,使用继承将较一般化的属性和服务放在一般化的类和对象中。,79,整体-部分结构,80,从整体的视点来看,一个 Whole-Part 结构可看作一个“has a”或“is a part of”结构。例如,Vehicle has a
29、Engine Engine is a part of Vehicle其中,Vehicle是整体对象,Engine是局部对象。,81,标识 Whole-Part 结构的方法和策略,应当寻找什么总体-部分(Assembly-Parts)关联,如飞机-发动机之间的关系。包容-内含(Container-Content)关联,如飞机-飞行员之间的关系。收集-成员(Collection-Members)关联,如机构-职员之间的关系。,82,标识属性,下一个层次称为属性层,对前面已识别的类和对象做进一步的说明。在这里,对象所保存的信息称为它的属性。类的属性所描述的是状态信息,每个实例的属性值表达了该实例的状
30、态值。,83,属性层,84,标识属性的方法和策略,每个对象至少需包含一个属性属性取值必需适合对象类的所有实例出现在Gen-Spec关系中的对象所继承的属性必须与Gen-Spec关系一致。子对象不能继承那些不是为该子对象定义的属性。所继承的属性必须在应用领域中有意义。所有系统的存储数据需求必须定义为属性,85,标识实例连接关系,86,标识完实例连接后调整对象,如果有多对多的实例连接,则可能需要增加一个新的“交互”对象。对于同一个类各个实例之间的实例连接,若有属性描述它,则应建立新的类或对象。如“婚姻”是人与人间的关系,除了对象“人”外,还需建立“婚姻”事件对象。如果两个类之间有两个或两个以上的实
31、例连接时,可能需要加入一个类或对象来区分这些实例连接的含义。,87,定义服务,对象收到消息后所能执行的操作称为它可提供的服务。对每个对象和结构的增加、修改、删除、选择等服务有时是隐含的,在图中不标出,但在存储类和对象有关信息的对象库中有定义。其它服务则必须显式地在图中画出。,88,服务层,89,定义服务的方法和策略,找出每一个对象的所有状态,在各种状态需要做的工作。利用状态迁移图,找出必要的操作。建立消息连接。描述服务:利用状态转换图、脚本和事件追踪图,描述服务的功能。,90,消息连接的标识,两个对象之间可能存在着由于通信需要而形成的关系,这称为消息连接。消息连接表示从一个对象发送消息到另一个
32、对象,由那个对象完成某些处理。它们在图中用箭头表示,方向从发消息的对象指向收消息的对象。,91,找出消息连接的方法及策略,对于每一个对象,执行:查询该对象需要哪些对象的服务,从该对象画一箭头到哪个对象;查询哪个对象需要该对象的服务,从那个对象画一箭头到该对象;循消息连接找到下一个对象,重复以上步骤。,92,识别主题,主题可以看成是高层的模块或子系统。对于面向对象分析模型,主题表示此模型的整体框架。可以是一 个层次结构。通过对主题的识别,可以让人们能够比较清晰地了解大而复杂的模型。,93,编辑管理的主题,94,2.Coad/Yourdon 的设计模型,设计模型被划分成了 4 个组成部分,这些组成
33、部分把实现技术隐藏起来,使之与系统的基本问题领域行为分离开来。从分析转到设计需要在分析模型的基础上加入实现方面的限制。设计模型类似于构造蓝图,设计模型全面地定义了如何用特定的实现技术建立起一个目标系统。,95,类与对象层,属性层,服务层,结构层,主题层,问题领域部分,人机交互部分,任务管理部分,数据管理部分,主题,服务,消息,属性,实例连接,类边界,实例边界,设计模型的体系结构,96,问题领域部分,问题领域部分的内容:问题领域部分包括与应用问题直接有关的所有类和对象。识别和定义这些类和对象的工作在OOA 中已经开始,在OOA阶段得到的有关应用的概念模型描述了我们要解决的问题。在OOD阶段,应当
34、继续OOA阶段的工作,对在OOA中得到的结果进行改进和增补。,97,问题领域部分的设计,改进应针对具体的设计考虑,包括对OOA模型中的某些类与对象、结构、属性、操作进行组合与分解。要考虑对时间与空间的折衷、内存管理、开发人员的变更、以及类的调整等。(之前一般开发不考虑)保持问题域组织结构的完整性与稳定性。无论何种修改都是建立在问题域基础上。稳定性是实现可重用的分析、设计及程序设计的关键因素。如何设计?下一页,98,(1)复用设计,直接复用:根据问题解决的需要,把从类库或其它来源得到的既存类增加到问题解决方案中去。删除可复用类中不需要的属性和操作。,99,通过继承复用:增加从既存类到应用类之间的
35、一般化-特殊化的关系。把应用类中因继承既存类而成为多余的属性和操作标出。,100,(2)把专门的问题领域类组合在一起,在设计时,从类库中引进一个根类,做为容器类,把所有与问题领域有关的类关联到一起,建立类的层次。把同一问题领域的一些类集合起来,存于类库中。,101,(3)加入一般化类以建立类间协议,有时,某些特殊类要求一组类似的服务。此时,应加入一个一般化的类,定义为所有这些特殊类共用的一组服务集合,这些服务都是虚函数。相当于一般化类为所有特殊类定义了一个协议,特殊类必须遵循该协议。在特殊类中定义其实现。,102,(4)调整继承支持层次,在OOA阶段建立的对象模型中可能包括有多继承关系,但实现
36、时使用的程序设计语言可能只有单继承,甚至没有继承机制,这样就需对分析的结果进行修改。多继承模式有两种:狭义的菱形:应避免出现属性和服务的命名冲突。广义的菱形:属性和服务的名称冲突较少,但需要用更多的类表示设计。,103,104,针对单继承语言的调整,上述两种模式都必须将多重继承结构转换成单继承结构。把特殊类的对象看做是一个一般类对象所扮演的角色,通过实例连接把多继承的层次结构转换为单继承的层次结构。把多继承的层次结构平铺,成为单继承的层次结构。在这种情况下,有些属性或操作在同层的特殊类中会重复出现。如图(b),105,106,针对无继承语言的调整,当使用无继承的程序设计语言时,必须把具有继承关
37、系的类层次结构平铺开来,成为一组零层次的类和对象。如:一般可利用命名惯例,把这些类或对象关联起来。,医生,医学教授,教授,107,(5)改进性能,提高执行效率和速度是系统设计的主要指标之一。有时,必须改变问题领域的结构以提高效率。影响性能的因素:数据传输时间:修正网络分布方案,改变网络拓扑结构,选择合适的软件体系结构,选用高速通信设备。数据存取时间:尽可能减少对文件、数据库等存储管理系统的访问。数据处理时间:选择计算复杂性级别低的算法。,108,(5)改进性能,调整对象分布,甲机乙机,甲机乙机,(a),(b)减少数据传送量,(c)缩短传送路径,109,如果类之间经常需要传送大量消息(高耦合),
38、可合并相关的类以减少消息传递引起的速度损失。增加属性以减少重复计算。细化对象的分类。,110,将复杂对象化为整体部分结构,111,6 Booch方法,Booch G.Object-Oriented Analysis and Design with Applications.1991Booch方法的对象模型要素:类、对象、类及对象之间的关系、封装、模块化、层次类型、并发。开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构。图形文档(6种图):基本图:类图、对象图、模块图、进程图补充图:状态转换图、交互图,6.Booch方法,112,类图:表示系统中的类与类之间
39、的相互关系。,6.Booch方法,113,6.Booch方法,114,对象图 对象图由对象和消息组成,对象由实线的多边形表示。下图描述了一个温室管理系统的对象图。,6.Booch方法,115,状态图状态图用于描述某个类的状态空间,及状态的改变和引起状态改变的事件,描述了系统中类的动态行为。,6.Booch方法,116,时序图时序图用来描述对象之间交互的时间特性,6.Booch方法,117,模块图 模块图表示程序构件(模块)及其构件之间的依赖关系。,6.Booch方法,118,进程图进程图描述了可同时执行的进程在各处理器上执行的情况。,6.Booch方法,119,Jacobson I.Objec
40、t-Oriented Software Engineering,A Use Case Driven Approach.1992面向对象软件工程(OOSE)是将面向对象的思想应用于软件工程中,OOSE中的基本概念:对象、类、属性、操作、关联(对象和类之间所有关系的总称)、消息。突出贡献:use case此前大多数OOA方法关注如何构造模型(如类图),对用户需求的分析和描述薄弱。OOSE建议的系统开发活动由三个过程构成:分析、构造和测试,7 面向对象软件工程方法,120,1、需求模型(RM)2、分析模型(AM)3、设计模型(DM)4、实现模型(IM)5、测试模型(TM),OOSE采用5类模型来建立
41、目标系统。包括:,7 OOSE方法,121,需求模型RM(requirements model)获取用户的需求,识别对象,主要的描述手段有用例图(use case)、问题域对象模型及用户界面。分析模型AM(analysis model)定义系统的基本结构。通过将RM中的对象,分别识别到AM中的实体对象、界面对象和控制对象三类对象中。每类对象都有自己的任务、目标并模拟系统的某个方面。设计模型DM(design model)AM只注重系统的逻辑构造,而DM需要考虑具体的运行环境,将在分析模型中的对象定义为模块。,7 OOSE方法,122,实现模型IM(implementation model)即用
42、面向对象的语言来实现。测试模型TM(testing model)测试的重要依据是RM和AM,测试的方法与技术与第七章软件测试所介绍的类似,而底层是对类(对象)的测试。TM实际上是一个测试报告。,7 OOSE方法,123,其中分析过程分为需求分析(requirements analysis)和健壮分析(robustness analysis)两个子过程,分析活动分别产生需求模型和分析模型。构造活动包括设计(design)和实现(implementation)两个子过程,分别产生设计模型和实现模型。测试过程包括单元测试(unit testing)、集成测试(integration testing)
43、和系统测试(system testing)三个过程,共同产生测试模型。,7 OOSE方法,用例(Use case)是OOSE中的重要概念,在开发各种模型时,用例贯穿了OOSE活动的核心,用例图描述了系统的需求及功能。,用例图,AM use case 模型通过分析来构造。DM use case 模型通过设计来具体化。IM 依据具体化的设计来实现 use case 模型。TM 用来测试具体化的 use case 模型。,7 OOSE方法,125,8 小结对于大型软件产品来说,面向对象范型明显优于结构化范型。使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件。从3个互不相同然而又密切相
44、关的角度建立起3种不同的模型,它们分别是描述系统静态结构的对象模型、描述系统控制结构的动态模型、以及描述系统计算结构的功能模型。其中,对象模型是最基本、最核心、最重要的。OMT:功能模型纯粹是结构化 方法的产物。,126,Coad/Yourdon 方法:概念和表示法简练,强调从分析、设计到实现采用完全一致的概念。过程清晰简单。G.Booch的 OOA&D方法:最早使用“Object-Oriented Design”,使用图形文档文档。不足:缺乏对开发过程的介绍。Jacobson的OOSE方法:1 用use case定义用户需求。2 交互图。不足:对分析和设计中的对象分别采用不同的表示符号,增加转换的麻烦;对关系的表示区分太少。,8 小结,