文档介绍:第二部分
面向对象分析
面向对象的分析(Object Oriented Analysis, OOA),就是运用面向对象方法进行系统分析。
OOA是分析,是软件生命周期的一个阶段,具有一般分析方法共同具有的内容、目标及策略;
但强调运用面向对象方法进行分析,用面向对象的概念和表示法表达分析结果。
基本任务是:运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题域及系统责任所需的对象,定义对象的属性、操作以及它们之间的关系。
目标是建立一个符合问题域、满足用户需求的OOA模型。
什么是面向对象的分析?
第2章什么是面向对象的分析
分析面临的主要问题
1、问题域和系统责任复杂性日益增长
问题域(problem domain):被开发系统的应用领域,即在现实世界中由这个系统进行处理的业务范围。
系统责任(system responsibilities):所开发的系统应该具备的职能。
困难所在:
软件开发人员与领域专家的技术背景不同(学习、更高的见解、适合于软件)
现今的系统所面临的问题域比以往更为广阔和复杂,系统比以往更为庞大*。
金融业务
个人储蓄
国债发行
贷款业务
….
人事管理
……
信息备份
……
系统责任
问题域
2、交流问题
如果分析所产生的文档使分析员以外的其他人员都很难读懂,那就很不利于交流。这会使彼此的思想不易沟通,并容易隐藏许多错误。(分析人员与客户**及领域专家,分析人员之间*,分析人员与设计人员,开发人员与管理人员)
3、需求的不断变化
引起需求变化的因素:
用户(主客观因素)、竞争因素、经费、技术因素*
软件开发者必须以合作的态度满足用户需求
易变的部分依次为:功能、接口、属性、对象----得益于封装原则。
4、软件复用的要求
复用级别提高——分析结果复用
要求分析模型中的可复用部分用于多个系统
要求一个分析模型在多种条件下设计和实现
对分析提出了更高的要求
制作(服务)构件、组织(服务)构件、检索(服务)构件、组装(服务)构件
面向对象的分析综述
面向对象= 对象,类
+关系(结构与连接)
+继承
+封装
+消息通讯
+……
是对问题域中事物的完整映射,包括事物的数据特征和行为特征。
如实地反映了问题域中事物之间的各种关系,包括分类结构、组装结构、静态联系和动态联系。
采用封装、继承、消息通讯等原则,使问题域的复杂性得到控制。
不同的分析方法
——对现实世界(问题域)的不同映射
E-R法
面向对象方法
功能/子功能
功能接口
功能分解法
数据流
加工
数据流法
按概念对问题进行分解
软件开发的目标:在预算内按时开发出满目用户需求的高质量软件。
采用不同的方法所付出的代价及所取得的收益是不同的。
分析方法的几方面的比较
功能分解法
数据流法
信息建模法
OOA
对问题域和系统责任的理解
改进交流
适应变化
支持复用
较差
较差
差
最差
差
差
较差
较差
较好
较好
略好
略好
好
好
好
好
构件技术
?
很好
很好
很好
面向服务
很好
很好
很好
很好
对象,类
属性
服务
继承
消息
关联
聚合
多态
主动对象
……
对象、类
属性
服务
泛化
消息
关联、链
聚合
多态性
主动对象(类)
主题(包)
分类
行为分析
继承
消息通信
关联
整体-部分关系
粒度控制
建模元素
基本概念
原则
本课讲授的OOA方法概貌
1、概念与表示法
对象名
普通对象
主动对象
(a) 类
(b) 属性与服务
一般类
特殊类
特殊类
(c) 泛化
整体对象类
m
n
部分对象类
(d) 聚合
类
类
m
n
(e) 关联
发送者
接收者
(f) 消息连接
编号主题名
压缩方式
编号主题名
类名
······
半展开方式
编号
编号
编号
编号
展开方式
(g) 主题的三种表示方式
表示法示例
@对象名
同步
异步
类名
普通类
主动类
@类名
@服务
...
属性
...
服务
...
属性
...
(h)包
关系层
特征层
对象层
基本模型(类图)
需求模型
用况图
辅助模型
交互图
活动图
状态图
包图
……
模型规约
给出所有与问题域和系统责任有关的对象,用对象类表示
定义每个对象类的属性与服务
通过已定义的关系描述对象类之间的关系
对模型中的所有元素进行详细说明。
对关系密切的元素打包,帮助理解系统模型。
一幅交互图表现完成某一项特定功能的一组对象之间的详细交互;一辐状态图描述了