软件工程实践课件_第1页
软件工程实践课件_第2页
软件工程实践课件_第3页
软件工程实践课件_第4页
软件工程实践课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京理工大学

软件工程实践

吴际

北京航空航天大学

第十二讲

面向对象方法与UML介绍

内容和目的

■我们的座标

■面向对象方法

■面向对象:能与不能

-统一建模语言UML

我们的座标

■应用开发的变化

-开发工具和手段的发展

-开发方法和技术的发展

《应用开发的变化

■70年代:小型机(或服务器)上的数学程序

■80年代:单机(或以太网)上的、文本界面

(或简单图形界面)、计算型应用

■90年代:互联网(Internet)、丰富图形界面、

事务处理型应用,要求快速提交产品

■现在,分布于Internet、Intranet,多种界面形

式(基于WebBrowser、ApplicationGUI等),

多种事务处理的集成(电子商务、信息管理),

多种标准的支持(XMLJ2EE,Corba,.NET),

多种平台的支持(Windows,Linux,Unix,...)

开发工具和手段的发展

■70年代:基于汇编代码的调试器

■80年代:基于高级语言的调试器(TurboC,

MicrosoftC,BorlandC,TurboPascal)

■90年代:集成了调试器、编辑器、配置管理、

框架代码构造、及时编码提示、应用GUI界面

编辑等的集成开发环境,如VisualStudio,

Delphi

■现在:在集成开发环境基础上,提供更强大的

开发平台支持(,NET,JDK),同时更关注应

用的平台无关性和运行安全性

$开发方法和技术的发展

-70年代:结构化方法(设计、编码)

■80年代:结构化方法(分析、设计、编

码),状态图,需求工程

■90年代:面向对象分析、设计、编码,

对象建模

■现在:商务建模(businessmodeling)、

面向对象建模(分析、设计),体系结

构设计(构件化)

面向对象方法

-结构化与面向对象的提出

-面向对象方法特征

■面向对象主要流派

结构化与面向对象的提出

■CFD&DFD:自顶而下的层次分解策略

■任何一层有变动,其下面的所有层次都必须重新进行层次分

-层次间的解释关系使得难以维护层次间的一致性

-强调数据、功能分解,但忽略了数据、功能的整合

-数据与功能分离的结构化认知观点,实际偏离了人认

知世界的基本原则:

■以实体为单位,以关系为核心

-尽管有缺点,但结构化仍有可借鉴之处:

-结构化原则

■数据字典

■状态图

I大幕拉开:面向对象

■面相对象的目标:以人的(获接近于人

的)认知方法和原则来描述事物

-完全不同于结药叱的描述手段:

■类、对象

■继承

■多态

-消息

类、对象是核心

-面向对象分析、设计、编码的基本单位

-数据与功能的有效封装

-可直接映射到现实或抽象的实体

■关系、状态、行为

-开发管理的基本单位

■类测试就是“单元测试”!

继承:面向对象冠上明珠

■如果没有继承,谁能在一个小时之内,只使用

SDK接口编写出Notepad?如果使用继承,你只

需十分钟(戢更少)!

■继承至少提供了两个方向的设计支持:

-重用

-抽象、接口(COM、DCOM、Bean)

■没有继承,几乎不可能有通用的容器类

(ContainerorCollector)可供使用

■多继承:你使用过多少次?

多态:面向对象'自适应'中

———---------

■多态(polymorphism):多种形态,统

一语义

-接口描述了通讯协议

■多态使得基于接口的通讯能够自适应

Argl,agr2,

多态:面向对象'自适应'中

■两种多态:

■同一个类中的不同形态接口

■不同子类以不同形态实现(或重载)父类接

■典型例子:画图程序中GraphManager类

的Draw,Move,Open,...

■典型例子:文档编辑中针对不同对象的

统一的Cut/Copy/Paste操作

消息:可能让你失望

■不要试图用信息理论或通讯理论中的消

息来理解

■也不要用操作系统中的消息(事件)来

理解

■所谓两个对象间的一个消息就是一个对

象使用了另一个对象的协作(operation),

简单说就是对象的操作调用!

■Windows中的SendMessage和

PostMessage根本就与面而对象无关!

对象状态

■对象状态只决定于对象的数据,和全局

数据、非对象的局部数据无关

■对象状态和对象行为之间的关系:

■<sl,bl>,<s2,b2>,bl=b2iffsi=s2.

■如果你的程序不满足这条定理,有两种

情况:

■类的某个方法使用了全局变量

■类的某个方法中的局部变量初始值不确定

对象关系:无法让人满意

-目前的面向对象提供了三种对象关系描

述手段:

■继承

■聚集(组成)

■关联:对象之间有关系!

■然而,现实世界中实体之间的关系丰富

多彩,岂止这三种?

'面向对象分析

■目标:使用对象来描述问题域,进而抽象出问

题域类,并把求解问题的约束分配到问题域类

■关注:是否完整、清晰的描述了问题域及约束

■雷区:使用DFD,然后把每个处理节点都抽象

为一个类

■雷区:很快就在某个局部(通常为方法)进入

算法、编码

■面向对象分析模型的价值(领域重用、测试)

面向对象设计

■目标:引入类(族)实现问题域类(在概念层

次上),同时把系统约束分解、落实到类的方

法层次

■关注:体系结构、接口、效率

■雷区:有些类是‘上帝',而有些类只是‘弱

智的代表'

■雷区:盲目追求所谓封装、抽象类

■面向对象设计模型的价值(设计pattern,风险

跟踪、测试)

4适合面向对象的开发过程

-必须能够管理面向对象分析、设计、实

现、测试、维护各阶段的模型的一致性

■需要给出一套基于类的开发任务管理方

法(任务定义、风险管理、任务评审)

■能够在开发的不同阶段提供不同的知识

库(不仅仅是类库!)以供重用

■RUP是个不错的选择

面向对象:能与不能

■Can

■使你以更有效的手段描述、实现系统

■提高系统的重用度

■有效缩短开发周期

■Cannot

■避免错误,尤其是分析、设计错误

■自动生成精巧的算法

统一建模语言UML

-引论

■建模技术

■UML的模型图

■UML的基本视图

■UML的目的、主要特点和和应用领域

■WhyUnified?

-UML是一种建模语言

-UML的设计目标

■UML的发展历程

《WhyUnified?

■面对众多的建模语言,用户没有能力区别不同语

言之间的差别。

■在众多的建模语言中,实际上各有千秋,需要取

长补短,日臻完善。

■虽然不同的建模语言大多相同,但仍存在某些细

微的差别,这极大地妨碍了用户之间的交流。

UML是一种建模语言

■建模方法=建模语言+建模过程。建模语言

定义了用于表示设计的符号(通常是图形符号);

建模过程描述进行设计所需要遵循的步骤。

■标准建模语言UML是一种建模语言,而不是一

种方法,它统一了面向对象建模的基本概念、

术语及其图形符号,为人们建立了便于交流的

共同语言。

*UML的设计目标

■UML是由Booch,Rumbaugh和Jacobson发起,

在Booch方法、OMT方法和OOSE方法的基础上,集

众家之长,几经修改而成。UML的设计目标是:

■运用面向对象概念来构造系统模型(不仅仅针对软件)

■建立起从概念模型直至可执行体之间明晰的对应关系

■着眼于那些有重大影响的问题。

■创建一种对人和机器都适用的建模语言。

UML的发展历程

1994.10,Booch和Rumbaugh将Booch93和OMT-2统一,

1995.10.发布UM0.8o

1995年秋,经过Booch等三人的努力,1996.6和1996.10发布

UML0.9和UML0.91。

1996年成立UML成员协会,有700多公司支持UML,占领00市场的

85%o

1997.1^UML1.0,1997.9发布UMLL1。

1997.110MG采纳UMLL1作为00技术的标准建模语言。

此后,UML的维护工作由CrisKobryn领导的0MG版本修改小组RTF

(RevisionTaskForce)负责.

1998.6:UMLV.1.1(编辑修改版).

1999.6:UMLV.1.3(技术终订版).

目前正处于UMLV.2・0阶段

UML的发展历程(续)1999.6UML1.3

UMLL1被OMG

1997.11.17接纳为标准

/

1997.9公布UML1.1

A

众1997.1公布UML1.0合作伙

反/伴意见

&建模技术

■构造模型的目的

■建模技术要点

-系统的多种特性

0构造模型的目的

模型是对事物的抽象。人们常常在正式建造实物之前,先建

立模型,以便更透彻地了解它的本质,抓住问题的要害。

■在着手解决一个复杂问题之前,对解决方案进行

检测。

-用于同客户和其他相关人员进行交流。

-加强视觉效果。

■对复杂问题进行适度简化。

L建模技术要点

/造模型的基本技术是抽象,应突出与问题行关的

特征,将与问题无关的性质略去。

■不必追求绝对的真实和完全,只需从期望的目的角

度看其是否充分。

・应当刻画问题的关键方面,略去相对次要的因素。

■建模语言应支持人的由模糊到清晰、由粗到细逐渐

完善的认识过程。

■应采用可视化图形建模语言。

§系统的多种特性

里个系统应具有多方面的特点:

■在功能和性能方面:功能正确,性能良好

(效率要高)。

■在非功能方面:鲁棒性、可扩充性、可再用

性、兼容性、可移值性、可验证性、完整性

以及易使用性等方面要好。

一个系统要从多个视角去描述。

一个视图可能包含多个模型图,每张模型图都应当

简单明了,易于交流。

UML的模型图

UML定义了5类、共9种模型图:

用例图:从用户角度描述系统的功能,并指出各功能

的操作者。

静态图:类图、对象图和包图(在UML1.1中,包图

不再看作一种独立的模型图)o

行为图:状态图,活动图。

交互图:顺序图,合作图。

实现图:构件图描述部件的物理结构以及各部件之间

的依赖关系;配置图定义系统中软硬件的物理构架。

关于保险业务的一张用例图

静态图:类图、对象图和包图

■静态图包括类图、对象图和包图,用以描述模型

中类及其实例之间的静态关系。

■类图用于定义系统中的类,包括描述类之间的关

系(关联、继承、聚合)以及类的内部结构,即类

的属性和操作。

-对象图显示类的对象实例,一个对象图是类图的

—个实例。

■包图由包或类组成,主要表示包与包、或包与类

之间的关系。包图用于描述系统的分层结构。

♦关于金融贸易的一张类图

行为图:状态图,活动图

■行为图包括状态图和活动图,描述系统的动态

模型和组成对象间的交互关系。

■状态图描述一类对象的所有可能的状态以及事

件发生时状态的转移条件。

■活动图描述为满足用例要求所要进行的活动以

及活动间的约束关系。使用活动图可以很方便

地表示并行活动。

上升[几层]

超时口

一台打印机服务器的活动图

显示“磁盘已满”

[磁盘已满]

的信息

[尚有磁盘空间]显示“正在打印”

的信息

删除显示信,创建附加文,

息的对话框"

J44印机X,

^打印[文件]

交互图:顺序图,合作图

■交互图包括顺序图和合作图,它描述对象间的交

互(动态合作)关系。

■顺序图:用以显示对象之间在时间顺序方面的动

态合作关系。因此,如果强调时间和顺序,应当

使用顺序图。

■合作图:着重描述对象间的通信方面的动态合作

关系。因此,如果强调通信关系,则可以选择合

作图。

一台打印机服务器的顺序图

I:计算机I:打印服务程序:打印机:打印队列

一台打印机服务器的合作图

[打印机空闲]

L1打印[文件]

实现图:构件图,配置图

■实现图包括构件图和配置图。

-构件图:描述部件的物理结构以及各

部件之间的依赖关系。

■配置图:定义系统中(特别是在分布式

及网络环境中)软硬件的物理构架。

反映程序代码构件之间

依赖关系的构件图

graphic.dll:

IIWhnd.cpp:Whnd.obj:

巴窗口处理器

■尺5窗口处理器图形库

*0A■

||comhnd.cpp:

吕命令处理器IIcomhnd.obj:eclient.exe:

命令处理器客户程序

A

main.obj:

[|main.cpp:

审卷类e主类

描述系统物理构架的配置图

《DecNet协议》

数据库服务器:

《TCP/IP协议》VAX

UML的基本视图

-UML的用例视图

-UML的逻辑视图

-UML的构件视图

-UML的并发视图

-UML的配置视图

UML的五类基本视图

UML的五类基本视图(续)

■用例视图:从系统外部执行者的角度理解、展示

系统功能。

■逻辑视图:从系统的静态结构和动态行为的角度

展示系统内部功能性设计。

-构件示图:展示代码构件的组织结构。

■并发视图:展示系统的并发性,刻画并发系统中

的通讯和同步问题。

■配置视图:展示系统的物理的体系结构,其中用

到的计算机和各种设备称作节点。

UML的用例视图

■从系统外部执行者的角度理解系统的功能:它描

述执行者与系统的交互,其执行者可以是一个用

户,也可以是另一个系统。

■用例图面向客户、建模人员、开发人员和测试人

员,是系统模型图的核心。

■用例视图:用例图和活动图描述。

■一张用例图是系统的一种用途的描述;一组用例

图描述了整个系统所期望的用途。

&UML的逻辑视图

-描述系统如何提供要求的功能:

■静态结构:

类(界面,内部结构);对象;关系

用类图和对象图描述。

■动态行为:

对象之间相互发送消息而引发的动态合作关系

用状态图、顺序图、合作图和活动图描述

■各种特性:永久性,并发性

■主要是面向设计人员和开发人员

&UML的构件视图

■描述实现的各个模块及其相互之间的关系:

・模块的内部结构

-模块间的依赖关系

■关于各构件的一些附加信息:

■资源分配(构件的责任)

-其它管理信息,如开发工作的进展报告等

-主要面向开发人员

■构件视图:由构件图组成,其中构件表示不

同类型的代码模块

/UML的并发视图

「爱统中进程和处理器的划分与任务的分配

■属于非功能性特性:

-着眼于资源的有效利用

-并行执行,并发地执行多线程控制,处理线程之间的通

信和同步

-处理来自外部环境的同步事件

■面向开发人员和系统集成人员

-描述并发视图的主要模型图:

-动态图:状态图,合作图,活动图

-实现图:构件图,配置图

&UML的配置视图

■展示系统的物理配置,如计算机和其它设备(统

称结点)及其相互之间的连接关系,包括在物理

的体系结构中如何配置构件的映像关系。

-面向开发、集成和测试人员。

■配置视图用配置图描述。

《面向对象描述的三个层面

概念层BusinessModel

说明层Architecture

实现层Detailing

层次间没有分解对应关系

^^2:每个面向对象描述元素都可对应到这三个层面

UML的主要特点、目的和应用领域

-UML的主要特点

-使用UML的目的

■UML的应用领域

UML的主要特点

■UML统一了Booch,OMT和OOSE等方法中的基

本概念:用例图从OOSE来;类图从OMT和

Booch等方法来;实现图(构件图和配置图)从

Booch的模块图和过程图来。

■UML吸取了00技术领域各流派的长处:状态图

从Harel而来;活动图从工作流图而来;合作图

从Booch的对象图和Fusion的对象交互作用图等

而来;等等。

■在演变过程中UML提出了一些新的概念。

使用UML的目的

软件开发的过程犹如雕琢一件艺术品,由无形

到有形,由粗到细。但软件开发的最终形式必

须生成程序代码。因此当考虑使用UML时,一

定要想清楚,使用UML的目的以及对编写代码

有何帮助。

■学习面向对象技术

■和领域专家交流

■帮助理解全局

学习面向对象技术

■UML的各种模型图,其中用例图描述系统的功

能及其外部的使用者,确定谁使用系统以及做

彳十么。

■类图描述系统的静态构架,即构成系统的各种

对象类及其相互关系。对象图是类图的实例化,

描述系统在某个时刻可能包含的对象和相互关

系。

-行为图和交互图描述系统的动态行为。

■构件图和配置图描述系统实现体的构成及其在

硬件环境中的配置情况。

和领域专家交流

■有效的方法是使用用例。一个用例描述了系统

的某一侧面,所有用例构成了系统的整个外观。

用例也有助于制订项目规划和对问题进行深入

理解。

■类图很有用,但应注重在概念层上使用。应将

每个类对应用户心中一个概念,并用用户的语

言来命名和定义。

■对于侧重于工作流过程的应用系统,活动图非

常有用。活动图也有助于对实际业务流程中的

并行特性进行自然描述。

帮助理解全局

-JI_

■对于大型项目,常常只见树

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论