需求的OO描述方法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《需求的OO描述方法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 OO 描述 方法 课件
- 资源描述:
-
1、需求的OO描述方法 本章内容先导案例概述1 统一建模语言和对象管理组织 2 OO的需求 3 系统活动:OO的用例/场景视图 4 确定输入和输出系统顺序图 5 问题域建模域模型类图 6 OO模型的集成 要点回顾阅读章节要求2022年6月7日星期二2/117先导案例 无限电子公司:供应链一体化2022年6月7日星期二3/117概述 在OOA中需要使用事实发现技术。 事实发现行为称做发现活动,发现必须先于理解。 本章学习发现的下一个阶段:建立理解。 事件发生在系统必须响应的商业环境中。事件被定义和记录在事件表中。新系统必须能够通过运行系统活动(用例)来响应商业事件。 2022年6月7日星期二4/11
2、7 系统的信息(包含在商业过程中的事物信息 )存储需求或使用传统方法中的ERD进行记录,或用OO方法中的类图进行记录。 学习:使用OO的分析模型和技术来理解和定义新系统的需求。 OO的分析和OO设计之间的界限并不明显,因为系统的设计就是对分析阶段中用于定义需求的模型进行改进和扩展得到的。2022年6月7日星期二5/117面向对象分析(OOA) 系统分析过程中使用对象建模的方法被称为面向对象分析(OOA)。 2022年6月7日星期二6/117OOA技术用于 研究现有对象,看它们是否能够被复用或者被调整用于新的用途; 定义各种新对象和修改后的对象,它们将与现有对象一起组合成一个有用的企业计算应用系
3、统。2022年6月7日星期二7/117对象建模(Object Modeling) 是一种用于辨识系统环境中的对象和这些对象之间关系的技术。 对象建模方法要求使用完全不同于数据建模和过程建模的方法和图形记号。 2022年6月7日星期二8/117术语 对象:某种存在的,或者能被看到、触摸或以其他方式感觉到的事物,用户就该事物存储数据和相关行为。 属性:表示关于一个对象相关特征的数据。 对象实例:由描述特定的人、地点、事物或者事件的属性值构成。 行为:指的是对象可以做的事情,以及在对象数据(或属性)上执行的功能。在OO环境中,对象的行为通常被称为方法、操作或者服务。 封装:几项内容一起打包成一个单元
4、(信息隐藏)。2022年6月7日星期二9/117考虑我们所处的环境 教室中的所有人,我们中的每一个都代表人对象的一个实例; 我们中的每一个都可以按照一些公共属性描述,例如:姓名、社会保险号、电话号码、地址等。2022年6月7日星期二10/117对象的行为 当看到周围环境中的门对象时,可能仅仅看到一个不能思考的静止对象几乎很少执行什么动作。 在用于系统开发的OO方法中,门对象可以同假定能够在其上的行为相关联。 例如,门可以打开,可以关闭,可以锁上,或者可以开锁。 所有这些行为都与门对象相关,并且由门对象实现,而不是由其他对象实现。2022年6月7日星期二11/117以电话对象为例 什么行为同一个
5、电话相关联? 随着技术的进步,我们实际上有了语音激活的电话,我们可以应答、拨号、挂断,还可以执行其他与电话相关的行为。 因此,用于系统开发的OO方法要求我们调整通常看待对象的方式。2022年6月7日星期二12/117重要的OO原理 对象单独地负责执行任何在其数据(或属性)上操作的功能或者行为。 例如:只有你(一个对象)可以修改(行为)你的名字和家庭住址(你的属性)。 引出对象的一个重要概念,即封装。 对象的属性和行为都被封装到一起作为那个对象的一部分。 访问或修改对象属性只能通过那个对象的行为来实现。2022年6月7日星期二13/1171 统一建模语言和对象管理组织 OMG是一个由800多个软
6、件销售商、开发商和组织组成的共同体,他们致力于发展和传播OO系统。 成立于1989年。 使命:在分布式计算系统的开发中提高应用对象技术的理论和实践水平。 目标:为基于广泛接口规格的OO的应用程序提供一个通用的体系框架。 2022年6月7日星期二14/1172 OO的需求 系统开发过程开始于确定事件和事物。 事件:新系统所必须考虑的商业过程; 事物:包含在商业过程中的问题域对象。 过程和对象通常一起定义(不断切换)。 必须学会将所有不同的模型和它们组合在一起生成完整的系统功能需求图。 本章主要讨论一个关于模型的集合,它根据OO方法中的用例来捕获系统需求四种模型用例图、用例描述、活动图和系统顺序图
7、,用来从不同的观点描述系统用例。 2022年6月7日星期二15/117使用模型来记录需求最大的好处 在于它能帮助系统开发员仔细和清楚地考虑处理的细节,以及系统相关人员的信息需求。 2022年6月7日星期二16/117四种模型 1. 用例图 2. 系统顺序图 3. 消息 4. 状态图2022年6月7日星期二17/1171. 用例图 一种用以显示不同的用户角色和这些用户角色如何使用系统的图。 以图形化的方式描述系统与外部系统和用户的交互。 换言之,它们以图形化的方式描述谁将使用系统,以及用户期望以什么方式与系统交互。2022年6月7日星期二18/117 目的:识别新系统的“用法”或用例,即识别如何
8、使用系统。 用例图本质上是事件表的延伸。 用例图是用于记录系统必须支持的所有功能的一种简便方法。可以用一个综合的用例图来描述整个系统。 活动图可以用来定义用例。 2022年6月7日星期二19/1172. 系统顺序图(SSD) 在用例或场景中,用于显示外部参与者和系统之间的消息顺序的图。 以图形化的方式描述在一个用例或操作的执行过程中对象如何通过消息互相交互,说明了消息如何在对象之间被发送和接收以及发送的顺序。 用来定义一个用例的输入和输出,以及在用户和系统之间交互的顺序。 用于联系用例详细描述或活动图。 顺序图中,出入系统的信息流被称为消息。2022年6月7日星期二20/1173. 消息 用例
9、内部对象之间的通信。 当一个对象调用另一个对象的方法(行为)以请求信息或者某些动作时发生的通信。2022年6月7日星期二21/1174. 状态图 一种用以显示对象在各阶段中的生命和转换的情况的图。 用于建模一个特定对象的动态行为,说明一个对象的生命周期对象可以经历各种状态,以及引起对象从一个状态向另一个状态转换的事件。 状态图表(状态图)描述了每个对象状态的集合。 类图中所标识的一些对象有些状态情形需要跟踪,这些状态直接决定了对象的处理过程。2022年6月7日星期二22/117 客户订单有几个比较重要的状态条件,它们控制订单的处理过程,例如,订单只有在完成后才会发货。 状态图标识这些状态条件并
10、且标明允许的处理过程。 同时,状态图也可用于设计过程,以确定系统本身的各种状态,以及能够处理的可允许的事件上。 状态图既可以看做是分析工具,也可以看做是设计工具。 2022年6月7日星期二23/1173 系统活动:OO的用例/场景视图3.1 用例和参与者3.2 用例图3.3 开发用例图3.4 用例详细描述2022年6月7日星期二24/117 用例分析的目标用来标识和定义系统必须支持的所有商业过程。 分析员在综合等级和详细等级两个层次上定义用例。 事件表和用例图为一个系统提供了所有用例的综合。 关于每个用例的详细信息使用用例描述、活动图和系统顺序图,或者这些模型的组合进行说明。 2022年6月7
11、日星期二25/1173.1 用例和参与者 用例:系统运行的活动,通常由系统用户来响应需求。 用例中蕴涵使用系统的人:参与者。 参与者通常处于自动化系统边界之外,但是它也有可能是系统手动部分的成员。2022年6月7日星期二26/117参与者与事件的源的区别 参与者的概念与在事件表中所定义的事件的“源”在内涵上略有不同。 事件的源:指事件的发起者,例如一个用户,并且它通常在系统(包括手动系统)的外部。 参与者实际上是亲自和计算机系统进行交互的人。2022年6月7日星期二27/117定义参与者和系统进行交互的人定义为参与者。 (自动化系统所必须响应的交互)将能够接触自动系统的人定义为参与者。有些参与
12、者可能是其他的系统或者从系统接受服务的设备。把参与者看成一个角色。 考虑参与者和用例,认为用例是参与者想要完成的目标。 2022年6月7日星期二28/117例:RMO中用例“产生新订单”的情况可能会涉及一个销售代表在电话里与一名客户进行交谈。如果这位客户直接在Internet上订货,那他也是个参与者。 标志目标的方法:订单职员使用系统来生成新订单。 3.2 用例图 用例图:概括有关参与者和用例信息的一个图形化的模型。 1. 自动化边界和组织 2. 组织用例图的方法 3. 用例之间的关系 4. 用例图与事件表的比较2022年6月7日星期二29/117例:有一个参与者的简单用例。*1. 自动化边界
13、和组织 在全套的用例上画一条边界线。该边界是自动化边界。它表示环境(参与者的居住地)和自动系统的内部功能之间的边界。2022年6月7日星期二30/117员对前面的图进行了扩展,增加了参与者和用例。在该实例中,订单员和用户都可直接访问系统。正像有关系线连接表示的那样,每个参与者可以操作所有的用例 。2. 组织用例图的方法使用子系统 包含涉及一个特定参与者的所有用例2022年6月7日星期二31/117使用子系统 订单输入子系统用例图,显示系统边界 2022年6月7日星期二32/117员RMO客户支持系统用例图(子系统) 2022年6月7日星期二33/117*包含涉及一个特定参与者的所有用例2022
14、年6月7日星期二34/117图表示了与一个客户参与者相关的所有用例。该图在表明所有通过Internet访问的活动时非常有用。分析员可以选择绘制基于项目团队需要的用例图。如果计划与市场部门经理会面讨论所有涉及直接客户交互的用例,则图中的用例图会很有用。3. 用例之间的关系 扩展 包含泛化2022年6月7日星期二35/117关系 通常在用例图的开发过程中,一个用例需要用到通用子程序所提供的服务。 例如,“订单输入子系统”的两个用例是“产生新订单”、“更新订单”,这两个用例均须检查客户的账号是否正确。 因此,可以定义一个通用的子程序来完成这个功能,并且它变成了一个附加用例。 2022年6月7日星期二
15、36/117有关系用例的订单输入子系统 关系可读做“产生新订单验证用户账号”。 关系也称关系或者关系。2022年6月7日星期二37/117名为“验证用户账号”的用例,它被 “产生新订单”、“更新订单”两个用例调用。用例之间的关系由带箭头的连接线表示。 “检查条目可用性”可能是关系的一部分。分析员可定义两种类型的关系:一种是通用内部子程序,如“验证用户账号”,它不被外部参与者直接引用;另一种是能被外部参与者直接引用,如“检查条目可用性”。扩展 当某个基本用例由于需要附加一个用例来扩展或延伸其原有功能时,附加的扩展用例与原有的基本用例之间的关系就体现为扩展关系。 在UML中可使用带有说明的依赖关系
16、表示“扩展关系”。 例:网上购物系统中有“支付”用例,而“网上支付”用例是“支付”用例的扩展用例。 2022年6月7日星期二38/117 支付网上支付基本用例扩展用例* 从基本用例A到扩展用例B的扩展关系表明:按基本用例A中指定的条件,把扩展用例B的行为插入到由A中的扩展点定义的位置。 也就是说基本用例A可以单独存在,但在一定的条件下,它的行为可被另一个用例B的行为扩展。 一个用例可以扩展多个用例,一个用例也可以被多个用例扩展。 扩展用例不能作为动作序列单独出现,但基本用例在缺少任何扩展用例的情况下也必须是独立的用例。2022年6月7日星期二39/117包含 如果在若干个用例中有某些相同的动作
17、,则可把这些相同的动作提取出来单独构成一个用例(称抽象用例)。(将多个用例中的公共部分抽取出来作一个单独用例)。 当某个用例使用该抽象用例时,就好像这个用例包含了抽象用例中的所有动作。 UML中使用带有说明的依赖关系表示“包含关系”。 例:网上购物系统中有一个“订购”用例,而“查询”用例是“订购”用例的包含用例。2022年6月7日星期二40/117*订购查询包含用例 如果从用例A到用例B存在包含关系,则用例A在它内部说明的某一位置上显式地使用用例B的行为的结果。 被包含的用例B作为包含它的用例A的功能的一部分出现。 可以把包含关系想像为基本用例调用供应者用例,基本用例仅仅依赖供应者用例执行的结
18、果,而不依赖供应者用例的内部结构。 一个用例可以包含多个用例,一个用例也可以被多个用例包含。2022年6月7日星期二41/117例:网上订购商品 软件系统需要对顾客的信用进行检查,检查输入的信用卡号是否有效,信用卡是否有足够的资金支持本次订购。由于该功能在“订购”过程中使用,因此是包含关系。 在执行“改变订购量”用例时,只有预定量改变时才执行“检查信用”用例,如果预订量不改变,则不执行“检查信用”用例。 由于“检查信用”用例是可选执行的,因此,用例之间存在扩展关系。箭头从可选运行的用例“检查信用”指向被扩展的用例。2022年6月7日星期二42/117顾客订购检查信用改变预订量扩展和包含之间的异
19、同 两种关系意味着从几个用例中抽取那些公共的行为并放入一个单独的用例中,而这个用例被其他用例扩展或包含。 包含和扩展的目的是不同的。 通常在描述一般行为的变化时采用扩展关系; 在两个或多个用例中出现重复描述又想避免这种重复时,可以采用包含关系。2022年6月7日星期二43/117泛化 从用例A到用例B之间的泛化关系表明:父用例表示通用的行为序列。通过插入额外的步骤或定义步骤,子用例特化父用例。 UML表示用例泛化的方法与类相同。 例:在线股票经纪人系统把通用用例“做交易”特化为子用例“交易债券”、“交易股票”和“交易期权”。父用例包含所有交易类型都会执行的步骤,如输入交易密码。每个子用例都包含
20、了针对某种交易类型特别安排的额外步骤,如输入期权的行权日期。 2022年6月7日星期二44/117做交易交易债券交易股票交易期权4. 用例图与事件表的比较模型的观点有细微的不同标识临时事件和状态事件时有差别定义一个用例支持多个商业事件2022年6月7日星期二45/117模型的观点有细微的不同 事件表通常注意商业过程。 它通过标识商业事件,以及这些事件的外部、初始化源的信息来关注商业过程。 外部的源是引起商业事件初始化的原因,并且它们能从自动系统中轻松的移除。 用例图强调了自动系统。因为它只与自动系统相连,所以参与者与自动系统有联系并且不一定是商业事件的发起者。2022年6月7日星期二46/11
21、7标识临时事件和状态事件时有差别 由于用例通常被外部参与者初始化,所以如果分析员不仔细标识每一个事件,那么临时事件和状态事件经常被忽略。 用例定义太窄将成为用例建模的一个缺陷。 如:在线系统菜单常包括用于表示事件表中临时事件的菜单选项,以便这样的事件能够被用户触发并且作为纯粹的临时事件。 建议:为每个临时事件和状态事件创建用例以确保这些需求不被忽略。2022年6月7日星期二47/117定义一个用例支持多个商业事件 满足3个标准,则定义一个用例: 本质上相同的处理发生在自动系统内部; 本质上相同的信息被更新; 本质上相同的信息从事件中输入和输出。 例:开发事件表过程中,添加新用户和更新用户两个事
22、件已被标识出来。从系统观点出发,两个商业事件的用例几乎一样,因为它们都包含更新用户文件。可定义一个单独的用例来支持这两个商业事件,该用例可命名为“维护客户账户信息”。2022年6月7日星期二48/117分析员会同时完成事件表和用例图,并不断更新。在商业事件对单一、简单的数据文件或表进行基本的文件维护时,这些条件常常能够满足。有时单一事件可触发非常复杂的处理需求,这将使系统活动分解为两个用例以更好地管理系统复杂性,使其变得更加有意义。 3.3 开发用例图1. 两个切入点 2. 两步迭代3. CRUD分析2022年6月7日星期二49/1171. 两个切入点 若创建了事件表,则用事件表标识用例 标识
23、使用系统的参与者和它们执行的功能2022年6月7日星期二50/117若创建了事件表,则用事件表标识用例 仔细分析事件表中的每个事件以确定系统为支持这些事件、发起这个事件的参与者,以及由于该事件而触发的其他用例所执行的处理。 当一个模型转向另一个更详细的模型时需要不断精炼,仔细分析事件和事件表非常重要。 开发人员可将一个单一的事件标识为用例,如所需的处理很相似,可把几个事件组合成一个单独的用例;或如果处理很复杂,也可标识多个用例。 多个用例的标识通常发生在它们有关系和两个用例从一个大用例分解得到时,或发生在一个附加用例按照通用子程序的方式被定义时。 2022年6月7日星期二51/117 该图显示
24、的客户支持子系统是使用该方法开发。图中定义的绝大多数用例直接来自事件表。 用例名称来自事件表的活动/用例栏中的描述。 例外:由于临时事件通常可手动发起,所以要为每个临时用例使用标识外部参与者选项。 “客户修改账户信息”事件。在该实例中,用例定义扩展到和所有维护客户信息相关的场景中。同样,该用例被命名为维护客户账户信息,指的是添加、更新和删除。 这些都是用例对事件表进行提炼更新的例子。 2022年6月7日星期二53/117RMO客户支持系统的完整事件表标识使用系统的参与者和它们执行的功能 若没创建事件表,则开发用例图的另一个切入点是标识使用系统的参与者和它们执行的功能。 记住两个前提条件: 为一
展开阅读全文