软件工程ppt课件第10章面向对象分析.ppt
第十章 面向对象分析(Object-Oriented Analysis),1.基本过程:,Requirement statement Rapid prototype Models,其中model 有三个:Object model:最重要,开发任何系统都需要;Dynamic model:对于开发交互式系统(interactive system)很重要;Function model:对于开发大运算量问题(如科学计算、编译系统等)很重要。,1.基本过程,Object model 由五个层次组成(Coad&Yourdon,1991),相当于把五张透明胶片(transparencies)叠在一起,每一层显示更多的细节。,主题是指导读者(包括系统分析员、软件设计人员、领域专家、管理人员、用户等)理解大型、复杂模型的一种机制。也就是说,通过划分主题把一个大型、复杂的对象模型分解成几个不同的概念范畴。,它可以从一个相当高的层次描述总体模型,并对读者的注意力加以指导。,5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:找出类与对象,识别结构,识别主题,定义属性,定义服务“5项活动”,而不是5个步骤,这5项工作完全没有必要顺序完成,也无须彻底完成一项工作以后再开始另外一项工作。,面向对象分析大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。,2.需求陈述,第三章中已介绍过,需求陈述的内容包括:问题范围、功能需求、性能要求、应用环境、假设条件等等。陈述方式可繁可简,说明What 而不是 How。,例:教材p.226-227,对Automated Teller Machine(ATM)的需求陈述。,自动取款机(ATM)系统:某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。,ATM系统,银行柜员使用柜员终端处理储户提交的储蓄事务。一个储户可能拥有多个账户。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。,拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用ATM办理转账、存款等事务。,所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。,ATM要求用户输入密码,ATM卡上信息用户密码传给中央计算机,中央计算机委托相应的分行计算机验证用户密码。,如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。,当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用户。,现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。,3.建立 Object Model,1、确定Class-&-Object:,第1步:列出所有候选对象(candidates),它们可能是 物理实体 人或组织 要处理的事件 对象间的活动 抽象概念 等等,非正式分析:从需求陈述中挑出 名词 Class-&-Object的候选 形容词确定Attribute的线索 动词作Method的候选,3.建立 Object Model,第2步:去粗取精,例:从ATM需求分析中提出的名词集合,银行、ATM、系统、中央计算机、分行计算机、柜员终端、网络、总行、分行、软件、成本、市、街道、营业厅、储蓄所、柜员、储户、现金、支票、账户、事务、现金兑换卡、余额、磁卡、分行代码、卡号、用户、副本、信息、密码、类型、取款额、账单、访问,筛选时依下列标准删除:,、通信链路、事务日志,冗余,无关,笼统,属性,操作 既可为名词又可为动词的词,应慎重考虑。,实现,3.建立 Object Model,2、确定关联 结构层,第1步:收集,需求陈述中涉及objets的动词短语:,需求陈述中隐含的关联 总行由各个分行组成 系统维护事务日志 分行保管账户 系统提供必要的安全性 总行拥有中央计算机 储户拥有现金兑换卡,3.建立 Object Model,根据问题域知识得出的关联 现金兑换卡访问账户 分行雇用柜员,第2步:筛选删除,3.建立 Object Model,与已删去的object 有关的关联,与问题无关的或应在实现阶段考虑的关联,3.建立 Object Model,瞬时事件:注意关联描述静态结构,3.建立 Object Model,三元关联:分解为二元关联或限定关联 柜员输入针对账户的事务=柜员输入事务+事务修改账户 分行计算机处理针对账户的事务=分行计算机处理事务+事务修改账户 ATM与中央计算机交换关于事务的信息=ATM与中央计算机通信+在ATM上输入事务,注:识别链属性 某实体仅用于描述另两个实体的关系,且该实体本身不包含属性。例如“公司付给员工工资”可分解为“公司雇用员工”,附链属性“工资”。,3.建立 Object Model,派生关联:即可用其它关联定义的冗余关联,3.建立 Object Model,第3步:完善,正名:分行提供分行计算机和柜员终端=分行拥有分行计算机+分行拥有柜员终端,分解:适当分解前面确定的class-&-objects,使其适用于不同的关联 事务=远程事务+柜员事务,补充 柜员输入柜员事务 在ATM上输入远程事务 柜员事务输进柜员终端 远程事务由现金兑换卡授权,标明阶数(可能经常变动,不要花太多时间),3.建立 Object Model,3、划分主题注意:按问题域而不是按功能分解 主题间的依赖和交互尽可能少,1.总 行2.分 行3.ATM,3.建立 Object Model,4、确立属性,注意:Attribute 不表示 objects 之间的关系,只表示其本质性质,不要与链属性、限定词混淆。暂不考虑纯用于实现的 attributes(即单纯的内部状态)。需求陈述中与已确定的 objects 有关的名词、形容词可能是选择的线索。,ATM对象模型中的属性见图10.4,5、识别继承关系及其它修改 Bottom-up:将具有相同属性的classes向上归纳出父类。Top-down:将现有classes向下细化出子类(但分析阶段避免过度细化).,3.建立 Object Model,若某class中具有几个独立的功能,则考虑分为几个classes。对于某class中具有自己特有属性的部分,可考虑将之列为独立存在的class,且是原有class的组成。合并无须分别考虑的若干classes。,归 纳,合 并,分 解,4.建立 Dynamic Model,1、编写脚本(scenarios),描述event 序列:事件应该指明:触发事件的动作对象、接收者、参数,基本类型:正常情况脚本;特殊情况脚本(输入输出取边界值时);异常情况脚本(应允许用户异常中止或取消一个操作),4.建立 Dynamic Model,例:ATM系统的正常、异常情况脚本(p.240),4.建立 Dynamic Model,4.建立 Dynamic Model,2、设想用户界面(user interface)rapid prototype.,3、画事件跟踪图(event tracing diagram,ETD),4.建立 Dynamic Model,每个脚本对应一张图,竖线代表类-&-对象,事件,4.建立 Dynamic Model,例:ATM系统的正常情况脚本的ETD,4、画状态图(event flow diagram,EFD),4.建立 Dynamic Model,每个具有交互行为的 class-&-object 对应一张图。,仅考虑事件跟踪图中指向某条竖线的那些箭头,把这些事件作为状态图中的有向边标上事件名,两个事件间的间隔就是一个状态,从事件跟踪图中当前竖线射出的箭头线是所做的行为,4.建立 Dynamic Model,例:ATM类的的EFD,注:一个event 若缺少出发者 或 接收者,而对应 status 又不是在起点终点,则发生错误。画状态图时应考虑所有的事件跟踪图脚本,包括异常处理。,4.建立 Dynamic Model,总行类的状态图,分行类的状态图,5.建立 Function Model,DFD+IPO+Pseudocode 必要时对功能进行文字描述(参考教材P.246 表 10.3)。,功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。其中的处理功能可以用IPO图(或表)、伪码等多种方式进一步描述。通常在建立了对象模型和动态模型之后再建立功能模型。,基本系统模型由若干个数据源点/终点,及一个处理框组成,这个处理框代表了系统加工、变换数据的整体功能。基本系统模型指明了目标系统的边界。由数据源点输入的数据和输出到数据终点的数据,是系统与外部世界之间的交互事件的参数。,10.5.1 画出基本系统模型图,ATM系统的基本系统模型,6.定义服务,常规行为:每个类定义读、写该类每个属性的操作,从事件中导出操作:,状态图中发往对象的事件也就是该对象接收到的消息,因此该对象必须有由消息选择符指定的操作,这个操作修改对象状态(即属性值)并启动相应的服务,从数据流图找出服务:数据流图中的每个处理框都与一个对象(若干个对象)上的操作相对应,利用继承机制减少冗余操作,