面向对象分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第八章面向对象分析8·1OOA的基本任务8·2OOA的基本过程8·3需求陈述8·4建立对象模型8·5建立动态模型8·6建立功能模型8·7定义服务8·8本章重点8·1OOA的基本任务面向对象分析(Object-OrientedAnalysis,简称OOA)的主要任务是完全理解用户的需求和应用领域重的关键性背景知识,并用某种无二义性的方式编写成文档资料——软件需求规格说明书(以模型描述为基本部分,再加上接口要求、性能限制等其它方面的要求说明)。OOA的关键,是识别出问题域内的对象,并分析它们相互见的关系,最终建立起问题领域的简介、精确、可理解的正确模型。在三种模型中,对象模型是最基本、最重要、最核心的。8·2OOA的基本过程OOA实质就是抽取和整理用户需求,并建立起问题域的精确模型。分析工作主要包括理解、表达和验证三部分内容。首先系统分析员需要与用户及相关领域专家进行反复的交流,力求完全理解用户需求。为了验证需求的正确性、完整性和有效性,需要建立一个快速原型来加以验证。同时,需要从理解的需求中抽取出问题的本质属性,用模型准确的描述出来。包括三个子模型与五个层次。一、三个子模型面向对象建模得到的模型包括三个子模型:静态模型:描述系统的静态结构,包括对象的组成以及对象之间的关系。动态模型:描述系统的动态结构,给出对象之间的相互过程。功能模型:描述系统数据变换,指明做什么。对于解决问题的不同,各模型的侧重点也不同:①对象模型:最重要,开发任何系统都需要;②动态模型:对于开发交互式系统很重要;③功能模型:对于开发大运算量问题(如科学计算、编译系统等)很重要。二、五个层次类的边界类及对象层实例的边界结构层主题层主题服务层消息连接服务属性层实例连接属性三、OOA建立对象模型的五项活动(1)标识类及对象(2)标识结构(3)标识主题(4)定义属性及实例连接(5)定义服务及消息连接五个步骤常根据需要交叉进行四、进行OOA的步骤需求陈述识别类—&—对象确定结构划分主题定义属性建立动态模型建立功能模型定义服务8·3需求陈述陈述用户需求(应“做什么”),而不是设计与实现的策略(不是“怎么做”)。分清各种问题的性质、规模,功能需求,性能需求等提出可扩充性、性能与通信的要求8·4建立对象模型建立对象模型的步骤:识别类—&—对象确定关联划分主题确定属性识别继承关系迭代并反复修改模型一、确定类—&—对象【任务】:找出问题域中客观存在的对象。【策略】:S1:列出所有候选对象。S2:筛选出正确的对象。非正式分析:从需求陈述中挑出名词Class-&-Object形容词Attribute动词Method1、列出所有候选对象对象是对问题域中有意义的事物的抽象,既可以是物理实体,也可以是抽象的概念。分类如下:(1)可感知的物理实体。如飞机,汽车等。(2)人或组织的角色。如雇员,财务处等。(3)应该记忆的事件。如演出,交通事故等(4)多个对象之间的交互作用,通常具有交易或接触性质。如购买,销售等。(5)需要说明的概念。如政策法规等。1、列出所有候选对象(续)问题域描述中的名词,往往是候选的对象;根据问题域结构可提取候选的类及对象;与系统发生作用的其它系统和必要的设备可作为候选的类及对象;如:打印机等系统必须观测、记忆的与时间有关的事件可作为候选的类及对象;如:建立帐户的日期打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等1、列出所有候选对象(续)这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程事务等。其中属性是操作过程名,操作特权及操作步骤的描述;系统需了解掌握的物理位置、办公地点等可作为候选的类及对象;如:ATM机器、帐户等2、筛选出正确的类—&—对象严格的审查每个候选对象,去除不正确或不必要的,仅保留确实需要记录其信息或需要其提供服务的对象。筛选依据:(1)冗余:去除重复,保留一个。(2)无关:去除与本系统无关的对象。(3)笼统:或无需记忆,或具有更明确。(4)属性:去掉为其它对象属性的名词。(5)操作:既为名词又为动词,应慎重考虑(6)实现:去除与实现相关的类。ATM自动取款机示例例:从ATM需求分析中提出的名词集合银行、ATM、系统、中央计算机、分行计算机、柜员终端、网络、总行、分行、软件、成本、市、街道、营业厅、储蓄所、柜员、储户、现金、支票、账户、事务、现金兑换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款额、账单、访问筛选时依下列标准删除:、通信链路、事务日志冗余无关笼统属性操作既可为名词又可为动词的词,应慎重考虑。实现二、确定关联【任务】:确定对象之间的关联关系。【策略】:S1:初步确定关联。对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出S2:筛选。S3:完善。1、初步确定关联①需求陈述中涉及objets的动词短语:分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户分行计算机处理针对账户的事务1、初步确定关联(续)②需求陈述中隐含的关联总行由各个分行组成系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡③根据问题域知识得出的关联现金兑换卡访问账户分行雇用柜员2、筛选删除①与已删去的object有关的关联②与问题无关的或应在实现阶段考虑的关联ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户总行由各个分行组成分行计算机处理针对账户的事务分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问现金兑换卡访问账户系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡分行雇用柜员2、筛选删除(续)③瞬时事件:注意关联描述静态结构ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户总行由各个分行组成分行计算机处理针对账户的事务分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问现金兑换卡访问账户系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡分行雇用柜员2、筛选删除(续)④三元关联:分解为二元关联或限定关联柜员输入针对账户的事务=柜员输入事务+事务修改账户分行计算机处理针对账户的事务=分行计算机处理事务+事务修改账户ATM与中央计算机交换关于事务的信息=ATM与中央计算机通信+在ATM上输入事务注:识别链属性——某实体仅用于描述另两个实体的关系,且该实体本身不包含属性。例如“公司付给员工工资”可分解为“公司雇用员工”,附链属性“工资”。2、筛选删除(续)⑤派生关联:即可用其它关联定义的冗余关联总行拥有多台ATM分行提供分行计算机和柜员终端储户拥有账户总行由各个分行组成分行保管账户总行拥有中央计算机现金兑换卡访问账户储户拥有现金兑换卡分行雇用柜员分行计算机处理事务分行计算机维护账户柜员终端与分行计算机通信柜员输入事务事务修改账户ATM与中央计算机通信在ATM上输入事务中央计算机确定事务与分行的对应关系3、完善①正名:分行提供分行计算机和柜员终端=分行拥有分行计算机+分行拥有柜员终端②分解:适当分解前面确定的class-&-objects,使其适用于不同的关联事务=远程事务+柜员事务③补充柜员输入柜员事务在ATM上输入远程事务柜员事务输进柜员终端远程事务由现金兑换卡授权④标明阶数(可能经常变动,不要花太多时间)中央计算机分行计算机现金兑换卡总行分行拥有分行代码组成通信1+通信拥有柜员终端柜员事务柜员通信1+1+拥有1+雇用输入1+1+输入账户修改1+储户保管1+拥有1+远程事务ATM拥有1+1+1+访问1+1+修改授权1+输入1+ATM取款机的对象模型三、划分主题主题是把一组具有较强联系的类组织在一起而得到的类的集合。1、主题概念及其用途•主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;•主题一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;•主题有助于指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。三、划分主题(续)2、主题概念的特点•是由一组类构成的集合•一个主题内部的对象类应具有某种意义上的内在联系•描述系统中相对独立的组成部分(如一个子系统)•描述系统中某一方面的事物(如人员、设备)•解决系统中某一方面的问题(如输入输出)•主题的划分有一定的灵活性和随意性三、划分主题(续)3、何时引入主题依赖于模型自身复杂性小系统:不需引入主题;中等系统:先标识类及对象,然后引入主题;大系统:先标识主题,对问题域进行划分,分给不同的任务组;4、主题层次的控制中小型系统可只设一层主题,最多不超两层大型系统可只设两层主题,最多不超过三层三、划分主题(续)5、如何划分主题把每个结构作为一个主题;(选取结构中最上层的类作为一主题)通过实例连接互相联系的类可划分到一个主题把不属于任何结构,也没有实例连接的类作为一个主题。三、划分主题(续)6、如何精练主题从问题域和接口复杂性两方面入手:使用问题域精练主题,即用整体/部分结构对问题域进行划分,而不是按功能分解方法划分.按高内聚低偶合原则,通过使主题间依赖性和交互性最小原则保留能反映子问题域的主题.主题数目7个左右,则进一步精练主题。7、主题的表示法三种表示方式:压缩方式半展开方式、全展开方式编号主题名压缩方式编号主题名半展开方式:类名类名……类名主题名主题名……下层主题三、划分主题(续)7、主题的表示法三、划分主题(续)全展开方式:编号编号编号编号类图上原有的全部内容中央计算机分行计算机现金兑换卡总行分行拥有分行代码组成通信1+通信拥有柜员终端柜员事务柜员通信1+1+拥有1+雇用输入1+1+输入账户修改1+储户保管1+拥有1+远程事务ATM拥有1+1+1+访问1+1+修改授权1+输入1+1231.总行2.分行3.ATM三、划分主题(续)四、确定属性对象所保存的信息称为它的属性。类的属性所描述的是状态信息,每个实例的属性值表达了该实例的状态值。注意:①Attribute不表示objects之间的关系,只表示其本质性质,不要与链属性、限定词混淆。②暂不考虑纯用于实现的attributes(即单纯的内部状态)。③需求陈述中与已确定的objects有关的名词、形容词可能是选择的线索。五、识别继承关系①自底向上:将具有相同属性的classes向上归纳出父类。例②自顶向下:将现有classes向下细化出子类(但分析阶段避免过度细化).例③若某clas

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功