版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 面向对象分析n分析工作主要包括三项内容,就是理解、表达和验证。n面向对象分析(OOA)的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。10.1 面向对象分析的基本过程n概述n面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。n强调系统分析员与用户以及领域专家交流学习的重要性。n强调调研及以前研究同类问题所得到的结果的重要性。n三个子模型与五个层次n系统的3个要素:静态结构(对象模型)、交互次序(动态模型)、数据变换(功能模型)n复杂问题(大型系统)的对象模型通常由下述5个层次组成:主题层、类&对象层、结构层、属性层
2、、服务层。n这5个层次不是构成软件系统的层次,而是分析过程中的层次,也可以说是问题的不同侧面。每个层次的工作结果作为系统规格说明的一个组成部分。n主题是指导读者理解大型、复杂模型的一种机制。即通过划分主题,把一个大型、复杂的对象模型分解成几个不同的概念范畴。n建立对象模型的5项主要活动:找出类与对象,识别结构,识别主题,定义属性,定义服务。n通常在完整地定义每个类中的服务之前,通常在完整地定义每个类中的服务之前,需要先建立起动态模型和功能模型,通过对需要先建立起动态模型和功能模型,通过对这两种模型的研究,能够更正确更合理地确这两种模型的研究,能够更正确更合理地确定每个类应该提供哪些服务。定每个
3、类应该提供哪些服务。n面向对象分析大体按照如下顺序进行:寻找类&对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。10.2 需求陈述n内容:问题范围,功能需求,性能需求,应用环境及假设条件等。n书写需求陈述时,要尽力做到语法正确,慎重选用名词、动词、形容词等。n系统分析员必须把需求与实现策略区分开。n必须与用户及领域专家密切配合协同工作,共同提炼和整理用户需求。必要时建立原型系统,以便与用户交流。图10.2 ATM系统10.3 建立对象模型n面向对象分析首要的工作,是建立问题域的对象模型。表示了目标系统的静态数据结构,相对来说比较稳定。n需求陈述、应用领域的专业知识以及
4、关于客观世界的常识,是建立对象模型时的主要信息来源。n建立过程是不断反复高度迭代的。10.3.1 确定类&对象n找出候选的类&对象n可感知的物理实体n人或组织的角色n应该记忆的事件n两个或多个对象的相互作用,通常具有交易或接触的性质n需要说明的概念在分析问题时,可以参照上列5类常见事物,找出在当前问题域中的候选类与对象。n非正式分析:用自然语言书写的需求陈述为依据,把陈述中的名词作为类&对象的候选者,用形容词作为确定属性的线索,把动词作为服务的候选者。n以ATM系统为例:银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,
5、柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。筛选出正确的类&对象筛选时主要依据下列标准,删除不正确或不必要的类与对象:n冗余:保留在问题域中最富于描述力的名称。n无关:只保留与本问题密切相关的类和对象。n笼统:把笼统的或模糊的类去掉。n属性:把描述其他对象的属性的名词去掉。n操作:慎重考虑既可作为名词,又可作为动词的词的含义。n实现:去掉仅和实现有关的候选的类和对象10.3.2 确定关联n初步确定关联:在需求陈述中使用的描述性动词或动词词组,通常表示关联关系。n直接提取需求陈述中的动词短语得出大多数关联. n通过
6、分析需求陈述,还能发现一些在陈述中隐含的关联。n与用户及领域专家讨论问题域实体间的相互依赖、相互作用关系,根据领域知识再进一步补充关联。n筛选:去掉不正确或不必要的关联。筛选时主要依据下列标准n已删去的类之间的关联n与问题无关的或应在实现阶段考虑的关联n瞬时事件:关联应该描述问题域的静态结构,而不应该是一个瞬时事件。n三元关联:三个或三个以上对象之间的关联,大多可以分解为二元关联或用词组描述成限定的关联。n派生关联:去掉那些可以用其他关联定义的冗余关联。n通常从下述几个方面进一步完善n正名:选择含义更明确的名字作为关联名。n分解:必要时分解以前确定的类和对象。n补充:发现了遗漏的关联应该及时补
7、上。n标明阶数:应该初步判定各个关联的类型,并粗略地确定关联的阶数。图10.3 ATM系统原始的类图10.3.3 划分主题n为了降低复杂程度,在概念上把系统包含的内容分解成若干个范畴n应该按问题领域而不是用功能分解方法来确定主题。n应该按照使不同主题内的对象相互间依赖和交互最少的原则来确定主题。n以ATM系统为例,可以把它划分成“总行”、“分行”和“ATM”三个主题,编号分别是1,2,3。10.3.4 确定属性确定属性的过程包括分析和选择两个步骤:n分析:在需求陈述中用名词词组表示属性,用形容词表示可枚举的具体属性。n选择: 删掉不正确的或不必要的属性n误把对象当作属性n把链属性误作为属性n把
8、限定误当成属性n误把内部状态当成了属性n过于细化n存在不一致的属性10.3.5 识别继承关系可以利用继承机制共享公共性质,并对系统中众多的类加以组织。可以使用两种方式建立继承(即泛化)关系:n自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。n自顶向下:把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。10.3.6 反复修改n在建模的任何一个步骤中,如果发现了模型的缺陷,都必须返回到前期阶段进行修改。由于面向对象的概念和符号在整个开发过程中都是一致的,因此远比使用结构分析、设计技术更容易实现反复修改、逐步完善的过程。n分解“现金兑换卡”类n“事务”由“更新
9、”组成n把“分行”与“分行计算机”合并10.4 建立动态模型在开发交互式系统时,动态模型起着很重要的作用。建立步骤:n编写典型交互行为的脚本n提取事件,确定触发每个事件的动作对象以及接受事件的目标对象n排列事件发生的次序,确定对象状态及其转换关系,并用状态图描绘它们n比较各个对象的状态图,检查一致性10.4.1 编写脚本n脚本是指系统在某一执行期间内出现的一系列事件。目的是保证不遗漏重要的交互步骤,有助于确保整个交互过程的正确性和清晰性。n编写脚本的过程,实质上就是分析用户对系统交互行为的要求的过程。n首先编写正常情况的脚本。然后,考虑特殊情况,例如输入或输出的数据为最大值(或最小值)。最后,
10、考虑出错情况,例如,输入的值为非法值或响应失败。n脚本描述事件序列,每当系统中的对象与用户(或其他外部设备)交换信息时,就发生一个事件。所交换的信息值就是该事件的参数(例如,“输入密码”事件的参数是所输入的密码)。n对每个事件,都应该指明触发该事件的动作对象、接受事件的目标对象以及该事件的参数。10.4.2 设想用户界面n大多数交互行为都可以分为应用逻辑和用户界面两部分。n应用逻辑是内在的、本质的内容,用户界面是外在的表现形式。动态模型着重表示应用系统的控制逻辑。n在界面下应确保能够完成全部必要的信息交换,而不会丢失重要的信息。图10.7 ATM的界面格式10.4.3 画事件跟踪图为了有助于建
11、立动态模型,通常在画状态图之前先画出事件跟踪图。为此首先需要进一步明确事件及事件与对象的关系。1。确定事件n仔细分析脚本,提取出所有外部事件。事件包括系统与用户(或外部设备)交互的所有信号、输入、输出、中断、动作等等。大多数对象到对象的交互行为都对应着事件n把对控制流产生相同效果的那些事件组合在一起作为一类事件,并取一个唯一的名字。n把对控制流有不同影响的那些事件区分开。例如“账户有效”、“账户无效”、“密码错”等都是不同的事件。n如果某些事件之间的差异对系统行为没有影响,则可以忽略这些事件间的差异。2。画出事件跟踪图n用事件跟踪图把事件序列以及事件与对象的关系,形象、清晰地表示出来。实质上是
12、扩充的脚本。n一条竖线代表一个对象,每个事件用一条水平的箭头线表示,箭头方向从事件的发送对象指向接受对象。时间从上向下递增。 打打电电话话者者拿拿起起电电话话受受话话器器 电电话话忙忙音音开开始始 打打电电话话者者拨拨数数字字( (8 8) ) 电电话话忙忙音音结结束束 打打电电话话者者拨拨数数字字( (2 2) ) . . . . . . . . 打打电电话话者者拨拨数数字字( (3 3) ) 接接电电话话者者的的电电话话开开始始振振铃铃 铃铃声声在在打打电电话话者者的的电电话话上上传传出出 接接电电话话者者回回答答 接接电电话话者者的的电电话话停停止止振振铃铃 铃铃声声在在打打电电话话者者
13、的的电电话话中中消消失失 通通电电话话 . . . . . . . . . .10.4. 4画状态图n状态图描绘事件与对象状态的关系。n一张状态图描绘一类对象的行为,它确定了由事件序列引出的状态序列。应该集中精力仅考虑具有重要交互行为的那些类以ATM系统为例:n“ATM”、“柜员终端”、“总行”和“分行”都是主动对象,它们相互发送事件;n而“现金兑换卡”、“事务”和“账户”是被动对象,并不发送事件。n“储户”和“柜员”虽然也是动作对象,但是,它们都是系统外部的因素,无须在系统内实现它们。因此,只需要考虑“ATM”、“总行”、“柜员终端”和“分行”的状态图。10.4. 4画状态图n从一张事件跟踪
14、图出发画状态图时,应该集中精力仅考虑影响一类对象的事件,即仅考虑事件跟踪图中指向某条竖线的那些箭头线。n通常,从事件跟踪图中当前考虑的竖线射出的箭头线,是这条竖线代表的对象达到某个状态时所做的行为(往往是引起另一类对象状态转换的事件)。n根据一张事件跟踪图画出状态图之后,再在其他脚本的事件跟踪图中找出以前考虑过的脚本的分支点,然后把其事件序列并入已有的状态图中,作为一条可选的路径。10.4. 4画状态图n考虑完正常事件后再考虑边界情况和特殊情况。n当状态图覆盖了所有脚本,包含了影响某类对象状态的全部事件时,该类的状态图就构造出来了。10.4.5 审查动态模型n各个类的状态图通过共享事件合并起来
15、,构成了系统的动态模型。n在完成了每个具有重要交互行为的类的状态图之后,应该检查系统级的完整性和一致性。n每个事件都应该既有发送对象又有接受对象。n对于没有前驱或没有后继的状态应该着重审查n 应该审查每个事件,跟踪它对系统中各个对象所产生的效果,以保证它们与每个脚本都匹配。以ATM系统为例:在总行类的状态图中,事件“分行代码错”是由总行发出的,但是在ATM类的状态图中并没有一个状态接受这个事件。因此,在ATM类的状态图中应该再补充一个状态“do/显示分行代码错信息”,它接受由前驱状态“do/验证账户”发出的事件“分行代码错”,它的后续状态是“退卡”。图10.10 总行类的状态图10.5 建立功
16、能模型n功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。n其中的处理功能可以用IPO图(或表)、伪码等多种方式进一步描述。n通常在建立了对象模型和动态模型之后再建立功能模型。10.5.1 画出基本系统模型图n 基本系统模型由若干个数据源点/终点,及一个处理框组成,这个处理框代表了系统加工、变换数据的整体功能。n 基本系统模型指明了目标系统的边界。 n 由数据源点输入的数据和输出到数据终点的数据,是系统与外部世界之间的交互事件的参数。图10.12是ATM系统的基本系统模型。图10.12 ATM系统的基本系统模型10.5.2 画出功能级数据流图把基本系统模型中
17、单一的处理框分解成若干个处理框,以描述系统加工、变换数据的基本功能,就得到功能级数据流图。ATM系统的功能级数据流图如图10.13(见书246页)所示。10.5.3 描述处理框功能n 把数据流图分解细化到一定程度之后,就应该描述图中各个处理框的功能。注意,要着重描述每个处理框所代表的功能,而不是实现功能的具体算法。n 描述既可以是说明性的,也可以是过程性的。n说明性描述规定了输入值和输出值之间的关系,以及输出值应遵循的规律。n过程性描述则通过算法说明“做什么”。一般说来,说明性描述优于过程性描述,因为这类描述中通常不会隐含具体实现方面的考虑。10.6 定义服务n 为建立完整的对象模型,既要确定
18、类中应该定义的属性,又要确定类中应该定义的服务。n 需要等到建立了动态模型和功能模型之后,才能最终确定类中应有的服务,因为这两个子模型更明确地描述了每个类中应该提供哪些服务。n 在确定类中应有的服务时,既要考虑该类实体的常规行为,又要考虑在本系统中特殊需要的服务。1. 常规行为在分析阶段可以认为,类中定义的每个属性都是可以访问的,也就是说,假设在每个类中都定义了读、写该类每个属性的操作。但是,通常无需在类图中显式表示这些常规操作。2. 从事件导出的操作状态图中发往对象的事件也就是该对象接收到的消息,因此该对象必须有由消息选择符指定的操作,这个操作修改对象状态(即属性值)并启动相应的服务。例如,在ATM系统中,发往ATM对象的事件“中止”,启动该对象的服务“打印账单”;发往分行的事件“请分行验卡”启动该对象的服务“验证卡号”;而事件“处理分行事务”启动分行对象的服务“更新账户”。可以看出,所启动的这些服务通常就是接受事件的对象在相应状态的行为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 电能信息采集终端可靠性验证方法贯标解读
- 2024年云南红河中考化学试题及答案
- 小学二年级英语教科版 Unit 2 第1课时 Let's Learn 教学设计
- 小学高年级劳动课种养小能手-植树教学设计
- 七年级数学教学设计:乘法公式综合课的结构化教学与核心素养培育
- 九年级心理健康教学设计:以平常心漫步考场-中考心理调适单元核心课例研究
- 初中地理八年级世界地形分布大势第二课时教学设计
- 小学五年级道德与法治“国家宪法日·全国法制宣传日”主题班会教学设计
- 外研版八年级英语下册Unit4词汇教学设计:情境化深度学习路径构建
- 高一年级数学必修第一册5.2.1三角函数的概念教学设计
- 时空耦合分类模型构建-洞察及研究
- 2025年揭阳揭西县选调高中教师考试试题(含答案)
- 咯血患者介入治疗的护理讲课件
- GB/T 45472-2025架空和综合管廊用预制保温管道
- 急救与生命支持类设备管理
- 2025年湖北恩施州巴东县机关事业单位选调46人历年高频重点提升(共500题)附带答案详解
- 培训劳动纪律
- 如何做好临床护理带教组长
- 人教版六年级数学上册【全册教案】
- 车位租赁协议
- 做有梦想的少年 课件-2024-2025学年统编版道德与法治七年级上册
评论
0/150
提交评论