软件工程面向对象设计

第十一章 面向对象设计
(Object-Oriented Design) §1. OOD准则:优秀软件设计的一个重要特点是 容易维护 回顾:SD准则包括
模块化 信息隐藏 抽象 模块
对于 OOD有类似的准则: 1、模块 = 对象
§1. OOD准则
2、抽象:抽出事物的本质特性, 暂不考虑其细节, 使设计从具体实现方法中超脱。
④ 调整inheritance。
⑵ HCI子系统:好的包装
§4. 系 统 分 解
① 设计准则: 一致性: 术语、步骤、操作等始终一致。 减少步骤:使完成一件任务所需敲键盘、点鼠 标、下拉菜单等的次数都减至最少。 提供hot key操作

及时提供反馈信息: 提供撤销(undo)命令:
② 确定task类型,并分配给适当的软\硬件去执行 事件驱动型(event-driven):主要完成通信工作。 event = 数据到达的 interrupt

时钟驱动型(clock-driven):完成周期性工作。 优先型(priority):将high priority或 low priority 的任务专门分离出来先做或后做。 关键任务(key task):指关系系统成败的处理, 要求高可靠性,应分离考虑,严格测试。 协调任务(coordinator):当系统中存在三个以上 tasks 时,应增设一个协调任务,用于封装不同 tasks之间的协调控制。
继承耦合(inheritance coupling): 要求 Parent class IS_A child class as high as possible
§1. OOD准则
5、内聚: 服务内聚(service cohesion):一个服务只完成一个功能。
类内聚(class cohesion):一个类只有一个用途,否则分

与表示方法有关的操作 与数据结构、大小有关的操作 与外部设备有关的操作

实现算法在将来可能会改进\改变的核心操作
解决方法:将这些操作分离出来,作为适配接口 (adaptive interface),使class中其它操 作通过调用AI而实现。在不同应用环 境下,用户只须重新定义AI操作就可 以重用class。
做一个体贴的status bar
无须记忆:不应要求用户记住某个窗口的信息, 然后再用到窗口中 —— 这是系统的责任而不是 用户的任务。

易学:提供HELP、 联机参考等。

富有吸引力
§4. 系 统 分 解
② 设计策略

将用户分类(按技能、职务等)
描述用户的类型、水平、使用目的、其它特征 (如年龄、性别、习惯等),写出操作脚本
开发代码的生产率 C n
Lr 重用新代码的生产率C r Er
Ln En
Cn P 1 (1 C n /Cr )R
§3. 软件重用 Q:是否R 越高P就越高? A:是,前提条件为Cn<Cr ,即重用比新开发效率高。
⑶重用技术:指利用可重用的构件开发软件的技 术,及开发可重用软件的技术。 ① 软件组合技术:
3、四种子系统的设计
§4. 系 统 分 解
⑴ 问题域子系统:基于OOA建立的object model, 进行补充修改。 ① 调整需求 ② 重用class: 选出可用的class,标出与本问题无关 的 attributes 和 methods 派生出child class,标出继承的attributes 和 methods 修改关联 ③ 组合class:通过引入root class完成,用于建立 public protocol。
解之。
一般-特殊内聚(general-particular cohesion): High g-p cohesion High inheritance coupling
6、可重用(Reusability)(详见§3)
尽量使用已有的类 设计新类时考虑将来的可重复使用性
§2. 启发式规则
1、设计结果清晰易懂,应做到: ① 用词一致 —— 按习惯用法命名。不同classes中 相似的methods最好取同一名字。 ② 使用已有的协议。 ③ 尽量减少message模式的数目。 ④ 避免模糊定义。 2、一般-特殊结构的深度应适当(约100个classes,则 设计7±2层)
优点:高效; 缺点:修改影响面广

§4. 系 统 分 解
② 垂直块组织: 将系统垂直分解成若干独立的子系统,一个子 系统相当于一块,每块提供一种类型的服务。
典型应用系统的组织结构
应 用 软 件 包
人机对 话控制
窗口图形 HCI 图形 屏幕图形 处理 象素图形
仿真 软件包
操 作 系 统 计 算 机 硬 件

若两个objects之间无交互行为,或它们同时接 受events,则它们本质上是并发的(synchronous) 考察event flow diagram,找出没有并发对象的 路径(称为控制线),每条对应一个任务(task, 亦称process) 不同的tasks对应必须同时发生的不同行为


§4. 系 统 分 解
种算法实现,若无新算法则继承老算法。
§4. 系 统 分 解
回顾SD:从DFD出发
I
P O
OOD模型分解: 面向对象设计模型,在逻辑上由四大部分组成。 这四部分对应于组成目标系统的四个子系统:
问题域子系统、人机交互子系统(HCI)、任务管 理子系统和数据管理子系统。
§4. 系 统 分 解
与面向对象分析模型一样,它也由主题、类-&对象、结构、属性、服务等五个层次组成,可以 把这五个层次想象成整个模型的水平切片
§3. 软件重用
Adaptive Interface还可进一步细分为

转换接口(transition interface):重用时必须重定 义与表示方法、数据结构、硬件等有关的操作
(例如C++中class 里的 pure virtual function)

扩充接口(expansion interface):一个操作可由多
底层部件库法(Bottom-up compositional reuse) : 从可重用的代码部件库(reuse repository)中选用 部件,组合成软件。 上层组合法:完整程序的组合

§3. 软件重用
② 软件生成技术: 按照形式化的软件功能描述和一定的生成机 理,由生成器系统(generator system)自动生成目标程序。 重用的是generator 的代码规则
③ OO重用技术:Class component的重用(详见下文)
⑷ 类构件(Class component): ①可重用的软构件应具备的特点: 独立、可塑、接口清晰(文档详尽)
②重用方式: 实例重用(instance reuse \ black-box reuse): 创建class的不同instances,通过messages完成 不同的任务。是最基本的重用方式。 用几个简单的objects创建出更复杂的class, 是实例重用的另一种形式
§2. 启发式规则
3、设计简单的class(定义不超过一页纸或两屏)。 应注意: ① 避免过多attributes; ② 能用简单的语句描述一个class的任务; ③ objects之间合作关系要简单; ④避免过多methods( 7个)。
问题:设计出大量的classes,使结构复杂度增加。 解决:划分主题,提高可理解性。 4、使用简单的protocol,减少message 中传递的
③ 分析重用 —— 当需求未变,而系统结构改变时
2、重用效果的衡量: ⑴ 额外代价: 创建可重用成分的专门投资 多花2 ~ 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成 本中。重用次数越多,分摊成本越少。
§3. 软件重用
⑵ 重用率(Reusability)与生产率(Productivity) 记:Lt = Total length of code ( # of lines)
§4. 系 统 分 解
2、系统组织方案 ① 层次组织: 将系统组织成hierarchy,同一层中的objects相 互独立,而上、下层间有 client-supplier关系。

一个client只能使用其相邻下层的supplier提供 的服务 —— 封闭式(closed) 一个client可使用其下任一层的supplier提供 的服务—— 开放式(open)
过程抽象: 在SD中已讨论 数据抽象: Class即是一种抽象数据类型。外界无须知道实 现方法,按照类规格说明(即协议)可以使用合法的操作 符,利用这些操作对类实例中包含的数据进行操作。 参数抽象: 将数据类型作为参数处理。
§1. OOD准则
3、信息隐藏= 对象的封装 4、耦合: 交互耦合(interactive coupling):通过传递message发生 要求 降低参数个数和参数复杂性 减少objects发送 \ 接收message的个数 as loose as possible


§4. 系 统 分 解
⑷ 数据管理子系统: ① 选择管理模式

文件管理(file manager)系统 关系数据库(Relational Data Base)管理系统 面向对象数据库(OODB)管理系统

设计命令层次:注意同用户熟悉的方式( 如 windows界面)尽量保持一致. 次序、深度、 宽度调整适当 设 计 HCI 类 : 例 如 VC 提 供 的 MFC 类 库 (Microsoft Foundation Class Library)

§4. 系 统 分 解
⑶ 任务管理子系统:基于OOA建立的dynamic model ① 分析并发性:
合集下载

软件工程SW04-2 面向对象范式

软件工程SW04-2 面向对象范式

26
关联的重数
一个Airport对象时,它可以拥有0到任意数量 (0..*)的Aircraft对象;一个Aircraft对象可以被 0或1个(0..1)Airport对象包含. 一个Car对象可以拥有4或5个Tire对象,而轮 胎则必须在某辆汽车上.
27
�
面向对象范式——封装 面向对象范式——封装
可访问性包括:
公共的(Public)——任何代码都可以看见 保护的(Protected)——只有该类及其派生类的对 象可以看见 私有的(Private)——只有该类的对象可以看见
封装的概念
不仅仅是数据隐藏 一般来说,封装意味着任何形式的隐藏(如学生类 型对讲师的隐藏) 封装让一个对象内部行为的变化对其它对象透明
每个对象可用它本身的一组属性和它可 以执行的一组操作来定义. 属性一般只能通过执行对象的操作来改 变. 操作又称为方法或服务,它描述了对象 执行的功能,若通过消息传递,还可以 为其它对象使用.
11
重新理解对象的概念
什么是对象?
拥有方法的数据(局限性X) 拥有责任的某种东西(Better) 对象天生知道自己的类型.对象内包 含数据,让它知道自己的状态;对象 内包含代码,让它可以适当地运行.
21
面向对象范式——抽象类( 面向对象范式——抽象类(2) 抽象类
抽象类定义了其派生类必须实现的方法 (纯虚函数) 抽象类不仅仅是"不能被实例化的类" (实现层次上的定义) 在概念层次上,抽象类只是其它类的占 位符.即它给我们为一组相关的类命名 的方法.让我们可以把这一组类当作同 一个概念来处理
22
面向对象范式
1
面向对象设计——引例 面向对象设计——引例(1) 引例(

软件工程 第八章 面向对象的设计方法

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。

如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。

为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。

实现方案用UML交互图表示。

(2)设计技术支撑设施。

在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。

这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。

例如,数据的持久存储服务、安全控制服务和远程访问服务等。

在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。

(3)设计用户界面。

(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。

此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。

面向对象的软件设计过程如图8-1-1所示。

图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。

因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。

该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。

一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。

在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。

顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

《实用软件工程》第9章 面向对象设计

《实用软件工程》第9章 面向对象设计

• 信息隐藏:对于类而言,其内部信息如属性的表示方法和操作的实现算法,对 外界是隐藏的。外界通过有限的接口来访问类的内部信息。
17
9.3.2 面向对象设计的原则
• 低耦合:在面向对象设计中,耦合主要指对象之间相互关联的紧密程度,低耦 合有利于降低一个模块改变对其他模块的影响。
• 高内聚:内聚与耦合密切相关,低耦合往往意味着高内聚,高内聚有助于提高 系统独立性。
但随着需求理解的加深,以及对系统认识程度的逐步 提高,设计人员还要对模型进行修正和完善。 • 设计任务管理子系统包括确定任务,分配任务,还包 括权衡一致性、成本、性能等因素以及未来可扩充性。 • 设计数据管理子系统,需要设计数据格式以及相应的 服务,设计数据格式的方法与所用的数据存储管理模 式密切相关,不同数据存储管理模式时,属性和服务 的设计方法是不同的。
9.2 面向对象设计与面向对象分析的关系
• 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的 系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调 需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对 象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐 扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲, 从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在 不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。
• (2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度上 依赖于所用的图形用户界面环境,例如Windows、Delphi、C++,而且可能包括“窗 口”、“菜单”、“滚动条”、“按钮”等针对项目的特殊类。
25
9.5.1 系统分解

软件工程 第三部分 软件设计与建模--面向对象设计

软件工程 第三部分  软件设计与建模--面向对象设计

(2) 块状组织 把系统垂直地分解成若干个相对独立的、弱耦 合的子系统/块,每块提供一种类型的服务。
采用层次与块状的混合结构
3. 设计(分布式)系统的拓扑结构 由子系统组成完整的系统时,典型的拓扑结构 有管道形、树形、星形等。设计者应该采用与问题 结构相适应的、尽可能简单的拓扑结构,以减少子 系统之间的交互数量。
3. 设计简单的类 小而简单的类便于开发和管理(高内聚)。为使 类保持简单,应该注意以下几点。 (1) 避免包含过多的属性:完成的功能可能太多了。 (2) 有明确的定义:任务应该简单。 (3) 简化对象之间的合作关系。如果需要多个对象 协同配合才能做好一件事,则破坏了类的简明性和 清晰性。 (4) 不要提供太多服务。典型地,一个类提供的公 共服务不超过7个。
层次图、结 构图、流程 图、N-S图、 PAD图、判 定表、判定 树等
面向对象设计方法比结构化设计方法更具有优势, 9/71 使用范围更广。
内容摘要
• • • • • 面向对象设计方法概述 面向对象设计原则 面向对象设计的启发规则 系统设计 对象设计
10/237
面向对象设计原则
• 强调模块化、抽象化、信息隐蔽、高内聚低耦合、复用性等 设计准则。
4/71
什么是面向对象设计(OOD)?
(二)现今(90年代后)的OOD • 面向对象的设计(OOD)就是在OOA模型的基础上运 用面向对象方法进行系统设计,目标是产生一个符合具 体实现条件的OOD模型。
OOD的特点: • 1、以面向对象的分析为基础,一般不依赖结构化分析。 • 2、与相应的OOA方法共同构成一种OOA&D方法体系。 OOA和OOD采用一致的概念和原则,但属于软件生命 周期的不同阶段,有不同的目标及策略。 • 3、较全面地体现面向对象方法的概念与原则。 • 4、大多数方法独立于编程语言,通过OOA&D所得到 的系统模型可以由不同的编程语言实现。

软件工程面向对象软件开发方法

软件工程面向对象软件开发方法

软件工程面向对象软件开发方法引言在当前的软件开发领域中,面向对象编程(Object-oriented programming,简称OOP)是一种主要的软件开发方法。

面向对象软件开发方法基于面向对象的程序设计理念,通过将问题分解为对象,并通过对象之间的交互来解决问题。

本文将介绍面向对象软件开发的概念、特性以及在软件工程中的重要性。

面向对象软件开发概述面向对象软件开发是一种以对象为核心的软件开发方法,其中一个对象可以是一个类的实例或一个类本身。

对象在面向对象软件开发中被视为具有状态、行为和标识的实体。

该方法通过将问题分解为对象,并定义对象之间的关系和交互来解决问题。

面向对象软件开发方法有以下几个基本特征:1.封装(Encapsulation):通过封装将数据和相关操作组合在一起,只暴露必要的接口给外部使用。

封装可以使得对象的内部实现对外部不可见,提高了代码的可维护性和安全性。

2.继承(Inheritance):通过继承,在已有类的基础上创建新的类。

继承可以促使代码重用和层次化设计。

3.多态(Polymorphism):多态允许同一操作作用于不同类型的对象上,并产生不同的结果。

这种特性增加了代码的灵活性和可扩展性。

面向对象软件开发方法的优势包括:•提高开发效率:通过封装和抽象的机制,可以更好地管理和组织大型项目的代码,减少开发时间和维护成本。

•提高代码复用性:通过继承和多态的机制,可以避免重复编写相似的代码,提高了代码的复用性和可维护性。

•提高软件的可扩展性:面向对象软件开发方法的灵活性使得系统易于进行修改和扩展,能够快速适应变化的需求和技术。

面向对象软件开发流程面向对象软件开发方法通常包括以下几个主要步骤:在需求分析阶段,软件工程师与客户交流,确保准确理解客户的需求和问题。

通过讨论和分析,确定系统的功能需求、非功能需求和约束条件。

领域建模领域建模是通过抽象和建模来描述问题领域的过程。

通过识别实体、属性和关系,构建领域模型,这些模型将在后续的设计和实现阶段中使用。

软件工程课本讲解面向对象的OMT方法

装成模块。 最终得到:对象设计文档 = 细化旳对象模型 + 细
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。

《软件工程实用教程》第6_章_面向对象的软件设计


第6 章 面向對象的軟體設計
例:
第6 章 面向對象的軟體設計
2.部署圖 部署圖描述了處理器、設備和軟體構件運行時 的體系結構。 ( 1 )結點:是某種計算資源的物理對象,包括電 腦、設備(如印表機、通信設備)等 (2) 連接:連接用一條直線表示,它指出結點之間 存在著某種通信路徑,並指出通過哪條通信路 徑可使這些結點間交換對象或發送消息
第6 章 面向對象的軟體設計
2.詳細設計 (1)細化、補充類的屬性和操作 (2)設計類操作的實現演算法 (3)優化數據訪問路徑 (4)實現外部互動式的控制 (5)調整類結構,增加繼承性 (6)設計類之間的關聯的實現方式 (7)確定對象屬性的精確表示 (8)把類和關聯打包歸納到模組中
第6 章 面向對象的軟體設計
第6 章 面向對象的軟體設計
3)依賴倒置原則:指的是依賴關係應該是儘量依賴介面 (或抽象類),而不是依賴於具體類。在面向對象 的設計中,高層的類往往與領域的業務有關,這些 類只依賴於一些抽象的類或介面,當具體的實現細 節改變時,不會對高層的類產生影響。 4)介面分離原則:指的是在設計時採用多個與特定客戶 類有關的介面比採用一個通用的介面要好。即一個 類要給多個客戶類使用,那麼可以為每個客戶類創 建一個介面,然後這個類實現所有這些介面,而不 要只創建一個介面,其中包含了所有客戶類需要的 方法,然後這個類實現這個介面。
第6 章 面向對象的軟體設計
2.設計基於類的構件 (1)基本設計原則 2)Liskov替換原則:指的是子類可以替 換父類出現在父類能出現的任何地方。 例如,類ClassA要使用ClassB,ClassC 是ClassB的子類。如果在運行時,用 ClassC代替ClassB,則ClassA仍然可以 使用原來ClassB中提供的方法,而不需 要做任何改動。

软件工程 软件设计方法

软件工程软件设计方法
软件工程软件设计方法
软件设计方法是软件工程中的重要组成部分,它是指在软件开发过程中,通过采用一定的方法论和技术,对软件系统进行设计的过程。

1. 结构化设计方法
结构化设计方法是指将软件系统划分为多个模块,在每个模块中定义合适的数据结构和算法,以实现系统的功能需求。

典型的结构化设计方法包括层次设计、数据流图和结构图等。

2. 面向对象设计方法
面向对象设计方法是基于面向对象编程思想的软件设计方法,它以对象作为软件开发的基本单位,通过定义对象之间的关系和交互,实现系统的功能需求。

常用的面向对象设计方法包括UML建模和设计模式等。

3. 原型设计方法
原型设计方法是通过快速构建系统原型来验证和改进需求,从而指导软件的设计和开发过程。

原型设计方法可以快速获取用户反馈,识别和修复潜在问题,缩短开发周期和降低开发风险。

4. 数据驱动设计方法
数据驱动设计方法强调以数据为中心进行软件设计,通过分析和理解数据的结构、特征和关系,设计出合适的数据模型和处理逻辑,以实现数据的有效管理和利用。

5. 敏捷设计方法
敏捷设计方法是一种迭代、协作和自适应的软件设计方法,其核心理念是响应变化、积极交付和持续改进。

敏捷设计方法通常采用迭代开发模式,强调团队合作和高效沟通,以快速、灵活地满足用户需求。

以上是几种常用的软件设计方法,不同的方法在不同的场景下有其适用性和优劣势。

软件工程师需要根据具体项目需求和团队情况,选取合适的设计方法,并结合实践经验进行不断改进和优化。

软件工程导论(第11章)


3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:

一对一关联:
• 关联对象可以与参与关联的任一个对象合并。

一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档