信息系统设计与实践 面向对象的系统分析课件.ppt

上传人:牧羊曲112 文档编号:1569639 上传时间:2022-12-07 格式:PPT 页数:121 大小:1.74MB
返回 下载 相关 举报
信息系统设计与实践 面向对象的系统分析课件.ppt_第1页
第1页 / 共121页
信息系统设计与实践 面向对象的系统分析课件.ppt_第2页
第2页 / 共121页
信息系统设计与实践 面向对象的系统分析课件.ppt_第3页
第3页 / 共121页
信息系统设计与实践 面向对象的系统分析课件.ppt_第4页
第4页 / 共121页
信息系统设计与实践 面向对象的系统分析课件.ppt_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《信息系统设计与实践 面向对象的系统分析课件.ppt》由会员分享,可在线阅读,更多相关《信息系统设计与实践 面向对象的系统分析课件.ppt(121页珍藏版)》请在三一办公上搜索。

1、信息系统分析、设计与开发方法,面向对象的系统分析,4.1 面向对象的基本过程 4.2 面向对象分析的特点 4.3 需求分析陈述 4.4 面向对象的系统分析活动4.5 建立对象模型4.6 建立动态模型4.7 建立功能模型 4.8 案例,目录,4.1.1 概述,面向对象分析(Object-Oriented Analysis,简称OOA),就是运用面向对象的方法进行系统分析,强调运用面向对象方法,对问题域和系统职责进行分析和理解,找出描述问题域及系统职责所需的对象,定义对象的属性、服务以及它们之间的关系,目标是建立一个符合问题域、符合用户需求的OOA模型。,4.1 面向对象分析的基本过程,4.1 面

2、向对象分析的基本过程,问题域(problem domain)就是被开发系统的应用领域,即软件系统所能处理的现实世界中的业务范围。系统责任(system responsibilities)即所开发的软件系统应该具备的职能.,4.1.1 概述,4.1 面向对象分析的基本过程,OOA的主要任务就是对问题域和系统责任进行分析和理解;找出跟问题域与系统责任有关的类及对象;定义这些对象的属性和操作,以及它们之间所形成的结构,静态联系和动态联系。简言之,确定系统分析中的对象,描述对象的静态特征和动态特征,找出对象间的各种关系以及对象的行为约束,是OOA的主要任务。,4.1.1 概述,4.1 面向对象分析的基

3、本过程,OOA和OOD的职责划分OOA针对现实世界中的问题域和系统职责,用面向对象的方法建立起OOA模型,作为分析的结果。OOA模型不考虑与系统具体实现相关的因素,从而使OOA模型独立于具体的实现环境。OOD则是针对系统的具体实现,运用OO方法进行系统设计。其中包括两方面的工作:1.根据实现条件对OOA模型做某些必要的调整和修改,使其成为OOD模型的一部分;2.针对具体实现条件,建立人机界面、数据存储和控制驱动等模型。这些部分与OOA采用相同的概念与表示法。,4.1.1 概述,4.1 面向对象分析的基本过程,用OO方法开发软件,通常建立3种模型:对象模型(基本):描述系统静态数据结构。动态模型

4、(辅助):描述系统的交互次序和行为过程。功能模型(辅助):描述数据变换结果。三个模型的侧重点对象模型对于任何系统都是最基础、最重要和最核心的,是必需的。动态模型对于设计交互行为和时序过程(如用户界面及过程控制)的系统是重要的。功能模型对于解决运算量很大的问题(如科学和工程计算)是重要的。,4.1.1 概述,关系层,特征层,对象层,基本模型(类图),模型组织包图,辅助模型交互图活动图状态图数据流图,OOA模型,OOA过程建立基本模型描述系统的基本特征,类图建立动态模型(可选)描述系统的动态行为特征,交互图,活动图和状态图建立功能模型(可选)描述数据变换结果,数据流图建立模型组织包图,系统,子系统

5、写详细说明注意:模型的建立不需要按顺序,不分先后。,4.1.2 面向对象的基本过程,4.1 面向对象分析的基本过程,OOA具体过程,4.1.2 面向对象的基本过程,4.1 面向对象分析的基本过程,OOA过程模型,原型开发*结合其它活动反复进行,划分主题,建立包图(辅助模型,可选),建立交互图、状态图、活动图(动态模型,可选),对模型中的成分进行规范的定义和文字说明,可集中进行,也可分散在各个活动中,实施OOA过程的几点建议:1. 把对系统需求的捕获和描述放在分析工作的开始。2. 建立基本模型的三个活动,可根据需要随时从一个活动切换到另一个;3. 建立动态模型可以安排到建立对象模型之后,也可以同

6、时进行;4. 建立详细说明的活动应结合在其它活动中分散进行,最后做一次集中的审查和补充;5. 原型开发可反复进行,开发早期原型主要用于证实用户需求;6. 分析较小的系统时,可以省略分包的活动,在分析大中型系统时,也可按需求先分包,再根据包分工。,4.1.2 面向对象的基本过程,4.1 面向对象分析的基本过程,OOA过程由5项主要活动组成:(1)识别类和对象(2)确定结构(3)确定主题(4)定义属性(5)定义服务根据这些主要活动,OOA模型也由5个层次组成。,4.1.2 面向对象的基本过程,4.1 面向对象分析的基本过程,4.1.2 面向对象的基本过程,4.1 面向对象分析的基本过程,本节要掌握

7、的内容:OOA模型的三个子模型和五个层次,OOA的主要原则(1)抽象原则(2)分类原则(3)聚合原则(4)关联原则(5)消息通信原则(6)粒度控制原则,4.2 面向对象分析的特点,OOA的主要优点(1) (1)OOA是在人类思维组织的基本方法框架下定义并表达 需求,直观性好。 (2)便于分析人员集中精力于问题空间的理解和分析, 有利于超越系统的复杂性困难。 (3)把属性和有关服务方法作为对象整体来看待,比较 自然。 (4)使用对象间的最小相关性来分析和说明。这有利于 实行封装性原则,并使OOA适应开发需求的变化,也 有利于制作和提取可复用的部件。,4.2 面向对象分析的特点,OOA的主要优点(

8、2) (5)通过对共性的显式表示而提高表达能力。抽 象层次与后续OOP结合,编程思路清晰,特 别是有利于提高程序效率。 (6)分析法与设计法的一致性,密切配合建造一 个问题域模型。 (7)对系统族的适用性和可扩展性强,4.2 面向对象分析的特点,1)写什么:需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及约束条件等。简单地讲,需求陈述应该阐明系统“做什么” ,而不管“怎样做”。2)怎么写:文字描述要做到语法正确,内容完整,条理清晰。准确使用名词、动词、形容词和同义词。3)需求陈述作用:需求陈述仅仅是理解用户需求的出发点,千万不可将此陈述当成完整、准确、有效和一成不变的文档。,4.3

9、 需求分析陈述,书写要点,需求陈述举例:,下图所示为自动取款机(ATM)系统,ATM系统,自动取款机(ATM)系统需求陈述:某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。,银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。通常,一个储户可能拥有多个账户。柜员负责把

10、储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。,拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用ATM办理转账、存款等事务。所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账

11、户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。,当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。首先,ATM要求用户输入密码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。当用

12、户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用户。,基本思想:首先找出与问题域相关的所有候选类与对象,然后从候选类与对象中筛选掉不正确的或不必要的。,4.4.1 获取对象和类,4.4 面向对象的系统分析活动,1、先找出候选的类与对象 寻找类与对象的一般方法:对象是对问题域中相关实体或事物的抽象,既可以是客观实体,也可以是抽象概念。一般划分5类:1) 可感知的物理实体:如飞机、汽车、书、房屋等等。2) 人或组织:例医生、教师、雇主、计算机系、财务处等。3) 应该记忆的事件:如飞行、演出、访问、交通事故等。4) 两个或多个对象的相互作用:如购买、纳税、

13、结婚等。5) 需要说明的概念:如政策、保险政策、版权法等。按照上述5类抽取和寻找系统的全部必要类和对象。,4.4.1 获取对象和类,4.4 面向对象的系统分析活动,一种寻找对象类的非正式分析方法 名词识别法 这种分析方法以需求陈述为依据,把陈述中的名词作为类与对象的候选者;用形容词或名词作为确定属性的候选者;把动词作为服务(操作)的候选者。,下面以ATM系统为例,说明非正式分析过程。认真阅读ATM需求陈述,从中找出相关名词,可以把它们作为类与对象的初步的候选者:银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户

14、,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。注意:分析员应该根据领域知识或常识进一步把隐含的类与对象提取出来。例如,ATM系统必须包含“通信链路”和“事务日志”实体,应该补充进来。,2. 筛选出正确的类与对象候选类与对象可能包括一些不正确的或不必要的类与对象,应该筛选掉,仅保留确那些确实需要记录信息或提供服务的对象。删除不正确或不必要的类与对象的筛选准则:1)冗余:如果两个类表达了同样的信息,则应该保留行业规范名称。ATM例中:储户与用户,现金兑换卡与磁卡及副本分别描述了相同的两类信息,因此,仅保留“储户”和“现金兑换卡”

15、这两个类,应该去掉“用户”、“磁卡”、“副本”等冗余的类。,银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问,通信链路,事务日志,2)无关:保留与本问题密切相关的类与对象,删除与本问题无关或关系不大的类与对象。ATM系统为例:系统不处理分摊软件开发成本的问题,另外ATM和柜员终端放置的地点与本软件的关系也不大。因此,应该去掉候选类“成本”、“市”、“街道”、“营业厅”和“储蓄所”。,银行,自动取款

16、机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问,通信链路,事务日志,3)笼统:删除笼统的、泛指的、模糊的名词对应的候选类与对象,保留有更明确、更具体的名词对应的类与对象。以ATM系统为例:银行实际指总行或分行,访问在这里实际指事务,此外还有一些笼统含糊的名词。在本例中应该去掉“银行”、“网络”、“系统”、“软件”、“信息”、“访问”等候选类。,银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端

17、,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问,通信链路,事务日志,4)属性:把描述属性的名词应从候选类与对象中去掉。在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际上都应该作为属性对待。,银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号

18、,用户,副本,信息,密码,类型,取款额,账单,访问,通信链路,事务日志,5)操作:在需求陈述中既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正确决定他们作为类还是操作。6)实现:在分析阶段不应该过早地考虑怎样实现目标系统。因此,应该去掉只和实现有关的候选的类与对象。在ATM系统中,“事务日志”是对一系列事务的记录,它的确切表示方式是面向对象设计的议题;“通信链路”在逻辑上是一种联系,在系统实现时它是关联类的物理实现。应该暂时去掉 “事务日志”和“通信链路”这两个类,在设计或实现时再考虑它们。,银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行

19、,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问,通信链路,事务日志,经过初步筛选,ATM系统保留的类与对象为:ATM、中央计算机、分行计算机、柜员终端、总行、分行、柜员、储户、账户、事务、现金兑换卡。,关联是指两个或多个对象之间的相互依赖、相互作用的关系。分析确定关联,有助于发现尚未被发现的类和对象。一般特殊结构 一般特殊关系又称类属关系,是现实世界中一般对象和特殊对象之间的关系,反映了现实世界中事物之间的分类关系。前者称为父类,后者称为子类,子类继承父类的特性(属性、操

20、作、关联等),同时又拥有自己的特性。,4.4.2 确定关联,4.4 面向对象的系统分析活动,例如图书借阅管理系统中,对象类“人员”是类“管理员”和“借阅者”类的父类,而子类“管理员”又是类“系统维护人员”和类“一般操作人员”的父类。,一般特殊关系,4.4.2 确定关联,4.4 面向对象的系统分析活动,整体部分 对象实例之间的整体部分关系,反映了现实世界中的事物之间的构成关系。整体部分关联又可以从两个方面来反映:聚合关系:表示对象实例之间的整体与部分的关系,作为整体的对象拥有作为部分的对象。在聚合关系中,部分的生命周期独立于整体的生命周期。 组合关系:是聚合关系的一种特殊形式。在组合关系中,整体

21、和部分之间有着一致的生命周期。,4.4.2 确定关联,4.4 面向对象的系统分析活动,聚合,组合,4.4 面向对象的系统分析活动,聚合关系,组合关系,4.4.2 确定关联,关联 表示对象实例之间的静态联系,这两个对象实例之间存在某种语义上联系。例如,员工为公司工作,一个公司有许多部门,因此,可以认为员工和公司、公司和部门之间存在某种语义上的联系,如下图所示。,4.4.2 确定关联,4.4 面向对象的系统分析活动,依赖关系 一个模型元素的变化影响另一个模型元素,则两个元素之间存在依赖关系。以X和Y两个元素为例,当修改X的定义时,引起Y的定义的修改,则称Y依赖于X。,4.4.2 确定关联,4.4

22、面向对象的系统分析活动,确定关联的步骤:1. 初步确定关联(候选关联) 基本方法:以需求陈述中描述性动词或动词词组为纽带,确定类与对象之间的关联关系。(语法:主语+谓语+宾语) 寻找范围:直接提取需求陈述中的动词词组;分析发现陈述中隐含的关联;与用户及领域专家讨论获取关联。,4.4 面向对象的系统分析活动,4.4.2 确定关联,以ATM系统为例,经过分析初步确定出下列关联:1)直接提取动词短语得出的关联ATM、中央计算机、分行计算机及柜员终端组成网络。总行拥有多台ATM。ATM设在主要街道上。分行提供分行计算机和柜员终端。柜员终端设在分行营业厅及储蓄所内。分行分摊软件开发成本。储户拥有账户。分

23、行计算机处理针对账户的事务。分行计算机维护账户。,柜员终端与分行计算机通信。柜员输入针对账户的事务。ATM与中央计算机交换关于事务的信息。中央计算机确定事务与分行的对应关系。ATM读现金兑换卡。ATM与用户交互。ATM吐出现金。ATM打印账单。系统处理并发的访问。,2)需求陈述中隐含的关联总行由各个分行组成。分行保管账户。总行拥有中央计算机。系统维护事务日志。系统提供必要的安全性。储户拥有现金兑换卡。3)根据问题域知识得出的关联现金兑换卡访问账户。分行雇用柜员。,ATM、中央计算机、分行计算机及柜员终端组成网络。总行拥有多台ATM。ATM设在主要街道上。分行提供分行计算机和柜员终端。柜员终端设

24、在分行营业厅及储蓄所内。分行分摊软件开发成本。储户拥有账户。分行计算机处理针对账户的事务。分行计算机维护账户。柜员终端与分行计算机通信。柜员输入针对账户的事务。ATM与中央计算机交换关于事务的信息。中央计算机确定事务与分行的对应关系。,ATM读现金兑换卡。ATM与用户交互。ATM吐出现金。ATM打印账单。系统处理并发的访问。总行由各个分行组成。分行保管账户。总行拥有中央计算机。系统维护事务日志。系统提供必要的安全性。储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。,候选关联,2. 筛选候选关联中包含了一些不正确或不必要的关联,应该删除掉。筛选时主要根据下述标准删除候选的关联:1) 已删去

25、的类之间的关联与某个已删候选类相关的关联,也应该删去。以ATM系统为例,由于已经删去了“系统”、“网络”、“市”、“街道”、“成本”、“软件”、“事务日志”、“现金”、“营业厅”、“储蓄所”、“账单”等候选类,因此,与这些类有关的关联也应该删去:, ATM、中央计算机、分行计算机及柜员终端组成网络。 ATM设在主要街道上。 分行分摊软件开发成本。 系统提供必要的安全性。 系统维护事务日志。 系统处理并发的访问 ATM吐出现金。 ATM打印账单。 柜员终端设在分行营业厅及储蓄所内。,ATM、中央计算机、分行计算机及柜员终端组成网络。总行拥有多台ATM。ATM设在主要街道上。分行提供分行计算机和柜

26、员终端。柜员终端设在分行营业厅及储蓄所内。分行分摊软件开发成本。储户拥有账户。分行计算机处理针对账户的事务。分行计算机维护账户。柜员终端与分行计算机通信。柜员输入针对账户的事务。ATM与中央计算机交换关于事务的信息。中央计算机确定事务与分行的对应关系。,ATM读现金兑换卡。ATM与用户交互。ATM吐出现金。ATM打印账单。系统处理并发的访问。总行由各个分行组成。分行保管账户。总行拥有中央计算机。系统维护事务日志。系统提供必要的安全性。储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。,候选关联,2) 与问题无关的或应在实现阶段考虑的关联应该把处在本问题域之外的关联或与实现密切相关的关联删去

27、。3) 瞬时事件:关联应该描述问题域的静态结构,而不应该是一个瞬时事件。例如,“ATM读现金兑换卡”描述了ATM与用户交互周期中的一个动作,它并不是ATM与现金兑换卡之间的固有关系,因此应该删去。类似地,还应该删去“ATM与用户交互”这个候选的关联。,ATM、中央计算机、分行计算机及柜员终端组成网络。总行拥有多台ATM。ATM设在主要街道上。分行提供分行计算机和柜员终端。柜员终端设在分行营业厅及储蓄所内。分行分摊软件开发成本。储户拥有账户。分行计算机处理针对账户的事务。分行计算机维护账户。柜员终端与分行计算机通信。柜员输入针对账户的事务。ATM与中央计算机交换关于事务的信息。中央计算机确定事务

28、与分行的对应关系。,ATM读现金兑换卡。ATM与用户交互。ATM吐出现金。ATM打印账单。系统处理并发的访问。总行由各个分行组成。分行保管账户。总行拥有中央计算机。系统维护事务日志。系统提供必要的安全性。储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。,候选关联,4) 三元关联:三个或三个以上对象之间的关联,大多可以分解为二元关联或用词组描述成限定的关联。在ATM系统的例子中,“柜员输入针对账户的事务”可以分解成“柜员输入事务”和“事务修改账户”这样两个二元关联。而“分行计算机处理针对账户的事务”也可以做类似的分解。“ATM与中央计算机交换关于事务的信息”这个关联隐含了“ATM与中央计算

29、机通信”和“在ATM上输入事务”这两个二元关联。,总行拥有多台ATM。分行提供分行计算机和柜员终端。储户拥有账户。分行计算机处理针对账户的事务。分行计算机维护账户。柜员终端与分行计算机通信。柜员输入针对账户的事务。ATM与中央计算机交换关于事务的信息。中央计算机确定事务与分行的对应关系。总行由各个分行组成。分行保管账户。总行拥有中央计算机。,储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。,候选关联,柜员输入事务,事务修改账户,分行计算机处理事务,ATM与中央计算机通信,在ATM上输入事务,5) 派生关联:应该去掉那些可以用其他关联定义或派生的冗余关联。在ATM系统的例子中,“总行拥有多

30、台ATM”实质上是“总行拥有中央计算机”和“ATM与中央计算机通信”这两个关联组合的结果。而“分行计算机维护账户”的实际含义是“分行保管账户”和“事务修改账户”。,总行拥有多台ATM。分行提供分行计算机和柜员终端。储户拥有账户。分行计算机维护账户。柜员终端与分行计算机通信。中央计算机确定事务与分行的对应关系。总行由各个分行组成。分行保管账户。总行拥有中央计算机。,储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。柜员输入事务事务修改账户分行计算机处理事务ATM与中央计算机通信在ATM上输入事务,去掉派生的关联,3. 进一步完善进一步完善经筛选后余下的关联,通常从下述几个方面进行改进:正名:

31、应该仔细选择含义更明确的名字作为关联名。例如,“分行提供分行计算机和柜员终端”不如改为“分行拥有分行计算机”和“分行拥有柜员终端”。2) 分解:必要时分解以前确定的类与对象,以适用于不同的关联。在ATM系统中,应该把“事务”分解成“远程事务”和“柜员事务”。,3) 补充:发现了遗漏的关联就应该及时补上。在ATM系统中,把“事务”分解成上述两类之后,需要补充“柜员输入柜员事务”、“柜员事务输进柜员终端”、“在ATM上输入远程事务”和“远程事务由现金兑换卡授权”等关联。4) 标明重数:根据关联类型,初步确定关联重数。重数是指类产生的对象之间的数量关系,例如,,分行提供分行计算机和柜员终端。储户拥有

32、账户。柜员终端与分行计算机通信。中央计算机确定事务与分行的对应关系。总行由各个分行组成。分行保管账户。总行拥有中央计算机。,储户拥有现金兑换卡。现金兑换卡访问账户。分行雇用柜员。柜员输入事务事务修改账户分行计算机处理事务ATM与中央计算机通信在ATM上输入事务,进一步完善,分行拥有分行计算机,分行拥有柜员终端,柜员输入柜员事务,柜员事务输进柜员终端,在ATM上输入远程事务,远程事务由现金兑换卡授权,柜员事务修改账户,中央计算机与分行计算机通信,图10.3 ATM系统原始的类图,经上述分析过程之后得出的ATM系统原始的类图,主题是帮助或指导理解整个模型的一种机制。在开发大型复杂系统的过程中,为了

33、降低复杂程度,人们习惯于把系统包含的内容再进一步划分成几个不同的组成范围或范畴,即主题。 以ATM系统为例,可以把它划分成总行(包含总行和中央计算机这两个类)、分行(包含分行、分行计算机、柜员终端、柜员事务、柜员和账户等类)和ATM(包含ATM、远程事务、现金兑换卡和储户等类)等3个主题。,4.4 面向对象的系统分析活动,4.4.3 确定主题,图10.3 ATM系统原始的类图,经上述分析过程之后得出的ATM系统原始的类图,总行,分行,ATM,对象的属性是描述对象静态特征的,确定对象属性时要从问题域和目标系统两方面进行。一般说来,确定属性的过程包括分析和选择两个步骤。1. 分析在需求陈述分析中,

34、常用名词词组或形容词限定的名词表示属性,例如,汽车的颜色,光标的位置,体重,身高,存款余额,等等。除需求陈述外,还须借助领域知识和常识获得属性。,4.4 面向对象的系统分析活动,4.4.4 确定属性,2. 选择通常筛选下几种属性:1)误把对象当作属性:拥有属性的实体应作为一个对象而不是属性。2)误把关联类的属性当作一般对象的属性:属性随着关联存在并描述关联。3)把限定误当成属性:如,“分行代码”、“账号”、“雇员号”、“站号”等都是限定词。4)误把内部状态当成了属性:如ATM就绪、故障等。5) 过于细化:忽略那些对大多数操作都没有影响的属性。6) 存在不一致的属性:类中含有一些看起来与其他属性

35、毫不相关的属性,则应该考虑把该类分解成两个不同的类。,ATM系统对象模型中的属性,经过筛选之后,得到ATM系统中各个类的属性,方法,也称服务、操作或行为等,用来描述对象的动态特征。有的面向对象的程序设计语言中,又将方法称之为类的成员函数或简称函数。一般从以下三个方面发现和定义对象方法: 系统责任 问题域 对象状态 在确定类中应有的服务时,既要考虑该类实体的常规行为,又要考虑在系统中特殊需要的服务。,4.4 面向对象的系统分析活动,4.4.5 确定方法,1. 常规行为在分析阶段可以认为,类中定义的每个属性都是可以访问的,即假设在每个类中都定义了读、写该类每个属性的操作。但是,通常无需在类图中显式

36、表示这些常规操作。,2. 从事件导出的操作状态图中对象接收的事件,也就是该对象接收到的消息,该对象必须有由消息选择符指定的操作,这个操作修改对象状态(即属性值)并启动相应的服务。,“分行”类的状态图,例如:在ATM系统中,分行接收的事件“请分行验卡”启动该对象的服务“验证卡号”;“处理分行事务”事件启动分行服务“更新账户”等,3. 与数据流图中处理框对应的操作数据流图中的每个处理框都与一个对象或多个对象上的操作相对应。应对照状态图和数据流图,以便更正确地确定对象应该提供的服务。,例如,在ATM系统中,从状态图上看出分行对象应该提供“验证卡号”服务,而在数据流图上与之对应的处理框是“验卡”,根据

37、实际应该完成的功能看,该对象提供的这个服务应该是“验卡”。,注意:在建立了动态模型和功能模型之后,才能最终确定类中应有的方法。,数据流图,练习:下面是自动售货机系统的需求陈述,请建立它的对象模型。 自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币、一角币、五分币、二分币和一分币。其他货币都被认为是假币。机器拒绝接收假币,并将其从退币孔退出。当机器接收了有效的硬币之后,就把硬币送入硬币储藏器中。顾客支付的货币根据硬币的面值进行累加。 自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。

38、顾客通过选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返回到退币孔。如果分配器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。如果顾客支付的货币值少于所选择的分配器中货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,他投放进的货币将从退币孔中退出。,OOA模型的三个子模型:对象模型 动态模型 功能模型,4.5 建立对象模型,建立对象模型,面向对象分析首要的工作,是建立问题域的对象模型。这个模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。

39、静态数据结构对应用细节依赖较少,比较容易确定。当用户需求变化时,静态数据结构相对来说比较稳定。因此,用面向对象方法开发大多数软件时,都是首先建立对象模型,然后再建立另外两个子模型。,OOA基本模型分为三个层次:对象层给出系统中所有反映问题域和系统责任的对象。特征层给出类(对象)的内部特征,即类的属性和操作。关系层给出各类(对象)之间的关系,即类之间的四种关系。,4.5 建立对象模型,建立对象模型,对象模型的作用是描述系统的静态结构,静态模型包括类图、对象图、包图、部署图和组件图。对象图是类图的实例,跟类图非常相似,可以认为对象图是类图在程序执行过程中某一瞬间的快照;包图由包和类组成,它表示包和

40、包之间的关系,包图可以用于描述系统的分层结构;组件图和部署图设计程序的物理实现。,4.5 建立对象模型,建立对象模型,类图类图描述系统中类的静态结构,定义系统中的类表示类之间的关系(如关联、依赖、聚集等)表达类的内部结构(即类的属性和操作)。类图描述的这种静态关系涉及软件系统开发的整个生命周期。它不显示暂时性的信息。,4.5 建立对象模型,建立对象模型,建筑设计院公文审批类图,类图作用对系统的静态对象建模。如图书借阅系统的Book类、reader类,学生管理系统的Student类等。对简单的协作建模。协作是一些共同行为的类、接口和其他元素的群体。协作是指一些类、接口和其他的元素一起工作提供一些

41、合作的行为,这些行为不是简单地将元素加能得到的。对逻辑数据库模式建模。在很多领域中,都需要在关系数据库或面向对象数据库中存储永久信息,系统分析者可以用类图对这些需要永久化的实体建模。,4.5 建立对象模型,建立对象模型,类一般包括三个组成部分:,4.5 建立对象模型,建立对象模型,类名,属性,操作,名称,表现类的特征,可用于描述类的状态。“+”表示公有数据类型“-”表示私有数据类型“#”表示受保护类型,操纵属性或执行其它动作,给类命名时应该遵守以下准则:使用标准术语;使用具有确切含义的名词;必要时使用名词短语;类名、属性、操作也有一定的书写规范,具体如下。类名:正体字代表可被实例化的类,斜体字

42、代表抽象类;属性:“可见性 属性名:类型=初始值”;操作:“可见性 方法名称(参数列表):返回类型”;可见性:+表示public,-表示private,#表示protected,省略修饰词具有package级别的可见性。如果属性或方法具有下划线,则说明它是静态的。,4.5 建立对象模型,建立对象模型,类的表示方法有两种:全部显示类的属性和操作;隐藏属性部分或操作部分,或者两者都隐藏;,4.5 建立对象模型,建立对象模型,隐藏操作,隐藏属性,只显示类名,对象图对象图表示在某一时刻系统对象的状态、对象之间的联系的状态以及对象行为的静态方面的状态。对象图和类图一样反映系统的静态过程,但它是从实际的或

43、原型化的情景来表达的。对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。,4.5 建立对象模型,建立对象模型,对象图的用途:捕获实例和连接在分析和设计阶段创建捕获交互的静态部分举例说明数据/对象结构详细描述瞬态图由分析人员、设计人员和代码实现人员开发,4.5 建立对象模型,建立对象模型,类图:有三个分栏(类名,属性,操作);类名分栏中只有类名属性分栏定义所有属性的特征;操作分栏列出了操作类之间使用关联连接,标上重数,4.5 建立对象模型,对象图,对象

44、图:只有两个分栏(名称,属性);名称形式为“对象名:类名”;匿名对象的名称形式为“:类名”;只定义属性的当前值;不包含操作;对象之间使用链连接,没有重数。,包图 包(Package)是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,通常使用逻辑性的包,用于对模型进行组织;使用物理性的包,用于转换成系统中的Java包。每个包的名称对这个包进行了唯一性的标识。,4.5 建立对象模型,建立对象模型,包图建模:将关系相近的类放到相同的包中。将一个框架的所有类放置在相同的包中;将相同继承层次的类放在相同的包中;彼

45、此间有聚集或组成关系的类通常放在相同的包中;彼此合作频繁的类、信息能够通过顺序图和合作图反映出来的类,通常放在相同的包中;确定包与包之间的依赖关系或泛化关系。,4.5 建立对象模型,建立对象模型,确定系统的动态模型 动态模型的作用:描述系统中各个对象在外部事件的触发下,按照一定的控制逻辑和运行规则,使其状态发生变化的行为过程。例如:储户与ATM系统的交互的存款或取款过程。动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬间的、行为化的系统控制性质,它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了对象的相互行为。该模型使用状态图作为描述工具。

46、它涉及到事件、状态、操作等重要概念。,4.6 建立动态模型,事件 事件是指定时刻发生的某件事。引起对象状态发生变化的行为或动作或事情统称为事件。状态状态是对象属性值在对象的运行过程中所呈现的各种变化序列。状态指明了对象对输入事件的响应。状态图状态图一个标准的计算机概念,是用有限自动机的图形表示的。状态图反映了状态与事件的关系。用来描绘对象的状态在外部事件的触发下所发生的变换过程和规律。当接收一事件时,下一状态就取决于当前状态和所接收的该事件,由该事件引起的状态变化称为转换。,4.6 建立动态模型,状态图状态图的描绘与结构化方法状态图相同。在状态图中,用结点表示状态,结点用圆圈表示;圆圈内有状态

47、名,用箭头连线表示状态的转换,上面标记事件名,箭头方向表示转换的方向。,4.6 建立动态模型,4.6 建立动态模型,电话系统的状态图,动态模型的构成: 把每个类的状态图用共享事件连接起来,则构成系统的动态模型。即动态模型是基于事件共享而互相关联的一组对象状态图的集合。建立动态模型的步骤: 1)编写脚本:一个脚本是系统完成某项工作的一次具体交互执行过程的说明和描述。脚本包括正常交互行为和异常事件引发的交互行为。 2)绘制系统事件跟踪图:从脚本中抽取事件,并确定引发每个事件的动作对象和接受该事件的目标对象,然后绘制系统事件跟踪图。 3)绘制对象状态图:排列每个对象有关的事件发生次序,描绘每个对象状

48、态图。 4)建立动态模型:借助共享事件把各个对象的状态图集合在一起,构成系统的动态模型。 5)审查动态模型:比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。,4.6 建立动态模型,编写脚本,脚本:系统在某一执行期间出现的一系列事件。脚本功能:描述用户与目标系统之间的一个或多个典型的交互行为。编写脚本的目的:保证不遗漏重要的交互步骤,有助于确保整个交互过程的正确性和清晰性。脚本的内容:既可以包括系统中发生的全部事件,也可以只包括由特定对象触发的事件。对于某个事件,必须指明触发(产生)事件的动作对象(如系统、用户),接受事件的目标对象以及该事件的参数(交互信息)。编写步骤:编写正常

49、情况的脚本。考虑特殊情况,例如输入和输出为最大值。考虑出错情况,例如输入值非法或响应失败。,4.6 建立动态模型,ATM系统异常情况脚本,画事件跟踪图,事件跟踪图是以图形的方式描述事件及事件与对象的关系,即表达脚本含义的模型。事件跟踪图实质上是扩充的脚本,是简化的UML顺序图。1. 确定事件分析每个脚本,从中提取出所有外部事件以及事件的发送和接收对象。除从脚本中要找出正常事件、还要找出异常事件和出错条件。2. 画出事件跟踪图事件跟踪图把事件序列以及事件与对象的关系直观清晰地表示出来。,4.6 建立动态模型,事件跟踪图画法:在事件跟踪图中,一条竖线代表一个对象,每个事件用一条水平的箭头线表示,箭

50、头方向从事件的引发对象指向接受对象。事件发生的前后顺序由水平箭头的上下次序确定,上面先发生,下面后发生。箭头线之间的间距不代表时间长短,仅代表事件发生的先后。,4.6 建立动态模型,ATM正常事件跟踪图,顺序图:按顺序显示对象之间的交互。,一张状态图描述某一类对象的行为,它确定了由时间序列引起的状态序列。一般步骤:1)先以某一事件跟踪图(先正常后异常)为起点画出各个对象状态图。画法:分别集中考虑某一个对象,从事件跟踪图中获取指向该对象竖线的那些箭头线(接收事件),并把这些事件作为状态图中的状态转换箭头线,其上标以事件名,两个事件之间的间隔就是一个状态;再从事件跟踪图获取当前考虑的对象竖线射出的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号