面向对象技术高级课程
教材 :邵维忠、杨芙清《面向对象的分析与设计》,清华大学出版社 2013.01出版
一、不同的分析与设计方法
(一)、功能分解法(function decomposition):以系统需要提供的功能为中心来组织系统。- 首先定义各种功能,然后把功能分解为子功能。
- 对较大的子功能进一步分解,截止到可给出明确的定义。
- 设计功能/子功能所需要的数据结构
- 定义功能./子功能之间的接口
- 作为一种早期的建模方法,没有明确地区分分析与设计
- 优缺点:
- 直接地反映用户的需求,工作容易开始。
- 不能直接地映射问题域,很难检验结果正确性。
- 对需求变化的适应能力差。
- 局部的错误和修改很容易产生全局性影响。
(二)、结构化方法
- 结构化分析(SA),又称数据流法,得到的分析模型是数据流图(DFD),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。
- 结构化设计(SD),与功能分解法基本相同,分为概要设设计和详细设计。
- 优缺点:
- 强调研究问题域,并有严格的法则。
- 间接映射问题域,不直接映射问题。
- 分析与设计的概念不一致,从分析到设计的过渡比较困难。
- 数据流和加工的数量太多,引起分析文档膨胀。
(三)、信息建模法
- 由实体-关系法(E-R方法)发展而来,核心是实体和关系,都可以带有属性。
- 后来把实体叫做对象,并使用了类型和子类型对实体进行抽象描述。
- 信息建模法已很接近面向对象方法,但有以下差别:
- 强调重点是信息建模和状态建模,而不是对象建模。
- 实体中只有属性没有操作。
- 只有属性的继承,不支持操作的继承。
- 没有采用消息通讯。
(四)、面向对象方法。
- 面向对象的分析(OOA)、面向对象的设计(OOD)。
- 运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统。
- 完整地刻画了问题域中事物。
- 如实地表达了问题域中事物之间的各种关系。
- 使系统的复杂性得到控制。
- 不同的建模方法体现于:
- 从不同的概念出发来认识问题域。
- 用不同的概念进行系统构造。
- 系统对现实世界的映射方式不同。
五、OOA与OOD及OO方法的优点
(一)、什么是OOA——面向对象分析
- 基本任务:运用面向对象的概念对问题域进行分析,将问题域中的系统责任有关的事物抽象为系统中的对象,定义这些对象的属性与操作,以及它们之间的各种关系。
- 最终目标:建立一个满足用户需求、直接映射问题域的OOA模型。
(二)、什么是OOD
- 定义:就是在OOA模型基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实现条件的OOD模型。
- 早期(80年代末期)的OOD特点:
- 不基于OOA,大多数基于结构化分析
- 是OO编程方法的延伸,多与编程语言有关,受Ada影响大
- 不是纯OO,对某些概念(继承)缺少支持,有一些非OO概念(数据流、包、模块)
- 不只针对软件生存周期的设计阶段,D有时指Design,有时指Development,涉及一些分析问题,但不彻底。
- 早期OOD可看作今OOA&D方法的雏形
- 现今(90年代以后)OOD特点:
- 以面向对象的分析为基础,不依赖结构化分析
- 与OOA方法共同构成OOA&D方法体系,但属于软件生存周期的不同阶段。
- 较全面地体现面向对象方法的概念与原则
- 大多数方法独立于编程语言,其模型可以通过不同编程语言实现。
(三)、OO方法的优点
- 软件建模面临的挑战
- 问题域和系统责任复杂性日益增长,系统越来越庞大
- 交流问题,领域多样性使软件工程中的交流问题比其他工程更为突出,很容易隐藏下许多错误
- 需要的不断变化,用户因素、竞争因素、经费因素
- 软件复用的要求,复用级别提高——分析与设计结果复用。要求在多个系统中复用
- 面向对象方法的优势
- 对问题域和系统责任的复杂性具有较强的处理能力
- 提供了便于各类相关人员交流的共同语言
- 对需求变化具有较强的适应性
- 为实现分析与设计级别的软件复用提供了有力的支持
- 贯穿软件生存周期全过程的一致性:概念、词汇、原则及表示法。保持到设计、编程、测试等阶段,对软件周期的开发、维护及管理都具有重要意义。
六、不同流派的OO方法
方法的异同体现于:概念、表示法、系统模型、开发过程、可用性、技术支持等
(一)、Booch方法
- 6种模型图:
- 基本图:必不可少
- 类图、对象图——对于分析和设计
- 模块图、进程图——只用于设计
- 补充图:必要时使用
- 状态转移图、交互图
- 过程
- 宏过程——概念化、分析、设计、演化、维护
- 微过程——说明类和对象的接口和实现、识别类和对象、识别类和对象的语义、识别类和对象的关系。
- 特点:思想活跃,开拓与创新。可操作性不强,类图与对象图并存。
(二)、Coad/Yourdon方法
- OOA模型分为5个层次
- 主题层
- 类及对象层
- 结构层
- 属性层
- 服务层
- OOD模型的4个部分
- 问题域(PDC)——
- 任务管理(TMC)
- 数据管理(DMC)
- 特点:概念简练、过程清晰。强调概念的一致性,过程指导不够具体。
(三)、Jacobso方法(OOSE)
- 提出use case(用况)的概念来描述用户需求
- 三种对象:实体对象、界面对象、控制对象
- 三维分析模型、四维设计模型——信息、行为、表示+实现环境。
- 三大过程——分析过程、构造过程、测试过程(如图)
- 特点:
- 通过用况描述用户需求
- 用交互图描述对象之间的交互
- 用况驱动的观点言之有过
(四)、Rumbaugh方法(OMT)
- 三个模型:功能模型、对象模型、动态模型
- 过程:
- 分析(面向对象)
- 系统设计(传统方法)
- 对象设计(面向对象)
- 实现
- 特点:
- 概念严谨,阐述清楚
- 过程具体,可操作性强
- 包含了许多非OO的内容
- 提出若干扩充概念,偏于复杂