软件工程 第七章 面向对象的分析及设计
软件工程中的面向对象分析与设计方法

软件工程中的面向对象分析与设计方法1. 引言面向对象分析与设计是软件工程领域中一种重要的方法论,它以现实世界中的实体为基础,将问题领域抽象为对象,并通过定义对象的属性和行为,建立对象之间的关系,最终实现软件系统的高效设计与开发。
本文将介绍面向对象分析与设计的基本原则、常用的建模工具及其在软件工程中的应用。
2. 面向对象分析面向对象分析是指通过对问题领域的观察与理解,将实体抽象为具有一定属性和行为的对象,并识别对象之间的关系。
在面向对象分析中,常采用用例图、活动图、类图等建模工具来描述问题领域的各个方面。
2.1 用例图用例图是一种常用的需求建模工具,它主要用于描述系统与外部用户之间的交互,在分析阶段有助于识别系统的功能需求。
用例图由参与者和用例构成,参与者代表系统外部的用户或其他系统,用例则表示系统的各项功能。
2.2 活动图活动图是一种用于描述系统行为的建模工具,它展示了系统内部的活动流程与交互,用于显示各个活动的先后顺序和条件。
活动图对于面向对象分析阶段的行为建模非常有用,它可以帮助分析师更好地理解业务流程,并识别系统中的状态和事件。
3. 面向对象设计面向对象设计是在分析的基础上,根据需求分析的结果,进行软件系统的设计与实现。
面向对象设计强调系统模块的内聚性和模块之间的低耦合性,以实现系统的可维护性和可扩展性。
常用的面向对象设计的工具包括类图、对象图、序列图等。
3.1 类图类图是一种用于描述类、对象及它们之间关系的建模工具,它是面向对象设计的核心。
在类图中,类表示对象的属性和行为,关系表示类与类之间的关联、继承、依赖等关系。
类图能够直观地展示系统结构和模块间的关系,有助于工程师进行系统设计和代码编写。
3.2 对象图对象图是类图的一种特殊形式,它展示了某个特定时刻系统中对象的状态及对象之间的关系。
对象图可以帮助验证类图中所设计的类和关系,并在系统实现阶段进行对象间的通信和交互的设计。
3.3 序列图序列图是一种用于描述对象在一系列交互中如何协作的建模工具。
面向对象分析与设计

面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。
通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。
一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。
它强调将问题领域的实体、关系和行为抽象为对象、类和方法。
面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。
二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。
这种模块化可以提高代码的可维护性和可复用性。
2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。
多态则允许对象在不同上下文中表现出不同的行为。
这些特性使得代码更加灵活和易于扩展。
3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。
这种封装和信息隐藏可以保护数据的完整性和安全性。
4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。
这种流程可以提高开发效率,并减少错误和重复工作。
三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。
通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。
2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。
通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。
3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。
同时,还需要考虑系统的性能、安全和可维护性等方面的问题。
4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。
软件工程面向对象的分析与设计

-
THANKS!
XX生活即将结束,在此,我要感谢所有教导我的老师和陪 伴我一齐成长的同学,他们在我的大学生涯给予了很大的帮助。本论 文能够顺利完成,要特别感谢我的导师XXX老师,XXX老师对该论文从选题,构
思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计! 最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位
识别类和继承
通过类和继承,我们可以组织具有相似属性和行为的对象。类 定义了一组对象的通用属性和行为,而继承则允许我们从一个 类派生出另一个类,从而共享和扩展其属性和行为
定义接口
接口定义了类或对象之间的交互方式。它描述了对象需要提供 的方法和需要遵守的协议
面向对象的分析
通过面向对象的分析, 我们可以更准确地理 解和描述软件系统的 需求,为后续的设计 和实现打下坚实的基 础
2
面向对象的 设计
面向对象的设计
面向对象的设计(Object-Oriented Design,OOD)是软件工程过程中的一个关键阶段 ,其目标是基于面向对象的分析结果,设计出满足系统需求的软件结构
识别类和对象:根据面向对象的分析结果,识别出系统中的主要类和对象。这些类和 对象应该能够准确地反映问题域的特征和需求
和操作方式
设计数据库:根据系统的数 据需求,设计出合适的数据 库结构。数据库应该能够有 效地存储和管理系统的数据
设计系统架构:根据系统的 功能需求和性能要求,设计 出合适的系统架构。系统架 构应该能够支持系统的可扩 展性、可维护性和可重用性
面向对象的设计
通过面向对象的设计,我们可 以设计出结构清晰、易于理解 和实现的软件系统,从而提高
面向对象的分析
北邮软件工程课件第7章面向对象分析

一般说来,确定属性的过程包括分析和选择两个步骤。
7.3.4确定属性
属性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。在分析过程中应该首先找出最重要的属性,以后再逐渐把其余属性增添进去。在分析阶段不要考虑那些纯粹用于实现的属性。
通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类—&—对象,因此,分析员应该根据领域知识或常识进一步把隐含的类—&—对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。
筛选出正确的类—&—对象
显然,仅通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的类—&—对象,接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。
1.分析
2.选择
认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性。通常有以下几种常见情况。 误把对象当作属性 把链属性误作为属性 把限定误当成属性 误把内部状态当成了属性 过于细化 存在不一致的属性
图7.5 ATM对象模型中的属性
7.3.5识别继承关系
01
确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织。
ATM打印账单,退出现金兑换卡,请储户拿走它们;储户取走账单和卡
ATM确认取款额在预先规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功地处理完这项事务并返回该账户的新余额[ZK)]
ATM问储户是否继续这项事务;储户回答“不”
软件工程面向对象分析与设计

填充后的类图
收集系统需求
看下面一段话。 协调员:"这个系统做好后准备叫什么名字呢?" 厨师:"叫MASTER CHEF怎么样?" 协调员:"不好听,在想一个吧" 系统工程师:"来个简明快捷的吧,就叫Wireless
战性。 我们以IBM Rational Rose 2003为主.
UML的组成(常用视图)
类图:把现实事物抽象出来,用图来表示.
类名 属性
事件
视频
UML的组成(常用视图)
用例图:从用户的观点对系统行为的一个描述.
视频
UML的组成(常用视图)
状态图(Statechart Diagram)是描述一个实体基于事件 反应的动态行为,显示了该实体如何根据当前所处的 状态对不同的时间做出反应的。
UML的组成(常用视图)
构件图:软件组成中的一个单元。视频
包
构件
UML的组成(常用视图)
部署图:一个UML部署图描述了一个运行时的硬件结 点,以及在这些结点上运行的软件组件的静态视图。 部署图显示了系统的硬件,安装在硬件上的软件,以 及用于连接异构的机器之间的中间件,显示了基于计 算机系统的物理系统结构。
第二部分 UML细节
1 如何认识面向对象中的元素 2 UML中的关系。
如何认识面向对象中的元素
如果我们有一个项目需要做需求分析,这时客户和你 交谈的时候因该注意什么呢??
软件工程第7章 面向对象分析与设计

第7章
7.4 建立功能模型
用数据流图建立功能模型的主要步骤如下: (1)确定输入和输出值; (2)用数据流图表示功能的依赖性; (3)具体描述每个功能;
(4)确定对象的约束;
(5)确定功能优化的准则。 功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的
过程(即处理)可以由下一层的数据流图作进一步说明。
以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务。
第7章
7.3 建立动态模型
动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。 下列三个因素有关: (1)状态。状态是对象在其生存周期中的某个特定阶段所具有的行为模式,它是对影 响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。对象对输入事件 的响应,既可以执行一个或一系列动作,也可以是仅仅改变对象本身的状态。状态有持续性, 占用一段时间间隔。 (2)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一 种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。 (3)行为。行为也称服务,是指对象在某种状态下所做的一系列处理操作,行为是需 要消耗时间的
形成文件并规范地加以表述; (2)识别解决问题的对象集合及对象间的关系; (3)定义类(包括定义其属性和操作)并建立类间的层次关系; (4)通过建立模型来表示对象之间的关系及行为特性。
第7章
7.1 面向对象分析
7.1.2 面向对象分析的过程
第7章
7.1 面向对象分析
7.1.2 面向对象分析的过程
第7章
面向对象的分析与设计
理解面向对象分析的主要任务和一般过程;
本章 要点
初步掌握对象模型的建立方法; 了解动态模型和功能模型的建立方法; 理解面向对象设计的基本模型及主要内容。
软件工程中的面向对象分析与设计方法

总结
设计模式是软件工程中非常重要的一部分, 可以提高代码的复用性和可维护性,同时 能够帮助开发人员更好地解决问题。通过 深入了解和应用设计模式,可以使系统更
加稳定和高效。
主要内容回顾
软件工程概述
重点掌握软件开发流程和方法论
面向对象分析与设计
学习如何应用面向对象的思想进行系统设计
面向对象建模
掌握UML等建模工具的使用
面向对象编程语言
Java
Java是一种面向对象编程语言,拥有强大的类和对象机制
C++
C++是一种支持面向对象编程的高级语言,广泛应用于系统开发
Python
Python具有简单易学的特点,也是一种面向对象编程语言
封装和继承
封装
封装是将数据和操 作封装在类中,提 供接口进行访问
抽象类
抽象类是不能被直 接实例化的类,用 于定义子类的结构
重构后代码更易于理解和修改
减少代码重复
通过重构消除重复代码,提高代码质量
优化性能
重构可以改善系统性能,提高运行效率
总结
面向对象测试和维护是软件工程中必不可 少的步骤,通过测试可以保证软件质量, 通过维护可以不断优化和扩展系统功能。 面向对象重构则是持续改进代码质量和系
统性能的重要手段。
设计模式概述
学习收获
知识积累
通过学习软件工程,积累 了丰富的理论知识
能力提升
提升了分析和设计系统的能 力
思维方式
培养了面向对象的思维方 式
团队合作
加强了团队协作和沟通能力
发展趋势
未来软件工程领域将更加注重人工智能、 大数据、云计算等技术的应用,个人在职 业规划中应不断学习和适应新技术,保持
软件工程第07章 面向对象的分析和设计PPT课件

它也可以是另一个对象。每个对象都有它自己 的属性值,表示该对象的状态。对象中的属性 只能通过该对象所提供的操作来存取或修改。
操作(operation)(也称方法或服务)规 定了对象的行为,表示对象所能提供的服务。
沈阳建筑大学信息与控制工程学院 软件工程课程
沈阳建筑大学信息与控制工程学院 软件工程课程
23
注意,执行者与用户是不同的两个概念, 一个用户可以扮演几个角色(执行者),一 个执行者可以是用户,也可以是其他系统 (应用程序或设备)。得到的用况必须进行 复审,以使需求完整。
沈阳建筑大学信息与控制工程学院 软件工程课程
24
2. 标识类和对象
类和对象来自问题领域。
沈阳建筑大学信息与控制工程学院 软件工程课程
21
面向对象分析 Object-Oriented Analysis
面向对象分析的一般步骤如下:
1. 获取客户对系统的需求:包括标识场景(scenario) 和用况(use case,也称用例),以及建造需求模 型
2. 用基本的需求为指南,来选择类和对象(包括属性 和操作)。
29
面向对象设计 (Object_Oriented Design)
面向对象设计的一般步骤如下: 1. 系统设计
• 将子系统分配到处理器 • 选择实现数据管理、界面支持和任务
管理的设计策略 • 为系统设计合适的控制机制 • 复审并考虑权衡(折衷)
沈阳建筑大学信息与控制工程学院 软件工程课程
30
2. 对象设计 • 在过程级别(procedural lavel)设计 每个操作,即设计每个操作的实现细节
面向对象 = 对象(object)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
了解现有的类似系统,从而快速地建立一个原型系统,通过在计算机上运行原型系统,使得
分析员和用户尽快交流和相互理解,从而能更正确地、更完整地提取和确定用户的需求。
第7章
7.5 面向对象设计
24
7.5.2 面向对象设计的准则和启发式规则
1.面向对象设计的准则 在进行面向对象设计的过程中,应该遵循软件设计的基本原理,此外,还要考虑面向对象 的特点。面向对象设计准则主要包括模块化、抽象、信息隐藏、低耦合、高内聚和复用性几点。 具体内容如下: (1)模块化 (2)抽象 (3)信息隐藏 (4)低耦合 (5)高内聚 (6)复用性
第7章
7.5 面向对象设计
25
7.5.2 面向对象设计的准则和启发式规则
2.面向对象设计的启发式规则 (1)设计结果应该清晰易懂
(2)一般/特殊结构的深度应适当
(3)设计简单的类 (4)使用简单的协议
(5)设计简单的服务
(6)最小设计变动
第7章
7.6 系统设计
26
7.5.2 面向对象设计的准则和启发式规则
第7章
7.1 面向对象分析
8
7.1.4 对象模型的层次
2.OOA的五项活动 OOA对象模型的五个层次对应着OOA过程中建立对象模型的五项活动。这五项活动是:
确定类\|&\|对象、识别结构、识别主题、定义属性、定义服务。
需要说明的是,这五项工作完全没有必要顺序完成,也无需在彻底完成一项工作以后再 开始另外一项工作,在分析过程中并不需要严格遵循自顶向下,逐步求精的原则。五项活动
第7章
7.2 建立对象模型
11
7.2.1 确定对象和类
采用系统词汇法确定对象类,并进行建模的具体做法如下: (1)确定对象类 (2)准备数据词典 (3)确定关联 (4)确定属性
(5)使用继承来细化对象类
(6)完善对象模型
第7章
7.2 建立对象模型
12
7.2.3 确定主题
主题是一种关于模型的抽象机制,起一种控制作用。引入主题有助于分解大型项目以便 成立工作小组来承担不同的主题任务。主题有两种表示形式,如图7-7所示。
占用一段时间间隔。
(2)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一 种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。
(3)行为。行为也称服务,是指对象在某种状态下所做的一系列处理操作,行为是需
要消耗时间的
第7章
7.3 建立动态模型
16
1.构建事件追踪图 要建立一个事件追踪图,通常首先要编写 脚本。脚本是系统执行某个功能的一系列事件。 脚本通常起始于一个系统外部的输入事件,结束 于一个系统外部的输出事件,它可以包括发生在 此期间内系统所有的内部事件。
第7章
7.4 建立功能模型
20
第7章
7.5 面向对象设计
21
7.5.1 面向对象设计概述
1.面向对象分析与面向对象设计的关系 面向对象设计(Object Oriented Design,OOD)是根据面向对象分析中确定的类和对象 设计软件系统。从OOA到OOD是一个逐步建立和扩充对象模型的过程。 OOA是分析用户需求并建立问题域模型的过程,是解决系统“做什么”问题的;OOD则
3.OOA的主要流程 面向对象分析大体上按照如图7-4所示的顺序进行。
第7章
7.2 建立对象模型
10
7.2.1 确定对象和类
OOA的核心是确定问题域中相关的对象,找出这些对象是个重要而复杂的过程。一般采 用基于词汇分析的方法:从目标系统的描述开始,找出其中的名词作为候选对象类,此外, 还可找出其中的动词作为候选方法(即后面要介绍的服务),然后产生一个由对象(名词) 和方法(动词)构成的表格,作为词汇分析的初步结果,最后从中选出确定的真正的对象类。 如图7-5所示。
第7章
7.1 面向对象分析
5
7.1.2 面向对象分析的过程
2.需求建模 系统分析员根据所提取的用户需求,深入地理解用户需求,识别出问题域内的对象,并
分析它们之间相互的关系,抽象出目标系统应该完成的任务,并用OOA模型准确地表示出来,
即用面向对象观点建立对象模型、动态模型和功能模型。OOA模型是OOD的基础,它应该准 确、简洁地表示问题。通过建立模型,可以避免理解上的片面性,提高目标系统的正确性和
第7章
7.4 建立功能模型
19
用数据流图建立功能模型的主要步骤如下: (1)确定输入和输出值; (2)用数据流图表示功能的依赖性; (3)具体描述每个功能; (4)确定对象的约束;
(5)确定功能优化的准则。
功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的 过程(即处理)可以由下一层的数据流图作进一步说明。
第7章
7.2 建立对象模型
13
7.2.4 确定服务和消息
所谓服务是在接收到一条消息后所要进行的加工。定义服务时,首先定义行为,然后定 义实例的通信。值得说明的是,确定服务和消息,只有在建立了动态模型和功能模型之后, 才可能最后确定对象类的服务。本教材为保持案例的连续性,故将服务和消息在此介绍。 确定一个类中的服务,主要取决于该类在问题中的实际作用以及求解过程中承担的处理 责任,确定的原则如下: (1)基本的属性操作服务。即类中应提供的访问、修改自身属性值的基本操作。这类 操作属于类的内部操作,可不必在对象模型中显式表示。 (2)事件的处理操作。动态模型中状态图描述了对象应接收的事件(消息),类和对
第7章
7.3 建立动态模型
17
第7章
7.4 建立功能模型
18
功能模型主要用来说明系统内部数据是如何传送和处理的,表示变化的系统的“功能” 性质。功能模型描述了系统“做什么”,它更直接、明确地反映了用户对目标系统的需求。 建立功能模型有助于软件开发人员更深入地理解整个问题域,改进和完善自己的设计。通常 在建立对象模型和动态模型之后再建立功能模型。 在UML中,用用例图描述用例模型,用例图包含系统、行为者、用例、用例之间的关系 等元素。其中:系统是一个提供用例的黑盒子,可用方框表示;行为者是与系统交互的角色 或其他外部系统;用例是一个完整的功能,完成系统内部的计算及与行为者的交互,它对应 于对象模型中的类所提供的服务;行为者与用例之间的关系用直线连接,表示两者之间有交 换信息,称为通信联系。
系统设计确定实现系统的策略和目标系统的高层结构设计。系统设计是要将系统分解为若 干个子系统,子系统和子系统之间通过接口进行联系。系统设计的一般步骤如图7-14所示:
第7章
7.6 系统设计
27
7.5.2 面向对象设计的准则和启发式规则
象中必须提供处理相应消息的服务,这些服务用于修改对象的状态(属性值)并启动相应的
服务。
第7章
7.2 建立对象模型
14
7.2.4 确定服务和消息
(3)数据流图中处理框对应的操作。功能模型中的每个处理框代表了系统应实现的部
分功能,而这些功能都与一个或几个对象中提供的服务相对应。因此,要仔细分析状态图和
(4)通过建立模型来表示对象之间的关系及行为特性。
第7章
7.1 面向对象分析
3
7.1.2 面向对象分析的过程
第7章
7.1 面向对象分析
4
7.1.2 面向对象分析的过程
1.分析需求文档 系统分析通常是从一个需求文档(或称需求陈述)和用户一系列的讨论开始的。大多数需
求陈述都是有二义性的、不完整的甚至不一致的。通过分析可以发现和改正需求文档中的歧
模型;
(2)动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结 构的模型;
(3)功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。
第7章
7.1 面向对象分析
7
7.1.4 对象模型的层次
1.对象模型的五个层次 复杂问题(大型系统)的对象模型由五个层次组成,即主题层、类\|&\|对象层、结构层、 属性层和服务层,如图7-3所示。
可以同时(并行)处理,也可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继
续处理。例如,当系统分析员在确定类\|&\|对象时,想到了该类应该包含的一个服务,于 是把这个服务的名字写在服务层,然后又返回到类\|&\|对象层,继续寻找另外的类\|&\|对
象。
第7章
7.1 面向对象分析
9
7.1.4 对象模型的层次
模型。OOA的核心思想是利用面向对象的概念和方法为软件需求建造模型,以使用户需求逐步
精确化、一致化、完全化。为了达到这一目标,必须完成以下任务: (1)与用户进行充分沟通,全面理解和分析用户需求,明确所开发的软件系统的职责,
形成文件并规范地加以表述;
(2)识别解决问题的对象集合及对象间的关系; (3)定义类(包括定义其属性和操作)并建立类间的层次关系;
可靠性,在此基础上,编写出面向对象的需求规格说明书。
3.需求评审 需求规格说明文档经用户、领域专家、系统分析员和系统设计人员以及其他有关人员评
审、并进行反复修改后形成定稿,该文档将成为面向对象设计的依据。
第7章
7.1 面向对象分析
6
7.1.3 面向对象分析的三种模型
面向对象建模是OOA的关键。OOA的模型要表示出系统的数据、功能和行为三方面的基 本特征,因此通常需要建立三种模型,分别是对象模型、动态模型和功能模型。其中: (1)对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的
个阶段的工作。从OOA到OOD是一个逐渐扩充模型的过程,分析和设计活动是一个多次反复 迭代的过程。