软件工程导论课件第10章-面向对象的分析_第1页
软件工程导论课件第10章-面向对象的分析_第2页
软件工程导论课件第10章-面向对象的分析_第3页
软件工程导论课件第10章-面向对象的分析_第4页
软件工程导论课件第10章-面向对象的分析_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章面向对象分析,10.1面向对象分析的基本过程10.2需求陈述10.3建立对象模型10.4建立动态模型10.5建立功能模型10.6定义服务10.7摘要,示例,问题:一个商店住三个人,一个房间30。所以每家10元,共给店主30元住一个房间。后来,店主发现有一个错误。房价应该是25元,所以他给了5元,第二个孩子,第二个孩子,还给房客。肖尔海新贪污2元,退还甲、乙、丙三方各1元。这样,每个房客付了10-1=9元,3927元,加上小二腐败2元,一共29元,请问1元在哪里?如何对待和解决上述问题?过程论观点,经过五个步骤,数据变成:乙方和丙方各1元,老板25元,小二2元,这是终止状态,也是这个过程的输出,对象论观点,对象论眼睛,有五个基本对象,每个对象都有自己的一系列数据和逻辑,这是这件事的本质,所涉及的东西都是那么几个对象。最初,他们是相互独立的,当他们老了的时候,彼此没有关系。只是在停留在商店的外部驱动力的作用下,几个对象偶尔暂时相互联系,利用其他对象提供的公共服务来完成一些交互。示例中的五个对象非常相似,可以视为一种事物。因此,我们给出了一个名为“人”的类,并认为这五个对象都是这个类名为“人”的具体例子。我们称之为例子。在遇到相似的物体后,我们都知道这个物体属于“人类”范畴。10.1面向对象分析的基本过程,1。总结面向对象分析的过程,以提取和整理用户需求,并建立问题域的精确模型。步骤:理解-用户、分析师和领域专家的表达-需求规格说明(对象模型、动态模型、功能模型)的验证-对象模型的模糊性和完善性是最基本、最重要和最核心的。10.1面向对象分析的基本过程。在面向对象分析中,三个子模型主要由对象模型、动态模型和功能模型组成。静态结构(对象模型)三个子模型交互顺序(动态模型)数据转换(功能模型)解决不同的问题,三个子模型的重要性也不同。2、3个子模型和5个层次,10.1面向对象分析的基本过程,5个层次就像对象模型的5个张水平切片,一个层次比另一个层次显示更多的对象模型细节。主题指的是读者理解大型复杂模型的机制(记忆原理7 2)。复杂问题(大系统)的对象模型通常由以下五个层次组成:面向对象的分析过程,寻找类和对象识别结构,识别主题定义属性,建立动态模型,建立功能模型定义服务,10.1面向对象分析的基本过程,10.2需求声明,10.2.1编写需求声明的要点是阐明“做什么”而不是“怎么做”。需求陈述的内容包括:问题范围、功能需求、性能需求、应用环境假设、自动柜员机系统问题描述、银行网络包括柜员和自动柜员机、自动柜员机共享中心共享。每家银行都使用自己的电脑来维护自己的账户,并处理账户所属的交易,包括存款和取款。一些银行有自己的出纳台,它们直接与银行的计算机通信。出纳员输入账户数据和交易数据。自动柜员机与中央计算机通信,中央计算机与银行结算。自动柜员机接受金融卡,并要求用户进行一些操作,然后与中央计算机进行通信,执行交易,提供现金和打印收据。该系统要求保留交易记录并严格遵守安全规定。可以同时访问同一个客户帐户。10.2需求陈述,10.2.2示例:自动柜员机系统,自动柜员机系统,10.2需求陈述,10.3建立对象模型,建立对象模型的典型步骤:确定对象类别和关联,对大型复杂问题的几个主题的进一步划分;向类和关联添加属性以进一步描述它们;使用适当的inh10.3建立对象模型,10.3.1建立类和对象1。寻找候选类别和对象大多数客观事物分为5类:1)感知物理实体,如汽车、书籍、房屋;2)人员或组织的角色,如雇员、雇主和出纳员;3)应记住的事件,如表演、采访和事故;4)两个或多个对象的交互,例如购买;5)需要解释的概念,如政策和法律;名词分析方法使用自然语言来编写需求语句,将语句中的名词作为类和对象的候选,考虑形容词的属性,并将动词作为服务(操作)的候选。以自动柜员机系统为例:找出报表中的所有名词作为类别和对象的初步候选:银行、自动柜员机、系统、中央计算机、分行计算机、出纳终端、网络、总部、分行、软件、成本、城市、街道、营业厅、储蓄所、出纳、存款人、现金、支票、账户、物品、现金交换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款金额、账单、访问权限。通信链接事务日志,2。选择正确的类别和对象主要基于以下标准,删除不正确或不必要的类别与对象冗余无关(1),(3)一般属性(5)操作(6)实现,银行,自动柜员机(ATM),系统,中央计算机分支计算机,出纳终端,网络,总部,分支机构,软件,成本,城市,街道,营业厅,储蓄所,出纳员,储户,现金,支票,账户,东西,现金交换卡,余额,磁卡,分支代码,卡号,用户,副本,信息,密码,类型,取款,票据通信链接事务日志(保存者、用户;现金交换卡、磁卡和复印件),(成本、城市、街道、营业厅和储蓄所),(银行、接入、信息、网络、系统、软件等。),(现金、支票、取款金额、账单、余额、分行代码、卡号、密码、类型),(交易日志、通信链接),访问,2。选择正确的类别和对象自动柜员机、中央计算机、分行计算机、柜员终端、总行、分行、柜员、存款人、账户、交易和现金交换卡。10.3.2确定关联1。初步确定描述性动词或动词短语在关联要求的陈述中使用,这通常表示关联。1)通过直接提取动词短语获得的关联总行有自动柜员机,存款人有账户,分行有计算机维护账户.2)需求表中隐含的关联分行构成总行分行托管账户.3)根据问题域知识获得的关联现金交换卡访问账户,分行使用柜员.通过从网络中直接提取动词短语而获得的相关联的自动柜员机、中央计算机、分支计算机和出纳员终端。总部有几台自动取款机。自动取款机位于大街上。分行提供分行计算机和出纳终端。出纳终端位于分支机构和储蓄所。该分支机构分担软件开发的费用。储户有账户。分行计算机处理账户的交易。分行计算机维护账户。柜员终端与分行计算机通信。出纳员输入账户的交易。自动柜员机与中央计算机交换交易信息。中央计算机确定交易和分支机构之间的对应关系。自动柜员机读取现金兑换卡。自动柜员机与用户互动。自动提款机吐出现金。自动取款机打印账单。系统处理并发访问。隐含的关联总部由多个分支机构组成。这家分行记账。总部有一台中央计算机。系统维护事务日志。该系统提供了必要的安全性。储户有现金兑换卡。中央计算机与分行通信,并根据对问题区域的了解,使用相关的现金兑换卡访问账户。这家分行雇用出纳员。,2。筛选(根据以下标准删除候选关联)通过初步分析获得的关联只能用作候选关联。需要进一步筛选以消除不正确或不必要的关联。根据以下标准删除候选关联:1)删除的类之间的关联,如“系统”和“成本”已被删除。因此,关联也应该删除:系统维护事务日志的分支分担软件成本;2)与问题无关或在实现阶段需要考虑的关联,如需要删除的关联:系统处理并发访问;3)瞬时事件关联应该描述问题域的静态结构,而不应该是瞬时事件,例如要删除的关联:自动柜员机读取现金兑换卡;4)关联是与三个或更多对象相关联的三元关联。它可以分解为二进制关联:“柜员进入交易账户”可以分解为:“柜员进入交易账户”和“交易修改账户”5)派生关联。可以删除由其他关联定义的冗余关联,例如“分行计算机维护帐户”,该帐户可以由“分行托管帐户”和“交易修改帐户”代替。3.进一步提高1)正确的名字,选择含义更清楚的名字。2)必要时分解类和对象。例如,“交易”被分解为“远程交易”和“柜员交易”。3)及时补充发现的缺失环节。4)标记多重性以确定相关的多重性并标记它。上述分析过程后得到的ATM系统原始类图。在开发大型复杂系统的过程中,为了降低复杂性,人们习惯于将系统进一步划分成几个不同的主题,这些主题应该由问题域而不是功能分解来确定。此外,主题应该根据最小化不同主题内的对象之间的相互依赖和交互的原则来确定。以自动柜员机系统为例,它可分为:总行(总行和中央计算机)自动柜员机系统分行(分行、分行计算机、柜员终端、柜员交易、柜员和账户等)。)自动柜员机(自动柜员机、远程交易、现金交换卡和存款人)。主题划分如下:10.3.4确保属性属性是对象的性质或特征。注意在分析阶段不要用属性来表示对象之间的关系,要用关联来表示两个对象之间的任何关系,使关系更清晰、更明显。确定属性的过程包括两个步骤:分析和选择。1.不是所有的属性都可以通过分析需求语句获得,但是需要领域知识和常识:在需求语句中,属性通常用名词短语来表达。只有借助领域知识和常识,才能分析和得出属性属性对问题领域的基本结构几乎没有影响的结论。属性的确定与问题域和目标系统的任务相关。不要考虑超出要解决的问题范围的属性。首先找到最重要的属性,然后逐渐添加其余的属性。分析阶段不考虑纯粹用于实现的属性。根据以下条件,删除不必要的属性:(1)在不同的应用领域中,一个对象是作为一个对象还是作为同一实体的属性,需要具体分析来确定。例如,存款人/账户。(2)错误地将关联类的属性视为对象的属性。如果某个属性依赖于某个关联链的存在,则该属性是关联类的属性,不应视为一般对象的属性。例如,带宽反映了关联的属性,而不是自动柜员机。(3)正确使用限定符可以减少关联的数量。如果固定某个属性值可以减少相关的多重性,我们应该考虑将属性重新定义为限定符。例如,在自动柜员机系统中,“分行代码”、“帐号”、“员工编号”和“车站编号”都是限定词。(4)将内部状态误认为属性如果属性是对象的非公共内部状态,则应该从对象模型中删除该属性。(5)在分析阶段过于详细应该忽略那些对大多数操作没有影响的属性。经过筛选,获得了自动柜员机系统中各种类别的属性。如图所示,图中还标记了一些限定词:“卡号”、“分行代码”、“账号”、“员工号”和“站号”。建立类之间的继承是为了共享它们的公共属性。继承也分层组织类。继承关系反映了一定深度的领域知识,这需要领域专家的密切合作。继承前人的成果是提高效率的重要方法,也是重用的基础。10.3.5确定继承关系。有两种方法来建立继承(即一般化)关系:(1)自下而上:从现有类中一般化父类;抽象类的共性概括了父类,父类本质上模拟了人类归纳思维的过程。例如,在自动柜员机系统中,“远程交易”和“柜员交易”是相似的,可以概括为父类“交易”;类似地,母类“输入站”是从“自动柜员机”和“出纳终端”推广而来的。(2)自顶向下:将现有的类细化为子类。现有的类被细分为更具体的子类,或者从已知的类派生出一个新的类,它模拟了人类的演绎思维过程:从一般到特殊。例如,被形容词修饰的名词短语经常暗示一些特定的类别。在分析阶段应避免过度细化。添加继承关系后的自动柜员机对象模型,很难在一个建模过程中获得完全正确的对象模型。以自动柜员机系统为例,讨论了可能的修改如下:10.3.6重复修改,1。分解类,如:将“现金兑换卡”分解为“卡权限”和“现金兑换卡”,使每个类的功能更加单一;2.合理的组织类别如“交易”由“更新”组成,包括“取款”、“存款”和“查询”等行为。3.合并类别如:合并“分公司”和“分公司电脑”、“总公司”和“中央电脑”。即修改后的自动柜员机对象模型图,对于只存储静态数据的系统(如数据库),动态模型没有多大意义。然而,在开发交互式系统时,动态模型起着重要的作用。10.4建立动态模型的方法,建立动态模型的步骤:编写典型交互行为的脚本,但不忽略常见交互行为。从脚本中提取事件,并确定触发每个事件的操作对象和接受该事件的目标对象。安排事件的顺序,确定每个对象的可能状态和状态之间的转换关系,并用状态图描述它们。最后,比较各种对象的状态图,检查它们的一致性,并确保事件之间的匹配。脚本:指的是在某个执行期间发生的一系列事件。脚本功能:描述了用户(或其他外部设备)和目标系统之间的一个或多个典型交互过程。编写脚本:的目的是确保重要的交互步骤不会被遗漏,这有助于确保整个交互过程的正确性和清晰性。编写脚本内容:描述了它可以包括系统中发生的所有事件或者仅由特定对象触发的事件。对于每个事件,应该指定触发事件的动作对象(系统、用户或其他事物)、接收事件的目标对象和事件的参数。编写步骤:为正常情况编写脚本。考虑特殊情况,如输入或输出数据的最大(或最小)值。考虑错误情况,例如,输入的值非法或响应失败。10.4.1、编写脚本时,交互行为可分为应用逻辑和用户界面两部分,系统分析员首先集中考虑系统的信息流和控制流,而不是首先考虑用户界面。不同的界面(例如,命令行或图形用户界面)可以实现相同的应用程序逻辑。动态模型侧重于应用系统的控制逻辑。用户界面的质量通常在用户是否喜欢或接受一个系统中起着非常重要的作用。在分析阶段不能忽略用户界面,应该确定界面的轮廓。如果没有实际使用,很难评估用户界面。因此,软件开发人员通常会快速构建用户界面的原型,供用户尝试和评估。10.4.2想象用户界面。下图显示了最初设想的自动柜员机接口格式。10.4.3绘制事件跟踪图。完整和正确的脚本为建立动态模型奠定了必要的基础。然而,用自然语言写的脚本往往不够简洁,有时在阅读时含糊不清。为了帮助建立动态模型,事件跟踪图通常在绘制状态图之前绘制。因此,有必要进一步明确事件以及事件与对象之间的关系。有两个步骤:确定事件并绘制事件跟踪图,10.4.3绘制事件跟踪图,以及1。确定事件,包括所有信号、输入、输出、中断、动作等。系统与用户(或外部设备)交互。从脚本中很容易找到正常事件,但是应该注意不要忽略异常事件和错误情况。从每个脚本中提取所有外部事件。物体传递信息的行为也是一个事件。例如,储户插入现金兑换卡,储户输入密码,自动取款机倒出现金等等都是事件。大多数对象到对象的交互对应于事件。什么可以称为事件?10.4.3为了绘制事件跟踪图,那些对控制流有相同影响的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论