您好,欢迎访问三七文档
第四章OOA初阶§4.1OOA的语言§4.4分析模型的完整性与一致性§4.3实例分析§4.2OOA的方法§4.5分析文档11.从OO观点出发,OOA模型描述:§4.1OOA的语言2对象--类层:问题域中概念及实体的抽象问题域中对象之间的通信与协调问题域中对象及它们之间的结构关系服务层:对象的服务及对象之间的消息连接结构层:问题域中的结构关系(继承与聚集)主题层:问题分解,分而治之2.OOA模型的内容:属性层:对象的属性及对象之间的实例连接3建立问题空间中概念及实体的抽象表示——对象将对象归并为类或抽象类§4.1.1对象--类层表示图元:名称(带对象实例的)类抽象类名称4§4.1.2属性层表示对象在问题空间中的相关属性表示对象之间的实例连接(数量对应关系)表示图元:BankBank_Id…...CardCard_IdCard_Holder…...1*5§4.1.3服务层表示对象在问题空间中的相关、外部可见服务表示对象之间的消息传递表示图元:BankCard6§4.1.4结构层表示继承关系表示聚集关系表示图元:文章已录用已刊登电梯马达按钮面板11117§4.1.5主题层将关系比较密切的对象/类划分为某主题词位于不同主题词中的对象/类之间的关系较为松散表示图元:电梯管理电梯马达电梯内面板到达指示面板目的地按钮面板紧急按钮超载传感器面板电梯控制电梯事件召唤事件目的地要求事件电梯到达事件召唤按钮面板81.采用自然语言处理技术标识问题域中的概念及其相互关系§4.2OOA的方法§4.2.1发现和识别对象采用自然语言分析技术获得概念集合采用矩阵分析技术获得概念之间的相互关联将上述结果表示成OOA工作表格条目(0)(1)(2)(3)(4)(5)注解(0)忽略(1)可能的对象/类(2)可能的继承关系(3)可能的聚集关系(4)可能的对象/类的属性(5)可能的对象/类的外部服务对象在用户需求的正文描述中可能呈以下形式:(1)与目标系统交互信息的外部实体。例如,物理设备,操作人员或用户,其他有关的子系统。(2)现实问题信息域中的概念实体。例如信号、报表、显示信息。(3)目标系统运行过程中可能出现并需要系统记忆的事件。例如核电站运转时的意外事故。(4)与目标系统发生交互作用的人员所扮演的各种角色。例如管理人员,工程师,销售人员。(5)作为系统环境或问题上下文的场所、位置。例如卫星地面接收站的安装位置(经度、维度、海拔高度)。(6)有关的组织机构。例如,单位、小组。(7)表示一组成分对象的聚集对象。例如物理设备。9102.根据DFD,ER和状态转换图进一步标识有用的对象/类顶级DFD中:外部实体可构成潜在的对象输入/输出数据流应在OOA模型得到适当的接收和处理DFD子图中的函数/过程可构成潜在的外部服务ER图中:实体可构成潜在对象实体的属性可构成潜在的对象属性数量对应关系可构成OOA模型中的实例连接状态转换图:系统必须处理的外部事件以及系统在处理这些事件时发生的状态变迁事件的接收、响应过程有助于对象标识状态信息有助于标识对象的属性113.对候选对象进一步筛选、鉴别(1)对象应具有记忆其自身状态的能力。(2)对象应具有有意义的操作,以某种方式修改其状态(属性值)。(3)对象应具有多种有意义的属性。(4)为对象定义的有关属性应适应于对象的所有实例。(5)为对象定义的有关操作应适合于对象的所有实例。(6)对象应是软件需求模型的必要成分,与设计和实现方法无关。潜在对象理由鉴别结论用户传感器控制面板系统传感器编码传感器类型密码电话号码传感器事件警报器角色或外部实体外部实体外部实体聚集对象概念实体概念实体概念实体概念实体事件外部实体不符合(1)(2)符合(1)-(6)符合(1)-(6)符合(1)-(6)不符合(3)不符合(3)不符合(3)不符合(3)符合(1)-(6)符合(1)-(6)121.标识继承关系§4.2OOA的方法§4.2.2标识结构1.1标识已有类之间的继承关系:是否自然?1.2从已有类出发寻找子类:对象的特殊化是否位于问题域中?是否自然?对象的特殊化可否使用额外的属性或外部服务进行刻画?1.3从已有类出发寻找公共父类:是否可以抽象出多个父类的公共属性或外部服务以简化OOA模型?132.标识部分—整体关系§4.2OOA的方法§4.2.2标识结构2.1标识已有类之间的部分—整体关系:是否自然?2.2从已有类出发寻找部件类:是否可以提取多个类的公共部件类以简化OOA模型?提取的部件类是否自然?2.3从已有类出发寻找整体类:是否可以将已有类组装成为新的整体类?新得到的整体类是否位于问题域中?是否自然?14§4.2.2标识结构2.4标识部分—整体关系中的重复度与参与度一个整体类的实例,可能含有多个部件类的实例?一个部件类的实例,可能出现在多个整体类的实例中?一个整体类的实例,是否必须包含某个部件类的实例?一个部件类的实例,是否必须出现在某个整体类的实例中?(是否可以独立出现?)151.根据问题空间中系统/子系统、问题/子问题的自然分解关系初步确定主题词§4.2.3标识主题词4.随分析的不断深入对主题词的内涵和划分进行必要调整2.主题词可以具有层次结构3.根据主题词将要求分析任务划分至各分析小组161.标识属性§4.2.4标识属性及实例关系1.1在ER图中,实体的属性可能构成OOA模型的属性1.3属性必须适应于类的所有实例,否则应考虑继承关系的可能性1.2哪些属性在问题空间中完全刻画了被标识的每个对象?规则1.4导出属性和外部不可见属性应略去172.标识实例关系§4.2.4标识属性及实例关系1.1利用自然语言处理方法自动收集对象之间的关系1.3导出关系可以省略1.2实例关系应反映自然域中的限制或事务规则181.在自然语言处理过程中,考虑相关的动词可否构成外部服务§4.2.5标识服务和消息:分析对象之间的动态关联2.考虑对象的生命周期(创建、删除、维护)4.基于状态—事件—响应图提取对象之间的消息传递3.结合数据流图考虑对象的计算性行为5.通过运行走查细化外部服务的定义19§4.2.5标识服务和消息:分析对象之间的动态关联1.任一对象的所有外部服务均由传入该对象的消息引发3.消息连接必须与实例关系相一致2.属性必须与某外部服务相关联,否则可删去规则20OOA小结1.1采用自然语言处理技术标识问题域中的概念及其相互关系1.发现和识别对象1.2根据DFD,ER和状态转换图进一步标识有用的对象/类1.3对候选对象进一步筛选、鉴别2.1标识继承关系2.标识结构3.标识主题词4.标识属性及实例关系5.标识服务和消息:分析对象之间的动态关联2.2标识部分——整体关系21§4.3实例分析电梯控制系统(ECS)在M层的建筑内安装了N部电梯。电梯问题是指这些电梯的逻辑控制问题:1.每个电梯有一些按钮,每个按钮对应一个楼层。当按下按钮后,按钮灯亮,并指出电梯开往相应楼层。当电梯到达该楼层后,按钮灯熄灭。2.除底层和顶层只有一个按钮外,每个楼层有两个按钮,分别指示上楼和下楼请求。当按下后,按钮灯亮。如果电梯已经到达该楼层,或者遇到有冲突的请求时,按钮灯熄灭。在后一种情况下,如果两楼层同时发出请求,则只能取消其中一个请求。决定服务优先次序的算法应尽量减少两个请求的等待时间。22§4.3实例分析电梯控制系统(ECS)(续)3.当没有服务请求时,电梯保持在最后一个目的楼层,电梯门关闭。4.系统以事件驱动的方式响应楼层对电梯的请求。所有楼层的优先级是相同的。5.系统以事件驱动的方式响应电梯内部对到达楼层的要求,并按照电梯运动的方向依次完成这些要求。6.每个电梯都有一个紧急按钮,按下后向管理人员发出报警信号,然后电梯被置为“不可用”状态。每个电梯都有取消“不可用”状态的机制。231.相关的实体及概念有:电梯、电梯门、电梯内部建筑物、楼层、顶层、底层、目的楼层按钮、按钮灯、紧急按钮上楼请求、下楼请求电梯运动方向管理人员优先级报警信号、不可用状态§4.3.1发现和识别对象242.顶级DFD:§4.3.1发现和识别对象目的地按钮面板召唤按钮面板电梯楼层传感器超载传感器到达指示面板目的地按钮面板召唤按钮面板马达ECS目的地请求召唤请求电梯状态楼层消息超载状况显示到达楼层显示目的地召唤响应马达命令253.实体关系图:§4.3.1发现和识别对象楼层召唤按钮目的地按钮电梯联系联系联系联系264.事件响应模型:§4.3.1发现和识别对象①召唤电梯修改召唤按钮状态②目的地请求修改目的地按钮状态③电梯到达调度楼层显示到达楼层,修改目的地按钮状态,修改召唤按钮状态,命令电梯停靠④电梯到达非目的地楼层显示到达楼层⑤紧急按钮被按下修改电梯状态为“不可用”,报警,电梯就近停靠⑥电梯超载电梯停运,报警⑦电梯就绪开始电梯调度275.状态转换图:§4.3.1发现和识别对象空闲运行超载停止不可用13757762,4事件确认规则:有确定的发生时刻系统应对该事件有所反应28在OOA工作表格上,进行筛选,最后确定以下对象/类:§4.3.1发现和识别对象电梯、马达、到达指示面板、目的地按钮面板紧急按钮、超载传感器楼层、召唤按钮面板召唤事件、目的地要求事件、电梯到达事件下面的实体或概念不作为对象:建筑物电梯门楼层传感器楼层上的到达指示面板按钮29§4.3.2标识结构电梯马达到达指示面板目的地按钮面板紧急按钮超载传感器111111111130§4.3.2标识结构电梯事件召唤事件目的地要求事件电梯到达事件面板召唤按钮面板电梯内面板到达指示面板目的地按钮面板31§4.3.3标识主题词电梯管理电梯马达电梯内面板到达指示面板目的地按钮面板紧急按钮超载传感器面板电梯控制电梯事件召唤事件目的地要求事件电梯到达事件召唤按钮面板32§4.3.4标识属性及实例关系ArraivalEventarrival_id,arrival_floor,elevator_idArrivalPanelarrival_panel_idDstPaneldst_panel_id,dst_pendingElevatorelevator_id,cur_direction,cur_floor,cur_state,status_directionElevatorEventevent_id,floor_idEmergButtonEmerg_button_id,cur_statusFloorfloor_idMotormotor_idOverweightSensoroverweight_senser_id,overweight_statusPanelpanel_idPanelInElevatorelevator_idSummonEventsummon_id,summon_typeSummonPanelsummon_pending_up,summon_pending_down33§4.3.4标识属性及实例关系标识实例连接:电梯到达事件与一部电梯相关联电梯可与0到多个到达事件相关联目的地请求事件与一个目的地面板相关联目的地面板与0到多个目的地请求事件相关联召唤事件与召唤面板之间的实例连接类似于前电梯与楼层:多对多实例连接34§4.3.5标识服务和消息前述的顶级DFD和状态—事件—响应模型为标识对象间的消息传递提供了很好的线索在标识对象/类的外部服务之前,首先要确定:对象间如何协调才能完成预定目标35§4.3.5标识服务和消息对ECS,有三种选择:集中控制方法,设置ElevatorScheduler对象,通过接收召唤事件和目的地请求事件,随时监控电梯状态,实现调度策略每个Elevator对象自行决定下一目标楼层,多个Elevator对象之间应相互协调每个Floor对象在电梯到达该楼层时实现电梯调度,多个Floor对象之间应相互协调以上方案的选择取决于以下考虑:结构简单、自然,强内聚、松耦合软件可扩充性、可修改性、可维护性好可重用性好36§4.3.5标识服务和消
本文标题:OOA的语言
链接地址:https://www.777doc.com/doc-11989 .html