[软件工程] 面向对象分析

面向对象分析

面向对象分析

分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。
  面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
  在用面向对象观点建立起的三种模型中,对象模型是最基本、最重要、最核心的。

一、 面向对象的基本过程

(一) 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。

在这里插入图片描述
                   面向对象开发过程的应用生存期模型

在这里插入图片描述
                          OOA分析过程

(二) 3个子模型与5个层次

面向对象建模得到系统3子模型:
  静态结构——对象模型
  交互次序——动态模型
  数据变换——功能模型

  1. 任何问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;
  2. 当问题涉及交互作用和时序时,动态模型是重要的;
  3. 解决运算量很大的问题,则涉及重要的功能模型。

动态模型和功能模型中都包含了对象模型中的操作(即服务或方法)。复杂问题的对象模型通常由5个层次组成,这5个层次,一层比一层显现出对象模型的更多细节。在概念上,这5个层次是整个模型的5张水平切片。

5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:

  • 找出类与对象
  • 识别结构
  • 识别主题
  • 定义属性
  • 定义服务
    “5项活动”不是5个步骤,事实上,这5项工作完全没有必要顺序完成,也无须彻底完成一项工作以后再开始另外一项工作。

在概念上可以认为,面向对象分析大体上按照下列顺序进行:
  寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。
  但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。
  通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。

二、需求陈述

(一) 书写要点

需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及假设条件等。
   需求陈述应该阐明“做什么”,指出哪些是系统必要的性质,哪些是任选的性质。
   不能指望没有经过全面、深入分析的需求陈述是完整、准确、有效的。随后进行的面向对象分析的目的,就是全面深入地理解问题域和用户的真实需求,建立起问题域的精确模型。

(二) 例子

自动取款机(ATM)系统,如图所示。
在这里插入图片描述
  某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。
  银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。通常,一个储户可能拥有多个账户。柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。
  拥有银行账户的储户有权申请领取现金兑换卡。
使用现金兑换卡可以通过ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用ATM办理转账、存款等事务。
所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。
  通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM 上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。
当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。
  首先,ATM要求用户输入密码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用户。

三、 建立对象模型

用面向对象方法开发绝大多数软件时,首先建立对象模型,然后再建立另外两个子模型。

  • 对象模型(静态数据结构)对应用细节依赖较少,比较容易确定;当用户的需求变化时,静态数据结构相对来说比较稳定——优先创建的理由。
  • 建立对象模型时的主要信息来源:需求陈述、应用领域的专业知识以及关于客观世界的常识。

对象模型通常有5个层次,有一定的开发步骤和规律:
  首先确定对象类和关联①,对于大型复杂问题还要进一步划分出若干个主题②;
  其次为类和关联增添属性③,进一步描述它们;利用适当的继承④关系进一步合并和组织类;
  暂时不确定类中操作⑤(服务,建立动态模型和功能模型之后,更准确地描述了对类中提供的服务的需求)。
  面向对象的分析过程,是一个需要反复迭代、逐步深化、逐步完善的过程。

(一) 确定类与对象

类与对象在问题域中客观存在的,需要通过分析找出这些类与对象,具体做法:

1.找出候选的类与对象

对象是对问题域中有意义的事物的抽象,大多数客观事物可分为下述5类:
  (1) 可感知的物理实体;例如:飞机、汽车、书、
  房屋等等。
  (2) 人或组织的角色;例如:医生、教师、雇主、雇员、计算机系、财务处等等。
  (3) 应该记忆的事件;例如:飞行、演出、访问、交通事故等等。
  (4) 两个或多个对象的相互作用,通常具有交易或接触的性质;例如:购买、纳税、结婚等等。
  (5) 需要说明的概念;例如:政策、保险政策、版权法等等。
可参照上述5类常见事物,找出候选类与对象。

另一种是非正式分析(更简单)。
  这种分析方法以用自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。
  当然,这种方法选取的候选者往往不准确,须经更进一步的严格筛选。
  
  以ATM系统为例,说明非正式分析过程。

2.找出所有名词:

银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值