软件工程第10章面向对象分析教程

上传人:我** 文档编号:115943353 上传时间:2019-11-15 格式:PPT 页数:49 大小:335KB
返回 下载 相关 举报
软件工程第10章面向对象分析教程_第1页
第1页 / 共49页
软件工程第10章面向对象分析教程_第2页
第2页 / 共49页
软件工程第10章面向对象分析教程_第3页
第3页 / 共49页
软件工程第10章面向对象分析教程_第4页
第4页 / 共49页
软件工程第10章面向对象分析教程_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《软件工程第10章面向对象分析教程》由会员分享,可在线阅读,更多相关《软件工程第10章面向对象分析教程(49页珍藏版)》请在金锄头文库上搜索。

1、第10章面向对象分析n分析工作主要包括三项内容,就是理解、表达和验证。n面向对象分析(OOA)的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。10.1面向对象分析的基本过程n概述n面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。n强调系统分析员与用户以及领域专家交流学习的重要性。n强调调研及以前研究同类问题所得到的结果的重要性。n三个子模型与五个层次n系统的3个要素:静态结构(对象模型)、交互次序(动态模型)、数据变换(功能模型)n复杂问题(大型系统)的对象模型通常由下述5个层次组成:主题层、类&对象层、结构层、属性层、服

2、务层。n这5个层次不是构成软件系统的层次,而是分析过程中的层次,也可以说是问题的不同侧面。每个层次的工作结果作为系统规格说明的一个组成部分。n主题是指导读者理解大型、复杂模型的一种机制。即通过划分主题,把一个大型、复杂的对象模型分解成几个不同的概念范畴。n建立对象模型的5项主要活动:找出类与对象,识别结构,识别主题,定义属性,定义服务。n通常在完整地定义每个类中的服务之前,需要先建立起动态模型和功能模型,通过对这两种模型的研究,能够更正确更合理地确定每个类应该提供哪些服务。n面向对象分析大体按照如下顺序进行:寻找类&对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。10

3、.2需求陈述n内容:问题范围,功能需求,性能需求,应用环境及假设条件等。n书写需求陈述时,要尽力做到语法正确,慎重选用名词、动词、形容词等。n系统分析员必须把需求与实现策略区分开。n必须与用户及领域专家密切配合协同工作,共同提炼和整理用户需求。必要时建立原型系统,以便与用户交流。图10.2ATM系统10.3建立对象模型n面向对象分析首要的工作,是建立问题域的对象模型。表示了目标系统的静态数据结构,相对来说比较稳定。n需求陈述、应用领域的专业知识以及关于客观世界的常识,是建立对象模型时的主要信息来源。n建立过程是不断反复高度迭代的。10.3.1确定类&对象n找出候选的类&对象n可感知的物理实体n

4、人或组织的角色n应该记忆的事件n两个或多个对象的相互作用,通常具有交易或接触的性质n需要说明的概念在分析问题时,可以参照上列5类常见事物,找出在当前问题域中的候选类与对象。n非正式分析:用自然语言书写的需求陈述为依据,把陈述中的名词作为类&对象的候选者,用形容词作为确定属性的线索,把动词作为服务的候选者。n以ATM系统为例:银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。筛选出正确的类&对象筛选

5、时主要依据下列标准,删除不正确或不必要的类与对象:n冗余:保留在问题域中最富于描述力的名称。n无关:只保留与本问题密切相关的类和对象。n笼统:把笼统的或模糊的类去掉。n属性:把描述其他对象的属性的名词去掉。n操作:慎重考虑既可作为名词,又可作为动词的词的含义。n实现:去掉仅和实现有关的候选的类和对象10.3.2确定关联n初步确定关联:在需求陈述中使用的描述性动词或动词词组,通常表示关联关系。n直接提取需求陈述中的动词短语得出大多数关联.n通过分析需求陈述,还能发现一些在陈述中隐含的关联。n与用户及领域专家讨论问题域实体间的相互依赖、相互作用关系,根据领域知识再进一步补充关联。n筛选:去掉不正确

6、或不必要的关联。筛选时主要依据下列标准n已删去的类之间的关联n与问题无关的或应在实现阶段考虑的关联n瞬时事件:关联应该描述问题域的静态结构,而不应该是一个瞬时事件。n三元关联:三个或三个以上对象之间的关联,大多可以分解为二元关联或用词组描述成限定的关联。n派生关联:去掉那些可以用其他关联定义的冗余关联。n通常从下述几个方面进一步完善n正名:选择含义更明确的名字作为关联名。n分解:必要时分解以前确定的类和对象。n补充:发现了遗漏的关联应该及时补上。n标明阶数:应该初步判定各个关联的类型,并粗略地确定关联的阶数。图10.3ATM系统原始的类图10.3.3划分主题n为了降低复杂程度,在概念上把系统包

7、含的内容分解成若干个范畴n应该按问题领域而不是用功能分解方法来确定主题。n应该按照使不同主题内的对象相互间依赖和交互最少的原则来确定主题。n以ATM系统为例,可以把它划分成“总行”、“分行”和“ATM”三个主题,编号分别是1,2,3。10.3.4确定属性确定属性的过程包括分析和选择两个步骤:n分析:在需求陈述中用名词词组表示属性,用形容词表示可枚举的具体属性。n选择:删掉不正确的或不必要的属性n误把对象当作属性n把链属性误作为属性n把限定误当成属性n误把内部状态当成了属性n过于细化n存在不一致的属性10.3.5识别继承关系可以利用继承机制共享公共性质,并对系统中众多的类加以组织。可以使用两种方

8、式建立继承(即泛化)关系:n自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。n自顶向下:把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。10.3.6反复修改n在建模的任何一个步骤中,如果发现了模型的缺陷,都必须返回到前期阶段进行修改。由于面向对象的概念和符号在整个开发过程中都是一致的,因此远比使用结构分析、设计技术更容易实现反复修改、逐步完善的过程。n分解“现金兑换卡”类n“事务”由“更新”组成n把“分行”与“分行计算机”合并10.4建立动态模型在开发交互式系统时,动态模型起着很重要的作用。建立步骤:n编写典型交互行为的脚本n提取事件,确定触发每个事件

9、的动作对象以及接受事件的目标对象n排列事件发生的次序,确定对象状态及其转换关系,并用状态图描绘它们n比较各个对象的状态图,检查一致性10.4.1编写脚本n脚本是指系统在某一执行期间内出现的一系列事件。目的是保证不遗漏重要的交互步骤,有助于确保整个交互过程的正确性和清晰性。n编写脚本的过程,实质上就是分析用户对系统交互行为的要求的过程。n首先编写正常情况的脚本。然后,考虑特殊情况,例如输入或输出的数据为最大值(或最小值)。最后,考虑出错情况,例如,输入的值为非法值或响应失败。n脚本描述事件序列,每当系统中的对象与用户(或其他外部设备)交换信息时,就发生一个事件。所交换的信息值就是该事件的参数(例

10、如,“输入密码”事件的参数是所输入的密码)。n对每个事件,都应该指明触发该事件的动作对象、接受事件的目标对象以及该事件的参数。10.4.2设想用户界面n大多数交互行为都可以分为应用逻辑和用户界面两部分。n应用逻辑是内在的、本质的内容,用户界面是外在的表现形式。动态模型着重表示应用系统的控制逻辑。n在界面下应确保能够完成全部必要的信息交换,而不会丢失重要的信息。图10.7ATM的界面格式10.4.3画事件跟踪图为了有助于建立动态模型,通常在画状态图之前先画出事件跟踪图。为此首先需要进一步明确事件及事件与对象的关系。1。确定事件n仔细分析脚本,提取出所有外部事件。事件包括系统与用户(或外部设备)交

11、互的所有信号、输入、输出、中断、动作等等。大多数对象到对象的交互行为都对应着事件n把对控制流产生相同效果的那些事件组合在一起作为一类事件,并取一个唯一的名字。n把对控制流有不同影响的那些事件区分开。例如“账户有效”、“账户无效”、“密码错”等都是不同的事件。n如果某些事件之间的差异对系统行为没有影响,则可以忽略这些事件间的差异。2。画出事件跟踪图n用事件跟踪图把事件序列以及事件与对象的关系,形象、清晰地表示出来。实质上是扩充的脚本。n一条竖线代表一个对象,每个事件用一条水平的箭头线表示,箭头方向从事件的发送对象指向接受对象。时间从上向下递增。打打电电话话者者拿拿起起电电话话受受话话器器电电话话

12、忙忙音音开开始始打打电电话话者者拨拨数数字字(88)电电话话忙忙音音结结束束打打电电话话者者拨拨数数字字(22).打打电电话话者者拨拨数数字字(33)接接电电话话者者的的电电话话开开始始振振铃铃铃铃声声在在打打电电话话者者的的电电话话上上传传出出接接电电话话者者回回答答接接电电话话者者的的电电话话停停止止振振铃铃铃铃声声在在打打电电话话者者的的电电话话中中消消失失通通电电话话.10.4.4画状态图n状态图描绘事件与对象状态的关系。n一张状态图描绘一类对象的行为,它确定了由事件序列引出的状态序列。应该集中精力仅考虑具有重要交互行为的那些类以ATM系统为例:n“ATM”、“柜员终端”、“总行”和“

13、分行”都是主动对象,它们相互发送事件;n而“现金兑换卡”、“事务”和“账户”是被动对象,并不发送事件。n“储户”和“柜员”虽然也是动作对象,但是,它们都是系统外部的因素,无须在系统内实现它们。因此,只需要考虑“ATM”、“总行”、“柜员终端”和“分行”的状态图。10.4.4画状态图n从一张事件跟踪图出发画状态图时,应该集中精力仅考虑影响一类对象的事件即仅考虑事件跟踪图中指向某条竖线的那些箭头线。n通常,从事件跟踪图中当前考虑的竖线射出的箭头线,是这条竖线代表的对象达到某个状态时所做的行为(往往是引起另一类对象状态转换的事件)。n根据一张事件跟踪图画出状态图之后,再在其他脚本的事件跟踪图中找出以

14、前考虑过的脚本的分支点,然后把其事件序列并入已有的状态图中,作为一条可选的路径。10.4.4画状态图n考虑完正常事件后再考虑边界情况和特殊情况。n当状态图覆盖了所有脚本,包含了影响某类对象状态的全部事件时,该类的状态图就构造出来了。状态图与事件追踪图的关系状态图与事件追踪图的关系nn状态图叙述一个对象的个体行为状态图叙述一个对象的个体行为,事件追踪图则给出多个对象所表,事件追踪图则给出多个对象所表现出来的集体行为现出来的集体行为。它们从不同侧。它们从不同侧面来说明同一系统的行为。面来说明同一系统的行为。nn例如,一个事件追踪图指出某一例如,一个事件追踪图指出某一对象在接受一个事件之后发出另一对

15、象在接受一个事件之后发出另一事件,同一行为在此对象的状态图事件,同一行为在此对象的状态图中也应当有所表示。中也应当有所表示。10.4.5审查动态模型n各个类的状态图通过共享事件合并起来,构成了系统的动态模型。n在完成了每个具有重要交互行为的类的状态图之后,应该检查系统级的完整性和一致性。n每个事件都应该既有发送对象又有接受对象。n对于没有前驱或没有后继的状态应该着重审查n应该审查每个事件,跟踪它对系统中各个对象所产生的效果,以保证它们与每个脚本都匹配。以ATM系统为例:在总行类的状态图中,事件“分行代码错”是由总行发出的,但是在ATM类的状态图中并没有一个状态接受这个事件。因此,在ATM类的状

16、态图中应该再补充一个状态“do显示分行代码错信息”,它接受由前驱状态“do验证账户”发出的事件“分行代码错”,它的后续状态是“退卡”。图10.10总行类的状态图10.5建立功能模型n功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。n其中的处理功能可以用IPO图(或表)、伪码等多种方式进一步描述。n通常在建立了对象模型和动态模型之后再建立功能模型。10.5.1画出基本系统模型图n基本系统模型由若干个数据源点终点,及一个处理框组成,这个处理框代表了系统加工、变换数据的整体功能。n基本系统模型指明了目标系统的边界。n由数据源点输入的数据和输出到数据终点的数据,是系统与外部世界之间的交互事件的参数。图10.12是ATM系统的基本系统模型。图10.12ATM系统的基本系统模型10.5.2画出功能级数据流图把基本系统模型中单一的处理框分解成若干个处理框,以描述系统加工、变换数据的基本功能,就得到功能级数据流图。ATM系统的功能级数据流图如图10.13(见书246页)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号