面向对象分析.ppt
《面向对象分析.ppt》由会员分享,可在线阅读,更多相关《面向对象分析.ppt(101页珍藏版)》请在三一办公上搜索。
1、第9章 面向对象分析,9.1 面向对象分析过程 9.2 建立对象模型 9.3 建立动态模型 9.4 建立功能模型 9.5 定义服务,9.1 面向对象分析过程,1.分析过程概述 分析过程就是提取系统的需求的过程,是指为了满足用户的需求,系统必须“做什么”,而不是“怎么做”(系统如何实现)。系统分析通常是从一个需求文档(陈述)和用户一系列的讨论开始的。一般来说,由用户、领域专家、系统的开发者以及其他有关人员参加制定需求文档。需求文档应给出一个完整的、一致的和灵活的描述,表明系统需求的一切,而且应是可管理的;需求文档应包括功能操作和操作特征,如使用的容易性、可靠性、可维护性等性能,还应包括软件必须处
2、理的接口、适应环境以及其他设计上的约束。,首先,系统分析员要对需求文档进行分析。需求文档通常是不完整、不准确的,也可能还是非正式的。通过分析可以发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确。在分析需求的过程中,系统分析员不仅应该反复、多次地与用户讨论、交流信息,还应该调研、观察、了解现有的类似系统。快速地建立一个原型系统,通过在计算机上运行原型系统,使得分析员和用户尽快交流和相互理解,从而能更正确地、更完整地提取和确定用户的需求。,然后,是需求建模。系统分析员根据提取的用户需求,深入理解用户需求,识别出问题域内的对象,并分析它们
3、相互之间的关系,抽象出目标系统应该完成的需求任务,并用OOA模型准确地表示出来,即用面向对象观点建立对象模型、动态模型和功能模型。OOA模型是面向对象设计(OOD)的基础,它应该准确地、简洁地表示问题。通过建立模型,可避免理解上的片面性,提高目标系统的正确性、可靠性。在此基础上,编写出面向对象的需求规格说明。,最后,是需求评审。通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明。需求分析是复杂而又艰辛的过程。系统分析人员应该多和用户交流,认真和领域专家探讨。必须在领域专家的指导和密切配合下进行,才能有效地完成任务。,2.实例需求文档 需求文档也叫需求陈述或问
4、题陈述。陈述需求是开发任何一个系统的首要任务。主要陈述用户的需求,即该系统应该“做什么”,而不是“怎么做”(系统如何实现)。应该陈述系统任务是什么,而不是解决问题的方法。需求陈述必须要将解决问题的目标清楚地表达出来,如果目标模糊,将会影响系统分析、设计和实现等后续开发阶段的工作。分析人员和用户一起研究和讨论才能准确表达用户的要求,并找出遗漏的信息。,图9.1 ATM系统,ATM系统的需求陈述:1)问题综述 某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及营业终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责
5、提供分行计算机和营业终端。营业终端设在分行下属的各个储蓄所内。该系统的软件开发成本由各个分行共同承担。,2)实施陈述 银行营业员使用营业终端处理储户提交的储蓄事务。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户,储户也可以从自己的账户中取款。通常,一个储户可能拥有多个账户。营业员负责把储户提交的存款或取款事务输进营业终端,接收储户交来的现金或支票,或者付给储户现金。营业终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。,拥有银行账户的储户有权申请领取现金兑换卡。使用兑换卡可以通过ATM访问自己的账户。目前,仅限于用现金兑换卡在ATM上提取现金(即取款),或
6、查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用ATM办理转账、存款等事务。所谓现金兑换卡,就是一张特制的磁卡,上面有分行代码和卡号。分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。,当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。首先,ATM要求
7、用户输入密码,接下来,ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口输出现金,并且打印出账单交给用户。,3.面向对象分析的三个模型与五个层次 1)面向对象分析的三个模型 面向对象建模是面向对象分析的关键。面向对象的模型包括:对象模型、动态模型和功能模型。对象模型描述了系统的静态结构;动态模型描述了系统的互
8、交次序;功能模型描述了系统的数据变换。不同的问题,三个子模型的侧重程度不同,但是,对象模型是最基础的、最核心的、最重要的。无论解决什么问题,首先要在问题域中提取和定义出对象模型。当问题涉及用户界与过程控制时,动态模型是重点。如果问题涉及大量数据变换,则功能模型非常重要。对象模型中的操作(服务)可以出现在动态模型和功能模型内。,2)面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-对象、识别结构、识别主题、定义属性和定义服务(方法)。对于一个复杂问题的面向对象的模型可用五个层次表示:类-对象层、结构层,主题层、属性层和服务层,见图9.2。主题(Subject)层:主题给出分析模型
9、的总体概貌,是控制读者在同一时间所能考虑的模型规模的机制。类-&-对象(Class&Object)层:对象是数据及其处理的抽象。它反映了保存有关信息和与现实世界交互的能力。,图9.2 对象模型的五个层次,结构(Structure)层:结构表示问题域的复杂性。类-成员结构反映了一般-特殊关系,整体-部分结构反映了整体-部分的关系。属性(Attribute)层:属性是数据元素,用来描述对象或分类结构的实例,可在图中给出并在对象的储存中指定,即给出对象定义的同时,指定属性。服务(Serves)层:服务是接收到消息后必须执行的一些处理,可在图上标明它并在对象的储存中指定,即给出对象定义的同时,定义服务
10、。五个层次就像合并在一起的五个透明的图层一样,每一层从不同角度将对象模型更细化、更具体化。,3)五个层次对应的五个活动 面向对象的模型的五个层次对应着分析建模的五个主要活动。这五个活动的工作可以不按顺序进行,也没必要完成一项活动后才开始另一项活动工作。也就是说,五个主要活动可以同时(并行)处理;可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继续处理;当系统分析员在确定类-对象的同时,想到该类的服务,则可以先确定服务后,再返回去继续寻找类-对象;没有必要遵循自顶向下,逐步求精的原则。,4)面向对象分析流程 一般情况下,面向对象分析过程可按照下列流程进行:确定类-对象、识别结构、识别主
11、题、定义属性、建立动态模型、建立功能模型、定义服务(方法)。但是,对于大型的、复杂的问题,不可能严格按照上面流程进行,需要反复多次进行寻找、确定、识别、建立和定义来构造模型,即先构造出模型的雏形或部分,再逐步扩充、修改、求精直至满意为止,最后,构造出符合问题域需求的正确的、准确的、完整的目标系统的模型,并编写出需求规格说明。下面我们介绍三个模型的建立和五个层次的定义。,9.2 建立对象模型,对象模型描述了系统的数据结构,它是三个模型的最关键的一个模型。它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,以及它们之间的联系。面向对象方法是以对象为基础来构造系统,而不是以功能为
12、基础来构造系统。对象模型为建立动态模型和功能模型提供了实质性的框架。对象模型是基础,动态模型和功能模型在此基础上创建。也就是说,一个系统首先创建对象模型,然后再创建动态模型和功能模型。,在建立对象模型时,我们的目标是从问题域中提炼出对目标系统有价值的概念。对象模型描述了问题域中的类-对象以及它们之间的关系,表示了目标系统的静态数据结构。一般来说,当用户的需求变化时,静态数据结构相对来说比较稳定。静态数据结构较少地依赖应用细节,因此,比较容易确定。,对象模型通常有五个层次。建立对象时,首先确定类-对象和关联,对于大型复杂问题,还要进一步划分出若干个主题;然后给类和关联增补进一步描述的属性;接着利
13、用继承关系适当的合并和组织类。因为动态模型和功能模型更准确地描述了类中所提供的服务的需求,所以,类中操作(服务)需等到建立了这两个模型之后再确定。面向对象分析是复杂而又艰辛的过程,是系统分析员经反复迭代逐步深化的认知过程来创建模型,将初始的分析模型变为最终的分析模型。也可以研究、借鉴以前对相同的或类似的问题域进行面向对象分析后所得到的结果,这样既可以实现重用,又可以提高系统分析效率。,9.2.1 确定类-对象 系统分析员的主要任务是在问题域中,通过分析找出客观存在的类-对象。首先,识别所有潜在的(候选的)类-对象;然后,从潜在的类-对象中筛选掉不正确的或不合适的,通过筛选,剔除冗余的类-对象之
14、后,精选出可作为目标系统的正式类-对象。,1.识别潜在的类-对象 1)对象类型 对象是人们要研究的任何事物及对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念(规则、计划和事件)。具体地说,对象可分为如下几种类型:(1)物理实体:指有形的实物,例如,飞机、汽车、计算机、书或机房等。(2)人或组织的角色:例如,医生、教师、学生、工人、部门或公司等。(3)事件:指在特定时间所发生的事,例如,飞行、演出、开会、访问或事故等。(4)性能说明:指厂商对产品性能的说明,如产品名字、型号、规格和各种性能指标等。,2)初步分析 对象具有很强的表达能力和描述功能。在面向对象分析时,可以参照上述
15、几类常见事物,找出在当前问题域中潜在的类-对象。另外,还可以以自然语言书写的需求文档(陈述)为依据,这种分析方法比较简单,是一种非正式分析。文档中的名词可作为潜在(候选)的类-对象,形容词可作为线索来确定属性,动词可作为潜在的服务(操作)。找出候选者之后,还必须经过严格地筛选,清除掉那些不正确的或不必要的事物,保留正确的或必要的事物。这个结果可作为更详细、更精确的正式的面向对象分析的雏形,当然,也是正式的面向对象分析的一个良好的开端。,3)实例分析 下面以ATM系统为例,说明非正式分析过程。仔细阅读9.1节给出的需求陈述,从陈述中找出下列名词作为类-对象的初步的候选者。银行、自动取款机(ATM
16、)、系统、中央计算机、分行计算机、营业终端、网络、总行、分行、软件、成本、市、街道、营业厅、储蓄所。营业员、储户、现金、支票、账户、事务、现金兑换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款额、账单以及访问等。,通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类-对象,因此,分析员应该根据领域知识或常识进一步把隐含的类-对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。,2.筛选出正确的类-对象 在现实世界中,存在着许多对象,但仅可讨论而已,不能全部纳入系统中去。通过非
17、正式分析找出的候选对象,仅仅是提供给分析员的初步的候选者,接下来,还应该对每个候选对象进行严格考察、筛选,从中去掉不正确的或不必要的,仅保留正确的或必要的对象。这些对象才确实是应该记录其信息或需要其提供服务的对象。假定已经找到了一个候选对象,这时又发现了另一个可能成为对象的实体,那么,是否应该将它作为对象放到模型中去呢?这时应该根据下列准则筛选对象,剔除不正确或不必要的类-对象。,1)剔除冗余准则 若两个类表达了同样的信息,则应该保留在此问题域中最富于描述力的那个名称,去掉冗余的类。上面初步分析得出了ATM系统的34个候选的类,其中,储户与用户,现金兑换卡与磁卡及副本分别描述了相同的信息,因此
18、,应该将“用户”、“磁卡”、“副本”等冗余的类去掉,仅保留“储户”和“现金兑换卡”这两个类。,2)无关准则 删除那些与问题没有多少关系或根本无关的类,仅把与问题密切相关的类-对象放进目标系统中。有些类在其他问题中可能很重要,但与当前要解决的问题无关,同样也应该把它们删掉。如,在ATM系统中,应该去掉“成本”、“市”、“街道”、“营业厅”和“储蓄所”等候选类。因为,该系统并不处理软件开发成本的问题,而且ATM和营业员终端放置的地点与本软件的关系也不大。,3)模糊准则 在初步分析时,列出来的作为候选的类-对象中,可能有一些模糊的、泛指的名词,其中,有的是系统无须记忆的信息;有的是在需求陈述中,它们
19、所暗示的事务,有更明确更具体的名词来表示。因此,通常应去掉这些笼统的或模糊的类。在ATM系统中,“银行”实际指总行或分行,“访问”在这里实际指事务,“信息”的具体内容在需求陈述中随后就指明了。此外,还有一些笼统含糊的名词。因此,在本例中,应该去掉“银行”、“网络”、“系统”、“软件”、“信息”和“访问”等候选类。,4)属性准则 对象是用属性来描述的,若有些名词只是其他对象的属性的描述,则应该把这些名词从候选类-对象中去掉。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。在ATM系统中,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”和“类型
20、”等,实际上都应该作为属性而不是作为类。在分析人员考虑不周的地方,该准则能帮助他筛选潜在的对象。,5)操作准则 在需求陈述中,有时可能使用一些既可作为名词又可作为动词的词,此时,应根据它们在本问题中的含义来决定它们是作为类还是作为类中定义的操作。例如,通常把电话“拨号”当作动词,当构造电话模型时,确实应该把它作为一个操作,而不是一个类。但是,在开发电话的自动记账系统时,把“拨号”作为重要的一个类,因为,它有自己的日期、时间、受话地点等属性。总之,当一个操作具有属性需独立存在时,应该作为类-对象而不是作为类的操作。,6)实现准则 在分析阶段,应该去掉仅和实现有关的候选的类-对象。这是因为,在设计
21、和实现阶段,这些类-对象可能是重要的,但是,目标系统实现不应该在分析阶段考虑,不然会分散我们的注意力。例如,在ATM系统中,“事务日志”无非是对一系列事务的记录,它的确切表示方式是面向对象设计的议题;“通信链路”在逻辑上是一种联系,在系统实现时它是关联链的物理实现。因此,应该暂时去掉“事务日志”和“通信链路”这两个类,在设计或实现时再考虑它们。综上所述,在ATM系统的例子中,经过初步筛选,剩下了下列类-对象:ATM、中央计算机、分行计算机、营业终端、总行、分行、营业员、储户、账户、事务和现金兑换卡等。,9.2.2 确定关联 两个或多个对象之间的相互依赖、相互作用的关系就是关联。一般情况下,在初
22、步分析问题域中的类-对象确定之后,接着就可以分析、确定类-对象之间存在的关联关系。由于在整个开发过程中,从OOAOOD,面向对象概念和表示符号都是一致的,因此,分析员可以不按照这样的工作顺序,灵活地选取自己习惯的工作方式。分析、确定关联,能促使分析员考虑问题域的边缘情况,有助于发现那些潜在的类-对象。聚集关系(整体-部分关系)是关联的一个特例,在分析、确定关联的过程中,不必明确地去区分关联和聚集。,1.初步确定关联 通常,关联关系在需求陈述中,使用描述性动词或动词词组来表示。因此,通过分析需求陈述,首先,直接提取需求陈述中的动词词组来初步确定多数的关联,然后,还能挖掘一些在陈述中隐含的关联。最
23、后,根据问题域实体间的相互依赖、相互作用关系,分析员还应该与用户及领域专家讨论,作再进一步的补充。以ATM系统为例,用直接提取动词短语得出关联、需求陈述中隐含关联和根据问题域知识得出关联等方法,经过分析,初步确定出如表9.1所示的关联。在表9.1中,标“”符号的关联表示是删掉的关联,标“”符号的关联表示是分解后又删掉的关联。,表9.1 确定ATM系统的关联,续表,续表,2.筛选 1)删除已去掉的类之间的关联 在分析、确定类-对象的过程中,如果已经删掉了某个候选类,则与这个类有关的关联也应该删掉,或用其他类重新表达这个关联。例如,在ATM系统中,由于已经删掉了“系统”、“网络”、“市”、“街道”
24、、“成本”、“软件”、“事务日志”、“现金”、“营业厅”、“储蓄所”和“账单”等候选类,因此,与这些类有关的八个(表9.1中的(1),(3),(5),(6),(16),(17),(22),(23)关联也应该删掉。,2)删除与问题无关的关联或实现阶段的关联 在侯选类中,应该把与本问题域无关的关联或与实现密切相关的关联删去。例如,在ATM系统中,“系统处理并发的访问”只提醒我们在实现阶段需要使用实现并发访问的算法,以处理并发事务,并没有标明对象之间的新关联(表9.1中序号为(18)的关联),因此,应删去它。,3)删除瞬时动作 关联应该描述问题域的静态结构,而不应该是一个瞬时事件,因此应删除瞬时事件
25、的关联。例如,在ATM系统中,“ATM读现金兑换卡”描述了ATM与用户交互周期中的一个动作,它并不是ATM与现金兑换卡之间的固有关系,因此应该删去。类似地,还应该删去“ATM与用户交互”这个候选的关联。(表9.1中序号为(14)和(15)的关联),如果用动作表述的需求隐含了问题域的某种基本结构,则应该用适当的动词词组重新表示这个关联。例如,在ATM系统的需求陈述中,“中央计算机确定事务与分行的对应关系”隐含了结构上“中央计算机与分行通信”的关系(表9.1中序号为(13)的关联),因此,应该删去。,4)多元关联分解 多元关联是三个或三个以上对象之间的关联,多数可以分解为二元关联或用词组描述成限定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析
链接地址:https://www.31ppt.com/p-6213401.html