版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML与面向对象分析和设计阚忠良黑龙江大学计算机科学技术学院&软件学院1写在授课之前授课学时先修课程
-45学时-Java语言程序设计C++语言程序设计2教学目的与要求:了解面向对象(OOA/OOD)的发展历史,面向对象分析与设计思想及其分析与设计建模方法
掌握OOA/OOD的基本理论及建模方法和分析与设计原则,包括类的表示、静态模型和动态模型的建立、描述及使用;能利用UML语言按照面向对象方法对应用系统进行分析和设计,并将面向对象技术应用到软件工程领域。
3参考教材UML基础、案例与应用人民邮电出版社设计模式精解清华大学出版社UML和统一过程实用面向对象的分析和设计[美]JimArlowUMLandtheUnifiedProcess机械工业出版社Object-orientedAnalysisandDesignwithApplications《面向对象分析与设计》[美]GradyBooch机械工业出版社ApplingUMLandpatternsAnIntroductiontoobject-orientedAnalysisandDesign《UML和模式应用》[美]CraigLarman机械工业出版社4
第一章OO概述和UML简介软件分析设计方法演变;面向对象与面向结构方法的比较;什么是面向对象分析与设计;
OOA/OOD的发展历史
UML简介
5软件分析设计方法演变结构化分析SA(structuredanalysis):使用独有的符号,来确立描绘信息(数据和控制)流和内容的模型,划分系统的功能和行为,以及其他为确立模型不可缺少部分的描述。代表人物:Yourdon和Gane扩充:Ward和Hatley等6软件分析设计方法演变模块化设计:软件被逻辑地划分为能完成特定功能和子功能的构件。采用自顶向下,逐步细化的方法。代表人物:Wirth等7软件分析设计方法演变面向数据结构的设计:根据问题域数据结构定义一组映射,把问题域的数据结构转换为问题解的程序结构。代表人物:Jackson等8面向数据流与面向对象的系统9软件分析设计方法演变功能分解法10软件分析设计方法演变数据流法11软件分析设计方法演变信息建模法面向数据(数据与责任分离)12软件分析设计方法演变面向对象方法描述现实世界(数据与责任结合)13上升到面向对象是必然
需求变化时功能:最易变数据:较稳定对象:较稳定--PeterCoad,EdwardYourdon稳定性增加类操作属性14用较稳定把不稳定包起来15面向对象与面向功能分析与设计图书馆信息系统CatalogLibrarianBookLibrarySystemRecordLoansAddResourcesReportFines面向对象的分析/设计结构化的分析/设计按照对象或概念分解按照功能或过程分解16文件打印()打印队列打印()排队()图形文件打印()文本文件打印()图象文件打印()打印机打印()针打打印()激打打印()请打印打印控制程序队列控制处理纯文本打印处理图文混合打印处理图象打印处理17classDocumnet{ abstractvoidprint(){..... }.....}classTextDocumentextendsDocument{ ... voidprint(){ ... } ... }18面向对象方法四个要点1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。19面向对象方法四个要点2)把所有对象都划分成各种对象类(类,Class),每个对象类都具有相同的特征和方法。特征描述对象的状态信息,类中定义的方法是允许施加于该类对象上的操作。20面向对象方法四个要点3)按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承。21面向对象方法四个要点4)对象彼此之间仅能通过传递消息互相联系同时使用对象、类、继承和消息的方法,才是真正面向对象的方法22面向对象本质面向对象的本质就是程序设计应该从实际看到、听到、触摸到的人、事物或物体出发,将程序在概念上与这些实际事物建立对应的联系。而面向对象的分析和设计就是建立它们之间映射的关系模型,并将模型转化成计算机程序。需求分析时首先把握的应该是名词,而不是动词。名词是主体,是事物的本质,而动词是附在名词这个主体上的特征。这点与传统的程序设计是截然不同的。23面向对象方法的主要优点与人习惯的思维方法一致传统的程序设计技术是面向过程的设计方法,这种方法以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统24面向对象方法的主要优点稳定性好传统的软件开发方法基于功能分析和功能分解。用传统方法所建立起来的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改面向对象的软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解,所以,当系统的功能需求变化时并不会引起软件实体和结构的整体变化,往往仅需要作一些局部性的修改。现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定的25面向对象方法的主要优点可重用性好传统的软件重用技术是利用标准函数库对象所固有的封装性和信息隐藏等机理,使对象内部的实现与外界隔离,具有较强的独立性。一种方法是创建类的实例;另一种方法是派生新类26面向对象方法的主要优点可维护性好面向对象的软件稳定性比较好面向对象的软件比较容易修改面向对象的软件比较容易理解
易于调试和测试
27什么是面向对象的分析和设计?OOA是一种分析方法,它以可在问题域的词汇表中找到的类和对象的观点来审视需求。OOD是一种设计方法,它包含面向对象分解的过程,以及一种表示方法,用来描写设计中的系统的逻辑模型与物理模型和静态模型与动态模型。28面向对象的分析与设计的精髓是按照对象(事物、概念、或实体)的观点考虑问题域和逻辑解决方案。29面向对象分析与设计(续)面向对象分析重点在于发现并描述问题域中的对象(或概念)面向对象的设计重点在于定义那些能最终用面向对象程序设计语言实现的逻辑软件对象。分析设计构造对问题的调查逻辑解决方案编码30OOA/D的发展历史OO编程语言起源于挪威人KristenNgaard于1962年发明的Simula语言和美国人AlanKay于1970年发明的Smalltalk语言。到1980年,RussellAbbott出版“ReportonTeachingAda”,有关OOA/D著作面世。里程碑式的论文是GradyBooch的”DescribingSoftwareDesigninAda”1995年UML语言诞生31OOA/D常用工件OOA的常用工件是“域模型”,并可以用UML的类图来可视化表示域模型。OOD常用的工件是“设计模型”,可以用UML的包图、类图和交互图来可视化表示设计模型。32需要注意的几个方面成功运用OOA/D重点不在表示符号(如UML)上而在于如何用对象来思考,也就是要掌握对象设计时要应用的原则和模式。OOA/D不适合“瀑布”式的开发流程,而应在“迭代”过程里应用OOA/D,如RUP或XP。开发者学习多种编程语言非常有价值,这样做的目的是真正理解编程问题有多种不同的方法。33管理环境商业建模实现测试分析设计Preliminary
Iteration(s)Iter.
#1阶段过程工作流迭代支持工作流Iter.
#2Iter.
#nIter.
#n+1Iter.
#n+2Iter.
#mIter.
#m+1扩展配置管理需求细化移交初始构造迭代开发:工作模式34UML简介35面向对象分析设计领域著名学派Coad和Yourdon学派,代表作为[Coad91]Booch学派,代表作为[Booc94]Jocabson学派,代表作为[Jocabson92]Rumbaugh学派,代表作为[Rumbaugh91]36面向对象大师简介37Rational三剑客GradyBooch
Rational公司首席科学家
Booch方法的发明人
《面向对象的分析、设计和应用》JimRumbaugh
Rational公司高级研究员
OMT方法的主创人
《面向对象的建模与设计》IvarJacobson
Rational公司副总裁
OOSE方法的发明人
《面向对象软件工程——UseCase方法》这些学派的掌门人就像上帝、真主、如来佛,他们用各自的方式定义了这个世界,并定义一堆经书来解释这个世界。叫苦的是软件企业和开发人员:没有统一的方法,不好干活呀!42UML历史MellorBoochRumbaughJacobsonCoad史前Fusion首次尝试统一OMT、Booch、CRCUMLOMGRFPUML被OMG采纳19941995199619972001Booch和RumbaughJacobsonUML成为工业标准UML1.4UML发展43MeyerBeforeandafterconditionsHarelStatechartsWirfs-BrockResponsibilitiesOdellClassificationShlaer-MellorObjectLifecyclesGamma,et.alFrameworks,patterns,notesBoochJacobsonRumbaugh44UML统一了Booch、OMT和OOSE等方法中的基本概念。UML还吸取了面向对象技术领域中其他流派的长处,其中也包括非OO方法的影响。UML符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。因此,在UML中汇入了面向对象领域中很多人的思想。这些思想并不是UML的开发者们发明的,而是开发者们依据最优秀的OO方法和丰富的计算机科学实践经验综合提炼而成的。45UML在演变过程中还提出了一些新的概念。在UML标准中新加了构造型(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibilitymechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、协作(Collaborations)、活动图(Activitydiagram)等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、精化(Refinement)、接口(Interfaces)和构件(Components)等概念。46UML(UnifiedModelingLanguage)UML是一种标准的图形化的建模语言,它是面向对象分析与设计的一种标准表示.它:不是一种可视化的程序设计语言,而是一种可视化建模语言;不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准;47不是过程,也不是方法,但允许任何一种过程或方法使用它;48UML的目标易于使用、表达能力强,进行可视化建模;与具体的实现无关,可应用于任何语言平台和工具平台;与具体的过程无关,可应用于任何软件开发的过程;简单并且可扩展;为面向对象的设计与开发中涌现出的高级概念提供支持。强调在软件开发中对构架、框架、模式和组件的重用;与最好的软件工程时间经验集成;49UML结构UML构造块公共机制构架50UML构造块物件关系图建模元素本身物件如何语义相关UML模型视图、是我们可视化系统做什么和如何做的方法51物件结构物件:UML模型的名词,如类、接口、协作、用例、活动类、组件、节点行为物件:UML模型的动词,如交互、状态机分组物件:包注解物件:注解52关系关系关联依赖泛化实现53图类图组件图部署图状态图协作图顺序图用例图对象图静态模型(系统结构)动态模型(系统行为)组成结构图交互纵览图计时图54公共机制规格说明公共分类修饰扩展机制55规格说明图形维度:使用图或图标可视化模型。文本维度:各种建模元素的规格说明。 规格说明是模型的“肉”常见的错误:由于图形而死亡—模型被过度图形化而没有说明56修饰无修饰有修饰571)可使用少量修饰建高级视图,以增强图的整体清晰性和可读性。2)需要时再添加修饰以使模型元素足够详细58公共分类类元和实例接口和实现ActorClassComponentDatatypeInterfaceNodeSignalSubsystemUsecase59扩展机制约束:添加新规则来扩展元素的语义构造型:允许基于已有的模型元素定义新的UML建模元素标记值:通过添加新的特殊信息来扩展模型元素的规格说明60架构逻辑视图实现视图进程视图部署视图类图状态图对象图用例视图组件图类图对象图部署图用例图交互图61场景逻辑视图实现视图进程视图部署视图描述设计的对象模型,关注软件抽象功能性需求描述设计的并发和同步等特性,关注系统非功能性需求描述软件和硬件的映射问题,关注系统非功能性需求(性能、可靠性等)关注软件代码的静态组织与管理对系统中的重要活动的抽象,使四个视图有机地联系起来软件体系结构的:“4+1”视图62UML的模型、视图、图与系统构架建模UML是用来描述模型的,它用模型来描述系统的结构或静态特征,以及行为或动态特征。它从不同的视角为系统的构架建模,形成系统的不同视图(view),包括:Usecaseview(用例视图):强调从用户的角度看到的或需要的系统功能;63Logicalview(逻辑视图):展现系统的静态结构组成及特征,也称为structuralview或staticview。通常捕获的是问题域的词汇。processview(进程视图):体现系统的动态行为特征,也称为:behavioralmodelview,Concurrentview,collaborativeview。64Componentview(组件视图):体现系统实现的结构和行为特征,也称为implementationmodelview或developmentview。对物理代码+组件建模。Deploymentview体现系统实现环境的结构和行为特征,也称为physicalview65每一种UML的视图都由一个或多个图(diagram)组成的,一个图就是系统构架在某个侧面的表示,所有的图一起组成系统的完整视图。1.5之前UML九种图,两类,一类静态图:用例图、类图、对象图、组件图,配置图;另一类动态图,包括:序列图、协作图、状态图和活动图。2.0新增加图:组成结构图、交互纵览图、计时图66在软件开发的不同阶段的应用UML的应用贯穿在系统开发的五个阶段:需求分析。UML的用例视图可以表示客户的需求。通过用例建模,可以对外部的角色以及它们所需要的系统功能建模。分析。分析阶段主要考虑所要解决的问题,用UML的逻辑视图和动态视图来描述:类图描述系统的静态结构,协作图、状态图、序列图、活动图描述系统的动态特征。在分析阶段,只为问题领域的类建模,不定义软件系统的解决方案的细节。67设计。在设计阶段,把分析阶段的结果扩展成技术解决方案。加入新的类来提供技术基础结构——用户接口,数据库操作等。设计阶段的结果是构造阶段的详细的规格说明;构造。或程序设计阶段,把设计阶段的类转换成某种面向对象程序设计语言的代码。68测试。分单元测试、集成测试、系统测试和接收测试。不同的测试小组使用不同的UML图作为他们工作的基础:单元测试使用类图和类的规格说明,集成测试使用组件图和协作图,而系统测试使用用例图来确认系统的行为是否符合这些图中的定义。69UML与软件开发成功经验集成在众多成功的软件设计与实现的经验中,最突出的两条:一是注重系统构架的开发,一是注重过程的迭代与递增性。UML本身没有对过程有任何定义,但要求使用它的方法:支持用例驱动、以构架为中心,以及递增和迭代开发。70统一的意义
在以往出现的方法和表示法方面。UML可以对已有的用各种方法建立的模型进行描述,并比原来的方法描述得更好。开发的生命期——UML对于开发的要求具有无缝性。开发过程的不同阶段可以采用相同的一套概念和表示法,在同一个模型中它们可以混合使用。在开发的不同阶段,不必转换概念和表示。这种无缝性对迭代式的、增量式软件开发是至关重要的。
71应用领域——UML适用于各种应用领域的建模,包括大型的、复杂的、实时的、分布式的、集中式数据或计算的、嵌入式的系统。也许用某种专用语言来描述一些专门领域更有用,但在大部分应用领域中,UML
不但不比其他的通用语言逊色并且更好。72实现语言和开发平台——
UML可应用于运行各种不同的编程实现语言和开发平台的系统。其中包括程序设计语言、数据库、4GL、组织文档及固件等。在各种情况下,前部分工作应当相同或相似,后部分工作因各种开发媒介的不同而有某种程度上的不同。
73开发全过程——UML是一个建模语言,不是对开发过程的细节进行描述的工具。就像通用程序设计语言可以用于许多风格的程序设计一样,UML适用于大部分现有的或新出现的开发过程。尤其适用于我们所推荐的迭代式增量开发过程。
74内部概念——在构建UML元模型的过程中,特别注意揭示和表达各种概念之间的内在联系并试图用多种适用于已知和未知情况的办法去把握建模中的概念。这个过程会增强对概念及其适用性的理解。这不是统一各种标准的初衷,但却是统一各种标准最重要的结果之一。
75UML的现状UML已经取得重要成功,它已成为在软件工业中占支配地位的建模语言。UML还存在许多问题,自它产生之日起就从未离开过批评:用户和教师抱怨它内容庞大、难学难教而且太过复杂;学者认为它缺少一个精练的核心和定义良好的外围,有些语义定义得不够精确而且带有二义性;建模实践者认为它缺少支持自己领域建模要求的机制;工具开发商则因为规范本身的不确定性而产生理解上的偏差,它们对UML的自行诠释有可能误导用户。76UML的关键问题是过于庞大和复杂,以及在语言体系结构、语义等方面存在理论缺陷。产生这些问题的一个重要原因是,在形成规范的过程中不得不照顾多种方法流派的观点和多家公司的利益。
77UML建模工具Visio微软VisualUMLVisualObjectModelers公司RationalRoseRational公司TogetherBorland公司ArgoUML开放源码PoseidonforUMLGentleware公司BridgePointProjectTechnology公司SmartDraw7879VisualUMLVisualObjectModelers公司2003年9月发布3.21版支持VB,C#,Java的双向工程,支持业务建模、数据建模、XML建模、Web建模。http:://80TogetherBorland公司出品。Java开发。最新版本7.02005支持UML所有类型的图,支持HTML生成、代码调试、重构、java的双向工程、EJB开发和部署、GoF设计模式等http::///together/index.html81MagicDrawUMLNoMagic公司开发最新7.0。支持全部UML图,还支持XML建模、Web应用图、WSDL图、CORBAIDL图。支持java、C++、C#、CORBAIDL、EJB双向工程。http:://82PoseidonforUML德国Gentleware公司开发,版本2.0除支持UML外,还可以根据状态图生成代码,及OCL.http:://83BridgePointProjectTechnology公司开发特色是在建模的早期可以执行模型,观察模型是否符合要求,并把模型编译为可执行代码。其他工具都做不到UML为XTUML(ExecutableandTranslatableUML)http:://84SmartDraw8586RationalRose简介目前,是世界知名的优秀建模工具之一。Rose提供对工业标准的支持,其中包括统一建模语言(UML)。Rose具有建立、浏览、修改和保存模型的能力,保证不同模型视图之间、模型与代码之间转化的一致性,它具有支持正/反向建模的能力。87Rose工具主要针对企业信息系统建模。企业面对多变的市场,要求企业信息系统有较大的灵活性、可伸缩性。Rose工具与Rational统一过程结合提供了一种企业应用的“模式”。88Rose扩充了UML中相应的概念、术语和图素,引入一些自己的概念、术语和图素,这些概念、术语和图素使企业信息系统更利于建模。在阅读中把这些概念、术语与UML相应的概念、术语和图素比较是有益的。89RationalRose版本
RoseModeler。提供建模功能,但是不支持代码生成和由代码逆向生成模型(逆向工程)。RoseProfessional。支持生成一种语言的代码。RoseEnterprice。支持VC++、Java、Ada、CORBA、VisualBasic、COM、Oracle8与XML架构下生成代码,模型的组件可以用不同语言生成代码。支持J2EE的部署,支持EJB(EnterpriceJavaBeans)逆向工程90启动Rose91RationalRose界面标准工具条浏览区文档描述窗口状态条图形工具条图形窗口92Rose图形界面构成
菜单栏浏览框(Brower)标准工具栏(Standardtoolbar)图素工具栏(Diagramtoolbar)图形窗口(Diagramwindow)文档窗口(DocumentationWindow)日志栏(log)状态栏(status)规范对话框(Specification)93Rose标准工具条Rose的工具条独立于当前打开的图形窗口界面建立新的模型存储模型或目录复制打印浏览文档浏览交互图浏览拓扑图浏览前一幅图放大取消操作打开已存在的模型剪切粘贴内容感知帮助浏览类图浏览组件图浏览双亲图缩小缺省窗口9495
9697Rose的四种视图
98UseCase视图包括系统中所有的角色、用例和用例图可能包括:序列图、协作图和活动图99在逻辑视图中的元素可以包括多种模型图1)类图、包、类和类的关系;2)交互图、对象、链和消息;3)行为图、对象、活动、状态、事件和转换关系100逻辑视图101组件视图组件视图包括模型代码库、可执行文件、运行库和其他组件的信息102部署视图描述构成系统的计算机(处理机)、设备及它们之间的通讯联系103学生成绩管理系统用例图104求根用例图105一元二次方程求根的活动图
106与类图有关的图素107一元二次方程求根的类图
108109序列图基本图素110对象、生命线、活动焦点111求一元二次方程根无异常情况下的序列图112(1)求根者利用窗口提交一元二次方程的3个系数,然后单击求根按钮(Root_click()).(2)系统引发建立求根对象(rootx1x2:Rootx1x2),检查系数是否正确,如正确进入求判别式的值(b24ac())。(3)求根(root_x1x2())。(3)向窗口输出求根结果(show())。113协作图基本图素协作图描述对象、对象间的链接以及链接对象之间如何发送消息114求根协作图协作图描述对象、对象间的链接以及链接对象之间如何发送消息115状态图基本图素116一元二次方程求根状态图状态图主要用来描述对象、子系统和系统的生命周期117一元二次方程求根系统的组件视图118一元二次方程求根系统的组件视图119身份验证的源文件和中间文件的组件图120部署图:计算机、设备、组件分布建模121。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季中考冲刺各科提分策略
- 2026事业单位工勤技能-甘肃-甘肃保健按摩师二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南林木种苗工一级(高级技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南农业技术员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖北-湖北保健按摩师三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-海南-海南经济岗位工一级(高级技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-海南-海南家禽饲养员四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-浙江-浙江放射技术员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏机械冷加工四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-天津-天津护理员二级(技师)历年参考题库含答案详解3套试卷
- 2026新版三年级上册语文暑假课文预习完整版
- 2026年人教A版高一下学期数学期末模拟卷(含答案解析)
- 公司财务管理制度完整范本
- 2023版MRI临床应用安全专家共识课件
- 2025四川省夹金山国有林保护局有限公司招聘6人笔试历年参考题库附带答案详解
- 2026年审计系统公文写作规范考试题
- 2026年农商银行网络运维岗位题库
- 内蒙古辅警综合基础知识历年真题
- 2026年烟台南山学院综合评价招生素质测试(笔试)模拟试题及答案(二)
- 《皮肤科诊疗指南及操作规范(2025版)》
- 复方比那甫西颗粒-临床药品应用解读
评论
0/150
提交评论