【文档说明】软件工程课件-第10章-面向对象分析.ppt,共(45)页,584.035 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44896.html
以下为本文档部分文字说明:
第十章面向对象分析(Object-OrientedAnalysis)§1.基本过程:RequirementstatementRapidprototypeModels其中model有三个:①Objectmodel:最重要,开发任
何系统都需要;②Dynamicmodel:对于开发交互式系统(interactivesystem)很重要;③Functionmodel:对于开发大运算量问题(如科学计算、编译系统等)很重要。主题结构1+1+属性方法§1.基本过程Objectmodel由五个层次组成(Coad&Yourdon,199
1),相当于把五张透明胶片(transparencies)叠在一起,每一层显示更多的细节。类与对象主题是指导读者(包括系统分析员、软件设计人员、领域专家、管理人员、用户等)理解大型、复杂模型的一种机制。也就是说,通过
划分主题把一个大型、复杂的对象模型分解成几个不同的概念范畴。它可以从一个相当高的层次描述总体模型,并对读者的注意力加以指导。5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:找出类与对象,识别结构,识别主题,定
义属性,定义服务“5项活动”,而不是5个步骤,这5项工作完全没有必要顺序完成,也无须彻底完成一项工作以后再开始另外一项工作。面向对象分析大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。分析不可能严格地按照预定顺序进行,大型、复杂系统的模型
需要反复构造多遍才能建成。通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。§2.需求陈述第三章中已介绍过,需求陈述的内容包括:问题范围、功能需求、性能要求、应用环境、假设条件等等。陈述方式可繁可简,说明What而不是How。例:教材p.2
26-227,对AutomatedTellerMachine(ATM)的需求陈述。自动取款机(ATM)系统:某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设
在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。ATM系统银行柜员使用柜员终端处理储户提交的储蓄事务。一个储户可能拥有多个账
户。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分
行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还
要求使用ATM办理转账、存款等事务。所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张现金兑换
卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。ATM要求用户输入密码ATM卡上信息用户密码传给中央计算机中央计算机委托相应的分行计算机验证用户密码。如果用户输入的密
码是正确的,ATM就要求用户选择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用户。现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。§3.建立Obj
ectModel1、确定Class-&-Object:第1步:列出所有候选对象(candidates),它们可能是物理实体人或组织要处理的事件对象间的活动抽象概念等等非正式分析:从需求陈述中挑出名词Class-&-Object的候选形容
词确定Attribute的线索动词作Method的候选§3.建立ObjectModel第2步:去粗取精例:从ATM需求分析中提出的名词集合银行、ATM、系统、中央计算机、分行计算机、柜员终端、网络、总行、分行、软件、成本、市、街道、
营业厅、储蓄所、柜员、储户、现金、支票、账户、事务、现金兑换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款额、账单、访问筛选时依下列标准删除:、通信链路、事务日志冗余无关笼统属性操作既可为名词又可为动词的词,应慎重考虑。实现§3.建立ObjectM
odel2、确定关联结构层第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.建立ObjectMod
el④三元关联:分解为二元关联或限定关联柜员输入针对账户的事务=柜员输入事务+事务修改账户分行计算机处理针对账户的事务=分行计算机处理事务+事务修改账户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中央计算机分行计算机现金兑换卡总行分行拥有分行代码组成通信1+通信拥有柜员终端柜员事务分行通信1+1+拥有1+雇用输入1+1+输入账户修改1+储户保管1+拥有1+远程事务ATM
拥有1+1+1+访问1+1+修改授权1+输入1+§3.建立ObjectModel4、确立属性注意:①Attribute不表示objects之间的关系,只表示其本质性质,不要与链属性、限定词混淆。②暂不考虑纯用于实现的at
tributes(即单纯的内部状态)。③需求陈述中与已确定的objects有关的名词、形容词可能是选择的线索。ATM对象模型中的属性见图10.45、识别继承关系及其它修改①Bottom-up:将具有相同属性的classes向上归纳出父类。②Top-down:将现有classes向
下细化出子类(但分析阶段避免过度细化).§3.建立ObjectModel③若某class中具有几个独立的功能,则考虑分为几个classes。④对于某class中具有自己特有属性的部分,可考虑将之列为独立存在的class,且是原有class的组成。⑤合并无须分别考虑的若干classe
s。归纳合并分解§4.建立DynamicModel1、编写脚本(scenarios),描述event序列:事件应该指明:触发事件的动作对象、接收者、参数基本类型:①正常情况脚本;②特殊情况脚本(输入\输出取边界值时);③异常情况脚本(应允许用户异常中止或取消一个操作)§4.建立D
ynamicModel例:ATM系统的正常、异常情况脚本(p.240)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请储户插卡§4.建立DynamicModel2、设想用户界面(userinterface)rapidprototype.3、画事件跟踪图(eventtracingdiagram,ETD
)§4.建立DynamicModelEvent触发者接收者时间线每个脚本对应一张图竖线代表类-&-对象事件§4.建立DynamicModel例:ATM系统的正常情况脚本的ETD要求输入取款额插卡要求密码输入密码请求验证帐户请求分行验证帐户帐户有效帐户有效要求事务类
型输入类型输入取款额请求处理事务请求处理分行事务分行事务成功事务成功吐出现金请求拿走现金拿走现金请求继续此事务结束印帐单退卡请求拿走卡拿走卡显示主屏幕储户ATM总行分行4、画状态图(eventflowdiagram,EFD)§4.建立DynamicModel从ETD出发:Event2Event1
ActionStatusClass-&-Object每个具有交互行为的class-&-object对应一张图。Event1Statusdo:ActionEvent2仅考虑事件跟踪图中指向某条竖线的那些箭头把这些事件作为状态图中的有向边标上事件名,两个事件间的间隔就是一个状态从事件跟踪图
中当前竖线射出的箭头线是所做的行为§4.建立DynamicModel例:ATM类的的EFD插卡(可读)主屏do:显示主屏幕等待网络响应中断do:显示取消信息事务成功帐户有效do:要求密码do:验证帐户do:要求类型不可读的卡do:显示不可读卡
信息退卡do:退卡;请求拿走卡取消do:显示取消信息do:要求金额结束do:打印帐单do:显示无效帐户信息do:请求继续do:吐出现金;请求拿走现金do:处理事务do:失败信息网络响应密码错输入密码插卡(不可读)拿走卡取消中止取消拿走现金继续事务失败取消
等待5秒钟输入金额输入类型取消取消无效帐户注:①一个event若缺少出发者或接收者,而对应status又不是在起点\终点,则发生错误。②画状态图时应考虑所有的事件跟踪图脚本,包括异常处理。§4.建立Dynamic
Model总行类的状态图分行类的状态图§5.建立FunctionModelDFD+IPO+Pseudocode必要时对功能进行文字描述(参考教材P.246表10.3)。功能模型表明了系统中数据之间的依赖关系,以及有关的数据处
理功能,它由一组数据流图组成。其中的处理功能可以用IPO图(或表)、伪码等多种方式进一步描述。通常在建立了对象模型和动态模型之后再建立功能模型。基本系统模型由若干个数据源点/终点,及一个处理框组成,这个处理框代表了系统加工、变换数据的整体功能。基本系统模型指明了目标系统的边界。由数据源点
输入的数据和输出到数据终点的数据,是系统与外部世界之间的交互事件的参数。10.5.1画出基本系统模型图ATM系统的基本系统模型§6.定义服务常规行为:每个类定义读、写该类每个属性的操作从事件中导出操作:状态图中发往对象的事件也就是该对象接收到的消息,因此该对象必须有
由消息选择符指定的操作,这个操作修改对象状态(即属性值)并启动相应的服务从数据流图找出服务:数据流图中的每个处理框都与一个对象(若干个对象)上的操作相对应利用继承机制减少冗余操作