第10章-面向对象分析

合集下载

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

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

易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
事件包含一个参数列表(可能为空),用于从事件的产生者向其接 收者传递信息。
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图

面向对象分析方法

面向对象分析方法

面向对象分析方法面向对象分析方法是以系统的用户和目的为出发点的一种分析技术,它主要用于分析系统中的物体(对象)之间的关系,以及这些物体所具有的通用性质,以便将它们组织为一个可使用的整体系统。

在软件开发中,面向对象分析方法用于发现和描述系统中的对象,以及它们之间的关系,并将这些对象组织为可重用的模块,以便用于系统的设计和实现。

面向对象分析方法包括四个主要步骤: 1、识别对象:根据系统的用户和目的,识别系统中的对象,并确定它们之间的关系。

2、分析对象:对系统中的对象进行进一步分析,以便更好地理解它们之间的关系。

3、确定对象的功能:确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。

4、设计对象结构:考虑到对象之间的关系,设计系统的对象结构,以便将它们组织为可重用的模块。

面向对象分析方法有助于定义和分析系统中的对象以及它们之间的关系,从而准备进行软件设计和实现。

它能够帮助开发人员更好地理解系统的用户和目的,以及系统的功能和结构,从而有效地实现软件开发过程。

首先,面向对象分析可以帮助开发人员确定和识别系统中的对象,以及它们之间的关系。

通过分析用户和目的,开发人员可以确定用户可能会使用的对象,以及这些对象之间的关系。

在确定系统中的对象之后,开发人员可以分析这些对象,以便更好地理解它们之间的关系。

其次,面向对象分析可以帮助开发人员确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。

通过分析用户和目的,开发人员可以确定每个对象应具有的功能,以及它们之间的关系应该如何实现。

最后,面向对象分析可以帮助开发人员设计系统的对象结构,以便将它们组织为可重用的模块。

在设计对象结构时,开发人员需要考虑到对象之间的关系,以及它们应该如何被组织和重用。

总之,面向对象分析方法是一种帮助开发人员确定和分析系统中的对象以及它们之间的关系的技术,从而为软件设计和实现提供依据。

它可以帮助开发人员确定系统中的对象,以及它们应该具有的功能和结构,从而有助于软件开发过程的有效实施。

第10章 面向对象分析

第10章 面向对象分析
软件工程
第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。

面向对象 分析方法

面向对象 分析方法

面向对象分析方法面向对象分析方法(Object-Oriented Analysis, OOA)是一种软件开发中的分析方法,它主要是从对象的角度对系统进行分析,以便确定系统的需求,并定义系统中的对象和关系。

首先,面向对象分析方法强调对象的概念。

对象有状态,行为和标识,面向对象的分析方法的主要目的是理解系统对象。

分析中的对象通常是从现实世界中抽象的概念。

它们可以是具有属性以及可以执行的操作的任何事物,从人、动物、物品到商业概念和过程。

其次,面向对象分析方法强调抽象的重要性。

抽象是利用模型对信息进行缩减和简化的过程,以使得更容易理解精华、关键概念、规则和限制等. 面向对象分析方法通常以业务范畴对象的类的描述的概念模型开展。

应用程序的最终设计不同于一个概念模型,但它通常从这个带着剖析方法的模型开始。

接下来,面向对象分析方法规范化的技术是UML,即Unified Modeling Language。

UML是指一个由许多图表构成的项目和一些相关规范。

它是一个图形化的建模语言,可用于实现面向对象的分析、设计和构造。

UML 图表类型包括类图、用例图、对象图、时序图、通信图等, 主要用于完成对象指导的概念和设计。

最后,面向对象分析方法是软件开发过程中各阶段之间的桥梁。

它的主要目的是促进清晰的沟通,促进团队合作,并确保开发人员在开发那些与系统需求相符的代码时有一致的理解。

此外,它帮助开发人员对需求进行分析,确保大家共享对系统的理解。

这使得开发团队更加有效和掌握问题的机会。

综上所述,面向对象分析方法是一种强调对象概念和抽象的分析方法,它的最终目标是为确保开发人员有一致的理解并开发切合需求的代码。

这个方法在软件开发生命周期的各个阶段起到一个支撑作用,并且通过UML 规范化技术来完成。

对于当前的软件开发,需要理解和应用面向对象分析方法来提高开发的工作效率和程序的质量。

软件工程ppt课件 第10章 面向对象分析-文档资料

软件工程ppt课件 第10章 面向对象分析-文档资料

拥有银行账户的储户有权申请领取现金兑换卡。
使用现金兑换卡可以通过ATM访问自己的账户。 目前仅限于用现金兑换卡在ATM上提取现金(即 取款),或查询有关自己账户的信息(例如,某 个指定账户上的余额)。
将来可能还要求使用ATM办理转账、存款等事务。
所谓现金兑换卡就是一张特制的磁卡,上面有分行 代码和卡号。 分行代码惟一标识总行下属的一个分行,卡号确定 了这张卡可以访问哪些账户。通常,一张卡可以访 问储户的若干个账户,但是不一定能访问这个储户 的全部账户。
§1. 基本过程 Object model 由
主题 类与对象 结构 属性 方法
1+
五个层次组成
(Coad&Yourdon, 1991),相当于把
1+
五张透明胶片
(transparencies)
叠在一起,每 一层显示更多 的细节。
主题是指导读者(包括系统分析员、软件设计人员、 领域专家、管理人员、用户等 )理解大型、复杂 模型的一种机制。也就是说,通过划分主题把一 个大型、复杂的对象模型分解成几个不同的概念 范畴。
第3步:完善
§3.建立 Object Model
① 正名:分行提供分行计算机和柜员终端 = 分行拥有分行计算机 + 分行拥有柜员终端 ② 分解:适当分解前面确定的class-&-objects ,使 其适用于不同的关联 事务 = 远程事务 + 柜员事务 ③补充 柜员输入柜员事务 在ATM上输入远程事务 柜员事务输进柜员终端 远程事务由现金兑换卡授权
1+ ATM
输入
1+ 1+ 远程事务 1+
修改 授权
现金兑换卡 1. 总 行 2. 分 行 3. ATM

第10章面向对象分析全解

第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章面向对象分析(OOA)

第10章面向对象分析(OOA)

建立模型:
系统分析员应该深入理解用户需求,抽象出目标系 统的本质属性,并用模型准确地表示出来
分析模型应该成为对问题的精确而又简洁的表示 后继的设计阶段将以分析模型为基础
通过建立分析模型能够纠正在开发早期对问题域的 误解
建模的过程中,系统分析员必须认真向领域专家学 习
注意结果的可重用性
候选类:
银行,自动取款机(ATM),系统,中央计算机,分 行计算机,柜员终端,网络,总行,分行,软件, 成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁 卡,分行代码,卡号,用户,副本,信息,密码, 类型,取款额,账单,访问
根据领域知识或常识进一步把隐含的类与对象 提取出来
当用户把现金兑换卡插入ATM之后,ATM就与 用户交互,以获取有关这次事务的信息,并与 中央计算机交换关于事务的信息。首先,ATM 要求用户输入密码,接下来ATM把从这张卡上 读到的信息以及用户输入的密码传给中央计算 机,请求中央计算机核对这些信息并处理这次 事务。中央计算机根据卡上的分行代码确定这 次事务与分行的对应关系,并且委托相应的分 行计算机验证用户密码。如果用户输入的密码 是正确的,ATM就要求用户选择事务类型(取款、 查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金, 并且打印出账单交给用户。
需求陈述的内容包括:
问题范围 功能需求 性能需求 应用环境及假设条件等
应该阐明“做什么”而不是“怎样做” 应该描述用户的需求而不是提出解决问题的方法 应该指出哪些是系统必要的性质,哪些是任选的 需求陈述可简可繁、要尽力做到语法正确 最好是分析员和系统用户共同完成
10.2.2 例子

面向对象分析

面向对象分析

面向对象分析:是确定需求或者业务的角度,按照面向对象的思想来分析业务。

例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。

OOA与结构化分析有较大的区别。

OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。

基本步骤:
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。

这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。

类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。

第二步,确定结构(structure)。

结构是指问题域的复杂性和连接关系。

类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。

第三步,确定主题(subject)。

主题是指事物的总体概貌和总体分析模型。

第四步,确定属性(attribute)。

属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。

第五步,确定方法(method)。

方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。

对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。

面向对象的系统分析

面向对象的系统分析
实现上:一个对象中应有指向另一对象的指针 ① 参与者——事务模板 例如:学生——注册 约束基数的意义:一个学生可注册0次或 多次,而一个注册只能由一个学生进行 ② 事务——地方模板 表示事务发生的地方, 例: 缴费与缴费地方 ③ 参与者——地方模板 例如:学生与学院
学生
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( ); … }

面向对象分析

面向对象分析

面向对象分析
面向对象分析是计算机科学领域中使用最广泛的一种分析技术,它是一种结构化的分析方法,是系统分析的更新与系统设计的预备工作。

面向对象分析可以帮助我们更好地理解和分析现有系统,并为系统重构提供指导。

面向对象分析是一种以对象为中心,以建模和分析实体、对象和对象之间的关系为主要任务的分析方法。

它的主要目的是将概念抽象为实体,然后利用视图及关系描述它们之间的关系。

面向对象分析包括分析、设计、建模过程,分析过程也称为面向对象分析(OOA)。

面向对象分析强调对对象的分析,对象可以看作对实际世界中的实际事物的抽象。

对象可以由属性和行为组成,属性描述了对象的内部状态,行为描述了它如何处理消息。

在面向对象分析中,这种抽象事物被描绘为类,每个类有一组共享的属性和行为。

面向对象分析和设计的主要工作是抽象建模,确定对象之间的关系,并利用抽象和关系建模系统。

建模可以帮助我们清楚地了解系统结构,以及每个系统元素之间的联系。

一旦建模完成,可以使用模型来设计、分析和实现高级的系统。

面向对象分析是一种结构化的分析方法,用于理解和描述系统的行为,从而有效地构建高质量的系统。

它的关键是建立系统的实体、关系和视图,从而提出系统的结构,并提出系统实现的可行方案。

总体而言,面向对象分析是一种重要而普遍应用的管理技术,它是系统分析和设计过程中的重要组成部分。

对对象的分析有助于进行
更好的系统设计,增强了系统容量,提高了系统灵活性和性能,为组建现代软件系统提供了可行的工具。

张海藩《软件工程导论》(第6版)(课后习题 第10章 面向对象分析)【圣才出品】

张海藩《软件工程导论》(第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章 面向对象分析

第10章面向对象分析不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。

分析工作主要包括3项内容,这就是理解、表达和验证。

首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。

分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。

由于问题复杂,而且人与人之间的交流带有随意性和非形式化的特点,上述理解过程通常不能一次就达到理想的效果。

因此,还必须进一步验证软件需求规格说明的正确性、完整性和有效性,如果发现了问题则进行修正。

显然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。

也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助工具。

面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。

在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。

10.1面向对象分析的基本过程10.1.1 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。

通常,面向对象分析过程从分析陈述用户需求的文件开始。

可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。

当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。

需求陈述通常是不完整、不准确的,而且往往是非正式的。

通过分析,可以发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。

因此,不应该认为需求陈述是一成不变的,而应该把它作为细化和完善实际需求的基础。

在分析需求陈述的过程中,系统分析员需要反复多次地与用户协商、讨论、交流信息,还应该通过调研了解现有的类似系统。

张海藩《软件工程导论》(第6版)(章节题库 第10章 面向对象分析)【圣才出品】

张海藩《软件工程导论》(第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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对这两种模型的研究,能够更正确更合 理地确定每个类应该提供哪些服务。
10.1.2 3个子模型与5个层次
在概念上可以认为,面向对象分析大体上按照 下列顺序进行:
Step1: 寻找类与对象 Step2: 识别结构 Step3: 识别主题 Step4: 定义属性 Step5: 建立动态模型 Step6: 建立功能模型 Step7: 定义服务。
10.3.1 确定类与对象
综上所述,在ATM系统的例子中,经过初步筛选, 剩下下列类与对象:ATM、中央计算机、分行计 算机、柜员终端、总行、分行、柜员、储户、 账户、事务、现金兑换卡。
10.3.1 确定类与对象
两个或多个对象之间的相互依赖、相互作用的 关系就是关联。 分析确定关联,能促使分析员考虑问题域的边 缘情况,有助于发现那些尚未被发现的类与对 象。 在分析确定关联的过程中,不必花过多的精力 去区分关联和聚集。
10.2.2 例子
10.2.2 例子
银行柜员使用柜员终端处理储户提交的储蓄事 务。储户可以用现金或支票向自己拥有的某个 账户内存款或开新账户。 储户也可以从自己的账户中取款。
通常,一个储户可能拥有多个账户。柜员负责 把储户提交的存款或取款事务输进柜员终端, 接收储户交来的现金或支票,或付给储户现金。 柜员终端与相应的分行计算机通信,分行计算 机具体处理针对某个账户的事务并且维护账户。
第10章 面向对象分析
10.1 面向对象分析的基本过程 10.2 需求陈述 10.3 建立对象模型 10.4 建立动态模型 10.5 建立功能模型 10.6 定义服务 10.7 小结
OOA
面向对象分析(OOA)的关键是识别出问题域内 的类与对象,并分析它们相互间的关系,最终 建立起问题域的简洁、精确、可理解的正确模 型。 在用面向对象观点建立起的3种模型中,对象 模型是最基本、最重要、最核心的。
10.2.2 例子
某银行拟开发一个自动取款机系统,它是一个 由自动取款机、中央计算机、分行计算机及柜 员终端组成的网络系统。 ATM和中央计算机由总行投资购买。总行拥有多 台ATM,分别设在全市各主要街道上。分行负责 提供分行计算机和柜员终端。 柜员终端设在分行营业厅及分行下属的各个储 蓄所内。该系统的软件开发成本由各个分行分 摊。
10.3.1 确定类与对象
(4) 属性 在需求陈述中有些名词实际上描述的是其他对 象的属性。 在ATM系统的例子中,“现金”、“支票”、 “取款额”、“账单”、“余额”、“分行代 码”、“卡号”、“密码”、“类型”等,实 际上都应该作为属性对待。
10.3.1 确定类与对象
(5) 操作 在需求陈述中有时可能使用一些既可作为名词, 又可作为动词的词。
例如,谈到电话时通常把“拨号”当作动词,当 构造电话模型时确实应该把它作为一个操作,而 不是一个类。但是,在开发电话的自动记账系统 时,“拨号”需要有自己的属性(例如日期、时 间、受话地点等),因此应该把它作为一个类。
10.3.1 确定类与对象
(6) 实现 在分析阶段不应该过早地考虑怎样实现目标系 统。因此,应该去掉和实现有关的候选的类与 对象。 在ATM系统的例子中,“事务日志”无非是对一 系列事务的记录,它的确切表示方式是面向对 象设计的议题;“通信链路”在逻辑上是一种 联系,在系统实现时它是关联类的物理实现。 总之,应该暂时去掉 “事务日志”和“通信链 路”这两个类,在设计或实现时再考虑它们。
10.3.1 确定类与对象
1. 初步确定关联 需求陈述中的描述性动词或动词词组,通常表 示关联。 以ATM系统为例,经过分析初步确定出下列关联:
10.3.1 确定类与对象
(1) 直接提取动词短语得出的关联
10.3.1 确定类与对象
(2) 无关 现实世界中存在许多对象,不能把它们都纳入 到系统中去,仅需要把与本问题密切相关的类 与对象放进目标系统中。 以ATM系统为例,这个系统并不处理分摊软件开 发成本的问题,而且ATM和柜员终端放置的地点 与本软件的关系也不大。因此,应该去掉候选 类“成本”、“市”、“街道”、“营业厅” 和“储蓄所”。
分析员还应该根据领域知识或常识进一步把隐 含的类与对象提取出来。例如,在ATM系统的需 求陈述中提取“通信链路”和“事务日志”。
10.3.1 确定类与对象
2. 筛选出正确的类与对象 非正式分析仅仅找到一些候选的类与对象,下 面应该严格考察每个候选对象,从中去掉不正 确的或不必要的,仅保留确实应该记录其信息 或需要其提供服务的那些对象。 筛选时主要依据下列标准,删除不正确或不必 要的类与对象:
复杂问题的对象模型通常由5个层次组成: 主 题层、类与对象层、结构层、属性层和服务层。
10.1.2 3个子模型与5个层次
主题是指导读者(包括系统分析员、软件设计 人员、领域专家、管理人员、用户等,泛指所 有需要读懂系统模型的人)理解大型、复杂模型 的一种机制。
通过划分主题把一个大型、复杂的对象模型分 解成几个不同的概念范畴。
10.1.1 概述
通过分析,可以发现和改正原始陈述中的二义
性和不一致性,补充遗漏的内容,从而使需求陈
述更完整、更准确。
迭代
因此,需求陈述不是一成不变的,它是细化和
完善实际需求的基础。
快速建立的原型系统,有助于分析员和用户之
间的交流和理解,从而能更正确地提炼出用户的
需求。
分析模
接着,系统分析员深入理解用户型需求,抽象出
每张现金兑换卡仅属于一个储户所有,但是, 同一张卡可能有多个副本,因此,必须考虑同 时在若干台ATM上使用同样的现金兑换卡的可能 性。也就是说,系统应该能够处理并发的访问。
10.2.2 例子
当用户把现金兑换卡插入ATM之后,ATM就与用户交互, 以获取有关这次事务的信息,并与中央计算机交换关 于事务的信息。
不同问题中这3个子模型的重要程度也不同。 解决任何一个问题,都需要从客观世界实体及 实体间相互关系抽象出极有价值的对象模型;
➢ 当问题涉及交互作用和时序时,动态模型是重要的; ➢ 解决运算量很大的问题,则涉及重要的功能模型。 ➢ 动态模型和功能模型中都包含了对象模型中的操作(即服
务或方法)。
10.1.2 3个子模型与5个层次
首先,ATM要求用户输入密码,接下来ATM把从这张卡上读到的 信息以及用户输入的密码传给中央计算机,请求中央计算机核 对这些信息并处理这次事务。 中央计算机根据卡上的分行代码确定这次事务与分行的对应关 系,并且委托相应的分行计算机验证用户密码。如果用户输入 的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。 当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现 金出口吐出现金,并且打印出账单交给用户。
10.1.2 3个子模型与5个层次
5个层次对应着在面向对象分析过程中建立 对象模型的5项主要活动:
① 找出类与对象; ② 识别结构; ③ 识别主题; ④ 定义属性; ⑤ 定义服务。
在进行面向对象分析时并不需要严格遵守 自顶向下的原则。
10.1.2 3个子模型与5个层次
在完整地定义每个类中的服务之前,需 要先建立起动态模型和功能模型,通过
目标系统的本质属性,并用模型准确地表示出来。
10.1.1 概述
建模过程中分类工作往往有很大难度。 它必须反映出一定深度的领域知识,必须有领 域专家的密切配合才能完成。 重用技术是经常使用的。 面向对象建模得到的模型即静态结构(对象模 型)、交互次序(动态模型)和数据变换(功能模 型)。
10.1.2 3ቤተ መጻሕፍቲ ባይዱ子模型与5个层次
10.3.1 确定类与对象
另一种非正式分析方法以用自然语言书写的需 求陈述为依据。
把陈述中的名词作为类与对象的候选者 把形容词作为确定属性的线索 把动词作为服务的候选者。
10.3.1 确定类与对象
银行,自动取款机(ATM),系统,中央计算机, 分行计算机,柜员终端,网络,总行,分行, 软件,成本,市,街道,营业厅,储蓄所,柜 员,储户,现金,支票,账户,事务,现金兑 换卡,余额,磁卡,分行代码,卡号,用户, 副本,信息,密码,类型,取款额,账单,访 问。
10.3.1 确定类与对象
(3) 笼统 在需求陈述中常常使用一些笼统的、泛指的名词, 要么系统无须记忆有关它们的信息,要么在需求陈 述中有更明确更具体的名词对应它们所暗示的事务。
以ATM系统为例,“银行”实际指总行或分行, “访问”在这里实际指事务,“信息”的具体内容 在需求陈述中随后就指明了。此外还有一些笼统含 糊的名词。总之,在本例中应该去掉“银行”、 “网络”、“系统”、“软件”、“信息”、“访 问”等候选类。
主题
10.2 需求陈述
10.2.1 书写要点
需求陈述的内容包括:问题范围,功能需求,性 能需求,应用环境及假设条件等。
它描述用户的需求而不是提出解决问题的方法。
应该指出哪些是系统必要的,哪些是任选的。 应该避免对设计策略施加约束,也不要描述系统 的内部结构。 对系统性能及系统与外界环境交互协议的描述, 是合适的需求。 从实际出发,迭代完成。
(1) 可感知的物理实体,例如,飞机、汽车、书、房 屋等。 (2) 人或组织的角色,例如,医生、教师、雇主、雇 员、计算机系、财务处等。 (3) 应该记忆的事件,例如,飞行、演出、访问、交 通事故等。 (4) 两个或多个对象的相互作用,通常具有交易或接 触的性质,例如,购买、纳税、结婚等。 (5) 需要说明的概念,例如,政策、保险政策、版权 法等。
10.3.1 确定类与对象
(1) 冗余 如果两个类表达了同样的信息,则应该保留在 此问题域中最富于描述力的名称。 以ATM系统为例,上面用非正式分析法得出了34 个候选的类,其中储户与用户,现金兑换卡与 磁卡及副本分别描述了相同的两类信息,因此, 应该去掉“用户”、“磁卡”、“副本”等冗 余的类,仅保留“储户”和“现金兑换卡”这 两个类。
10.1 面向对象分析的基本过程
相关文档
最新文档