第十章面向对象分析
软件工程导论第10章面向对象分析
易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
第10章 面向对象分析
分析人员和用户一起研究和讨论才能准确表达用户的要求, 并找出遗漏的信息。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
10
10.1.2 需求陈述(2)
实例:
用OTM(Object Modeling Technique)开发方法, 以ATM(Auto Take Money )系统为例,提出需 求陈述。
通过用户、领域专家、系统分析员和系统设计人员的 评审,并进行反复修改后,确定需求规格说明。
注意事项:
1) 需求分析是复杂而又艰辛的过程。 2) 系统分析人员应该多和用户交流,认真和领域
专家探讨。 3) 必须在领域专家的指导和密切配合下进行,才
能有效地完成任务。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
码传给中央计算机,请求中央计算机核对这些信息并处理这 次事务。 d) 中央计算机根据卡上的分行代码确定这次事务与分行的对 应关系,并且委托相应的分行计算机验证用户密码。 e) 如果用户输入的密码是正确的,ATM就要求用户选择事务 类型(取款、查询等)。 f) 当用户选择取款时,ATM请求用户输入取款额。 g) 最后,ATM从现金出口输出现金,并且打印出账单交给用 户。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
2
本章目录(II)
10.2.1.2.4 属性准则 10.2.1.2.5 操作准则 10.2.1.2.6 实现准则
10.2.2 确定关联
10.2.2.1 初步确定关联 10.2.2.2 筛选 10.2.2.3 完善关联
10.2.3 划分主题 10.2.4 确定属性
面向对象分析过程是提取和确定系统需求的过程。
第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图
第10章 面向对象分析
第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。
第10章面向对象分析全解
第10章面向对象分析10.1面向对象分析的基本过程不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。
图:参照当前系统建立目标系统面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
10.1.1 概述系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。
[[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。
”(P231)——这在一开始能做到吗?——扯蛋10.1.2 3个子模型与5个层次面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。
建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。
对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:图10.2 复杂问题的对象模型的5个层次其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。
其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。
我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:(1)确定类和对象(2)确定关联(3)划分主题(4)定义属性(5)确定继承关系(6)建立动态模型(7)建立功能模型(8)定义服务需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。
10.2需求陈述需求陈述的主要任务是准确地回答“系统必须做什么?”,而不是“系统应该怎么做?”10.2.1书写要点10.2.2例子我们用“ATM系统”(ATM是Automatic Teller Machine的缩写,意即自动柜员机)的开发作为OOA&OOD的实例。
软件工程第10章 面向对象分析(简)
单击此处编辑母版标题样 下图所示为自动取款机(ATM)系统(作为OO分析和OO设计实例) (ATM)系统 OO分析和OO设计实例 下图所示为自动取款机(ATM)系统(作为OO分析和OO设计实例) 式
10.2.2 需求陈述书写举例
ATM系统 图10.2 ATM系统
单击此处编辑母版标题样 自动取款机(ATM)系统需求陈述 P234): (ATM)系统需求陈述( 自动取款机(ATM)系统需求陈述(P234): 某银行拟开发一个自动取款机系统,它是一个由自动取款机、 某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计 式
主题含义:主题是指导开发人员和用户理解大型、 主题含义:主题是指导开发人员和用户理解大型、复杂模型的一种机 实际上, 制。实际上,主题就是对对象模型所涉及的诸多类和对象按照问题空 间的组成范围(方面)进行划分和归类。 间的组成范围(方面)进行划分和归类。 5个层次对应着建立对象模型的5项主要活动:找出类与对象,识别结 个层次对应着建立对象模型的5项主要活动:找出类与对象, 识别主题,定义属性,定义服务。 构,识别主题,定义属性,定义服务。 面向对象分析的一般步骤:寻找类与对象,识别结构,识别主题, 面向对象分析的一般步骤:寻找类与对象,识别结构,识别主题,定 义属性,建立动态模型,建立功能模型,定义服务。 义属性,建立动态模型,建立功能模型,定义服务。
单击此处编辑母版标题样 式
复杂问题的对象模型的5 图10.1 复杂问题的对象模型的5个层次
单击此处编辑母版标题样 对象模型5个层次的含义:类与对象、结构(类或对象之间的关系)、 对象模型5个层次的含义:类与对象、结构(类或对象之间的关系)、 式 属性和服务的概念,已经在第9章介绍过。现在介绍主题的概念。 属性和服务的概念,已经在第9章介绍过。现在介绍主题的概念。
第10章面向对象分析(OOA)
建立模型:
系统分析员应该深入理解用户需求,抽象出目标系 统的本质属性,并用模型准确地表示出来
分析模型应该成为对问题的精确而又简洁的表示 后继的设计阶段将以分析模型为基础
通过建立分析模型能够纠正在开发早期对问题域的 误解
建模的过程中,系统分析员必须认真向领域专家学 习
注意结果的可重用性
候选类:
银行,自动取款机(ATM),系统,中央计算机,分 行计算机,柜员终端,网络,总行,分行,软件, 成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁 卡,分行代码,卡号,用户,副本,信息,密码, 类型,取款额,账单,访问
根据领域知识或常识进一步把隐含的类与对象 提取出来
当用户把现金兑换卡插入ATM之后,ATM就与 用户交互,以获取有关这次事务的信息,并与 中央计算机交换关于事务的信息。首先,ATM 要求用户输入密码,接下来ATM把从这张卡上 读到的信息以及用户输入的密码传给中央计算 机,请求中央计算机核对这些信息并处理这次 事务。中央计算机根据卡上的分行代码确定这 次事务与分行的对应关系,并且委托相应的分 行计算机验证用户密码。如果用户输入的密码 是正确的,ATM就要求用户选择事务类型(取款、 查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金, 并且打印出账单交给用户。
需求陈述的内容包括:
问题范围 功能需求 性能需求 应用环境及假设条件等
应该阐明“做什么”而不是“怎样做” 应该描述用户的需求而不是提出解决问题的方法 应该指出哪些是系统必要的性质,哪些是任选的 需求陈述可简可繁、要尽力做到语法正确 最好是分析员和系统用户共同完成
10.2.2 例子
面向对象分析
面向对象分析:是确定需求或者业务的角度,按照面向对象的思想来分析业务。
例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
基本步骤:
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。
这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。
类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。
结构是指问题域的复杂性和连接关系。
类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。
主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。
属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。
方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。
对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
软件工程导论_第十章
2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;
面向对象的系统分析
学生
0-n
1
注册
出纳窗口
0-n
1
缴注册费
图10.15 参与者—事务模板
图10.16 地方—事务模板
1 注册费细目
学生
1
0-n
学院
缴注册费 1-n
图10.18 参与者--地方模板
图10.19 事务—事务细目模板
注册费项目 0-n
1 注册费细目
T3—保险费
实验费 体检费 保险费 学费
项目
T3--学费 T2--实验费 T2--学费 T1—保险费 T1-学费
其他事件流A1: (1)控制面板响铃一次. (2)系统复位. (3)执行事件流A0. 错误事件流E1: (1)控制面板显示系统出错. (2)结束使用案例.
10.3.2 类—责任—协作者模型
类—责任—协作者模型:用于描述用户的 需求,标出对象和类。 构成:CRC卡片,顶部: 类名,中左部: 责 任,中右部: 协作者。
10.3.1 使用案例
描述目标系统的一种使用情况。
1)角色 2)使用案例作用 3)使用案例图示 4)使用案例描述(事件流方法)
1)角色
和系统通讯并外部于系统的任何事物 (人、设备)。 特点:① 一个角色代表一类外部实体 ② 仅起一个作用 主要角色:直接并经常和系统相互作用。 次要角色:支持系统,使主要角色起作用。
class class_B { public: class_B( ); ~class_C( ); … }
张海藩《软件工程导论》(第6版)(课后习题 第10章 面向对象分析)【圣才出品】
第10章面向对象分析1.用面向对象方法分析研究本书第2章第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。
答:(1)对象模型储蓄系统的对象模型,如图10-2所示。
图10-2储蓄系统的对象模型(2)动态模型①编写脚本a.正常情况脚本第一,储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;第二,业务员查收存款,审核存款与存款单存款金额吻合;第三,存款单生效;第四,储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;第五,业务员审核存款,验证储户身份,确定储户存款金额>=取款金额;第六,审核通过,取款单生效;第七,系统打印利息清单,业务员把本金和利息返回储户。
b.异常情况脚本第一,储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;第二,业务员查收存款,审核存款与存款单存款金额不符;第三,存款单作废;第四,储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;第五,业务员审核存款,验证储户身份,发现储户存款金额<=取款金额;第六,取款单作废。
②事件追踪图储蓄系统的事件追踪图,如图10-3所示。
图10-3储蓄系统的事件追踪图(3)功能模型储蓄系统的数据库流图,如图10-4所示。
图10-4储蓄系统的数据库流图2.用面向对象方法分析研究本书习题2第3题中描述的机票预订系统,试建立它的对象模型、动态模型和功能模型。
答:略。
3.用面向对象方法分析研究本书习题2第4题中描述的患者监护系统,试建立它的对象模型、动态模型和功能模型。
答:略。
4.下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型:自动售货机系统是一种无人售货系统。
售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。
有效的硬币是一元币、五角币、一角币、五分币、二分币和一分币。
其他货币都被认为是假币。
机器拒绝接收假币,并将其从退币孔退出。
软件工程导论 第10章 面向对象分析
第10章面向对象分析不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。
分析工作主要包括3项内容,这就是理解、表达和验证。
首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。
分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。
由于问题复杂,而且人与人之间的交流带有随意性和非形式化的特点,上述理解过程通常不能一次就达到理想的效果。
因此,还必须进一步验证软件需求规格说明的正确性、完整性和有效性,如果发现了问题则进行修正。
显然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。
也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助工具。
面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。
10.1面向对象分析的基本过程10.1.1 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。
通常,面向对象分析过程从分析陈述用户需求的文件开始。
可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。
当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。
需求陈述通常是不完整、不准确的,而且往往是非正式的。
通过分析,可以发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。
因此,不应该认为需求陈述是一成不变的,而应该把它作为细化和完善实际需求的基础。
在分析需求陈述的过程中,系统分析员需要反复多次地与用户协商、讨论、交流信息,还应该通过调研了解现有的类似系统。
张海藩《软件工程导论》(第6版)(章节题库 第10章 面向对象分析)【圣才出品】
第10章面向对象分析一、选择题1._____是系统一个特定执行期间所发生的事件序列。
【答案】脚本2.功能模型描述系统内的计算,它和_____、_____共同构成系统模型结构的三大支柱。
【答案】对象模型;动态模型3.状态是对象的_____、_____的一种抽象。
【答案】属性值;链接4.在对象模型中,访问操作是直接从类的_____和_____中导出的。
【答案】属性;关联5.对象模型为建立_____和_____,提供了实质性框架。
【答案】动态模型;功能模型6.功能模型由多个_____组成,每个_____说明了操作和结束的含义。
【答案】数据流图;数据流图7.功能模型由多张数据流图组成。
数据流图中包含_____、_____、_____对象和_____对象。
【答案】处理;数据流;动作;数据存储8.事件跟踪图用来表示_____、_____对象和_____对象。
_____和_____可用一条垂直线表示,各_____用水平箭头表示,箭头方向是从_____对象指向_____对象。
【答案】事件;事件的接收;发送;接收对象;发送对象;事件;发送;接收9.状态转换图是_____的重要工具。
【答案】启发分析员认识对象服务10.说明一个状态可采用_____、_____、_____、_____、_____等内容描述。
【答案】状态名;状态目的描述;产生该状态的事件序列;表示状态特征的事件;在状态中接收的条件二、填空题1.一个()能用不同的方法表示它的特征。
A.事件B.抽象C.状态D.脚本【答案】C【解析】状态是对象的属性值和链接的一种抽象。
根据影响对象总的行为的性质,一系列组合在一起是一个状态。
它能用不同的方法表示它的特征。
2.在对象模型中,访问操作是直接从类的属性和关联中导出的。
下列不是对象模型的访问操作的是()。
A.查询B.动作C.抽象D.活动【答案】C【解析】对象模型的访问操作主要包括三大类:查询、活动和动作。
3.()对整个对象的状态/行为关系的图示,它附属于该对象的类描述模板。
第十八讲 面向对象分析建模过程
对象建模的步骤
确定类与对象
对问题域概念的抽象 从需求陈述、招标书等中获取 继承关系——整体与部分 聚合关系——一般与特殊(泛化与特化) 识别类与对象所保存的信息 给出各个类与对象之间的实体连接(一对一、一对多等) 即识别操作,并根据功能给出各个操作之间的消息连接 即识别系统的高层模块或子系统
设想用户界面(User Interface)
考虑两种交互行为
应用逻辑:内在的、本质的内容,如系统内的信
息流和控制流。 用户界面:系统的外在的表现形式。
用户界面的要求:美观、方便、效率高。 为获得用户的认同,快速建立用户界面原型
ATM界面设想(P241)
画事件跟踪图
确定事件
编写脚本
脚本(场景
Scenarios、情景)
指系统在某一执行期间的事件序列。 描述用户、外部设备等与系统间的典型交
互过程。
编写脚本的目的
对目标系统的行为有更具体的认识
防止对重要的交互步骤的遗漏
保证交互过程的正确性和清晰性
编写脚本所注意的问题
脚本编写过程实质上是分析系统交互行为的过程
确定类与对象:一种非正式的分析方法
把陈述中的名词作为类与对象的候选者
形容词作为确定属性的线索 动词作为服务的候选者 注意需求陈述中隐含的类与对象
确定类和对象:剔除原则
冗余的 无关的 笼统的
有些名词实际上描述的是某个对象的属性
区分操作、公共服务与类定义的名词和动词 暂缓考虑设计和实现阶段的内容
第十八讲
面向对象分析建模过程
本讲(第十章 )的主要内容
一、OO分析的基本过程 二、需求陈述 三、建立对象模型 四、建立动态模型 五、建立功能模型 六、定义服务
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
确定事件
应该仔细分析每个脚本,以便从中提取出所有 外部事件。
事件包括系统与用户(或外部设备)交互的所有信 号、输入、输出、中断、动作等等。
对象传递信息的动作也是事件。 应该把对控制流产生相同效果的那些事件组合在一
起作为一类事件,并给它们取一个唯一的名字。 应该把对控制流有不同影响的那些事件区分开来,
7
编写脚本
脚本描述事件序列
每当系统中的对象与用户(或其他外部设备)交换 信息时,就发生一个事件。
所交换的信息值就是该事件的参数(例如,“输入 密码”事件的参数是所输入的密码)。
也有许多事件是无参数的,这样的事件仅传递一个 信息——该事件已经发生了。
8
编写脚本
对于每个事件,都应该指明:
写脚本的具体目的决定。
6
编写脚本
步骤:
编写正常情况的脚本。 考虑特殊情况,例如输入或输出的数据为最大值
(或最小值)。 考虑出错情况,例如,输入的值为非法值或响应失
败。 如果可能,应该允许用户“异常中止”或“取消”
一个操作。 应该提供诸如“帮助”和状态查询之类的在基本交
互行为之上的“通用”交互行为。
识别继承关系
4
10.4 建立动态模型
在开发交互式系统时,动态模型起着很重要的作用, 四个步骤:
编写典型交互行为的脚本。 从脚本中提取出事件,确定触发每个事件的动作对 象以及接受事件的目标对象。 排列事件发生的次序,确定每个对象可能有的状态 及状态间的转换关系,并用状态图描绘它们。 比较各个对象的状态图,检查它们之间的一致性, 确保事件之间的匹配。
ATM请储户选择事务类型;储户选择“取款”。 ATM询问取款额;储户改变主意不想取款了,
他敲“取消”键。 ATM退出现金兑换卡,并请储户拿走它;储户
拿走他的卡。 ATM请储户插卡。
14
10.4.2 设想用户界面
用户界面是外在的表现形式。
用户对系统的“第一印象”往往从界面 得来,用户界面的好坏往往对用户是否 喜欢、是否接受一个系统起很重要的作 用。
不要误把它们组合在一起。 应该区分出每类事件的发送对象和接受对象。 18
事件跟踪图
在事件跟踪图中:
一条竖线代表一个类与对象 每个事件用一条水平的箭头线表示,箭头方向从事
件的发送对象指向接受对象。 画在最上面的水平箭头线代表最先发生的事件,画
在最下面的水平箭头线所代表的事件最晚发生。 箭头线之间的间距并没有具体含义,并不表示两个
“39”号分行核对储户密码,然后通知ATM说 这张卡有效。
10
ATM系统的正常情况脚本
ATM要求储户选择事务类型(取款、转账、查 询等);储户选择“取款”。
ATM要求储户输入取款额;储户输入“880”。 ATM确认取款额在预先规定的限额内,然后要
求总行处理这个事务;总行把请求转给分行, 该分行成功地处理完这项事务并返回该账户的 新余额。
5
10.4.1 编写脚本
脚本是指系统在某一执行期间内出现的一系列事件。编写 脚本的过程,实质上就是分析用户对系统交互行为的要求 的过程。
目的:
保证不遗漏重要的交互步骤,它有助于确保整个交互 过程的正确性和清晰性。
范围:
既可以包括系统中发生的全部事件,也可以只包括由
某些特定对象触发的事件。脚本描写的范围主要由编
触发该事件的动作对象(例如,系统、用户 或其他外部事物)
接受事件的目标对象 事件的参数。
9ቤተ መጻሕፍቲ ባይዱ
ATM系统的正常情况脚本
ATM请储户插卡;储户插入一张现金兑换卡。 ATM接受该卡并读它上面的分行代码和卡号。 ATM要求储户输入密码;储户输入自己的密码
“1234”等数字。 ATM请求总行验证卡号和密码;总行要求
11
ATM系统的正常情况脚本
ATM吐出现金并请储户拿走这些现金; 储户拿走现金。
ATM问储户是否继续这项事务;储户回 答“不”。
ATM打印账单,退出现金兑换卡,请储 户拿走它们;储户取走账单和卡。
ATM请储户插卡。
12
ATM系统的异常情况脚本
ATM请储户插卡;储户插入一张现金兑 换卡。
因此,在分析阶段也不能完全忽略用户 界面。
15
初步设想出的ATM界面格式
16
10.4.3 画事件跟踪图
完整、正确的脚本为建立动态模型奠定 了必要的基础。但是,用自然语言书写 的脚本往往不够简明,而且有时在阅读 时会有二义性。
为了有助于建立动态模型,通常在画状 态图之前先画出事件跟踪图。
2
划分主题 按问题域而不是用功能分解方法来确定
主题。 按照使不同主题内的对象相互间依赖和
交互最少的原则来确定主题。
3
确定属性
1分析 2选择
误把对象当作属性 误把关联类的属性作为一般对象屑性 把限定误当成属性 误把内部状态当成了属性 过于细化 存在不一致的属性
事件之间的精确时间差。
19
AT
M
系
统
正
常
情
况
下
的
事
件
跟
踪
图
20
10.4.4 状态图
状态图描绘事件与对象状态的关系。 我们用一张状态图描绘一类对象的行为,它确
定了由事件序列引出的状态序列。 系统分析员应该集中精力考虑具有重要交互行
为的那些类。
21
从事件跟踪图出发画状态图
考虑事件跟踪图中指向某条竖线的那些箭头线。 把这些事件作为状态图中的箭头线,边上标以 事件名。
ATM接受这张卡并读它上面的分行代码 和卡号。
ATM要求密码;储户误输入“8888”。 ATM请求总行验证输入的数字和密码;
总行在向有关分行咨询之后拒绝这张卡。
13
ATM系统的异常情况脚本
ATM显示“密码错”,并请储户重新输入密码; 储户输入“1234”;ATM请总行验证后知道这 次输入的密码正确。
上次课回顾
确定类与对象
找出候选的类与对象 筛选出正确的类与对象
冗余 无关 笼统 属性 操作 实现
1
确定关联
直接提取动词短语得出的关联 需求陈述中隐含的关联 根据问题域知识得出的关联 筛选
已删去的类之间的关联 与问题无关或应在实现阶段考虑的关联 瞬时事件 三元关联 派生关联