您好,欢迎访问三七文档
第十章面向对象分析(Object-OrientedAnalysis)§1.基本过程:RequirementstatementRapidprototypeModels其中model有三个:①Objectmodel:最重要,开发任何系统都需要;②Dynamicmodel:对于开发交互式系统(interactivesystem)很重要;③Functionmodel:对于开发大运算量问题(如科学计算、编译系统等)很重要。Category主题Class-&-ObjectStructure1+1+AttributeMethod§1.基本过程Objectmodel由五个层次组成(Coad&Yourdon,1991),相当于把五张透明胶片(transparencies)叠在一起,每一层显示更多的细节。§2.需求陈述第三章中已介绍过,需求陈述的内容包括:问题范围、功能需求、性能要求、应用环境、假设条件等等。陈述方式可繁可简,说明What而不是How。例:教材p.226-227,对AutomatedTellerMachine(ATM)的需求陈述。§3.建立ObjectModel1、确定Class-&-Object:第1步:列出所有候选对象(candidates),它们可能是物理实体人或组织要处理的事件对象间的活动抽象概念等等非正式分析:从需求陈述中挑出名词Class-&-Object形容词Attribute动词Method§3.建立ObjectModel第2步:去粗取精例:从ATM需求分析中提出的名词集合银行、ATM、系统、中央计算机、分行计算机、柜员终端、网络、总行、分行、软件、成本、市、街道、营业厅、储蓄所、柜员、储户、现金、支票、账户、事务、现金兑换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款额、账单、访问筛选时依下列标准删除:、通信链路、事务日志冗余无关笼统属性操作既可为名词又可为动词的词,应慎重考虑。实现§3.建立ObjectModel2、确定关联结构层第1步:收集——①需求陈述中涉及objets的动词短语:分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户分行计算机处理针对账户的事务②需求陈述中隐含的关联总行由各个分行组成系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡§3.建立ObjectModel③根据问题域知识得出的关联现金兑换卡访问账户分行雇用柜员第2步:筛选删除——§3.建立ObjectModel①与已删去的object有关的关联②与问题无关的或应在实现阶段考虑的关联ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户总行由各个分行组成分行计算机处理针对账户的事务分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问现金兑换卡访问账户系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡分行雇用柜员§3.建立ObjectModel③瞬时事件:注意关联描述静态结构ATM、中央计算机、分行计算机及柜员终端组成网络总行拥有多台ATMATM设在主要街道上分行提供分行计算机和柜员终端柜员终端设在分行营业厅及储蓄所内分行分摊软件开发成本储户拥有账户总行由各个分行组成分行计算机处理针对账户的事务分行计算机维护账户柜员终端与分行计算机通信柜员输入针对账户的事务ATM与中央计算机交换关于事务的信息中央计算机确定事务与分行的对应关系ATM读现金兑换卡ATM与用户交互ATM吐出现金ATM打印账单系统处理并发的访问现金兑换卡访问账户系统维护事务日志分行保管账户系统提供必要的安全性总行拥有中央计算机储户拥有现金兑换卡分行雇用柜员§3.建立ObjectModel④三元关联:分解为二元关联或限定关联柜员输入针对账户的事务=柜员输入事务+事务修改账户分行计算机处理针对账户的事务=分行计算机处理事务+事务修改账户ATM与中央计算机交换关于事务的信息=ATM与中央计算机通信+在ATM上输入事务注:识别链属性——某实体仅用于描述另两个实体的关系,且该实体本身不包含属性。例如“公司付给员工工资”可分解为“公司雇用员工”,附链属性“工资”。§3.建立ObjectModel⑤派生关联:即可用其它关联定义的冗余关联总行拥有多台ATM分行提供分行计算机和柜员终端储户拥有账户总行由各个分行组成分行保管账户总行拥有中央计算机现金兑换卡访问账户储户拥有现金兑换卡分行雇用柜员分行计算机处理事务分行计算机维护账户柜员终端与分行计算机通信柜员输入事务事务修改账户ATM与中央计算机通信在ATM上输入事务中央计算机确定事务与分行的对应关系§3.建立ObjectModel第3步:完善①正名:分行提供分行计算机和柜员终端=分行拥有分行计算机+分行拥有柜员终端②分解:适当分解前面确定的class-&-objects,使其适用于不同的关联事务=远程事务+柜员事务③补充柜员输入柜员事务在ATM上输入远程事务柜员事务输进柜员终端远程事务由现金兑换卡授权④标明阶数(可能经常变动,不要花太多时间)中央计算机分行计算机现金兑换卡总行分行拥有分行代码组成通信1+通信拥有柜员终端柜员事务分行员工通信1+1+拥有1+雇用输入1+1+输入账户修改1+储户保管1+拥有1+远程事务ATM拥有1+1+1+访问1+1+修改授权1+输入1+§3.建立ObjectModel1233、划分主题注意:①按问题域而不是按功能分解②主题间的依赖和交互尽可能少1.总行2.分行3.ATM§3.建立ObjectModel4、确立属性注意:①Attribute不表示objects之间的关系,只表示其本质性质,不要与链属性、限定词混淆。②暂不考虑纯用于实现的attributes(即单纯的内部状态)。③需求陈述中与已确定的objects有关的名词、形容词可能是选择的线索。5、识别继承关系及其它修改①Bottom-up:将具有相同属性的classes向上归纳出父类。②Top-down:将现有classes向下细化出子类(但分析阶段避免过度细化).§3.建立ObjectModel③若某class中具有几个独立的功能,则考虑分为几个classes。④对于某class中具有自己特有属性的部分,可考虑将之列为独立存在的class,且是原有class的组成。⑤合并无须分别考虑的若干classes。账户余额限额类型现金兑换卡分行代码卡号储户姓名地址输入站事务日期柜员事务远程事务柜员姓名卡权限密码限额更新金额类型总行总行名分行分行名ATM现有金额付出金额柜员终端分行代码组成站号站号账号雇员号卡号输入1+拥有1+保管拥有拥有雇用发放拥有1+1+标识1+1+访问1+启动1+1+输入1+组成修改归纳组成分解合并§3.建立ObjectModel§4.建立动态模型(DynamicModel)动态模型,表示系统瞬时的控制性质,反映系统的交互行为。三要素:①事件(event):引发Object状态改变的控制信息(瞬时)②状态(status):Object的attributes所处的情形(可持续)③行为(action):Object要达到某种status所做的操作(耗时)动态模型图形:1、事件跟踪图(ETD,eventtracingdiagram):简化的时序图或顺序图2。状态图(EFD,eventflowdiagram)动态模型建立步骤:1、编写典型交互行为脚本2、提取事件,指明触发者、接受者3、排列事件次序(时序图、状态图)4、检查一致性§4.建立DynamicModel1、编写脚本(scenarios):脚本是指系统在某一执行期间内出现的一系列事件,用来描述event序列,用户与系统的具体交互过程。基本类型:①正常情况脚本;②特殊情况脚本(输入\输出取边界值时);③异常情况脚本(应允许用户异常中止或取消一个操作)§4.建立DynamicModel注意:①脚本用来描述event序列,当用户与系统交换信息时,就发生一个事件。所交换的信息值就是一个参数(也可以无参数,表明该事件发生了)。②对于每个事件,都应指明触发者、接受者、参数。Event=Activator+Receiver+Parameters§4.建立DynamicModel§4.建立DynamicModel例:ATM系统的正常、异常情况脚本ATM系统的正常情况脚本•ATM请储户插卡;储户插入一张现金兑换卡。•ATM接受该卡并读它上面的分行代码和卡号。•ATM要求储户输入密码;储户输入自己的密码“1234”等数字。•ATM请求总行验证卡号和密码;总行要求“39”号分行核对储户密码,然后通知ATM说这张卡有效。•ATM要求储户选择事务类型(取款、转帐、查询等);储户选择“取款”。•ATM要求储户输入取款额;储户输入“880”。•ATM确认取款额在预先规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功地处理完这项事务并返回该帐户的新余额。•ATM吐出现金并请储户拿走这些现金;储户拿走现金。•ATM问储户是否继续这项事务;储户回答“不”。•ATM打印帐单,退出现金兑换卡,请储户拿走它们;储户取走帐单和卡。•ATM请储户插卡§4.建立DynamicModelATM系统的异常情况脚本•ATM请储户插卡;储户插入一张现金兑换卡。•ATM接受该卡并读它上面的分行代码和卡号。•ATM要求储户输入密码;储户误输入“8888”。•ATM请求总行验证卡号和密码;总行要求“39”号分行核对储户密码,然后通知ATM拒绝这张卡。•ATM显示“密码错”,并请储户重新输入密码;储户输入“1234”;ATM请总行验证后知此次输入的密码正确。•ATM要求储户选择事务类型(取款、转帐、查询等);储户选择“取款”。•ATM要求储户输入取款额;储户改变主意不想取款了,敲“取消”键。•ATM退出现金兑换卡,请储户拿走它;储户取走他的卡。•ATM请储户插卡交互行为——应用逻辑+用户界面应用逻辑——内在的、本质的内容(DM重点)用户界面——外在的表现(美观、方便、易学、效率,影响用户的评价)§4.建立DynamicModel用户界面——全部必要信息2、设想用户界面(userinterface)rapidprototype.显示信息0123456789ENTERCLEARCANCEL插卡处帐单出口现金出口3、画事件跟踪图(ETD,eventtracingdiagram)§4.建立DynamicModelEventActivatorReceiverTimeLine每个脚本对应一张图§4.建立DynamicModel例:ATM系统的正常情况脚本的ETD要求输入取款额插卡要求密码输入密码请求验证帐户请求分行验证帐户帐户有效帐户有效要求事务类型输入类型输入取款额请求处理事务请求处理分行事务分行事务成功事务成功吐出现金请求拿走现金拿走现金请求继续此事务结束印帐单退卡请求拿走卡拿走卡显示主屏幕储户ATM总行分行4、画状态图(EFD,eventflowdiagram)§4.建立DynamicModel状态
本文标题:软件工程10
链接地址:https://www.777doc.com/doc-213003 .html