OOAD 第1讲 OOAD引论和用例模型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • 用例图 用例 类图 顺序图 状态图
5
作业
• 以电子邮件的形式交作业 bobzc@ (或bobzc@) 2. 请 2010/11/07 以前交,并写明姓名和学号
• 推荐的电子作业文件名格式
SX_10_OOAD_组长名字_手机号.zip 3. 每个收到的作业都会有一个电子邮件形式的确认 考核方法 1. 开卷考试(70%)
19
1.6 什么是UML?
• UML 是用来帮助构建软件系统一种可视化语言 • UML 是一种符号系统,主要用来为软件建模
– 发现 – 记录 – 交流
• UML 的地位和作用在许多时候被夸大了 • UML 不是一个软件方法(OO 是一种软件方法) • UML 不是一个软件过程(Unified Process 是一种软件过程)
one iteration of design, implement, integrate, and test
24
• UP中一个最重要的思想: 迭代(方式的)开发
• • 整个软件工程的开发活动被组织成一系列时间长度预先确定的小工程的开发活 动,每个小的过程称之为一个迭代 每个迭代有它自己的需求分析,设计,实现和测试活动
25
迭代式和进化式的生命周期
1 2 3 4 5 ... 20
requirements workshops Imagine this will ultimately be a 20iteration project. In evolutionary iterative development, the requirements evolve over a set of the early iterations, through a series of requirements workshops (for example). Perhaps after four iterations and workshops, 90% of the requirements are defined and refined. Nevertheless, only 10% of the software is built.
20
第二章: 迭代,进化和敏捷
目标
1. 说明后续各章内容和顺序安排的动机 2. 定义迭代和敏捷过程
3. 定义统一过程中的基本概念
21
引论
• 现代软件的两个突出特点是复杂和多变
• • 软件规模变得越来越大 从软件的构思开始至软件停止使用充满了变化
• 迭代开发是能很好地适应这两个特点的一种巧妙方法
• 主动迎接变更,不断反馈和调整
• 统一过程(UP)是综合了当前最佳实践经验的一种流行的迭代开发 方法
• • 迭代的软件生命周期 风险驱动
22
瀑布生命周期的本质缺陷
• 是软件工程早期采用的一种生 命周期模型
– 早期 ‚手工作坊‛ 式软件开 发方式遭遇 ‚软件危机‛ – 借鉴其它工程行业(如建筑行 业)成功经验 – 采用确定需求,完成设计,再 予以实现的‚线性‛ 模型
Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test Time
Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test
40 35 30
Requirements change
25 20 15 10 5 0 10 100 1000 Project Size in Function Points 10000
•
瀑布生命周期没有考虑软件开 发的独特之处 – “多变”
– “多变” 是软件开发的独特特 征 – 实际数据表明,项目规模越大, 变化的比例越大
各种规模软件项目的变更百分比
23
通过迭代使系统向用户的真实需求收敛
Early iterations are farther from the "true path" of the system. Via feedback and adaptation, the system converges towards the most appropriate requirements and design.
版,影印版),2006,中国电力出版社
[2] 《UML应用建模实践过程》,尤克滨,2003,机械工业出版社
1
软件工程 面向对象分析与设计 OOA/OOD
理论(抽象)
实际(具体) 面向对象程序设计 OOP (Java/C++/C#)
2
Bloom's Taxonomy of the Cognitive Domain
7
• 以案例为红线,介绍 OOAD 中用到的概念和技术
• • 超市收银机(POS)案例 掷骰子游戏案例
• 用例-Use Case
• • 软件需求模型 发现,记录,和交流软件需求的工具
• 软件过程-Software Process
• Iterative Development Process,迭代式开发过程 • • Unified Process,统一软件过程
4
上机作业
• 完成 ‛软件学院图书室管理系统‛ 的 OOAD • 3到5人为一组来完成,一人担任组长(自由组合) • 基本功能要求(单机系统) • 新书目录输入 • 图书查询 • 借阅图书 • 归还图书 • 电子版作业内容(一个 MS Word 文件) 1. 小组成员(姓名和学号)及分工 2. OOAD 的 JUDE 模型抓图及文字解说文件
Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1.
3 weeks (for example) Iterations are fixed in length, or timeboxed. The system grows incrementally.
<< OOAD,面向对象分析与设计 >>
教材:
《UML和模式应用(原书第3版)》,Criag Larman,方梁译,机械工业出 版社,2006
参考书:
[1] 《Applying UML and Patterns, An Introduction to Object-Oriented
Analysis and Design and Unified Process》, Criag Larman, (第三
SIX LEVELS Level-1: KNOWLEDGE
Level-2: COMPREHENSION
Level-3: APPLICATION Level-4: ANALYSIS
Level-5: SYNTHESIS
Level-6: EVALUATION
3
教学计划
10-16 上午 第一讲:概论,需求用例模型 10-16 下午 第二讲:对象分析 (ch01~06) (ch09~13)
• 用例(文字形式的)
用例名: 参与者: 用例描述: 玩掷骰子游戏 玩游戏者 玩游戏者一次掷两个骰子,如果两个骰子的面值相加为七则赢
•
用例图
15
• 定义领域模型
– 在做OOAD时, 我们先创建一个问题域的对象模型,然后在此对象模 型的基础上构建一个求解域的对象模型(软件蓝图) – 问题域的模型的创建是通过识别问题域中的相关概念,概念的属性 和相互关系,并将其用UML符号表示出来而完成的
图 1.2 面向对象强调对象的表示
12
另外一个 OOAD 的例子
13
1.5 OOAD 举例: 掷骰子游戏(软件系统)
• OOAD 过程的主要活动
– 定义用例 (需求获取)
– 定义领域模型
– 定义交互图 – 定义设计类图
(OOA, 对象分析)
(OOD, 对象设计) (OOD, 对象设计)
14
• 定义一个用例(简化的例子)
17
die1 : Die
die2 : Die
敏捷式建模(以最简洁的方式快速捕捉灵感)
18
定义设计类图
• • 在领域模型概念类的基础上定义设计类 设计类与软件实现(Java, C++)类相对应
DiceGame die1 : Die die2 : Die play() 1 2
Die faceValue : int getFaceValue() : int roll()
• OOA 强调的是在问题领域内去发现对象或概念
•
问题领域涉及的都是已经存在的实体或概念
• OOD 强调的是如何定义软件对象及他们之间的协作方式来满足需求
• • • 软件对象大都是受领域对象的启发而得到的 在很多情况下软件对象和领域对象一一对应 但软件对象之间协作方式的定义却没有这么直观
11
Plane domain concept tailNumber
10-17 上午 第三讲:对象设计
10-17 下午 第四讲:对象设计模式(GRASP) 10-30 上午 第五讲:对象设计模式(GoF) 10-30 上午 第六讲:分布式报帐系统OOAD 10-31 上午 10-31 下午 UML 建模工具的使用/复习 考试
(ch14~17)
(ch19~25) (ch26~31) (补充案例) (上机)
2. 笔头作业(30%)
6
第一章: 面向对象分析与设计(引论)
1.1 本书的主要内容
• UML 和对象思想
• UML 是用来绘制软件‘蓝图’的符号语言,是一种思考和交流的工具
•
更重要的是 ‚Thinking in Object”
• OOAD 的原则和模式
• • • OOAD 的目标是设法生成一个高质量的软件‘蓝图’ 设计中的典型问题经常有成熟的解决方案-模式(Pattern) 设计中其它问题有设计的指导原则 • 职责驱动的设计(Resposibility-driven design)
16
定义交互图
• • 利用交互图来探索领域模型中的对象应如何合作来实现软件系统的需求 交互图有两种形式(语义等价的) – 顺序图(Sequence Diagram) – 合作图(Collaboration Diagram) • 对象间的合作是通过一个对象向另一个对象发送消息(请求服务)来实现的
:DiceGame play() roll() fv1 := getFaceValue() roll() fv2 := getFaceValue()
10
1.3
• •
什么是分析和设计?
需求分析 - 对需求的调查研究 对象分析 - 对领域对象的调查研究
• 分析强调的是对问题和需求的调查研究(What?)
• 设计强调的是一个能满足需求的(概念上的)解决方案(How?)
1.4
• •
什么是 OOAD?
问题领域指的是需要开发的软件系统的背景领域 问题领域随着软件系统的不同而不同
9
1.2
•
最重要的学习目标
很象现实生活中的团队合作
• 应该包含哪些成员? (OOA)
• 用OOAD开发出的软件系统是由一组相互合作的对象组成
•
Байду номын сангаас
各个成员的职责是什么? (OOD)
• OOAD中最关键,最基本的技能是如何熟练的为软件组件分配职责
• • • 必不可少的一项活动,且对软件质量影响很大 比较难以掌握的一种技能 GRASP 模式:关于对象设计和职责分配的九项基本原则
In late iterations, a significant change in requirements is rare, but can occur. Such late changes may give an organization a competitive business advantage.
visualization of domain concept
representation in an object-oriented programming language
public class Plane { private String tailNumber; public List getFlightHistory() {...} }
敏捷建模
8
OOA/D
Patterns
UML notation
Topics and Skills
Principles and guidelines Iterative development with an agile Unified Process
Requirements analysis
图 1.1 本书涵盖的主题和技能
5
作业
• 以电子邮件的形式交作业 bobzc@ (或bobzc@) 2. 请 2010/11/07 以前交,并写明姓名和学号
• 推荐的电子作业文件名格式
SX_10_OOAD_组长名字_手机号.zip 3. 每个收到的作业都会有一个电子邮件形式的确认 考核方法 1. 开卷考试(70%)
19
1.6 什么是UML?
• UML 是用来帮助构建软件系统一种可视化语言 • UML 是一种符号系统,主要用来为软件建模
– 发现 – 记录 – 交流
• UML 的地位和作用在许多时候被夸大了 • UML 不是一个软件方法(OO 是一种软件方法) • UML 不是一个软件过程(Unified Process 是一种软件过程)
one iteration of design, implement, integrate, and test
24
• UP中一个最重要的思想: 迭代(方式的)开发
• • 整个软件工程的开发活动被组织成一系列时间长度预先确定的小工程的开发活 动,每个小的过程称之为一个迭代 每个迭代有它自己的需求分析,设计,实现和测试活动
25
迭代式和进化式的生命周期
1 2 3 4 5 ... 20
requirements workshops Imagine this will ultimately be a 20iteration project. In evolutionary iterative development, the requirements evolve over a set of the early iterations, through a series of requirements workshops (for example). Perhaps after four iterations and workshops, 90% of the requirements are defined and refined. Nevertheless, only 10% of the software is built.
20
第二章: 迭代,进化和敏捷
目标
1. 说明后续各章内容和顺序安排的动机 2. 定义迭代和敏捷过程
3. 定义统一过程中的基本概念
21
引论
• 现代软件的两个突出特点是复杂和多变
• • 软件规模变得越来越大 从软件的构思开始至软件停止使用充满了变化
• 迭代开发是能很好地适应这两个特点的一种巧妙方法
• 主动迎接变更,不断反馈和调整
• 统一过程(UP)是综合了当前最佳实践经验的一种流行的迭代开发 方法
• • 迭代的软件生命周期 风险驱动
22
瀑布生命周期的本质缺陷
• 是软件工程早期采用的一种生 命周期模型
– 早期 ‚手工作坊‛ 式软件开 发方式遭遇 ‚软件危机‛ – 借鉴其它工程行业(如建筑行 业)成功经验 – 采用确定需求,完成设计,再 予以实现的‚线性‛ 模型
Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test Time
Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test
40 35 30
Requirements change
25 20 15 10 5 0 10 100 1000 Project Size in Function Points 10000
•
瀑布生命周期没有考虑软件开 发的独特之处 – “多变”
– “多变” 是软件开发的独特特 征 – 实际数据表明,项目规模越大, 变化的比例越大
各种规模软件项目的变更百分比
23
通过迭代使系统向用户的真实需求收敛
Early iterations are farther from the "true path" of the system. Via feedback and adaptation, the system converges towards the most appropriate requirements and design.
版,影印版),2006,中国电力出版社
[2] 《UML应用建模实践过程》,尤克滨,2003,机械工业出版社
1
软件工程 面向对象分析与设计 OOA/OOD
理论(抽象)
实际(具体) 面向对象程序设计 OOP (Java/C++/C#)
2
Bloom's Taxonomy of the Cognitive Domain
7
• 以案例为红线,介绍 OOAD 中用到的概念和技术
• • 超市收银机(POS)案例 掷骰子游戏案例
• 用例-Use Case
• • 软件需求模型 发现,记录,和交流软件需求的工具
• 软件过程-Software Process
• Iterative Development Process,迭代式开发过程 • • Unified Process,统一软件过程
4
上机作业
• 完成 ‛软件学院图书室管理系统‛ 的 OOAD • 3到5人为一组来完成,一人担任组长(自由组合) • 基本功能要求(单机系统) • 新书目录输入 • 图书查询 • 借阅图书 • 归还图书 • 电子版作业内容(一个 MS Word 文件) 1. 小组成员(姓名和学号)及分工 2. OOAD 的 JUDE 模型抓图及文字解说文件
Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1.
3 weeks (for example) Iterations are fixed in length, or timeboxed. The system grows incrementally.
<< OOAD,面向对象分析与设计 >>
教材:
《UML和模式应用(原书第3版)》,Criag Larman,方梁译,机械工业出 版社,2006
参考书:
[1] 《Applying UML and Patterns, An Introduction to Object-Oriented
Analysis and Design and Unified Process》, Criag Larman, (第三
SIX LEVELS Level-1: KNOWLEDGE
Level-2: COMPREHENSION
Level-3: APPLICATION Level-4: ANALYSIS
Level-5: SYNTHESIS
Level-6: EVALUATION
3
教学计划
10-16 上午 第一讲:概论,需求用例模型 10-16 下午 第二讲:对象分析 (ch01~06) (ch09~13)
• 用例(文字形式的)
用例名: 参与者: 用例描述: 玩掷骰子游戏 玩游戏者 玩游戏者一次掷两个骰子,如果两个骰子的面值相加为七则赢
•
用例图
15
• 定义领域模型
– 在做OOAD时, 我们先创建一个问题域的对象模型,然后在此对象模 型的基础上构建一个求解域的对象模型(软件蓝图) – 问题域的模型的创建是通过识别问题域中的相关概念,概念的属性 和相互关系,并将其用UML符号表示出来而完成的
图 1.2 面向对象强调对象的表示
12
另外一个 OOAD 的例子
13
1.5 OOAD 举例: 掷骰子游戏(软件系统)
• OOAD 过程的主要活动
– 定义用例 (需求获取)
– 定义领域模型
– 定义交互图 – 定义设计类图
(OOA, 对象分析)
(OOD, 对象设计) (OOD, 对象设计)
14
• 定义一个用例(简化的例子)
17
die1 : Die
die2 : Die
敏捷式建模(以最简洁的方式快速捕捉灵感)
18
定义设计类图
• • 在领域模型概念类的基础上定义设计类 设计类与软件实现(Java, C++)类相对应
DiceGame die1 : Die die2 : Die play() 1 2
Die faceValue : int getFaceValue() : int roll()
• OOA 强调的是在问题领域内去发现对象或概念
•
问题领域涉及的都是已经存在的实体或概念
• OOD 强调的是如何定义软件对象及他们之间的协作方式来满足需求
• • • 软件对象大都是受领域对象的启发而得到的 在很多情况下软件对象和领域对象一一对应 但软件对象之间协作方式的定义却没有这么直观
11
Plane domain concept tailNumber
10-17 上午 第三讲:对象设计
10-17 下午 第四讲:对象设计模式(GRASP) 10-30 上午 第五讲:对象设计模式(GoF) 10-30 上午 第六讲:分布式报帐系统OOAD 10-31 上午 10-31 下午 UML 建模工具的使用/复习 考试
(ch14~17)
(ch19~25) (ch26~31) (补充案例) (上机)
2. 笔头作业(30%)
6
第一章: 面向对象分析与设计(引论)
1.1 本书的主要内容
• UML 和对象思想
• UML 是用来绘制软件‘蓝图’的符号语言,是一种思考和交流的工具
•
更重要的是 ‚Thinking in Object”
• OOAD 的原则和模式
• • • OOAD 的目标是设法生成一个高质量的软件‘蓝图’ 设计中的典型问题经常有成熟的解决方案-模式(Pattern) 设计中其它问题有设计的指导原则 • 职责驱动的设计(Resposibility-driven design)
16
定义交互图
• • 利用交互图来探索领域模型中的对象应如何合作来实现软件系统的需求 交互图有两种形式(语义等价的) – 顺序图(Sequence Diagram) – 合作图(Collaboration Diagram) • 对象间的合作是通过一个对象向另一个对象发送消息(请求服务)来实现的
:DiceGame play() roll() fv1 := getFaceValue() roll() fv2 := getFaceValue()
10
1.3
• •
什么是分析和设计?
需求分析 - 对需求的调查研究 对象分析 - 对领域对象的调查研究
• 分析强调的是对问题和需求的调查研究(What?)
• 设计强调的是一个能满足需求的(概念上的)解决方案(How?)
1.4
• •
什么是 OOAD?
问题领域指的是需要开发的软件系统的背景领域 问题领域随着软件系统的不同而不同
9
1.2
•
最重要的学习目标
很象现实生活中的团队合作
• 应该包含哪些成员? (OOA)
• 用OOAD开发出的软件系统是由一组相互合作的对象组成
•
Байду номын сангаас
各个成员的职责是什么? (OOD)
• OOAD中最关键,最基本的技能是如何熟练的为软件组件分配职责
• • • 必不可少的一项活动,且对软件质量影响很大 比较难以掌握的一种技能 GRASP 模式:关于对象设计和职责分配的九项基本原则
In late iterations, a significant change in requirements is rare, but can occur. Such late changes may give an organization a competitive business advantage.
visualization of domain concept
representation in an object-oriented programming language
public class Plane { private String tailNumber; public List getFlightHistory() {...} }
敏捷建模
8
OOA/D
Patterns
UML notation
Topics and Skills
Principles and guidelines Iterative development with an agile Unified Process
Requirements analysis
图 1.1 本书涵盖的主题和技能