面向对象的需求分析x课件_第1页
面向对象的需求分析x课件_第2页
面向对象的需求分析x课件_第3页
面向对象的需求分析x课件_第4页
面向对象的需求分析x课件_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

1、第 6 章面向对象的需求分析第1页,共121页。 6.1 面向对象与面向过程的比较 6.2 面向对象的概念 6.3 面向对象的分析过程 6.4 UML概述 6.5 基于UML的需求分析 第6章 面向对象的需求分析 第2页,共121页。面向对象方法与技术研究的发展起源于20世纪60年代中期;出发点和基本原则是使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,这样更好的把客观世界的问题空间映射到软件的解空间仿真语言 simula 6720世纪80年代初期:smalltalk语言是面向对象技术发展的重要里程碑 6.1面向对象与面向过程的比较面向对象的发展结构化方法存在问题它是一种新兴

2、的程序设计方法,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。 现在面向对象方法已深入到计算机领域的几乎所有分支,远远超出了程序设计的语言和编程技术的范畴。 面向对象方法是对软件生命周期的各个阶段(包括分析、设计、编程、测试和维护),以及它所涉及的各个领域(如人机界面、数据库、软件复用、形式化方法、CASE工具等)已形成或正在形成面向对象的理论和技术体系OOA、OOD、OOP、OOSE、OOOS、OODBMS 第3页,共121页。需求分析通常的需求分析具有两方面的意义:1. 在认识事物方面:具有分析、认识问题域的方法、原则和策略,使开发人员对问题域的理解比不遵循软件工程方

3、法时更为全面、深刻和有效。2. 在描述事物方面:具有较完整的体系和文档规范,这比自然语言更为准确,更利于后期开发。结构化的软件工程在需求分析这两方面存在不足:1. 它对问题描述不是以问题域中固有的事物作为基本单位。2. 它是在全局范围内,以功能、数据或数据流为中心来进行分析。所以这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合,因而容易隐蔽一些对问题理解的偏差。 面向对象的发展结构化方法存在问题第4页,共121页。问题域计算机需求分析总体设计详细设计编程测试编程语言自然语言分析与设计鸿沟传统的软件工程方法传统的软件过程学 过程设计面向对象分析与结构化分析的根本区别1)

4、结构化分析的实体关系图,关注实体的属性和相互间的关系;而面向对象的分析,除此之外还有非常主要的一点,就是关注实体的行为。2)结构化分析的数据流图,将数据和加工处理分开;而面向对象的分析是将数据实体和他们的处理动作视为不可分割的整体来考虑的。3)结构化分析建造系统的元素是基于过程的功能,或者加工处理;而面向对象分析建造系统的基本元素是封装了操作的对象类。第5页,共121页。编程和测试1. 分析方法的缺陷很容易产生对问题域的错误理解;2. 分析与设计的鸿沟容易造成设计人员对分析结果的错误转换,导致在编程的过程中,程序员往往需要对分析员已经认识过的问题域重新进行认识,并可能产生与分析员不同的理解。软

5、件维护1. 对使用中发现的错误进行修改。由于结构化程序强调以功能为模块划分的标准,模块功能单一,导致修改时,会产生新的问题。2. 对因需求发生变化而进行修改。由于程序不能映射问题域以及各个阶段文档不能对应,每一步追溯或修改都存在许多理解障碍。 编程、测试和维护面向对象的发展结构化方法存在问题第6页,共121页。面向对象软件工程方法是面向对象方法在软件工程领域的全面运用。它包括 面向对象分析 面向对象设计 面向对象编程 面向对象测试 面向对象的软件维护问题域计算机OOAOODOOPOOT面向对象的编程语言自然语言面向对象的软件工程方法6.2 面向对象的概念面向对象方法的基本思想是从现实世界中客观

6、存在的事物出发构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。Coad和Yourdon给出定义:“面向对象=对象+类+继承+通信”。如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认为这个软件系统是面向对象的。第7页,共121页。领域分析的输入输出 领域知识源面向对象分析领域分析领域分析-创建可以广泛地用于整个应用领域范畴的可复用类(构件)航空银行电子设备多媒体视频领域分析 领域 分析 模型技术文件已有应用客户评定专家建议需求提取类复用标准模型语言领域分析活动:定义被调查的领域,相关的设计、规约、代码、政策、标准、规程等项对领域中提取的项,划分种类并提取模式,命名,并且分层

7、。收集领域中应用的代表性样本分析每个样本中的应用,标识对象、说明理由、定义适应性、估算复用率等开发对象分析模型,作为设计和构造类的基础第8页,共121页。OOA的职责:OOA针对问题域运用OO方法,建立一反映问题域的OOA模型,而不考虑与系统实现有关的因素(包括编程语言、图形用户界面、数据库等),从而使OOA独立于具体的实现。面向对象设计Object Oriented Design,OODOOD的职责:针对系统的一个具体实现运用OO方法。其中包括两方面工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务

8、管理等因素补充一些与实现有关的部分,这些部分与OOA采用相同的表示法和模型结构。第9页,共121页。面向对象编程(OOP)又称作面向对象实现(OOI),OOP工作就是用同一种面向对象编程语言把OOD模型中的每个成分,用面向对象程序设计语言实现。 面向对象编程:Object Oriented Program,OOP面向对象测试:Object Oriented Test,OOT面向对象测试(OOT):对于用OO技术开发的软件,在测试过程中,运用OO技术进行以对象概念为中心的软件测试。 在用OOP编写的程序中,对象的封装性,把对象的静态和动态特征组合在一起,使对象成为一个独立的程序单位,从而大大减少

9、了错误的影响范围。OOT以对象的类作为基本测试单位,查错范围:1. 类定义之内的属性和服务。2. 类的继承关系所产生的不同方法的测试。对基类测试完成之后,派生类的测试重点只是那些新定义的属性和服务。 第10页,共121页。面向对象软件工程方法为改进软件维护提供了有效的途径。1. 程序与问题域一致,各阶段表示一致,从而降低了理解的难度。2. 无论是程序错误而逆向追溯到问题域,还是需求发生变化而从问题域正向追踪到程序,道路都是比较平坦面向对象维护将系统中最容易变化的因素(功能)作为对象的服务封装在对象内部,使得一个对象的修改对其它影响很小。 面向对象维护Object Oriented Mainte

10、nance第11页,共121页。 面向对象基本概念对象(Object) 客观世界是由各种对象组成的,任何事物都是复杂的对象,可以由比较简单的对象以某种方式组合而成。这样,可以把整个世界看做一个最复杂的对象。因此,对象是指一个实体,它能够保存一个状态(或称信息或数据),并且它能提供一系列操作(或称行为),这些操作或能检查或能影响对象的状态。对象具有封装性(encapsulation) 对象具有自治性(autonomy) 对象具有通信性。 对象具有被动性。 对象具有暂存性。 对象可具有持久性(persistence) object chaircost $50texture woodlocation

11、 sanctumcolor blackobjectMove()第12页,共121页。 类(Class) 把所有对象都划分成各种对象类(简称为类),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,用于描述对象的当前状态。方法用于描述对象的动态特征,用于描述对象状态的改变过程。object chaircost $50texture woodlocation scantumcolor blackclassclass furniturecosttexturelocationcolorobjectattribute abstractMove()Move()第13页,共121页。OO方法

12、中的消息 消息就是向对象发出的服务请求,它应含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。信息的接受者是提供服务的对象。在设计时,它对外提供的每个服务都应该规定消息的格式,这种规定称做消息协议。 消息(Message)发送者对象属性:操作:接收者对象属性:操作:message: sender,return value(s)第14页,共121页。 面向对象基本特征封装性(Encapsulation) 对象是进行处理的主体,必须发消息请求执行它的某个操作,处理它的私有数据,同时不能从外界直接对它的私有数据进行操作。也就是说,一切局部于该对象的私有信息,都被封装在该对象类的定义中,

13、在对象的外部是不可见的,即不能直接使用,这就是“封装性”。 数据和过程的内部实现细节对外界隐藏(信息隐藏),这将减少当变化发生时副作用的传播。 数据结构和操纵它们的操作被合并在单个命名实体(类)中,这将便于构建复用。 被封装对象间的接口被简化。一个发送消息的对象不需要关心接收对象的内部数据结构。因此,接口被简化,系统耦合度被降低。第15页,共121页。按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种表示方法称为继承。 面向对象基本特征继承性(Inheritance)class hu

14、manname, ID, sexTalking()class athleteclub, salarysport()class studentlessons, SIDLearning()object:Hao Haidongobject:Wang Ning第16页,共121页。 面向对象基本特征多态性(Polymorphism)class vehicleappearancemoving()class carappearancemoving()class planeappearancemoving()对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为

15、。多态性的表示有静态类型和动态类型。动态类型(虚函数)可以在程序执行期间在实例之间进行变化。静态类型(函数重载)是在程序上下文中由实体说明决定的。class shipappearancemoving()虚基类(纯)虚函数第17页,共121页。类/对象之间的关系一般与特殊一般特殊:是由一组具有一般特殊关系的类所组成的结构。它是一个以类为结点,以继承关系为边的连通有向图。如果由一些存在单继承关系的类形成的结构又称作层次结构或树型结构,如果由一些存在多继承关系的类形成的结构又称作网状结构。 学生中学生大学生初中生高中生树型结构客轮轮船客运工具交通工具网状结构第18页,共121页。一个对象是另一个(组

16、)对象的组成部或分。整体部分结构由一组彼此间存在着这种组成关系的对象构成。整体部分结构又称做组装结构(Composition Structure)。 类/对象之间的关系部分与整体汽车车身轮胎车外壳底盘组成结构类/对象之间的关系实例连接实例连接反映对象与对象之间的静态联系。这种双边关系在实现中可以通过对象的属性表达出来。所以这种关系称作实例连接。 教师教与学学生第19页,共121页。描述对象之间的动态联系是用消息连接。若一个对象在执行自己的服务时需要请求另一个对象为它完成某个服务。那么这两个对象之间存在着消息连接。消息连接是有向的,从消息的发送者指向消息的接受者。 类/对象之间的关系消息连接af

17、un1()fun2()bfun3()fun4()dfun5()fun6()cfun7()fun8() 消息第20页,共121页。面向过程开发模式产生过程的抽象。这些抽象的基础是把软件视为处理流,并定义成由一系列步骤构成的算法。每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静态结构的体系结构。面向过程开发模型面向过程开发模型特点过程性开发模式侧重建立构成问题解决的处理流。数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程,提供过程所要求操作的信息。系统的状态是一组全局变量,这组全局变量保存状态的值,把它们从一

18、个过程传送到另一个过程。第21页,共121页。在面向过程开发模式中优先考虑的是过程抽象,在面向对象开发模式中优先考虑的是实体(问题论域的对象)。在面向对象开发模式中,把标识和模型化问题论域中的主要实体做为系统开发的起点,主要考虑对象的行为而不是必须执行的一系列动作。面向对象开发模型面向对象开发模型特点面向对象系统中的对象是数据抽象与过程抽象的综合。系统的状态保存在各个数据抽象的所定义的数据存储中。控制流包含在各个数据抽象中的操作内。在面向对象体系结构:消息从一个对象传送到另一个对象;算法被分布到各种实体中。第22页,共121页。举 例:数据流图第23页,共121页。银行存取款子系统客户信息验证

19、密码验证模块帐户新增模块存取记帐模块信息打印模块记录日志模块举 例:系统层次结构图第24页,共121页。消息客户姓名身份证号电话存款取款设置密码挂失转帐银行职员姓名员工号权限检验客户信息收款付款收凭证付凭证录入业务信息系统姓名身份证号电话校验用户信息验证密码更改帐户信息增加帐户注销帐户记录日志打印收据消息消息消息举 例:类对象关系图第25页,共121页。面向对象项目估算和进度安排 由于OOA的方法不同于传统方法,因此,有必要对明显设计用于OO软件的方法补充传统软件成本估算: 使用工作量分解、FP分析以及任何其它可应用于传统应用的方法来进行估算。 使用OOA开发场景脚本(use-case)并确定

20、计数。 使用OOA确定关键类的数量。 划分应用的界面类型并确定支持类的倍数:将关键类的数量和上面的倍数相乘可得到支持类数量的估算。 将整个类的数量和每个类的平均工作单元相乘,一般每个类1015个人日。 通过乘上每个场景脚本的平均工作单元,对基于类的估算进行交叉检查。第26页,共121页。面向对象分析方法Rambaugh方法 也称为对象建模技术(Object Modeling Technique,OMT),用于分析、系统设计和对象级设计。分析活动创建三个模型:对象模型、动态模型和功能模型。 Coad和Yourdon方法 被认为是最容易学习的OOA方法。建模符号简单,且开发分析模型的指导原则是直接

21、的。该方法OOA过程如下: 标识对象 定义一般/特殊结构 定义整体/部分结构 标识主题 定义属性 定义服务第27页,共121页。面向对象模型的组成_ _对象模型、动态模型、功能模型 面向对象分析的关键是识别出问题领域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。在面向对象观点建立起的模型中,对象模型是最基本、最重要、最核心的模型。面向对象分析过程从分析用户需求陈述的文件开始。面向对象得到的模型包含对象的三个要素:静态结构(对象模型)交互次序(动态模型)数据变换(功能模型)第28页,共121页。对象模型的图形符号“类-&-对象”是一个专用术语,它的含义是“一个

22、类及属于该类的对象”。类名属性服务“类-&-对象”符号类名属性服务“类”符号对象模型对象模型的命名1. 使用标准术语2. 使用具有确切含义的名词3. 必要时用名词短语作名字 对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。第29页,共121页。一般化类具体类2具体类1一般特殊关系整体部分2部分1整体部分关系关联关系经理项目项目名预算优先级1主持对象模型表示模型第30页,共121页。对象模型的层次大型系统的对象模型是

23、由下述四个层次组成:主题层、对象层、特征层、关系层。主题层:所谓主题是把一些具有较强联系的类组织在一起而得的类集合。(当系统中类较多时,对整体模型的理解是很困难的。运用力度控制原则,把它们组合为数量较少的几个主题,就使得模型的开发者和使用者都能在不同的粒度层次上表示或理解系统模型。当系统规模不大时,可以不用主题层。)第31页,共121页。对象层:给出系统中所有反映问题域与系统责任的对象。 (用类符号表达属于每一类的对象。类作为对象的抽 象描述,是构成系统的基本单位。)特征层:给出每一类(及其所代表的对象)的内部特征。即 给出每个类的属性与服务。(这个层次描述了对象 的内部构成状况,以分析阶段所

24、能达到的程度为限 给出对象的内部细节)关系层:给出各个类(及其所代表的对象)彼此之间的关系。 (包括继承关系,用一般特殊结构表示;组装关系,用整体部分结构表示;反映于属性的静态依赖关系,用实例连接表示;反映于服务的动态依赖关系,用消息连接表示。 这个层次描述了对象外部的联系状况。 对象层特征层关系层第32页,共121页。动态模型动态模型规定了对象模型中的对象的合法变化序列。事件:在某个特定时刻所发生的事情称为事件。它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。实际上事件就是引起对象状态转换的控制信息。状态:对象在某个特定阶段所处的情形就是状态。它是对象行为属性值的一种抽象。

25、行为:对象达到某种状态时所作的一系列处理操作。通常用状态图来描绘对象的状态、出发状态转换事件、以及对象的行为。 状态1 do:行为1状态2 do:行为2初始事件事件1条件1状态图中使用的符号第33页,共121页。要想对一个系统了解得比较清楚,还应当考察在任何时刻对象及其关系的改变。系统的这些涉及时序和改变状况用动态模型来描述。动态模型着重于系统的控制逻辑。功能模型 功能模型表示的系统的“功能”性质,它指明了系统应该“做什么”,因此更直观的反映了用户对系统的需求。 通常,功能模型由一组数据流图组成。在面向对方法学中,数据流图并没有增加新的信息。 功能模型指明了系统应该“做什么”,动态模型明确规定

26、了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。第34页,共121页。 分析工作主要包括对问题空间中对象的确定和对对象和对象之间的关联的确定,对对象的确定包括对对象属性和行为的确定,对连接的确定包括对对象结构关系、实例连接关系和消息连接关系的确定,具体工作内容和步骤如图所示。 面向对象分析步骤第35页,共121页。在概念上可以认为,面向对象分析大体上按照下列顺序进行:寻找问题中事物寻找对象定义属性与服务(类或者对象内部的事情)识别问题中结构识别主题建立动态模型建立功能模型。第36页,共121页。1)发现对象,定义它们的类。2)识别对象的内部特征。(定义属性和服

27、务)3)识别对象的外部关系。 A 建立一般特殊结构。 B 建立整体部分结构。 C 建立实例连接。 D 建立消息连接。 以上活动总目标是建立面向对象分析基本模型类图面向对象分析过程的主要活动第37页,共121页。面向对象分析过程的主要活动4) 划分主题,建立主题图。5) 定义use case,建立交互图。 A 发现活动者。 B 定义use case。 C 建立交互图。6) 建立详细说明 这是对模型的详细定义与解释,可以作为一个独立的活动,更自然的作法是分散在其它活动中。7) 原型开发 这个活动应该在面向对象分析过程中反复进行。第38页,共121页。对象的发现与标识发现对象的根本出发点是问题域和系

28、统任务。分析员的主要工作就是:通过不断地研究问题域,建立一个能满足用户需求的系统模型。 找出候选的类&对象。通常包括: 外部实体:它们生产或消费被基于计算机的系统使用的信息。例如系统、设备、人员等。 事物:它们时问题的细细域的一部分。例如报告、显示、文字、信号 发生的事情或事件:它们出现咱系统运行的语境内。 角色:指由与系统交互的人员所扮演的角色。例如管理者、工程师、销售人员等。 组织单位:例如分支、小组、小队 结构:它们定义一个对象类,或者在极端情况下定义对象的相关关系。例如:传感器、四轮交通工具 其它潜在对象第39页,共121页。 对象的属性只能由这个对象的服务存取。其内部服务只供对象内部

29、的其它服务使用,不对外提供;外部服务对外提供一个消息接口,通过这个接口接收对象外部的消息并为之提供服务。 对象的某些属性可以根据常识来定义。某些属性可以根据系统责任来定义某些属性是为了在对象服务中实现 某些功能,而需要增设辅助属性如果有些问题与实现条件有关,就要 考虑这些问题可以推迟到设计阶段 类名属性1.属性n服务1.服务n定义属性第40页,共121页。 对象的一系列行为都可以说是对象的服务: 1 .系统行为 系统分析中,与对象有关的某些行为实际上不是对象自身的行为,而是系统把对象看作一个整体来处理时施加于对象的行为。例如“教师”对象,自身并没有删除、建立、更新等行为,而是系统给对象增加的系

30、统行为。 2.对象的基本服务 根据面向对象封装原则,对象外部的行为不能对对象内部的属性作任何读、写直接操作。而只能由对象内部的行为(服务)向外提供相应的服务。于是每个对象都要设立许多读取或设置属性的值的服务。这类服务的算法都是简单的。 3.对象的特殊服务 面向对象的重点就是发现和描述这类服务,此类服务描述了对象所映射事物的固有行为,其算法是进行某些计算或监控操作。 定义行为第41页,共121页。1. 按领域知识、常识分类。2. 分析类的属性和服务。有些类之间的一般特殊结构是由于他们的属性与服务的特点产生的。所以要发现系统中类的结构关系:首先分析类的属性服务是否适合这个类的全部对象。如果有些类属

31、性服务仅适合该类的一部分对象,那么就要建立一般特殊结构。 多边形 边数顶点数据绘图正多边形 *顶点数据*绘图轴向矩形 边数*顶点数据*绘图发现一般特殊结构第42页,共121页。从特殊类发现一般类公司职员股东姓名身分证号码股份职员工资股东姓名身分证号码股份职员姓名身分证号码工资?第43页,共121页。收款机ABC现钞收款机DEF现钞收款机ABCDEFXYZZXY为支持复用建立结构收款机类成为可供本领域其它系统复用的领域构件第44页,共121页。大学生研究生研究方向指导教师学生姓名学号班级研究生研究方向指导教师学生姓名学号班级取消没有特殊属性的特殊类第45页,共121页。通过增加属性简化一般-特殊

32、结构人员男人女人中国人美国人日本人人员性别国籍第46页,共121页。两种结构的变通冷藏车汽车制冷设备冷藏车汽车制冷设备仅用一般-特殊结构两种结构同 用冷藏车汽车制冷设备仅用整体-部分结构第47页,共121页。1 .组织机构(学校)2.空间上的包容关系(教室)3.物理上整体部分关系(电梯)4.集合与成员关系5.对象与个别抽象关系6.抽象事物的整体与部分(学科和分支学科) 0.11教室桌椅显示板整体部分关系33.880.1发现整体部分结构第48页,共121页。用整体-部分结构实现复用车床机床刨床起重机电动机钻床送料车第49页,共121页。实例连接 实例连接是用于表达对象之间的静态关系。这种静态关系

33、是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。1. 复杂的实例连接概念 对象之间的关系有时通过一个由对象实例构成的二元组不能充分表达,可以允许实。例连接带有一组属性,这些属性通过关联(association)来描述。 2. 用对象表示实例连接带有复杂信息的两类对象之间的联系是否说明它们之间存在着某种事物。10,m教师学生指导论文论文题目答辩时间成绩10,m教师学生指导毕业论文论文题目答辩时间成绩11写作第50页,共121页。建立实例连接的方法1对象之间的静态联系从问题域和系统责任考虑,分析对象之间是否存在着某种静态联系。主要是系统责任考虑这种关系是否提供了某些与系统责任有关的信

34、息。2 实例连接的属性和服务进一步分析实例连接是否应该带有某些属性和操作。分析这些属性和对象可以用什么对象来表示,增设这个对象类,并分别建立它与原有的两个类之间的简单实例连接。 1m类1类2n1nm类1类2连接名称关联名连接属性连接操作可缺省类3连接属性连接操作实例连接转换图示第51页,共121页。 一般面向对象过程模型 定义侯选类在库中 查找类 若存在则提取类若不存在则构造类新构造的 类入库构造系统第n次迭代 OOA OOD OOP OOT 构件复用第52页,共121页。建立对象模型举例 识别对象与类建立数据字典识别对象的关联确定对象和链的属性分析继承关系,改进对象模型核实可预期查询的访问路

35、径迭代并反复修改模型标识主题 (将类分组成模块)识别类与对象 (1)发现对象主要策略: 考虑问题域人员组织物品设备事件表格结构 考虑系统边界人员设备外系统 考虑系统责任第53页,共121页。系统必须观测、记忆的与时间有关的 事件可作为候选的类及对象; 如:购买日期、 打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象; 如:收款员、客户等这些人所属的组织单位,可作为候选的类及对象; 如:购买、商品等系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象; 如:事务、远程事务等。 其中属性是操作过程名,操作特权及操作 步骤的描述;系统需

36、了解掌握的物理位置、办公 地点等可作为候选的类及对象; 如:收款机、帐册等(2)审查和筛选 舍弃无用的类 对象的精简只有一个属性的对象只有一个服务的对象 推迟到OOD考虑对象,第54页,共121页。帐册上级系统接口供货员销售事件商品特价商品计量商品收款机商品一览表超市销售管理系 统(对象层)3)识别主动对象例:超市销售管理系统(对象层)第55页,共121页。定义属性、定义服务:对象的状态与状态转换图例:栈的状态/服务对照表步骤2: 定义属性与服务空半满满创建压入(未满)弹出(未空) 压入 (报错)弹出(报错)弹出(已空)压入弹出压入(已满)例:栈状态转换图第56页,共121页。定义服务 对象行

37、为分类 发现服务的策略 审查与调整 识别对象的主动行为 服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图)定义属性 例:超市销售管理系统(特征层)第57页,共121页。帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班上级系统接口帐目目册消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新收款机本班收款员开始时间结束时间登录 售货 结帐商品一览表商品目录检索种类增删超市销售管理系 统(特征层)第58页

38、,共121页。 建立数据字典 为所有模型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作类名 父类 提供的服务 需要的服务帐册 收款机 商品 供货员 对象字典举例第59页,共121页。步骤3:定义结构域连接初步确定关联 对应于描述性动词或动词短语 需求陈述中隐含 根据问题域知识得出 筛选 完善分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接筛选:删除下列关联已删去的类间的关联无关或实现关联瞬时事件三元关联派生关联第60页,共121页。中央计算机总行通信银行代码ATM拥有分

39、行计算机出纳工作站远程业务现金卡分行帐户储户出纳员出纳业务通信授权存取拥有拥有持有组成拥有拥有雇佣进入被进入修改修改进入ATM系统的初始对象图第61页,共121页。步骤4:定义服务及消息连接顺序系统中的消息传递 分析和认识对象之间在行为上的往来关系。主动对象Aa被动对象Bb被动对象Cc被动对象Dd1d2运行开始运行结束服务执行消息发送控制点返回示意第62页,共121页。 并发系统中 的消息传递主动对象A主动对象B被动对象D任务Task1 线程Ta控制线程之间的消息连接控制点返回示意被动对象C被动对象E控制线程内部的消息连接任务Task2 线程Tb第63页,共121页。多个控制线程之间消息与顺序

40、系统中消息的不同之处(1)并发执行的控制线程之间传送的消息的不同用途:向接收者发出访问请求向接收者提交数据向接收者发布通知或事件信息向接收者传递同步控制信号(2)消息的同步与异步(3)接收者对消息的不同响应方式(4)发送者对消息处理结果的不同期待 方式(5)消息的接收者是否唯一定向消息广播消息第64页,共121页。OOA对消息的表示-消息连接 消息连接是OOA(或OOD)模型中对对象之间行为依赖关系的表示 识别和表示的主要问题:对象之间是否存在消息?消息是同一线程内部的还是不同线程之间每一种消息是从发送者哪个服务发出的?由接收者哪个服务响应处理的?消息是同步还是异步?发送者是否等待消息的处理结

41、果?第65页,共121页。如何建立消息连接 (1)建立控制线程内部的消息连接 基本策略:“服务模拟” 、 “执行路线追踪” 具体做法:人为地模拟当前服务的执行,通过考虑需要请求其它对象的服务来发现新消息。分析该消息发送者与接收者在执行时是否属于同一控制线程(2)建立控制线程之间的消息连接对每个控制线程考虑:它在执行时是否需要请求其它控制线程中的对象为它提供服务?由哪个对象发出?由哪个对象中的服务处理?它在执行时是否要向其它控制线程中的对象提供或索取数据?它在执行时是否将产生对其它控制线程的执行有影响的事件?各个控制线程的并发执行是否要传递同步控制信号一个控制线程在何种条件下中止执行?中止后在何

42、种条件下由其它控制线程用何法唤醒?(3)对象分布问题及对消息的影响每台处理机上分布的一组对象中至少应有一个主动对象;同一台处理机上的对象之间的消息通信既可能是一个控制线程内部的,也可能是不同控制线程之间的。第66页,共121页。帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班上级系统接口帐目目册消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m(关系层, 完整的类图)收款机本班

43、收款员开始时间结束时间登录 售货 结帐第67页,共121页。步骤4:标识主题(主体) Coad/Yourdon方法中主题的概念: 主题是把一组具有较强联系的类组织在一起而得到的类的集合。 主题概念及其用途主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;主题一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;主题有助于指导系统设计者或用户等理解一个大的系统模型, 有助于组织一个大项目的工作。 主题概念的特点是由一组类构成的集合一个主题内部的对象类应具有某种意义上的内在联系描述系统中相对独立的组成部分(如一个子系统)描述系统中某一方面

44、的事物(如人员、设备)解决系统中某一方面的问题(如输入输出)主题的划分有一定的灵活性和随意性第68页,共121页。三种表示方式:压缩方式 半展开方式 全展开方式编号 主题名压缩方式编号 主题名半展开方式:类名 类名 类名主题名主题名下层主题主题的表示法第69页,共121页。把每个结构作为一个主题; (选取结构中最上层的类作为一主题)通过实例连接互相联系的类可划分到一个主题;把不属于任何结构,也没有实例连接的类作为一个主题。如何划分主题如何精练主题从问题域和接口复杂性两方面入手:使用问题域精练主题,即用整体/部分结构对问题域进行划分,而不是按功能分解方法划分.按高内聚低偶合原则,通过使主题间依赖

45、性和交互性最小原则保留能反映子问题域的主题.主题数目7个左右,则进一步精练主题.第70页,共121页。何时引入主题小系统: 不需引入主题;中等系统:先标识类及对象, 然后引入主题;大系统: 先标识主题,对问题域进行 划分,分给不同的任务组;主题层次的控制中小型系统可只设一层主题,最多不超过两层;大型系统可只设两层主题,最多不超过三层。第71页,共121页。帐册前班节余销售事件表收入累计上交款本班节余接班计帐报帐交班上级系统接口帐目目册消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结

46、束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m(关系层, 完整的类图)收款机本班收款员开始时间结束时间登录 售货 结帐111133332222第72页,共121页。 为什么有必要统一建模语言面对众多的建模语言,用户很难区别不同语言之间的差别。在众多的建模语言中,实际上各有千秋,需要取长补短,日臻完善。虽然不同的建模语言大多相同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。6.3 UML概述第73页,共121页。 UML的设计目标UML是由 Booch,Rumbaugh 和 Jacobson 发起,在 Booch方法、OMT方法和OOS

47、E方法的基础上,集众家之长,几经修改而成。UML的设计目标是:运用面向对象概念来构造系统模型(不仅是针对软件)。建立起从概念模型直至可执行体之间明显的对应关系。着眼于那些有重大影响的问题。创建一种对人和机器都适用的建模语言。第74页,共121页。 UML的主要特点UML统一了Booch,OMT和OOSE等方法中的基本概念:用例图从OOSE来;类图从OMT和Booch等方法来;实现图(构件图和配置图)从Booch的模块图和过程图来。UML吸取了OO技术领域各流派的长处:状态图从 Harel 而来;活动图从工作流图而来;合作图从Booch的对象图和Fusion的对象交互作用图等而来;等等。在演变过

48、程中UML提出了一些新的概念。第75页,共121页。 UML的发展历程1994.10,Booch 和 Rumbaugh 将 Booch93和 OMT-2 统一,1995.10.发布 UM0.8。1995年秋,经过 Booch 等三人的努力,1996.6 和1996.10发布UML0.9和UML0.91。1996年成立UML成员协会,有700多公司支持UML,占领OO市场的 85%。1997.1发布UML1.0,1997.9发布UML1.1。1997.11 OMG采纳 UML1.1作为OO技 术的标准建模语言。此后,UML的维护工作由Cris Kobryn领导的OMG 版本修改小组RTF ( R

49、evision Task Force)负责.1998.6: UML V. 1.1 (编辑修改版).1999.6: UML V. 1.3 (技术终订版).2001.: UML V. 2.0.第76页,共121页。 UML是一种建模语言建模方法 = 建模语言 + 建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。建模能力:建模方法 + 领域知识 + 实践第77页,共121页。 UML的建模技术 构造模型的目的 建模技术

50、要点 系统的多态性构造模型的目的模型是对事物的抽象。人们常常在正式建造实物之前,先建立模型,以便更透彻地了解它的本质,抓住问题的要害。(1)在着手解决一个复杂问题之前,对解决方案进行检测。(2)用于同客户和其他相关人员进行交流(3) 加强视觉效果。(4) 对复杂问题进行适度简化第78页,共121页。 建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征,将与问题无关的性质略去。不必追求绝对的真实和完全,只需从期望的目的角度看其是否充分。应当刻画问题的关键方面,略去相对次要的因素。建模语言应支持人的由模糊到清晰、由粗到细逐渐完善的认识过程。应采用可视化图形建模语言。第79页,共121页。

51、 系统的多态性一个系统应具有多方面的特点:在功能和性能方面:功能正确,性能良好(效率要高)。在非功能方面:鲁棒性、可扩充性、可重用性、兼容性、可移值性、可验证性、完整性以及易使用性等方面要好。一个系统要从多个视角去描述。一个视图可能包含多个模型图,每张模型图都应当简单明了,易于交流。UML:重点是针对系统的“功能性”第80页,共121页。 UML模型图 用例图 (use_case)描述系统实现的功能 类、对象图(class_object)描述系统的静态结构 静态建模机制图 构件图(component)描述系统在某时刻的静态结构 配置图 (deployment)描述系统运行环境的配置情况 包图(

52、package)包或类组成 状态图(statechart)描述某个用例的工作流 活动图(activity)描述某个类的动态行为 动态建模机制图 顺序图(sequence)描述系统某些元素在时间上的交互 合作图(collaboration)描述系统某些元素之间的协作关系第81页,共121页。UML静态建模机制 用例图 (use_case):从用户角度描述系统的行为,并指出各功能的操作者显示使用案例与角色之间的交互,从用户的角度对系统的要求。 使用案例: 表示功能 角色: 表示系统功能的直接使用者。可换成 关系说明:use使用关系 include包含关系 extend扩展关系 关系连线:Use C

53、ase 框图使用场景图UML模型符号(1)第82页,共121页。 用例图示例(ATM系统) 数据查询柜员更新帐目账目管理系统数据更新查询系统管理员提取现金存款领取ATM卡开户查询余额转帐储户第83页,共121页。 类图 (class):用于定义系统中的类,包括描述类之间的联系(如关联、依 赖、聚合等)以及类的内部结构,即类的属性和操作。 对象图:显示类的对象实例,一个对象图是类图的一个实例。类图展示类使用0.1 1.*计算机名字:String内存:Integer作者名字:String年龄:Integer小影:作者名字 =“王小影”年龄 = 32小影的家用PC:计算机名字 = “Dell 486

54、”内存 = 64小影的工作PC: 计算机名字 = “Compaq X”内存 = 32对象图展示类的实例使用使用第84页,共121页。用户服务 业务服务数据服务订单系统包图 包图 (package):包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。第85页,共121页。 顺序图的基本要素顺序图描述对象之间的动态交互关系,着重体现对象间消息传递的时间顺序。顺序图的基本要素:对象:对象、对象的生命线、激活的对象和对象的删除。消息:简单消息、同步消息、异步消息、返回消息。条件、注释体和注释连接。 顺序图:用以显示对象之间在时间顺序方面的动态合作关系。因此,如果强调时间

55、和顺序,应当使用顺序图。第86页,共121页。 顺序图的可视化图符激活的 对象带有生命线的对象Object:Class分支 生命线删除标志简单消息用于表示对象正执行某一动作,在对象的生命线之间发送消息的同时即激活对象。用于表示顺序图中参与交互的对象,每个对象的下方都带有生命线,用于表示该对象在某段时间内是存在的。生命线可以劈分成多条生命线,用于表示条件,接收分支消息。标于生命线或激活上。表示已删除该对象或活动的执行。表示简单的控制流。用于描述控制如何在对象间进行传递,不考虑通信的细节。名 称描 述可视化图符第87页,共121页。注释连接注释体返回消息异步消息同步消息名 称可视化图符注释连接将注

56、释体与要描述的实体相连。说明该注释体是对该实体所进行的描述。用于对UML实体进行文字描述。用于表示从同步消息激活的动作返回到调用者的消息。表示异步控制流。当调用者发出消息后不要等待消息的返回即可继续执行自己的操作。异步消息主要用于描述实时系统中的并发行为。表示嵌套的控制流。操作的调用是一种典型的同步消息。调用者发出消息后必须等待消息的返回;当处理消息的操作执行完毕,调用者才可继续执行自己的操作。描 述第88页,共121页。顺序图画法的通用准则尽力保持消息的顺序从左到右排列。用和你的用例图一致的名称命名角色。用和你的类图一致的名称命名类。一个角色的名称可以和类的名称相同。包含一个逻辑的叙述性描述

57、。在图的最左边放置初始的角色。在图的最左边放置人和组织角色。在图的最右边放置系统角色。 只在合适的时候才建模对象的Destruction。 第89页,共121页。: 计算机: 打印服务程序: 打印机: 打印队列打印机空闲打印(文件)打印机忙保存(文件)打印(文件)打印机场景顺序图第90页,共121页。 合作图:着重描述对象间的通信方面的动态合作关系。因此,如果强调通信关系,则可以选择合作图。打印机忙1.2保存(文件): 计算机: 打印队列1:打印(文件): 打印服务程序: 打印机打印机空闲1.1打印(文件) 一台打印机服务器的合作图第91页,共121页。状态图:描述一类对象的所有可能的状态以及

58、事件发生时状态的转移条件。即:研究类、角色、子系统、或组件的复杂行为。上升(楼层)在第一层上升(楼层)向第一层下降下降状态空闲状态上升状态到达(楼层)到达(楼层)下降(楼层)超时 一部电梯的状态图画状态图的通用准则当行为的改变和状态有关时才创建状态图。把初始状态放置在左上角。把最终状态放置在右下角。第92页,共121页。活动图:描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。 一台打印机服务器的活动图创建附加文件显示磁盘已满的信息显示正在打印的信息磁盘已满尚有磁盘空间打印机.打印(文件)删除显示信息的对话框第93页,共121页。帐务凭证处理记帐凭证汇总

59、报表 构件图 (component):描述部件的物理结构以及各部件之间的依赖关系。第94页,共121页。配置图:定义系统中(特别是在分布式及网络环境中)软硬件的物理构架。 描述系统物理构架的配置图DecNet协议客户A:个人电脑PC客户B:个人电脑PCTCP/IP协议TCP/IP协议服务器:02数据库服务器: VAX第95页,共121页。基于UML的软件开发过程6.4 基于UML的需求分析1)分析使用场景,画 Use Case2)标识对象类 3)画Class对象类图4)组织类结构(继承、聚合关系)5)定义主题(子系统)6)画Sequence顺序图(轨迹图)7)画State Transition

60、状态图8)画Collaboration协作图面向对象的分析方法和步骤确定系统结构确定系统行为系统结构:体现在实体之间的关系上系统行为:体现在作用于实体属性的操作上第96页,共121页。当初步的业务需求描述已经形成的前提下,基于UML的需求分析大致可分为如下步骤:(1)利用用例及用例图表示需求。(2)利用包图及类图表示目标软件系统的总体框架结构。上述两个步骤并没有时序关系,它们可以并行展开。领域专家分析师业务需求描述用例用例图类图顶层架构领域概念模型场景需求分析过程第97页,共121页。 用例的一些基本特点用例描述了用户提出的一些可见需求;用例可大可小例:10人年的项目,20-100个用例用例对

温馨提示

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

评论

0/150

提交评论