OOA方法的基本顺序: 需求陈述一>建立 Object Model->建立 Dynamic Model->建立 Function model->定义服务 建立 Object Model: 确定 Class-c&- Object->确定关联一>识别主题一> 确立属性一>确立继承关系
1 OOA方法的基本顺序: 需求陈述->建立 Object Model->建立 Dynamic Model->建立 Function Model->定义服务 建立 Object Model: 确定Class-&-Object->确定关联->识别主题-> 确立属性->确立继承关系
软件工程 第6章面向对象的分析与设计方法
2 第6章 面向对象的分析与设计方法
面向对家设计 (Object-Oriented Design) s1.OOD准则:优秀软件设计的一个重要特点是 容易维护 回顾:SD准则包括 Modularization Abstraction Information hiding Module independence 对OD有类似的准则: 1、模块化: Module= Object
面向对象设计 (Object-Oriented Design) §1. OOD准则:优秀软件设计的一个重要特点是 容易维护 回顾:SD准则包括 Modularization Abstraction Information hiding Module independence 对于 OOD有类似的准则: 1、模块化:Module = Object
s1.OOD准则 抽象 Abstraction:抽出事物的本质特性,暂不考虑其 细节,使设计从具体实现方法中超脱。 3、信息隐藏 Information hiding=对象封装 Encapsulation of object 4、耦合 Coupling 交互耦合(in interactive coupling :通过传递 message发生 要求降低参数个数和参数复杂性 继承耦合 (inheritance coupling) 要求 Parent class s a child class→ as high as possible
4 §1. OOD准则 3、信息隐藏Information hiding = 对象封装 Encapsulation of object 4、耦合Coupling: 交互耦合(interactive coupling):通过传递message发生 要求降低参数个数和参数复杂性 继承耦合(inheritance coupling): 要求 Parent class IS_A child class as high as possible 2、抽象Abstraction:抽出事物的本质特性, 暂不考虑其 细节,使设计从具体实现方法中超脱
s1.OOD准则 5、内聚 Cohesion: 服务内聚 (service cohesion) 个服务只完成一个功能。 类内聚 class cohesion):一个类只有一个用途,否则分 解之 般-特殊内聚 6、复用性 Reusability!y
5 §1. OOD准则 一般-特殊内聚 5、内聚Cohesion: 服务内聚(service cohesion):一个服务只完成一个功能。 类内聚(class cohesion):一个类只有一个用途,否则分 解之。 6、复用性Reusability
§2.启发式规则 1、设计结果清晰易懂,应做到 ①用词一致——按习惯用法命名。不同 classes中 相似的 methods最好取同一名字。 ②使用已有的 protocol. ③尽量减少 message 模式的数目。 ④避免模糊定义。 2、一般特殊结构的深度应适当(约100个 classes,则 设计7士2层)
6 §2. 启发式规则 1、设计结果清晰易懂,应做到: ① 用词一致 —— 按习惯用法命名。不同classes中 相似的methods最好取同一名字。 ② 使用已有的protocol。 ③ 尽量减少message模式的数目。 ④ 避免模糊定义。 2、一般-特殊结构的深度应适当(约100个classes,则 设计7±2层)
§2.启发式规则 3、设计简单的clas(定义不超过一页纸或两屏)。 应注意: ①避免过多 attributes; ②能用简单的语句描述一个 class E的任务; ③obet之间合作关系要简单; ④避免过多 methods≤7个) 问题:设计出大量的case,使结构复杂度增加。 解决:划分主题,提高可理解性 4、使用简单的 protocol,,减少 message中传递的 parameters 5、使用简单的 method(CASE可考虑用 inheritance替代)。 6、把设计变动减至最小
7 §2. 启发式规则 3、设计简单的class(定义不超过一页纸或两屏)。 应注意: ① 避免过多attributes; ② 能用简单的语句描述一个class的任务; ③ objects之间合作关系要简单; ④避免过多methods( 7个)。 问题:设计出大量的classes,使结构复杂度增加。 解决:划分主题,提高可理解性。 4、使用简单的protocol,减少message 中传递的 parameters 5、使用简单的method(CASE 可考虑用 inheritance替代)。 6、把设计变动减至最小
§3.软件重用( Software reuse) 概念 知识重用(例如软件工程知识的重用) 方法和标准重用(例如OO方法和国家规定知识 的软件开发规范的重用) 工程 软件成分的重用 重用软件成分有三个级别: ①代码重用: 源码剪贴——无法溯源,无配置管理 Include 修改后所有包含了此段代码的程 序都须重新编译。想象一下,stih被改动之后 Inheritance—无须改动原有代码
8 概念: 知识重用(例如软件工程知识的重用) 方法和标准重用(例如OO方法和国家规定 的软件开发规范的重用) 软件成分的重用 §3. 软件重用 (Software Reuse) 知识 工程 • 源码剪贴 —— 无法溯源,无配置管理 • Include —— 修改后所有包含了此段代码的程 序都须重新编译。 • Inheritance —— 无须改动原有代码 想象一下,stdio.h 被改动之后…… 重用软件成分有三个级别: ① 代码重用:
s3.软件重用 ②设计重用—当移植系统时 ③分析重用—当需求未变,而系统结构改变时 重用效果的衡量 额外代价: 创建可重用成分的专门投资 多花2~4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成 本中。重用次数越多,分摊成本越少
9 §3. 软件重用 ② 设计重用 —— 当移植系统时 ③ 分析重用 —— 当需求未变,而系统结构改变时 重用效果的衡量: 额外代价: 创建可重用成分的专门投资 多花2 ~ 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成 本中。重用次数越多,分摊成本越少
§4.系统分解 回顾SD:从DFD出发→PO OOD模型分解: Category 问题域人机交互任务管理数据管理 Class-&-Obiect Application <Human Task Data Structure Domain Computer Management Management Attribute Interface OD(HCI)ex
10 I P O 问题域 Application Domain 人机交互 Human- Computer Interface (HCI) 任务管理 Task Management 数据管理 Data Management Method Attribute Structure Class-&-Object Category §4. 系 统 分 解 回顾SD:从DFD出发 OOD模型分解: