软件工程--面向对象设计与UML
《面向对象分析与设计(UML)》课程大作业大纲

《面向对象分析与设计(UML)》课程大作业大纲一、课程简介《面向对象分析与设计(UML)》是一门是软件工程专业重要的、实践性很强的一门必修课。
UML是一种定义良好、易于表达、功能强大且适用于各种应用领域的建模语言,已被OMG采纳为标准。
目前UML已成为面向对象技术领域内占主导地位的标准建模语言。
掌握UML 语言,不仅有助于理解面向对象的分析与设计方法,也有助于对软件开发全过程的理解。
通过该课程的学习,使学生能基本掌握面向象技术基本概念和面向对象分析与设计方法,能够使用UML 语言来进行初步的系统分析与设计。
二、课程目标结合专业培养目标,本课程大作业要达到的目标如下:1.知识与技能目标通过本课程的学习,使学生掌握面向对象分析与设计基本理论和使用统一建模语言(UML)实现软件生命周期模型的六大阶段(需求分析,概要设计,详细设计,编码,测试,维护)的一般性原理、主要思想、关键技术;了解和掌握各阶段的规范文档书写格式,通过实验项目实践活动,培养学生理解和应用相关的知识技能,开发软件项目。
2.过程与方法目标了解面向对象分析与设计的发展历史及趋势,掌握运用UML 理论及方法解决实际问题的分析步骤。
通过具体方法的学习与运用,理解它们的优势与不足,从而锻炼和提高思维分析能力(归纳能力,演绎能力,对比分析能力,变通能力,总结能力,抽象能力)。
3.软件工程文档写作目标通过面向对象程序设计实践,培养作为一个软件工程技术人员必须具备的文档写作能力,严谨治学的科学研究态度,为未来的学习、工作和科研奠定良好的理论基础和实践基础。
通过本课程的大作业的训练,使学生在分析问题、解决问题等方面得到锻炼,增强学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
三、作业设计任务由指导教师向学生提供一定数量的设计题目,每一题目所用到的知识至少要覆盖《面向对象分析与设计(UML)》教学大纲中的大部分内容,主要包括利用UML2进行面向对象分析与设计的方法,运用面向对象的一般原则和模式进行应用系统的分析和设计建模。
UML课后习题答案

UML课后习题答案UML习题答案第⼀章⾯向对象设计与UML1.填空题(1)基本构造块UML规则公共机制(2)名字属性操作(3)封装继承多态(4)继承(5)瀑布模型喷泉模型基于组件的开发模型XP开发模型2. 选择题(1)C(2)A B C D(3)A B C D(4)A B C(5)A3.简答题(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,⽽对象是某⼀类的具体化实例,每⼀个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,⽽对⼀类对象的抽象就是类.类描述了⼀组有相同特性和相同⾏为的对象。
(2)1.UML是⼀种语⾔。
2. UML是⽤来建模的。
3.UML是统⼀的标准。
(3)建模能够帮助我们按照实际情况或按我们需要的形式对系统进⾏可视化;提供⼀种详细说明系统的结构或⾏为的⽅法;给出⼀个指导系统构造的模板;对我们所做出的决策进⾏⽂档化。
在建模时应遵循以下原则:选择要创建什么模型对如何动⼿解决问题和如何形成解决⽅案有着意义深远的影响;每⼀种模型可以在不同的精度级别上表⽰;最好的模型是与现实相联系的;单个模型不充分;对每个重要的系统最好⽤⼀组⼏乎独⽴的模型去处理。
(4)UML和⾯向对象软件开发之间有紧密的关系,可以说是⾯向对象软件开发促使了UML 的产⽣。
但是由于在UML标准化的过程中,吸收了业务建模、⼯作流建模和数据库建模等领域的标准规范,形成了适应性很强的标准。
(5)在软件设计过程中,使⽤UML建模是为了能够更好地理解正在开发的系统。
通过UML 建模,可以达到以下⽬的:有助于按照实际情况或按照所需要的样式对系统进⾏可视化;能够规约系统的结构或⾏为;给出了指导构造系统的模板;对做出的决策进⾏⽂档化。
第⼆章UML通⽤知识点综述1.填空题(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通⽤划分2. 选择题(2)C(3)A(4)A B(5)D3.简答题(1)在UML中,定义了四种基本的⾯向对象的事物,分别是结构事物、⾏为事物、分组事物和注释事物等。
软件工程 第5章--UML

UML的定义
UML定义有两个主要组成部分:语义和表示法。 语义用自然语言描述,表示法定义了UML的可 视化标准表示符号,这决定了UML是一种可视 化的建模语言。 在语义上,模型是元模型的实例。UML定义给 出了语法结构的精确定义。 使用UML时,要从不同的角度观察系统,为此 定义了概念“视图(View)‖。视图是对系统的模 型在某方面的投影,注重于系统的某个方面。
独立于过程
系统建模语言,独立于开发过程。
9
容易掌握使用 概念明确,建模表示法简洁明了,图形结 构清晰,容易掌握使用。 着重学习三个方面的主要内容: (1) UML的基本模型元素 (2) 组织模型元素的规则 (3) UML语言的公共机制 与程序设计语言的关系 用Java,C++ 等编程语言可实现一个系统。 一些CASE工具可以根据 UML所建立的系 统模型来产生Java、C++ 等代码框架。
31
UML事物 — 注释事物
11) Note(注释)
依附于一个元素或一组元素之上,对其进
行约束或解释的简单符号。没有语义影响。
See policy8-5-96.doc for details about these algorithms.
CashAccount presentValue()
32
15
UML定义 9 种图,表达UML中的 5 种视图,各 视图在静态和动态方面表示系统模型。
结构 视图 静态 方面
动态 方面
行为 视图 同左
实现 视图 构件图
环境 视图 部署图
同左
用例 视图 用例图
同左
类图 对象图
顺序图 同左 顺序图 合作图 (注重 合作图 状态图 进程、 状态图 活动图 线程) 活动图
UML与面向对象设计的关系与对比解析

UML与面向对象设计的关系与对比解析在软件开发领域,UML(统一建模语言)和面向对象设计是两个重要的概念。
它们之间存在着密切的关系,同时也有一些区别。
本文将对UML与面向对象设计的关系进行分析,并对它们的对比进行解析。
1. UML的概述UML是一种用于软件开发的图形化建模语言,它提供了一套丰富的符号和图形表示方法,用于描述软件系统的结构、行为和交互。
UML可以帮助开发人员更好地理解和沟通软件系统的设计和实现。
它包括了用例图、类图、时序图、活动图等多种图形表示方法,每种方法都有其特定的用途和表达能力。
2. 面向对象设计的概述面向对象设计是一种软件开发方法,它以对象为基本单位,通过封装、继承和多态等特性来组织和管理软件系统。
面向对象设计将系统分解为一系列的对象,每个对象都具有自己的属性和行为,并且可以通过消息传递来进行交互。
面向对象设计强调系统的可扩展性、可维护性和可重用性,它使得软件系统更易于理解和修改。
3. UML与面向对象设计的关系UML与面向对象设计有着密切的关系,它们可以相互促进和支持。
首先,UML提供了一种通用的建模语言,可以用于描述和分析面向对象设计中的各个方面。
开发人员可以使用UML来绘制类图、时序图等,以更好地理解和表达系统的结构和行为。
同时,UML也提供了一些规范和准则,可以帮助开发人员在进行面向对象设计时遵循一定的原则和约束。
另外,UML还可以作为面向对象设计的工具,帮助开发人员在系统设计和实现过程中进行可视化建模。
通过使用UML工具,开发人员可以快速创建和修改类图、时序图等,从而更好地组织和管理系统的结构和行为。
UML工具还提供了一些辅助功能,如代码生成、自动化测试等,可以提高开发效率和质量。
4. UML与面向对象设计的区别尽管UML与面向对象设计密切相关,但它们之间仍然存在一些区别。
首先,UML是一种建模语言,它更多地关注于系统的描述和分析,而不是具体的设计和实现。
UML提供了一些符号和图形表示方法,用于描述系统的结构和行为,但它并没有规定具体的设计和实现方式。
软件工程-电子教案第9章

9.3.2 设计用户界面 9.3.3 画UML顺序图或活动图
【例9.4】画出招聘考试管理系统的顺序图 某市人事局举行统一招聘考试。首先,各招聘 单位向人事局登记本单位各专业的招聘人数, 由人事局向社会公布招聘情况;考生报名、填 志愿;人事局组织安排考试;录入考试成绩; 向考生和招聘单位公布成绩;招聘单位进行录 用;发录用通知书。这里,共有三个对象类: 人事局、考生和招聘单位。
《软件工程》 陆惠恩主编
3
9.2.2 确定类的相互关系 1. 类的一般-特珠关系
《软件工程》 陆惠恩主编
4
2. 聚集关系
“整体-部分”关系
90 80 70 60 50 40 30 20 10 0 第一季度 第三季度 东部 西部 北部
《软件工程》 陆惠恩主编
5
3. 关联关系
阶 链属性
限定
《软件工程》 陆惠恩主编
《软件工程》 陆惠恩主编 18
9.7 UML的应用
9.7.1 UML模型 1. 用例模型 2. 静态模型 3.动态模型 4.实现模型
《软件工程》 陆惠恩主编
19
9.7.2 UML视图
视图域 视图 静态视图 结构分类 用例视图 实现视图 部署视图 状态视图 动态行为 活动视图 交互视图 图 类图 用例图 构件图 部署图 状态图 活动图 顺序图 协作图 模型管理 可扩展性 模型管理视图 类图 所有 所有 主要概念 类、关联、泛化、依赖关系、实现、接口 用例、执行者、关联、扩展、包含、用例 继承 构件、接口、依赖关系、实现 结点、构件、依赖关系、位置。 状态、事件、转换、动作 状态、活动、转换、分叉、连接 交互、对象、消息、激活 协作、交互、角色、消息 包、子系统、模型。 约束、版型、标签值
面向对象方法与UML

用例之间的泛化关系描述用例的一般与特 殊关系,不同的子用例代表了父用例的不 同实现。
5.3 静态建模机制
• 5.3.2 类图和对象图 类图使用类和对象描述系统的结构,展示了系统中类的
静态结构,即类与类之间的相互关系。类之间有多种联系方 式,如关联(相互连接)、依赖(一个类依赖于或使用另一 个类)、泛化(一个类是另一个类的特殊情况)。一个系统 有多幅类图,一个类也可以出现在几幅类图中。
5.2 统一建模语言UML
• 5.2.1 UML简述
统一建模语言(Unified Modeling Language,UML)是一种通用的可视化建 模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。它由 信息系统和面向对象领域的三位著名的方法学家Grady Booch、James Rumbaugh 和Ivar Jacobson提出的。它记录了与被构建系统的有关的决策和理解,可用于对 系统的理解、设计、浏览、配置、维护以及控制系统的信息。这种建模语言已经得 到了广泛的支持和应用,并且已被ISO组织发布为国际标准。 UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示 UML用来捕获系统静态结构和动态行为的信息 UML是独立于过程的,它适用于各种软件开发方法、软件生命周期的各个阶段、
5.3 静态建模机制
• 类与类之间的关系有关联、依赖、泛化和实现等。
1)关联(Association)表达模型元素间的一种语义关系, 对具有共同的结构特性、行为特性、关系和语义的链的描述。 UML中使用一条直线表示关联关系,直线两端上的数字表示 重数。关联关系还分为二元关联、多元关联、受限关联、聚 集和组合等。
对象图是类图的实例,它展示了系统在某一时刻的快照。 对象图使用与类图相同的符号,只是在对象名下面加上下划 线。
面向对象与UML

类B
类A
44
约束与派生
范畴: 表示法:
约束和派生机制能应用与仸何模型元素
用花括号括起放在模型元素旁边 典型的属性约束是该属性的取值范围 通常在派生属性前面加一个“/”表示 可由其它属性通过某种方式计算得到
约束属性: 派生属性
关联关系可以被约束(班级由学生组成,管理关 系的班干是学生的子集),也可以被派生 (公司 的VIP客户)
关注交互的时间顺序
打印文件 计算机 打印服务器 打印机 打印队列
打印文件 异步模式
[打印机就绪] 打印文件 [打印机忙] 保存文件
51
协作图(Collaboration Diagram)
关于交互的静态链接
计算机 打印队列
[打印机忙] 2.2:保存文件 1:打印文件
打印服务器
[打印机就绪] 2.1:打印文件
8
面向对象的模型表示法
9
模型的特征优势是什么?
10
模型的特征优势
1. 反映性——模型用来反映客观实体
2. 简化性——以简化的方式来反映客观事物 3. 直观性——方便、直观的方式反映客观
4. 抽象性——以抽象的方式描述客观事物及 其规律
11
从抽象角度看,模型分为哪几种?
12
从抽象角度看,模型分为
55
活劢图的作用
活劢图具有广泛地用途,在软件建模中,活劢图 可以用来
描述工作流
35
建立用例图
保险商务系统
签定保险 单
销售统计
客户
客户统计
保险销售员
36
用例乊间的关系
扩展关系
根据指定的条件,一个用例中有可能加入另一个 用例的劢作
uml 基础教程 第一章--uml与面向对象

2020/6/13
基础内容:类和对象的关系 重点掌握:面向对象的四个特征 一般了解:面向对象项目的设计
2020/6/13
1.1 面向对象开发
1.1.1 理解面向对象
一、对象
• 面向对象认为客观世界是由各种各样的对象组成, 每个对象都有自己的数据和操作,对象和对象之间 是通过对象暴露在外的接口进行调用的,不同对象 之间的相互作用和联系构成了各种系统。
2020/6/13
•面向对象概念中,这种关系叫继承。每个Appliance 的子类都继承了Appliance的特征。同时,要重点注 意下,每个子类都增加了自己的属性和操作。 •因此,继承是一种连接类与类之间的层次模型,是 指特殊类的对象拥有其一般类的属性和行为。特殊 类中不必重新对已经在一般类中所定义的属性和行 为进行定义。特殊类自动地、隐含地拥有其一般类 的属性和行为。
0/6/13
• 在设计阶段,要考虑的是定义软件系统中技术细 节的类(如处理用户接口、数据库、通信和并行性 等问题的类),把分析阶段的结果扩展成技术解决 方案。
• 构造阶段,把设计阶段的类转换成某种面向对象 程序设计语言的的代码(工具可以完成)。
• 测试阶段,系统通常需要经过单元测试、集成测 试、系统测试和验收测试。不同的测试小组使用不 同的UML图作为测试依据:单元测试使用类图和类 规格说明;集成测试使用构件图和协作图;系统测 试使用用例图来验证系统的行为;验收测试由用户 进行,以验证系统测试的结果是否满足在分析阶段 确定的需求。
2020/6/13
1.2 UML简介
1.2.1 对系统建模的必要性
UML具体有哪些作用:
• (1)对于软件系统用户,软件的开发模型向他们 描述了软件开发者对于软件系统需求的理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
§4. 系 统 分 解
② 垂直块组织: 将系统垂直分解成若干独立的子系统,一个子 系统相当于一块,每块提供一种类型的服务。
典型应用系统的组织结构
应 用 软 件 包
人机对 话控制
窗口图形 HCI 图形 屏幕图形 处理 象素图形
仿真 软件包
操 作 系 统 计 算 机 硬 件
38
封包
年个
编辑器 控制器 图组件
见、、 、图组件见、源自 、图形核心窗口系统
基本图形 核心 窗口核心
基本图形 微软窗口
39
活动图:磁盘
40
构件分布图
41
构件图的组合
42
配置图:主机与外围设备
43
应用生存期
系统 描述
论域 分析
客户输入
应用 分析
高层 设计
维护
组装 测试
21
UML
任何方法都应由建模语言和建模过程两部分构成。 建模语言提供了用于表示设计的图形符号,建模 过程描述了进行设计时所需遵循的步骤。 UML则统一了面向对象建模的基本概念、术语及 其图形符号,建立了便于交流的通用语言。 在UML中用5种不同的视图来表示一个系统,这些 视图从不同的侧面描述系统。 • 每一个视图由一组图形来定义。
打印机空闲 打印输出文件 打印机忙 输出文件 入队列
35
时序图:打电话
访客 a {b-a<1} b {c-b<10} c {e-d<5} 铃响信号 拿起话筒 蜂鸣音 拨号码 ... d
<10
交换机
远程交换机
访客
路径 e 铃响 拿起话筒 铃响停止信号 铃响停止
36
协同图:打印
37
状态图:电梯
公司
find_skill
1+ 雇用
雇员
1+ 1+ 具有技能
技能
18
§7. 优化
方法1:嵌套查询 —— 遍历雇员2000次,而对每个 雇员遍历技能10次。命中率为1/4000。 方法2:用Hash Table实现技能,使“会讲日语”对 应唯一的技能对象,则命中率上升为1/400。
方法3:增加一个额外的限定关联“精通语言”, 即可立刻查得结果。
§1. OOD准则
2、抽象Abstraction:抽出事物的本质特性, 暂不考虑其 细节,使设计从具体实现方法中超脱。 3、信息隐藏Information hiding = 对象封装 Encapsulation of object 4、耦合Coupling: 交互耦合(interactive coupling):通过传递message发生 要求降低参数个数和参数复杂性
2、设计实现方法 ⑴ 算法设计:要求做到易修改,并且复杂度低(即 效率高) 易理解,易实现。
⑵ 数据结构设计:需要考虑具体的物理结构的选择。 ⑶ 新添用于存放内部处理中间结果的class;引入新 的低层操作,进一步细化。
15
§6. 设计关联
1、单向关联 例:
雇员 1+ 被雇用 公司
由雇员找其所属公司, 则设雇主为其属性, 即一单向指针
11
§4. 系 统 分 解
2、系统组织方案 ① 水平层次组织: 将系统组织成hierarchy,同一层中的objects相 互独立,而上、下层间有 client-server关系。
一个client只能调用其相邻下层的server —— 封闭式(closed) 一个client可调用其下任一层的server —— 开放式(open)
解之。
一般-特殊内聚
6、复用性Reusability
5
§2. 启发式规则
1、设计结果清晰易懂,应做到: ① 用词一致 —— 按习惯用法命名。不同classes中 相似的methods最好取同一名字。 ② 使用已有的protocol。 ③ 尽量减少message模式的数目。 ④ 避免模糊定义。
2、一般-特殊结构的深度应适当(约100个classes,则 设计7±2层)
需求 属性 获得 普通 术语
开发 规划 导出 相关 需求
详述使用 实例
寻找行为者 和使用实例 构造行为者 和使用实例 模型
25
分析与设计方法图
使用实例分析 结构分析
类设计 数据库设计
子系统设计
结构设计
使用实例设计 结构评审
流程描述
分布描述
设计评审
26
UML方法中的基本模型
系统 视图 使用图形 用户 使用实例图, 活动图 模型 结构 类和对象图, 状态图, 时序图, 模型 协同图, 活动图 行为 状态图, 时序图, 协同图, 模型 活动图, 构件图, 配置图 实现 构件图 模型 环境 配置图 模型 适用对象 用户, 设计者, 实现者, 测试者 设计者, 实现者 实现者, 组装者 实现者 实现者, 组装者, 测试者
③ 分析重用 —— 当需求未变,而系统结构改变时
重用效果的衡量: 额外代价: 创建可重用成分的专门投资 多花2 ~ 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成 本中。重用次数越多,分摊成本越少。
9
§4. 系 统 分 解
回顾SD:从DFD出发 OOD模型分解:
公司 雇员
语 1+ 1+ 言 精通语言
19
§7. 优化
建立这样的索引必然多占空间,而且基关联改 变时也必须相应地修改索引。因此,应只给那些经 常执行并且开销大、命中率低的查询建立索引。 ② 调整查询次序,优化算法 例如公司有5名会日语的雇员,有200名会法语 的雇员。现要找日、法语均会的雇员,则应先找 的 会日语 雇员,再从中找 会法语 的雇员。
29
• 类图用于表示类的存在和类与类之间的相互关 系,是从系统构成的角度来描述正在开发的系 统。 • 类的表示 类的名称 属性 属性 :数据类型 属性 :数据类型 = 初值 操作 操作(参数表):结果类型
30
限定关联
关联名称
类1 角色1
限定词
类2 角色2
聚合、导航和个体数目
整体 类名
聚合,单向导航
27
事 务 模 型 分 析
使用实例图 事件流 脚本
相互作用图(时序图,协同图) 对象&类
面 向 对 象 分 析
对象图,类图 类分组 封包图
UML规划 操作分析过程
状态图
构件图 配置图
28
类图
人 持有人 财产 * 借方 * 抵押 本金 利率 到期 债权人 * 金融机构
信贷银行 *{有序}
银行
* 房屋
13
§5. 设计类中的服务 —— 细化object model中的 methods
1、确立服务
⑴ 从 dynamic model出发:
Event Status 1 do: Action 1 Status 2 do: Action 2
……
⑵ 从function model出发:
I
P
O
14
§5. 设计类中的服务
I
P O
Category
问题域
Application Domain
人机交互 任务管理 数据管理
HumanTask Data Computer Management Management Interface (HCI)
Class-&-Object Structure Attribute Method
10
知识 工程
重用软件成分有三个级别: ① 代码重用: • 源码剪贴 —— 无法溯源,无配臵管理 • Include —— 修改后所有包含了此段代码的程 想象一下,stdio.h 被改动之后…… 序都须重新编译。
• Inheritance —— 无须改动原有代码
8
§3. 软件重用
② 设计重用 —— 当移植系统时
雇员 雇主
公司
由公司找其下属某一雇员,则有两种方法:
方法1:遍历所有雇员,找雇主匹配且满足特征的雇 员。(省空间)
16
方法2:设公司 的属 性雇员 为 一指针集。 (快速) 2、双向关联
雇员
公司 雇员
§6. 设计关联
指针集
方法1:将上述两种单向 关联结合使用
雇员 雇主 公司 雇员
方法2:另设关联类(特 别适用于链属性)
公司
关联类
雇主 雇员 工资
指针集
雇员
17
§7. 优 化
1、确定优先级: 必须站在全局高度确定各项质量指标的优先级, 在优化设计时制定折衷方案。切忌各子系统自以为 是,导致最终优化目标对立。 最常见的情况是在效率与清晰性之间的折衷。
2、提高效率的技术
① 增加关联(类) 例:设某公司有2000名雇员,平均每名雇员会 10种技能,其中有5人精通日语,现要查询 公司中会讲日语的雇员是哪些人
6
§2. 启发式规则
3、设计简单的class(定义不超过一页纸或两屏)。 应注意: ① 避免过多attributes; ② 能用简单的语句描述一个class的任务; ③ objects之间合作关系要简单; ④避免过多methods( 7个)。
问题:设计出大量的classes,使结构复杂度增加。 解决:划分主题,提高可理解性。 4、使用简单的protocol,减少message 中传递的
§4. 系 统 分 解
1、子系统之间的交互方式(collaboration) ① 客户-供应商(client-server)关系:
Client subsystem request Server subsystem contract
② 平等伙伴(peer-to-peer)关系: