第3周:面向对象方法与UML的历史与发展(邵维忠教授主讲)

面向对象技术高级课程

教材 :邵维忠、杨芙清《面向对象的分析与设计》,清华大学出版社  2013.01出版

一、不同的分析与设计方法

(一)、功能分解法(function decomposition):以系统需要提供的功能为中心来组织系统。
  1. 首先定义各种功能,然后把功能分解为子功能。
  2. 对较大的子功能进一步分解,截止到可给出明确的定义。
  3. 设计功能/子功能所需要的数据结构
  4. 定义功能./子功能之间的接口
  • 作为一种早期的建模方法,没有明确地区分分析与设计
-UCeG025GXUfpkfTx_HrsbhmVib-qAUKvkoATRkA
  • 优缺点:
  1. 直接地反映用户的需求,工作容易开始。
  2. 不能直接地映射问题域,很难检验结果正确性。
  3. 对需求变化的适应能力差。
  4. 局部的错误和修改很容易产生全局性影响。

(二)、结构化方法
  • 结构化分析(SA),又称数据流法,得到的分析模型是数据流图(DFD),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。
  • 结构化设计(SD),与功能分解法基本相同,分为概要设设计和详细设计。
  • 优缺点:
  1. 强调研究问题域,并有严格的法则。
  2. 间接映射问题域,不直接映射问题。
  3. 分析与设计的概念不一致,从分析到设计的过渡比较困难。
  4. 数据流和加工的数量太多,引起分析文档膨胀。

(三)、信息建模法
  • 由实体-关系法(E-R方法)发展而来,核心是实体和关系,都可以带有属性。
  • 后来把实体叫做对象,并使用了类型和子类型对实体进行抽象描述。
xwTpNPiHYY2dMHVVE1m5zBl2h0qR9mMAkxFGAEK8

  • 信息建模法已很接近面向对象方法,但有以下差别:
  1. 强调重点是信息建模和状态建模,而不是对象建模。
  2. 实体中只有属性没有操作。
  3. 只有属性的继承,不支持操作的继承。
  4. 没有采用消息通讯。

(四)、面向对象方法。
  • 面向对象的分析(OOA)、面向对象的设计(OOD)。
  • 运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统。
  1. 完整地刻画了问题域中事物。
  2. 如实地表达了问题域中事物之间的各种关系。
  3. 使系统的复杂性得到控制。

  • 不同的建模方法体现于:
  1. 从不同的概念出发来认识问题域。
  2. 用不同的概念进行系统构造。
  3. 系统对现实世界的映射方式不同。
K8bXsvEcp-mLmNAb4L3Pqd3xMRXCR3rULqXxJbq0
2vLMkXtuan1zI_5nDHL2VoHvfHhhQNfT9PgQeCm-
lrn2JJR0wUaVsfjyGtjex0aEZBBtdu2-clu5OCkE

五、OOA与OOD及OO方法的优点
(一)、什么是OOA——面向对象分析
  • 基本任务:运用面向对象的概念对问题域进行分析,将问题域中的系统责任有关的事物抽象为系统中的对象,定义这些对象的属性与操作,以及它们之间的各种关系。
  • 最终目标:建立一个满足用户需求、直接映射问题域的OOA模型。

(二)、什么是OOD
  • 定义:就是在OOA模型基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实现条件的OOD模型。
  • 早期(80年代末期)的OOD特点:
  1. 不基于OOA,大多数基于结构化分析
  2. 是OO编程方法的延伸,多与编程语言有关,受Ada影响大
  3. 不是纯OO,对某些概念(继承)缺少支持,有一些非OO概念(数据流、包、模块)
  4. 不只针对软件生存周期的设计阶段,D有时指Design,有时指Development,涉及一些分析问题,但不彻底。
  • 早期OOD可看作今OOA&D方法的雏形
  • 现今(90年代以后)OOD特点:
  1. 以面向对象的分析为基础,不依赖结构化分析
  2. 与OOA方法共同构成OOA&D方法体系,但属于软件生存周期的不同阶段。
  3. 较全面地体现面向对象方法的概念与原则
  4. 大多数方法独立于编程语言,其模型可以通过不同编程语言实现。

(三)、OO方法的优点
  • 软件建模面临的挑战
  1. 问题域和系统责任复杂性日益增长,系统越来越庞大
  2. 交流问题,领域多样性使软件工程中的交流问题比其他工程更为突出,很容易隐藏下许多错误
  3. 需要的不断变化,用户因素、竞争因素、经费因素
  4. 软件复用的要求,复用级别提高——分析与设计结果复用。要求在多个系统中复用

  • 面向对象方法的优势
  1. 对问题域和系统责任的复杂性具有较强的处理能力
  2. 提供了便于各类相关人员交流的共同语言
  3. 对需求变化具有较强的适应性
  4. 为实现分析与设计级别的软件复用提供了有力的支持
  5. 贯穿软件生存周期全过程的一致性:概念、词汇、原则及表示法。保持到设计、编程、测试等阶段,对软件周期的开发、维护及管理都具有重要意义。

六、不同流派的OO方法
方法的异同体现于:概念、表示法、系统模型、开发过程、可用性、技术支持等
(一)、Booch方法
  • 6种模型图:
  • 基本图:必不可少
  1. 类图、对象图——对于分析和设计
  2. 模块图、进程图——只用于设计
  • 补充图:必要时使用
  1. 状态转移图、交互图


  • 过程
  1. 宏过程——概念化、分析、设计、演化、维护
  2. 微过程——说明类和对象的接口和实现、识别类和对象、识别类和对象的语义、识别类和对象的关系。

  • 特点:思想活跃,开拓与创新。可操作性不强,类图与对象图并存。

(二)、Coad/Yourdon方法
  • OOA模型分为5个层次
  1. 主题层
  2. 类及对象层
  3. 结构层
  4. 属性层
  5. 服务层

  • OOD模型的4个部分
人机交互(HIC)
  1. 问题域(PDC)——
  2. 任务管理(TMC)
  3. 数据管理(DMC)
P9wKJdsjKBhSIb0VDvAV4JiYqO7i8wwCwszvSSGk

  • 特点:概念简练、过程清晰。强调概念的一致性,过程指导不够具体。

(三)、Jacobso方法(OOSE)
  • 提出use case(用况)的概念来描述用户需求
  • 三种对象:实体对象、界面对象、控制对象
  • 三维分析模型、四维设计模型——信息、行为、表示+实现环境。
  • 三大过程——分析过程、构造过程、测试过程(如图)

u5Bm6iqDKDrfh4rDkb2bBmc1xqP_Fs33V5FPQ8Re

  • 特点:
  1. 通过用况描述用户需求
  2. 用交互图描述对象之间的交互
  3. 用况驱动的观点言之有过

(四)、Rumbaugh方法(OMT)
  • 三个模型:功能模型、对象模型、动态模型
  • 过程:
  1. 分析(面向对象)
  2. 系统设计(传统方法)
  3. 对象设计(面向对象)
  4. 实现

  • 特点:
  1. 概念严谨,阐述清楚
  2. 过程具体,可操作性强
  3. 包含了许多非OO的内容
  4. 提出若干扩充概念,偏于复杂
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值