UML读书报告Word文件下载.docx

上传人:聆听****声音 文档编号:668394 上传时间:2023-04-29 格式:DOCX 页数:11 大小:26.40KB
下载 相关 举报
UML读书报告Word文件下载.docx_第1页
第1页 / 共11页
UML读书报告Word文件下载.docx_第2页
第2页 / 共11页
UML读书报告Word文件下载.docx_第3页
第3页 / 共11页
UML读书报告Word文件下载.docx_第4页
第4页 / 共11页
UML读书报告Word文件下载.docx_第5页
第5页 / 共11页
UML读书报告Word文件下载.docx_第6页
第6页 / 共11页
UML读书报告Word文件下载.docx_第7页
第7页 / 共11页
UML读书报告Word文件下载.docx_第8页
第8页 / 共11页
UML读书报告Word文件下载.docx_第9页
第9页 / 共11页
UML读书报告Word文件下载.docx_第10页
第10页 / 共11页
UML读书报告Word文件下载.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

UML读书报告Word文件下载.docx

《UML读书报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《UML读书报告Word文件下载.docx(11页珍藏版)》请在冰点文库上搜索。

UML读书报告Word文件下载.docx

UML简介,对象,关系跟UML中的各种图;

学习案例部分包括:

领域分析,收集系统需求,开发用例,交互,设计外观、感觉和部署,和理解设计模式;

高级应用部分包括:

嵌入式系统建模,描绘UML的未来;

附录部分包括:

小测验答案,UML建模工具,UML图总结。

二、面向对象建模与设计

1.简介

面向对象语言正取得令人振奋的发展的同时,编程并不是软件开发问题的主要根源。

需求分析与设计问题更为普遍并且更值得解决。

因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其他阶段。

面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。

面向对象的开发不仅仅是编程,必须在整个软件生命周期采用一种全新的方法,这一观点已被人们所接受。

面向对象技术出现在20世纪70年代末期。

它比较自然的模拟人类的认识客观事物的方式,面向对象是先确定动作的主体-对象,找出要解决问题所需要的对象和他们之间的关系。

这一点与面向过程方法不同,在面向过程方法中,关心的是过程。

而过程实施的对象是作为过程的参数传递的面向对象的这种主体-动作模式是人们对客观世界的抽象。

2.面向对象方法特点

面向对象方法学的出发点是尽可能的模拟人类的习惯思维方式,使得开发软件的方式接近人类认识问题和解决问题的过程。

面向对象方法具有以下特点:

2.1面向对象方法认为客观世界是由各种对象组成的

在面向对象方法中,一切都是对象。

复杂的对象可以有简单的对象组成。

2.2每个对象都有自己的属性

例如一个学生有自己的学号,姓名,班级,专业等属性。

2.3所有的对象都被划归到相应的类

类是从对象中抽象出共有的属性和方法,对象是类的一个实例。

每当一个类创建一个新的实例时,就会按照类中定义的属性为这个对象生成一组专用的数据,以描述该对象所特有的属性,对象的属性值是可以经常改变的,对象的某些属性一旦改变它们的值,对象就进入了一个新的状态。

对象的各种状态从对象的

产生到析构会不断转换。

而类中的属性是静态的,类中的方法是被这个类的所有实例所共享的,当我们创建一个对象时,并不会为每个对象复制一份类中方法的副本。

在对象中只是保存了指向类中方法的引用。

2.4继承

继承是表示相似性质的机制,指多个类基于一种分层关系,共享类间属性和操作。

父类拥有各种子类所具有的一些共同的属性和方法,是不具体的。

每个子类继承其父类全部的特征,并增加它自己所特有的特征。

子类不需要重复其父类的特征,只需添加子类相对于父类多出来的属性跟方法。

继承是一种泛化关系。

这种功能可以大大减少设计和程序内部的重复。

子类并且允许对某些继承的方法和属性重新定义,也就是说下层的特性将屏蔽上层的同名特性。

2.5多态

多态是指一个对象具有多种性态,在不同的性态下的操作可能是不同的,但操作名却是相同的,对于不同的类来说,相同的操作会有不同的动作。

由特定的类实现的操作被称为方法。

基于操作名和被操作对象的类,语言会自动选择正确的方法来实现操作。

操作的用户不需要知道有多少种方法实现了给定的多态操作,无须改动代码,开发者就可以增加新类,只要他们为每一种可行操作提供方法即可。

2.6消息

消息通信是面向对象方法中相互联系的方法,对象之间只能通过消息交互,对象内部的私有属性不能被对象的外部访问,外部对象只能通过对象向外提供的接口去访问。

一个对象要访问另一个对象的方法,必须向被访问的对象发送一个该方法的消息。

被访问对象收到消息后,就可以调用自己的方法,完成消息发送者需要得功能。

2.7封装或信息隐藏

在面向对象方法中,封装是指将功能和数据同时装入一个对象中,在外界看来,对象是一个黑盒子。

外部看不到对象内部的结构,只能通过对象对外提供的借口访问该对象提供的功能。

2.8关联

关联有助于把多个对象相互联系起来,例如:

一个教师是一个对象,一门课程也是一个对象,教师上课便将教师跟课程这两个对象关联了起来。

通过对象之间的关联的建立,各种不同的对象便相互联系,结合在一起实现系统所要求的功能。

3.面向对象设计

3.1简介

面向对象设计(OOD)强调定义软件对象,并且使用这些软件对象相互协作来完成用户的需求。

面向对象的设计跟分析之间的界限是模糊的,从面向对象的分析到面向对象的设计师一个逐渐扩充模型的过程。

面向对象分析的结果可以通过逐步的细化直接生成面向对象设计的结果,在设计过程中会加深对需求的理解,从而进一步完善需求分析的结果。

因此分析和设计师一个反复迭代的过程。

3.2面向对象的设计过程

面向对象设计首先要进行高层设计:

确定系统的总体风格和结构,构造系统的物理模型,将系统划分为不同的子系统。

接着要进行中层设计:

对每个用况进行设计,规划实现用例功能的关键类,确定类之间的关系。

然后进行底层设计:

对每个类进行详细设计,设计类的属性和操作,优化类之间的关系,最后补充实现非功能性需求所需要的类。

3.3面向对象的设计原则

在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是设计者极为关注的内容。

人们为此提出了很多有关面向对象设计的原则,用于指导面向对象的设计和开发。

开闭原则OCP:

一个模块在扩展性方面应该是开放的,在更改性方面应该是封闭的,在进行面向对象设计时要尽量考虑借口封装机制,抽象机制和多态技术。

这也是符合面向对象的三条基本规则:

在接口上设计;

发现变化,并且封装变化;

先考虑组合,再考虑继承。

替换原则LSP:

子类应该可以替换父类并能够出现在父类能够出现的任何地方,一个显然的例子就是:

圆是椭圆的一个子类,任何出现椭圆的地方,圆都可以出现,但反过来是不行的。

依赖原则DIP:

在进行软件结构设计时,类之间的依赖关系应该尽量依赖接口和抽象类,而不是依赖具体类。

具体类只负责相关业务的实现,修改具体类是不会影响到上层的抽象类。

单一职责原则SRP:

这个原则的核心含义是一个类应该有而且只有一个职责。

职责是指引起类变化的原因,如果一个类有一个以上的职责,那么就会有多个不同的原因引起该类的变化,其实就是耦合了多个互不相关的职责,就会降低这个类的内聚性。

接口分离原则ISP:

采用多个与特定客户类有关的接口比采用一个通用的覆盖多个业务方法的接口更好。

4.面向对象的实现

4.1简介

面向对象实现的主要任务就是把设计阶段产生的结果用代码,脚本和可执行文件等构件来实现,并且对构件进行单元测试,然后通过编译和链接把它们集成为一个或多个可执行的程序。

虽说面向对象软件质量只要是由设计阶段决定的,但是所选择的程序设计语言特点和程序员的编程风格对软件的可靠性、可复用性,可维护性也会产生很大的影响。

4.2选择编程语言

面向对象设计的结果既可以用面向对象的语言来实现,也可以由非面向对象的语言来实现。

如果语言本身支持面向对象的概念,那么当然在实现面向对象设计的时候更加容易。

选择什么样的面向对象设计语言主要是考虑该语言的表达能力和语言的可理解性、可维护性。

面向对象分析和设计使用的表示方法在表达内容上具有层次性,表示形式上具有一致性。

这种表示形式从问题域到系统分析、系统设计和实现始终不变。

一致的表示方法既有利于软件开发过程中使用统一的概念,也有利于维护人员理解软件的各种配置。

因此,在选择面向对象设计语言时要考虑语言对分析和设计模型的一致性表示。

面向对象方法追求的目标之一就是软件的可复用性。

通过复用已有的软件元素不但可以提高软件开发效率,降低成本,同时可以大幅度提高软件产品的质量。

软件的可复用性体现在分析,设计和实现的各个阶段中。

选择的语言应该支持继承,封装,多态特性,使得软件可以在代码层次上易于复用。

C++和JAVA是面向对象中的两种主流语言,C++和JAVA有许多共同之处,JVAV比C++年轻,大量借鉴了C++语法,二者都是强类型语言,变量和值要么是内置类型,要么是用户自定义类型。

通过检测不匹配的方法参数和赋值,强类型可以提高可靠性,增强代码优化。

C++允许重载,方法和函数可以共享相同的名称,但参数数量和类型有差别。

访问限定符将对类成员的访问限制于私有的、保护的、公用的,从而促进封装性。

C++使用引用,绑定在创建好的现有对象上。

C++类有构造函数和析构函数,在创建和销毁对象时会自动调用这些方法。

总之,C++的主要特征是运行时效率高。

相比较而言,JAVA强调运行时的可移植性,以及以效率和灵活性为代价的代码安全性。

JAVA提供了抽象接口,可以模拟多重继承,区分对象和原始类型之间的语义,提供丰富的通用类库以及分布式平台上的系统级整合功能。

5.面向对象程序风格

创建出可复用、可扩展和健壮的程序,面向对象方法的优势才可以体现出来。

可复用软件设计通过把工作量分摊到几项应用中,减少了设计、编码和测试的成本。

代码量减少将会简化理解的难度。

增加代码设计无错的可能性。

可复用有两种方式:

在应用程序内部共享新代码,在新应用程序中复用旧代码。

使用继承技术,每个子类实例同时也是父类的实例,父类全部操作和属性都可以统一于子类。

继承方法实现时可以通过提取代码共性、提取差异性、委托和封装外部代码。

可扩展性需要遵循封装类、确定方法的可见性、隐藏数据结构、避免遍历多项链

接或方法以及避免在对象上使用分支语句的准则。

健壮的方法即使在接受了不合理的参数时也不会导致失败,软件应该可以保护自己,抵御用户的错误输入,避免崩溃。

6.面向对象测试

传统的测试计算机软件的策略是从“小型测试”开始,逐步走向“大型测试”。

即我们从单元测试开始,然后逐步进入集成测试,最后是有效性和系统测试。

在传统应用中,单元测试集中在最小的可编译程序单位——子程序(如,模块、子例程、进程),一旦这些单元均被独立测试后,它被集成在程序结构中,这时要进行一系列的回归测试以发现由于模块的接口所带来的错误和新单元加入所导致的副作用,最后,系统被作为一个整体测试以保证发现在需求中的错误。

面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能。

而且,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。

因此,传统的测试模型对面向对象软件已经不再适用。

1、面向对象测试模型

2、面向对象分析的测试

3、面向对象设计的测试

4、面向对象编程的测试

5、面向对象的单元测试

6、面向对象的集成测试

7、面向对象的系统测试

面向对象测试的整体目标——以最小的工作量发现最多的错误——和传统软件测试的目标是一致的,但是OO测试的策略和战术有很大不同。

测试的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件(模块)移向了类。

三、UML统一建模语言

1.UML简介

什么是UML?

用一句话来回答这三个问题即:

UML是一种获取了国际双标准的图形语言,专门用来表达OOAD的生成。

这句话概括了UML的四项特色:

1)UML是一种语言,而不是一种方法。

2)UML是一种图形语言,而不是编程语言,更不是自然语言。

3)UML通过了两项国际标准。

4)UML具有浓厚的面向对象特色。

OOAD包括建模概念,表示法,开发过程,经验规则。

UML本身就是OO概念表示法,也就是说结合了建模概念和表示法。

但它并不包含开发过程。

在搭配UML的开发过程中,除了需要说明必要的开发步骤以外,还必须指出每个步骤

将生成什样的UML图。

最蓬勃发展的经验法则就是模式,每个模式针对一个特定的问题。

UML是由GradyBooch、JamesRumbaugh、IvarJacobson(UML三友)提出的。

现在UMl已经成为OOAD领域里唯一的标准语言。

2.UML的主要内容

2.1事物

事物是是实体抽象化的最终结果,是模型中的基本成员,UML中包含结构事物、行为事物、分组事物和注释事物。

(1)结构事物(Structuralthings)

结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,共有以下七种:

类(Class):

类是指具有相同属性、方法、关系和语义的对象的集合。

接口(Interface):

接口是指类或组件所提供的服务(操作),描述了类或组件对外可见的动作。

协作(Collaboration):

协作描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模。

用例(Usecase):

用例定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标。

活动类(ActiveClass):

活动类的对象有一个或多个进程或线程。

活动类和类很相象,只是它的对象代表的元素的行为和其他的元素是同时存在的。

组件(Component):

组件是物理的、可替换的部分,包含接口的集合,例如COM+、JAVABEANS等。

结点(Node):

结点是系统在运行时存在的物理元素,代表一个可计算的资源,通常占用一些内存和具有处理能力。

(2)行为事物(Behavioralthings)

行为事物指的是UML模型中的动态部分,代表语句里的"

动词"

,表示模型里随着时空不断变化的部分,包含两类:

交互(ineraction):

交互是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。

状态机(statemachine):

状态机由一系列对象的状态组成。

(3)分组事物(Groupingthings)

可以把分组事物看成是一个"

盒子"

,模型可以在其中被分解。

目前只有一种分组事物,即包(package)。

结构事物、动作事物甚至分组事物都有可能放在一个包中。

包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在。

(4)注释事物(Annotationalthings)注释事物是UML模型的解释部分。

2.2关系

关系是将事物联系在一起的方式,UML中定义了四种关系:

(1)依赖(Dependencies):

两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。

(2)关联(Association):

一种描述一组对象之间连接的结构关系,如聚合关系(描述了整体和部分间的结构关系)。

(3)泛化(Generalization):

一种一般化-特殊化的关系。

(4)实现(Realization):

类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。

2.3图

图是事物集合的分类,UML中包含多种图:

(1)类图(ClassDiagram):

类图描述系统所包含的类、类的内部结构及类之间的关系。

换句话说,它显示了系统的静态结构。

类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类--摇滚乐队、CD、广播剧;

或者贷款、住房抵押、汽车信贷以及利率。

类图还可用于表示实现类,实现类就是程序员处理的实体。

实现类图或许会与逻辑类图显示一些相同的类。

(2)对象图(ObjectDiagram):

对象图是类图的一个具体实例。

它是一种结构图,用来显示系统在一个特定时刻的对象,以及对象之间的链接。

(3)包图(PackageDiagram):

包图表明包及其之间的依赖类图。

主要用来为相关的元素分组,对于拥有大量繁杂元素的项目而言,适合用包图来维护管理元素。

(4)组件图(CompomentDiagram,也称构件图):

组件图描述代码部件的物理结构以及各部件之间的依赖关系。

组件图提供系统的物理视图。

它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。

组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示。

(5)部署图(DeploymentDiagram):

定义系统中软硬件的物理体系结构。

部署图表示该软件系统如何部署到硬件环境中。

它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。

因为部署图是对物理运行情况进行建模,系统的生产人员就可以很好地利用这种图。

(6)用例图(UsecaseDiagram):

用例图描述了系统提供的一个功能单元。

用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包

括基于基本流程的"

角色"

(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。

用例图一般表示出用例的组织关系--要么是整个系统的全部用例,要么是完成具有功能(例如,所有安全管理相关的用例)的一组用例。

要在用例图上显示某个用例,可绘制一个椭圆,然后将用例的名称放在椭圆的中心或椭圆下面的中间位置。

要在用例图上绘制一个角色(表示一个系统用户),可绘制一个人形符号。

(7)顺序图(SequenceDiagram):

顺序图表示对象之间动态合作的关系。

(8)协作图(CollaborationDiagram):

合作图描述对象之间的协作关系。

(9)状态图(StatechartDiagram):

状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件。

有人可能会争论说每个类都有状态,但不是每个类都应该有一个状态图。

只对"

感兴趣的"

状态的类(也就是说,在系统活动期间具有三个或更多潜在状态的类)才进行状态图描述。

(10)活动图(ActivityDiagram):

活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。

活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。

根据我的经验,活动图最适合用于对较高级别的过程建模,比如公司当前在如何运作业务,或者业务如何运作等。

这是因为与序列图相比,活动图在表示上"

不够技术性的"

,但有业务头脑的人们往往能够更快速地理解它们。

3.UML用于软件开发

UML是一个建模语言,常用于建立软件系统模型,适用于系统开发的不同阶段。

(1)用户需求

该阶段可用用例图来捕获用户需求,用例图从用户的角度来描述系统的功能,表示了操作者和系统的一个交互过程。

通过用例建模,描述对系统感兴趣的外部角色和他们对系统的功能要求。

(2)系统分析

分析阶段主要关心问题领域中的主要概念,如对象,类以及他们之间的关系等,需要建立系统的静态模型,可用类图来描述。

为了实现用例,类之间需要协作,可用动态模型的状态图,顺序图和合作图来描述。

在分析阶段,只考虑问题域中的对象建模,通过静态模型和动态模型来描述系统结构和系统行为。

(3)系统设计

在分析阶段建立的分析模型基础上,考虑定义软件系统中的技术细节用到得类。

如引入处理用户交互的接口类、处理数据的类、处理通信和并行的类。

因此,设计阶段为实现阶段提供了更加详细的设计说明。

(4)系统实现

实现阶段的任务是使用面向对象程序设计语言,将来自设计阶段的类转换成程序源代码,用构件图来描述代码构件的物理结构以及构件之间的关

系。

用配置图来描述和定义系统中软硬件的物理体系结构。

(5)测试

UML建立的模型也是测试阶段的依据,可使用类图进行单元测试,可使用构件图,合作图进行集成测试,可使用用例图进行确认测试,以验证测试结果是否满足用户的需求。

UML用于软件开发时一般可以分为以下5步:

1.定义:

通过用例图标识系统的需求,添加其他可清楚显示用例的图。

2.细化:

通过在活动图中捕捉场景(context)来详细的描述每个需求中的步骤。

3.分配:

使用活动图来将步骤分配给系统的元素。

4.设计:

使用组件图来显示元素之间的关系,添加其他可清楚显示组件的图。

5.重复/迭代/钻取/划分和征服:

将过程单元缩小为单独的元素(使用类图进行设计);

或者将其扩展到超阶级出整个系统的范围(使用部署图进行设计)。

添加其他可帮助理解系统的图。

根据当前的范围重复一到四步。

结束语

这学期通过学习面向对象设计方法,使自己对面向对象思想和统一建模语言UML有了更加清楚的认识,发现以前很多的认识都是模糊的,更谈不上将这些思想应用到程序的编写中。

通过这学期的学习,尤其是参加小组分析一个图书馆信息管理的过程,使自己对UML和面向对象的认识提高了很多。

UML对软件开发的帮助时显而易见的,系统中很多不清楚的地方,借助UML中的图便可以很容易的表示清楚。

面向对象思想模拟了人类认识世界的方式,是一种对真实世界的抽象思维方式,而UML则提供了一种简明准确的表示模型的手段。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2