UML和模式应用绪论
UML
面向对象分析与设计导论
? 面向对象的分析与设计
? 开发过程导论
? 定义模型和制品
1
? 目标:
1)比较和对比分析与设计的异同
2)面向对象的分析与设计的定义
3)面向对象的分析与设计和组织一个企业的类比
1
? 运用UML、模式和面向对象的分析与设计技术
? 分配职责
? 什么是分析与设计
? 什么是面向对象的分析与设计
? 类比——组织MicroChaos公司的业务
? 面向对象的分析与设计的例子
? 面向对象的与面向功能的分析与设计
? 统一建模语言
UML
? UML代表统一建模语言(Unified Modeling Language),是使用面
向对象概念进行系统建模的图形化表示法。本课程将学习UML表
示法,并将其应用于学习案例中
? 模式(pattern)是一组原则和规则——能够编成典型设计原则的已
命名的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
解决程式,包括如何将职责分配给对象所在的类,对
象之间怎样进行交互,以及每一个类应该做什么,
? 开发过程(development process):描述可能的活动序列和一个软
件的生命周期。从需求分析到系统实现可能存在许多需要进行的
活动,开发人员或开发小组应该怎样进行这些活动呢,
? 为软件构件分配职责
再分析和设计中可能要经历许多活动,再每个活动中会得到相应
的制品,并要遵循大量的准则和原则。但最重要的技巧是:
在面向对象分析与设计中最重要的能力是能够熟练地为软件构件
分配职责
因为分配职责是必须要完成的一项活动,并且它最深刻地影响着
软件构件的健壮性、易维护性和可重用性
给出9个用于职责分配的基本原则,将其编进GRASP模式。
? 进行抽象,即发现合适的对象
两者都很重要,但前者更难于掌握。
? 分析(analysis):要创建一个系统,需要对问题和需求进行描述。
问题是什么以及系统必须做什么,它强调对问题的调查。例如,
如果要开发一个新的图书馆信息管理系统,这个系统的业务过程
是什么,这是一个分析问题
? 设计(design):对系统如何满足需求和约束进行高层描述和具体说
明,它强调问题的逻辑解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。例如,图书馆信息系统能够多
大程度地精确地捕获和
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
书的借出情况,这是一个设计问题。
设计最终可以用硬件和软件来实现
? 面向对象的分析与设计(object-oriented analysis and design):按
照对象(事物、概念、实体)的观点考虑问题域和逻辑解决方案
? 面向对象分析:发现并描述问题域中的对象或概念。例如,在图
书馆信息系统的例子中,包括书、图书馆等概念
? 面向对象设计:定义能最终用面向对象程序设计语言实现的逻辑
软件对象。例如,书这个软件对象具有题目属性和打印
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
? 构造(construction)或面向对象程序设计:实现所设计的构件。例
如用C++编写一个Book类
分析 设计 构造
问题的调
查
逻辑解决
方案
编码
开发过程中各活动的含义
用面向对象的程序
设计语言表示
领域概念
分析过程中概
念的表示
title
Book
Public class Book
{public void print();
private String title;}
书
面向对象的思想强调对象的表示
—— MicroChaos
? 业务过程:保证企业运转所要做的事情,如销售、发薪水、还债、
开发软件等。类似于需求分析(requirements analysis)。描述方法
为用况(use case),它是对企业或系统内过程的文字化描述:
用况:订货
描述:起始于顾客打电话给销售代表要求购买Microbutterfly,然
后销售代表用订单记录顾客和所要购买的商品信息。
使用用况来标识并记录过程信息实际上并不是面向对象分析与设
计过程中的一项活动,因为它没有以对象观点为中心。但它仍然
是面向对象分析与设计方法学中非常重要和广为采用的重要步骤。
用况也是UML的一部分
—— MicroChaos
? 角色:识别活动中所涉及各类人的角色,如顾客、销售代表、软
件工程师等。类似于面向对象的领域分析(object-oriented domain
analysis)。可用概念模型进行描述(conceptual model),但它展示了
领域中各个事物的分类,不仅仅是人的角色
? 职责分配(responsibility assignment):为系统中的软件对象指派任
务和职责,软件对象要进行协作或交互。例如,当你和雇员共事
的时候,为了满足一个过程的需要,雇员必须完成一定的任务,
那么就要给他们分配职责,还要确定人们如何协作或如何共同分
担工作
职责分配和对象之间的交互用设计类图(design class diagram)和协
作图(collaboration diagram)来展示,协作图显示了类的定义和软
件对象之间的消息流动
—— MicroChaos
业务类比 面向对象分析与设计 相关文档
什么是业务流程, 需求分析 用况图
雇员的角色是什么, 域分析 概念模型
谁负责什么,如何交互, 职责分配与交互设计
设计类图、
协作图
? 定义用况:理解需求包括理解领域过程和外部环境——参与过程
的外部参与者。用结构化的文本对领域过程进行描述
用况:Play a game (进行游戏)
参与者:Player(游戏者)
描述:起始于游戏者拾起骰子,并投掷骰子。如果总点数是7,游
戏者赢,否则输
定义概念模型 定义用况
描述系统需求时的步骤
定义协作图 定义设计类图
? 定义概念模型:问题域的分解要涉及对该问题域重要的概念、属
性和关系等的识别
游戏者
姓名
骰子
点数
掷骰子游戏
包含
1
2
做游戏
1
1
1 2
滚动
掷骰子游戏的概念模型
? 定义协作图:显示了实例和方法调用之间的消息流
:游戏者
:d1:骰子
play() 1:r1:=roll()
:d2:骰子
2:r2:=roll()
展示软件对象之间消息传递的协作图
? 定义设计类图:需要回答对象如何与其他对象连接,类中方法是
什么,只描述软件构件,不考虑实际运作概念
游戏者
play() roll()
掷骰子游戏
包含
1
2
做游戏
1
1
1 2
滚动
姓名
骰子
点数
initialize()
软件构件的设计类图
? 总结
1)定义用况
2)定义概念模型
3)定义协作图
4)定义设计类图
? 分解是处理复杂性的主要策略——将问题分解成易于管理控制的
单元。结构化分析(structured analysis and design)对问题的分解
尺度主要是依据功能或过程。而面向对象的分析与设计强调以对
象为尺度
? 分析与设计的界限是模糊的,在分析阶段重点理解问题,而将系
统解决方案、系统性能等推迟解决
更多地面向分析 更多地面向设计
什么,需求,领
域调查,
如何,逻辑解决
方案,
分析与活动共存于一个连续体上
图书馆信息管理系统
面向对象的与面向功能的问题分解
Catalog
按照对象或概念进行分解 按照功能或过程分解
结构化的分析设计
面向对象的分析设计
Librarian
Book Library
System
Record
Loans
Add
Resources
Report
Fines
? UML是“描述、可视化以及构造软件系统制品的一种语言”。它
是一个表示法系统,着眼于使用面向对象的概念进行系统建模
? UML是OMG (Object Management Group)所接受的标准,在CASE
(计算机辅助软件工程)领域得到认同,参见www.omg.org
? 对如何进行分析与设计不提供指导,也不对开发过程的活动顺序
提供指导,而只是一们建模语言
? 目标
介绍一个从需求分析到系统实现的简单开发过程
? 导言
? UML和开发过程
? 高层步骤
? 迭代开发
?
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
和细化阶段
? 构造阶段—开发周期
? 选择创建制品的时机
? 软件开发过程(software development process)是软件系统的创
建、提交和维护等相关活动的组织方法。
UML没有定义一个标准的过程。UML的作者也承认健壮的建模语
言和开发过程两者都很重要。但过程的标准化已经超出了UML的
定义范围
? 推荐的开发过程和模型RPM(Recommended Process and Model):
采用迭代式的、增量的、用况驱动的开发方法。
开发人员能够获得如何创建一个好的设计的技能以及各个开发组
织能够支持和培育使用这种技能,远比遵循规定的开发过程或者
开发方法重要。这种技能源自掌握一套理论原则,以及识别和抽
取适当的对象并将职责分配给这些对象
? 软件过程部分被忽略,如构思、项目计划、并行小组之间的交互、
技术支持、培训、项目管理、文档的生成与管理和软件测试等过
程
导言
Martin-Odell
Fusion
OOSE
Booch
OMT
UML
职责驱动的设计
推荐的过程与模
型(RPM)
对RPM产生影响的方法
UML
? UML对制品(artifact)和表示法进行了标准化,但没有定义一个标
准的开发过程,原因是:
1)尽量使建模表示法更广泛地被采纳而不受标准的开发过程的
约束
2)一个合适的开发过程所包含的活动具有很大可变性,取决于
人的技能、研究与开发的比率、问题的性质与工具等
? 提交应用系统应包括以下阶段:
1)计划和细化(Plan and Elaborate)——制订计划、定义需求、创
建原型
2)构造(Build)——进行系统的构建
3)实施(Deploy)——最终实现系统并投入使用
计划和细化 构造 实施
开发过程中的高层步骤
? 迭代开发的生命周期是基于对一个系统进行连续的扩充和精化,
需要经历若干个开发周期,每个周期都需要经历分析、设计、实
现和测试阶段。每个开发周期只针对比较小的一部分需求
? 经典的瀑布模型的生命周期针对完整的系统需求进行每一项活动,
且只进行一次
? 迭代开发的优点是:
1)不会因为开发过程太复杂而使人无从下手;
2)在开发周期的早期就能够得到反馈信息,因为每个周期只快速
实现系统的一小部分
? 时间盒:每个开发周期的时间限定,一般为两周到两月
计划和细化 构造 实施
开发周期1 开发周期2 …
构造 测试 分析 设计 同步制品 精化计划
两周——两月
确定开发周期的时间盒
? 用况和迭代开发周期:用况是对一个领域过程的描述,如Borrow
books from a library。迭代开发周期是通过用况需求来组织的。一
个开发周期的任务是实现一个或者多个用况,或者用况的简化版
本
? 划分用况的层次:首先从问题领域和高层服务中抽取对系统核心
体系结构影响最大的用况及具有高风险的关键用况
? 计划:时间进度表、资源规划、预算
? 初步调查报告:目标、选择、业务需求
? 需求规格说明:关于需求的声明型陈述
? 术语表:一个术语字典和相关信息,如约束和规则
? 原型:用于对问题、高风险因素和需求的辅助理解
? 用况:对领域过程的文字描述
? 用况图:展示所有的用况和用况之间的关系
? 概念模型草案:用来理解领域中的词汇,特别是与用况和需求说
明有关的词汇
1 定义计划草案 2 编制初步调查
报告
3 定义需求
4 在术语表中记
录术语
a
5 实现原型
b,d
6 定义用况(高层
用况和基本用况)
7 定义概念模型
草案
c
8 定义系统体系结
构草案
a,c,d
9 精化计划
注解:a持续进行,b可选,c可以拖
后, d顺序可变
计划和细化阶段中的活动样例
? 制品的创建顺序:
尽管向导图说明了制品创建的一个线性顺序,但实际中并不全是
这样。例如制品可以并行创建。这种情况对概念模型、术语表、
用况图特别适用。各制品是相互影响的
——
? 构造阶段包括一系列重复的开发周期,而每个开发周期都对系统
进行扩展,构造阶段的最后目标是得到能够正确符合需求的软件
系统
? 一个开发周期中制品的创建顺序并不严格,如概念模型和术语表
可以并行创建,交互图和设计类图也可以并行创建
——
构造 测试 分析 设计 同步制品 精化计划
1定义基本用况
a
2 精化用况图 3精化概念模型 4 精化术语表
b
5定义系统顺序
图
6 定义操作契约 7定义状态图
c
注解:a以前未做而现在要做,b要
持续进行,c可选
分析阶段中的活动样例
——
构造 测试 分析 设计 同步制品 精化计划
1 定义真实用况 2定义报告、用
户界面和记事本
3 精化系统体系
结构
b
4定义交互图 5定义设计类图
a
注解:a与交互图并行,b顺序可变
6定义数据库模
式
构造阶段中的活动样例
? 何时创建概念模型:概念模型(conceptual model)代表了问题域中
的概念或对象。策略是快速建立一个粗略的概念模型,重点找出
需求文档中出现的明显概念。然后在每个开发周期中,针对所要
处理的需求逐步细化和扩展此概念模型
? 何时创建扩展用况:高层用况(high-level use case)通常是对一个
过程的简洁描述,而扩展用况(expanded use case)是长篇叙述。策
略是在计划和细化阶段,要创建所有的高层用况,但只对最关键
和最重要的用况采用扩展格式重新进行描述,而将其它用况的扩
展描述推迟到处理这些用况的开发周期中进行
? 目标
1)定义分析和设计模型
2)说明分析和设计制品之间的依赖关系
? 导言
? 建模系统
? 样例模型
? 制品之间的关系
? 介绍面向对象分析与设计中的模型样例,并说明模型中制品之间
的依赖关系
? 本章给出模型和制品的全景图,后面章节将展开讨论这些模型和
制品的细节
? 模型:
真实世界中的系统或者软件系统通常极其复杂,所以有必要分解
成容易理解的块,这些块是用模型(model)来表示的,它描述和
抽象出了系统某方面的必要信息
? 模型包括其他模型或制品(artifact):描述事物的文档和图表。
UML的用况图与交互图是制品,模型可用视图(view)来可视化地
表现
? 模型能够强调一个系统的静态(static)特征信息或动态(dynamic)特
征信息。静态模型(static model)描述了系统的结构特性,而动态
模型(dynamic model)则描述了系统的行为特性。
? 系统的综合模型由下列模型构成
1)分析模型(analysis model):与问题域和问题空间的调查结果有
关,但不涉及问题的逻辑解决方案
2)设计模型(design model):与问题的逻辑解决方案有关的模型
系统模型
分析模型 设计模型
系统模型
? 这种关系是指模型的制品之间的依赖关系,如展示所有用况的用
况图依赖于每个用况本身的定义。理解制品之间的依赖关系和相
互影响有利于实施一致性检查和进行跟踪,还能将依赖的制品作
为后来的输入
? 计划和细化阶段制品之间的依赖关系如下图所示
需求规格说明 初步调查报告
原型
预算、进度计
划
用况,如所有高层用
况和一些扩展的基本
用况
用况图
概念模型草案
术语表 依赖于
计划和细化阶段中制品之间的相互影响