




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程UML全册配套完整课件3面向对象分析和设计今天你OO了吗?教材及参考书教材:刁成嘉主编《UML系统建模与分析设计》北京:机械工业出版社2007参考书:
[1]谭云杰《大象ThinkinginUML》(第二版)北京:中国水利水电出版社2012 [2]张龙祥《UML与系统分析设计》(第二版)北京:人民邮电出版社2007[3]麻志毅《面向对象系统与分析》北京:机械工业出版社2008计算机科学与技术的课程体系计算机软件与理论计算机软件计算机理论(离散数学、计算理论)计算机体系结构计算机体系结构、数字逻辑、计算机原理计算机应用计算机网络与通信、控制与接口、信息安全人工智能、图形学、图像处理、多媒体技术软件课程体系与知识结构(1/2)1、算法与数据结构A.数据结构B.算法分析与设计、并行计算2、操作系统A.操作系统B.分布式系统、网络编程技术3、编译与计算机语言A.编译原理、高级语言程序设计(C++,JAVA,C#)(大部分同学会有一个误区,以为精通编程语言就掌握了面向对象)B.形式语言与自动机、形式语义学软件课程体系与知识结构(2/2)4、数据库技术A.数据库系统原理(Oracle、mysql、SQL2005)B.数据仓库、分布式数据库5、软件方法学A.面向对象方法学(面向对象分析与设计、设计模式(优化类的设计))、结构化方法B.软件复用技术、软件体系结构6、软件工程A.软件工程B.软件项目管理、软件质量管理、软件环境与工具学这门课程是干什么的?做什么?:提取对象(什么是对象,对象的特点)如何?从具体的软件项目中提取对象工具?有什么工具来描述对象。(描述对象之间的联系)请注意:我的面向对象的编程目标从来不是复用,提供了一种解决复杂问题的一种方式。(GradyBooch)请思考这些项目设计时会碰到什么问题?学籍管理系统教务管理系统购物网站资产管理系统壁球管理系统愤怒的小鸟游戏面向对象软件工程方法OOA(做什么)OOD(怎么做)OOP(如何实现)UML不是OOA/D,也不是方法,它是一种图形表示如果不掌握对象思想,那UML或任何CASE毫无用处需要一种用于OOA/D的语言,思考的工具,沟通的形式,UML就是这种工具课程目标:分析(analysis)-对问题和需求的调查研究设计(design)-满足需求的概念上的解决方案,为实现服务面向对象分析(object-orientedanalysis)-在问题域内发现和描述对象面向对象设计(object-orienteddesign)-如何定义软件对象以及它们如何协作以实现需求1.5面向对象方法的发展史及现状简介面向对象方法概论1.1传统开发方法中存在的问题1.2面向对象的基本思想1.3面向对象的主要概念及基本原则1.4面向对象方法的主要优点传统型商务以数据为中心
在二十世纪六十年代以前
软件系统都是较小且相对简单的所用的编程语言都是十分简单(Fortran,Cobol等)时兴个人英雄主义,即崇尚程序员的个人技能代码是面条式的,特别是代码中含有GOTO语句
随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,因为这样的代码是很难维护的。
高层次语言的引入有助于解决一些与复杂性有关的问题,但这些语言并不能充分解决问题。
那时,无开发方法而言
1.1传统开发方法中存在的问题1、功能分解法(起于二十世纪七十年代)(1/4)功能分解法(functiondecomposition)
功能分解=功能+子功能+功能接口以系统需要提供的功能为中心来组织系统。首先定义各种功能,然后把功能分解为子功能,同时定义功能之间的接口。对较大的子功能进一步分解,直到可给出明确的定义。根据功能/子功能的需要设计数据结构和算法。功能
功能
功能
系统
子功能子功能子功能子功能分解分解分解……………………工作过程:一层层地进行功能分解功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块得到的系统模型:由模块及其接口构成1、功能分解法(起于二十世纪七十年代)(2/4)优点:当时的计算机应用还不是很普及,只是特定的用户按自己的需要,对软件系统做出了功能性的要求,有据可寻。在相当大的程度上,解决了以前存在的问题。特别是与模块化编程结合使用,效率更高。删除GOTO语句,使得软件能得到有效的维护。与模块化编程相结合,使得软件能得到有效的维护直接地反映用户的需求,所以工作很容易开始。1、功能分解法(起于二十世纪七十年代)(3/4)缺点:开头容易,结束难。结构化分析和设计注重处理功能,对所处理的数据放于次要的位置。对需求变化的适应能力很差。局部的错误和局部的修改很容易产生全局性的影响。不能直接地映射问题域,很难检验分析结果的正确性。1、功能分解法(起于二十世纪七十年代)(4/4)
数据流法=数据流+数据处理(加工)+数据存储+端点+处理说明+数据字典又称作结构化分析。基本策略是跟踪数据流,即研究问题域中数据如何流动以及在各个环节上进行何种处理,从而发现数据流和加工。问题域被映射为数据流图(DFD),并用处理说明和数据字典进行详细说明。数据流加工数据存储端点处理说明————————————————————————数据词典————————————————————————2、数据流法(结构化分析法)(1/2)数据流图的图形记号外部实体位于软件系统边界之外的信息生产者或消费者转换转换数据流的处理过程,又称泡(bubble)数据源数据流为一个或多个转换提供数据源或数据存储服务的缓冲区、文件或数据库在转换之间有向流动的数据项或数据项集合
“与”,即同时输入/出;
+“或”,即至少一项输入/出;⊕“异或”,即非同时输入/出*“家庭保安系统”顶级数据流图警报类别显示信息电话拨号音频传感数据用户命令家庭保安系统控制面板传感器显示器电话机警报器“家庭保安系统”1级数据流图警报类别电话拨号音频传感信息配置数据传感数据配置数据原口令口令有效/口令无效口令配置数据配置命令显示信息启动/停止时的显示信息口令有效启动/停止命令用户命令配置信息控制面板用户命令处理系统配置口令核对信息显示启动/停止处理显示面板传感器监测传感器警报器电话机数据字典举例家庭保安系统中的“电话号码”数据条目可以定义如下:<电话号码>=<分机号>|<外线号码><分机号>=1816|1817|…|1858<外线号码>=9+(<市话号码>|<长话号码>)<长话号码>=0+(<区号>+<市话号码>)<区号>=*任何长度为3的数字串*<市话号码>=<局号>+<分局号><局号>=395|396|397|303|304|305<分局号>=*任何长度为4的数字串*业务模型数据流加工数据存储端点处理说明数据字典跟踪数据流,从而发现数据流和加工。优点:有严格的法则,逐步求精,较强调研究问题域。缺点:在概念上,不能直接地映射到问题域中的事物对需求变化的适应能力较弱。大系统数据流和加工的数量太多,引起分析文档的膨胀。系统复杂时,难以检验分析的正确性。分析与设计的概念和表示法不一致,其转换规则也不严格。容易导致模块的低内聚和模块间的高耦合,从而使得系统缺乏灵活性和可维护性。2、数据流法(结构化分析法)(2/2)信息建模法(informationmodeling)信息建模=实体(对象)+属性+关系+父类型/子类型+关联对象由实体-联系法(E-R方法)发展而来。与数据库设计有很深的渊源。核心概念是实体和联系:实体描述问题域的事物,含有属性;联系描述事物之间在数据方面的关系,也可以带有属性3、信息建模方法(1/2)发展之后的方法也把实体称作对象,并使用了类型和子类型的概念,作为实体(对象)的抽象描述。实体-关系图实体-关系(Entity-Relation)图简称E-R图,是表示数据对象及其之间关系的图形语言机制。数据对象(实体)用长方形、关系用菱形、属性用椭圆表示。数据对象之间数量上的对应关系的表示如下图所示:0:11:10:多1:多为了便于区分,在E-R模型中的实体、关系和属性都应在对应的框中写上各自的名字。实体-关系图实体-关系图实例制造商生产经销商汽车经销存储标识码颜色型号制造商车体类型买主例如,在教学管理中,学校开设若干门课程,一个教师可以教授其中的一门或多门课程,每位学生也需要学习其中的几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。用E-R图描述它们之间的联系,如图所示。其中,学生与课程是多对多的联系,而教师与课程的联系是一对多。
教学管理E-R图1NNM业务模型实体(对象)属性联系父类型/子类型关联对象
强调对信息实体建模,而不是对象建模。对象只有属性,而无操作。父类与子类之间也只有属性继承。没采用消息通讯。3、信息建模方法(2/2)它是基于现实的行为视图,状态是这类系统的构造块,并且所操作的数据是独立于状态的。
基于系统状态的处理。这一方法没有说到数据管理。
4、有限状态机方法计算机是执行一套规则的推理机(if—then语句)。基于人工智能系统基于规则的系统并没有帮助我们处理数据,也不支持过程概念如prolog,list语言
••••••5、基于规则的系统总结
上述方法都仅基于一个角度看待系统,对系统的其它视图建模方面的能力都很弱。但对OO产生都做出了一定的贡献.
随需应变的商务为了克服早期的方法的不足,这时人们已经开始考虑使用面向对象方法来开发系统。较为完善面向对象的分析和设计方法出现在八十年代中后期。早期的方法只使用一种系统的视角作为构造块,而没有容纳其他视角。功能分解法集中于将功能作为系统的构造块在数据分析方法中(实体联系模型)构造块是实体,但在该方法中用来满足系统需求的功能被完全忽略掉了。两种方法都没有处理对动态行为的捕获,声明性语义(规则)以及例外处理机制都被完全忽略了。
1.2面向对象的基本思想
(1/11)面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。在面向对象方法中,把一切都看成是对象。1.2面向对象的基本思想
(2/11)例题:编写一个开发票程序,需要对发票的名细栏进行计算。编号名称规格单位数量单价金额合计非面向对象思路: 定义数据结构 定义函数面向对象思路:对象一组属性操作:发票总计
……一切都是对象1.2面向对象的基本思想
(3/11)对象组装从程序设计方法的角度看,面向对象是一种新的程序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计.自八十年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。什么是面向对象1.2面向对象的基本思想
(4/11)(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象)1.2面向对象的基本思想
(5/11)(2)用对象的属性表示事物的性质;用对象的操作表示事物的行为。(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(对象的封装)1.2面向对象的基本思想
(6/11)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例.(分类)(5)复杂的对象可以用简单的对象作为其构成部分.(聚合)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档.(继承)1.2面向对象的基本思想
(7/11)(7)类具有封闭性,把内部的属性和操作隐藏起来,只有公共的操作对外是可见的.(类的封闭性)(8)
对象之间通过消息进行通讯,以实现对象之间的动态联系.(消息)(9)通过关联表达类(一组对象)之间的静态关系.(关联)1.2面向对象的基本思想
(8/11)客观世界对象对象对象对象对象对象对象对象对象对象对象名属性…操作…类类类类分类类继承类类对象聚合抽象客观事物及其间的联系关联用况图类图顺序图状态图活动图构件图OO模型对象对象对象对象对象对象对象对象计算机内的对象编程构成封装运行分析设计………………充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。1.2面向对象的基本思想
(10/11)用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的性质和行为,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。树立观点:面向对象的方法与面向过程的方法根本不同在于:就是不再把世界看成一个紧密关联的系统,而是看成一些独立的离散的小零件,这个世界通过某些规则组织起来的,完成一个特定功能。1.2面向对象的基本思想
(11/11)总结:面向对象中的主要概念:对象、属性、操作、类、继承、聚合、关联、永久对象,对象还分为主动对象和消息,泛化分为有多态性和无多态性的。面向对象中的基本原则:信息隐蔽或封装、消息传递、后期连接、委托、类/对象和关系等。1.3面向对象中的主要概念及基本原则对象标识就是对象的名字,有“外部标识”和“内部标识”之分。对象是现实世界中某个实际存在的事物,它可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。对象是构成世界的一个独立单位。它具有自己的静态特征和动态特征。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组操作构成。对象属性操作对象标识属性是用来描述对象性质的一个数据项。操作是用来描述对象行为的一个动作序列。对象,属性,操作,对象标识抽象1.3.1面向对象中的主要概念(1/9)类,一般类,特殊类,抽象(2/9)抽象与分类:抽象(化)忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性。把具有共同性质的事物划分为一类,得出一个抽象的概念,叫做分类。类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。类的作用是用来创建对象,对象是类的一个实例。不同程度的抽象可得到不同层次的分类较多地忽略事物之间的差别得到较一般的类较多地注意事物之间的差别得到较特殊的类运输工具火车汽车飞机卡车轿车轮船车辆继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。继承意味着自动地拥有,或隐含地复制子类从父类中继承属性和操作,根据需要添加自己的属性和方法。继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一。公司人员姓名身份证号码股东股份
············职员工资··················例:由继承机制保证一般类与特殊类之间的关系叫泛化关系(继承关系),简称泛化。继承关系的语义:“isakindof”继承(3/9)多继承:允许一个特殊类具有一个以上一般类的继承模式称作多继承多继承特殊类的内部情况在职研究生姓名······学号班级专业······职称专业······在职单位············来自“人员”类来自“研究生”类来自“教职工”类本类中显示定义例:人员姓名······教职工职称专业······研究生学号班级专业······在职研究生在职单位
······(4/9)对象通过它对外提供的操作在系统中发挥作用。当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如C++程序中的main函数),请求这个对象执行某个操作时,该对象就响应这个请求,完成该操作。在OO方法中,把向对象发出的操作请求称为消息.
目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用。但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统。
例子:顾客买报纸消息(5/9)聚合:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为组合,称较简单的对象为成分,称这种关系为聚合。这种关系的语义是“hasa”或“isapartof”聚合刻画了现实事物之间的构成关系两种方式:(前一种方式又称组合)部分对象部分对象整体对象嵌套对象整体对象部分对象部分对象整体对象对象指针或对象标识描述紧密、固定的关系,例如汽车与发动机描述松散、灵活的关系,例如公司与法律顾问(6/9)例:汽车发动机14..60….10..1车轮公司0..*0..*法律顾问组合关系聚合关系聚合(7/9)关联:类之间的静态联系称作关联。在实例化后,由类产生对象,由关联产生连接对象的链。链是关联的实例。关联的表示符号也称作实例连接城市0..*0..*有航线城市之间有航线教师学生0..*1指导论文教师为学生指导论文例:(8/9)其他:永久对象:可以在程序运行后继续保存的对象时间空间意义实现途径:语言,OO-DBMS主动对象:表示进程或线程的对象。描述具有主动行为的事物描述并发执行的任务(9/9)(1)抽象
从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。例如,一个现实事物,可能担任很多角色,只有与问题域有关的角色,才予以考虑。在不同的高度看待或解决问题。
OO中的应用:过程抽象:任何一个完成确定功能的操作序列,其使用者都可把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象:根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。客观事物->对象->类->一般类不同开发阶段需要进行不同程度的抽象便于实现模块的可替换性
1.3.2面向对象中的基本原则(1/14)(2)封装:把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。只是向外部提供接口,降低了对象间的耦合度。售报亭属性服务报刊A报刊B…钱箱报刊零售款货清点顾客由封装机制保证:数据不能被对象的使用者直接访问。只允许通过由对象提供的方法或代码访问数据。1.3.2面向对象中的基本原则(2/14)封装的重要意义:使对象能够集中而完整地描述并对应一个具体事物。体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“交插感染”。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的操作隐藏起来。封装带来的问题:编程的麻烦执行效率的损失解决办法:不强调严格封装,实行可见性控制。(混合型OOPL)例如:C++1.3.2面向对象中的基本原则(3/14)信息隐蔽对象的操作定义了其他的对象怎样获得对其的访问。每一个对象都将提供给所有对象的公共操作公开化。它也提供仅局限于特定对象的其它的操作(受保护的和私有的)。其他的对象对被请求的对象怎样提供操作(代码,内部数据)没有感知。操作操作操作操作
……
属性集(4/14)(3)委托
借助消息传递,工作可从一个对象(客户)传递到另一个对象(代理),因为从客户的观点,代理具有客户所需要的操作。工作连续地传递,直到到达了既有数据又有方法(代码)能完成这项工作的对象。
例如:建造一所办公楼董事会->总经理->建筑公司注意:委托是执行任务的权利,而不是责任。(5/14)(4)分类把具有共同性质的事物划分为一类,得出一个抽象的概念。分类帮助我们组织我们所生活的复杂世界。我们可以对在一个特殊分类中的对象做一些假设。如果一个对象是分类(类)的一个实例,它将符合该分类的总体模式。分类:对象->类->一般类类/对象所有的对象都是类的实例。实例能够在运行时被产生(初始化)或销毁(删除)。对象怎样提供操作,由该对象为其实例的类所决定。这样,同一个类的所有对象在响应特定的操作请求(功能调用)时使用相同的方法。
(6/14)(5)泛化(继承)无多态性的泛化.类可以由层次继承结构所组织。在该结构中,子类将从位于层次结构高层的父类中继承属性、操作和关系。
抽象的父类是指仅用来定义子类的超类。这样,抽象类就没有直接的实例。有多态的泛化.可以使用层次继承结构组织类,子类可以继承位于层次结构的高层的父类的属性、操作和关系。然而,子类可以定义它自己的操作来代替其任何超类的同名操作。(7/14)多态是指同一个命名可具有不同的语义。OO方法中,常指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。用途:把具有共同基类的对象组成一组,并对它们进行一致的处理。 例如,多边形下的三角形、长方形、正多边形。
多态(8/14)多态:多边形边数顶点数据绘图XY轴向矩形x边数*顶点数据*绘图正多边形*顶点数据*绘图例:(9/14)(6)消息通信
即要求对象之间只能通过消息进行通讯。消息传递机制与函数调用机制的区别
第一,在消息传递机制中,每一个消息被发送给指定的接收者(对象)。在命令式编程范型中,函数调用机制没有指定的接收者。第二,消息的解释(用来完成操作请求的方法或操作/代码集)依赖接收者,并且因接收者的不同而异。第三,在面向对象的范型中,通常在运行时才能知道给定消息的特定的接收者。(10/14)(7)行为分析
行为分析是我们用来考察一个对象(类)是怎样提供它的操作的过程。
从分析的视点,有两种类型的行为:静态的动态的(11/14)静态行为在静态行为中,实现操作的代码不被任何外部或内部的事件(动作)所影响。示例:一个类中有一个“求平方根”的操作。如果对数码4执行“求平方根”操作,其结果总会是2。没有外部的或内部的动作能够引起该类的代码改变计算平方根的结果。实际上,只要我们使用命令式编程(如用C编程)是容易做到这一点的。
(12/14)动态行为
在行为中发生这些变化的原因可能是由于对象存在很多不同的状态。随后,对象根据它的状态做出反映。使用命令式编程技术不能很好地处理这种类型的行为。使用另外的一种称为有限状态机的机制会更好地捕获这样的方法。
例子:航班订票系统中的订票过程 对象“机票”的状态:预定、等待、确认、取消、使用、归档
系统中的对象是相互协作的,通过发消息共同完成某项功能。这种协作的交互性,可以用交互图来进行描述。有很多系统具有并发行为。从事物的并发行为的起因上看,每个并发行为都是主动发生的。(13/14)(8)复杂性控制(14/14)
引入包(package)的概念,使模型具有大小不同的粒度层次,以利于控制复杂性。
如把分析和设计阶段的模型分别用包进行组织。从认识论角度和软件工程方法的角度看一下面向对象方法带来的好处;具体地描述面向对象方法的特点。
1.4面向对象方法的特点(1/11)对问题域的认识(人)客观世界(问题域)计算机自然语言语言的鸿沟编程语言语言的过渡(人)编程(人)程序的理解和执行(机器)软件开发:从问题域出发,对事物进行认识和描述问题——语言的鸿沟1、从认识论的角度可以看出,面向对象方法改变了人们认识世界的方式(2/11)计算机机器语言自然语言客观世界(问题域)语言的鸿沟2、语言的发展——鸿沟变窄面向对象的语言非OO的高级语言汇编语言程序的指令、数据、地址,都是由二进制的“0”和“1”构成的。离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远。以易理解的符号表示指令、数据以及寄存器、地址等物理概念。稍稍适合人类的形象思维,但仍然相差很远。因为抽象层次太低,仍需考虑大量的机器细节。高级语言隐蔽了机器细节,使用有形象意义的数据命名和表达式,可以联系到程序所描述的具体事物。特别是结构化编程语言更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距。能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。(3/11)问题域测试编程计算机编程语言自然语言需求分析总体设计详细设计3、面向对象方法使得从问题域到计算机间的鸿沟变窄
(4/11)分析与设计的鸿沟分析与设计概念及表示法的不一致软件工程学的作用—结构化的软件工程方法问题域OOA计算机自然语言面向对象的编程语言OODOOPOOT软件工程学的作用——面向对象的软件工程方法(5/11)面向对象程序设计把数据和处理数据的过程作为一个整体,即对象。算法+数据结构算法+数据结构算法+数据结构算法+数据结构对象算法+数据结构对象对象对象对象关系程序=<对象,关系>对象=(算法)+(数据结构)4、面向对象方法有助于软件的维护与复用
(6/11)结构化程序设计程序=<关系,算法,数据结构>数据结构数据结构数据结构算法算法算法关系(7/11)
结构化方法:从算法的角度进行建模,所有的软件都用过程或函数作为其主要构造块。人们把大量精力都集中在控制流程和大算法的分解上。这种建模的缺点是模型脆弱。需求变动、维护困难。面向对象方法:以众多的类及交互模式(类间的协同工作)为中心。着重于数据的信息建模方法:以实体-关系模型为中心,该模型的行为放入触发器和存储过程中。几种开发方法的特点(8/11)
对于一个给定的应用系统和开发方法,上述的任何一种方法可能都是正确的。只是代价和受益是不同的。(1)把易变的数据结构和部分功能封装在对象内并加以隐藏,
一是保证了对象行为的可靠性;二是对它们的修改并不会影响其他的对象,有利于维护,对需求变化有较强的适应性。(2)封装性和继承性有利于复用对象。把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其他对象的耦合,这为复用对象提供了可能性和方便性。在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用。与传统方法相比,面向对象方法的主要优点:(9/11)这主要体现在如下几方面:
设计的投入在编程、测试时会得到回报
OO方法使系统更易于理解分析文档、设计文档、源代码对应良好功能变化引起的全局性修改较少有利于OOA结果的复用5、面向对象方法有助于提高软件的质量和生产率(10/11)面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流
······面向对象是软件方法学的返朴归真软件科学的发展历程中出现过许多“面向”软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。面向对象(11/11)OOPL面向对象并非面向对象的全部通过面向对象编程语言(OOPL)认识到的面向对象,并不是面向对象的全部,甚至只是浅陋的面向对象。OOPL的三大机制“封装、继承、多态”可以表达面向对象的所有概念,但这三大机制本身并没有刻画出面向对象的核心精神。-封装,隐藏内部实现-继承,复用现有代码-多态,改写对象行为换句话说既可以用这三大机制做出“好的面向对象设计”,可以满足“应对变化,提高复用”的设计,也可以用这三大机制做出“差的面向对象设计”。不是使用了面向对象语言,就实现了面向对象的设计与开发。OOPL没有回答为什么用面向对象?面向对象分析与设计描述的是类和对象之间的组织,独立于编程语言。面向对象的困难哪些困难?对象是怎样提取(抽象)出来的?现实世界和对象世界差别这么大,为什么要这么抽取对象,而不那么抽取对象?(Why)对象世界由于灵活,可以任意组合,可我怎么知道某个组合就正好满足了现实世界的需求?什么样的组合是好的?什么样的组合是差的?(How)如果只给我一个对象组合,我怎样才能理解它表达怎样的含义?(What)为什么会出现这些问题?难道是面向对象错了?现实世界和对象世界之间存在一道鸿沟抽象-面向对象的精髓也是面向对象的困难所在跨越这条鸿沟需要一种把现实世界映射到对象世界的方法一种从对象世界描述现实世界的方法一种验证对象世界行为是否正确反映了现实世界的方法UML-正好架起跨越这一到鸿沟的桥梁UML的优势可视化:通过文字或其他方法很难表达清楚的,用简单直观的图形表达和暴露出来可以从现实世界建立业务模型,概念模型,设计模型造一辆车身是红色金属漆的小轿车,装备四个普利斯通轮胎,四车门,车门加厚,前后玻璃贴上黑色的膜。前后挡风玻璃里都装有电热丝,后视镜是电动可调的。?????可视化的结果可以将现实世界转化为业务模型将业务模型转化为概念模型将概念模型转化为设计模型统一过程简介核心思想:面向对象,迭代增量开发,拥抱需求变化定义了软件开发过程中最重要阶段工作。四个阶段:先启、精化、构建、产品化九个核心工作流:业务建模、需求、分析设计、实施、测试、部署(6个核心过程工作流);配置与变更管理、项目管理、环境(3个核心支持工作流)发展历程统一过程统一过程的最佳实践小结介绍面向对象的基本概念面向对象存在的困难面向对象困难的解决方式掌握面向对象的基本概念及优点软件建模基础计算机系统输入装置输出装置运算器控制器存储器计算机系统模型Intel某芯片模型软件建模基础什么是系统建模?(SystemModeling)通过对客观事物建立一种抽象的方法用以表征事物并获得对事物本身的理解,同时把这种理解概念化,并将这些逻辑概念组织起来,构成一种对所观察的对象的内部结构和工作原理的便于理解的表示。(????)去掉可能引起混淆的信息,是真实系统的简化软件项目中是不是一定要建模?模(Pattern)是什么?“人”、“事”、“物”、“规则”建模就是将“人”、“事”、“物”、“规则”进行有机组合成有意义的一个整体(????)谁发出什么动作?作用于什么事物?产生什么样的结果?(业务场景描述)软件建模:人=业务主角、业务工人、参与者;事=业务用例、系统用例等,物=业务实体;规则=事件为什么要建模开发人员如何与用户进行沟通,以了解系统的需求?开发人员之间如何沟通以确保各个部分能够无缝地进行协作?软件系统设计的复杂性帮助用户更高层次了解系统,让用户专注于系统设计中的重要部分,忽略无关紧要的部分。软件建模的目的向软件项目干系人展示将要开发的软件产品。干系人:客户、系统分析员、架构师、设计师、开发人员、测试人员、项目经理等用视图来展示软件产品的不同方面建模的主要工作是绘制那些表达软件含义的视图表达软件的含义;为不同干系人展示他们关心的部分视图比如向客户展示用例图软件建模基础需求分析时,面对大量需求资料时,是否有时候感觉力不从心?当你试图去做一设计时,是否有时候感觉无从下手?一个是怎么建?模是什么?同样的事物在不同的人眼中有不同的结果请在30秒内说出尽可能多的筷子、勺子、和盘子的相同点与不同点从用途角度抽象建立一个人或一伙人用餐的业务逻辑模型,这三中事物各司其责,特性不一。软件建模:首先要确定抽象的角度,即建立这个模型的目的是什么?另外一个例子:你怎么认识武汉这做城市?从交通、从风景、餐饮、文化…..怎么建明确建模的实际目的取决于现实世界的问题领域取决于你的抽象角度(还有抽象的层次和粒度问题)例子:公司内部图书馆系统﹕公司每个成员通过局域网登录图书管理系统﹐然后预借书籍﹐图书管理员收到预借信息后﹐核准借阅﹐并通知借书人前来领书﹐告知相关事项。问题域建模-抽象角度的选择图书馆书籍类别书籍预借记录问题域(领域模型)建模关键是抽象出现实业务世界的概念(名词)及相互关系。也就是找全抽象角度,最终选择哪些抽象角度?可以初步了解系统应该有哪些类。建模公式软件建模内容用例模型类图模型次序模型活动模型……根据项目的实际情况,确定需要建立哪些模型,也就是说,只需建立项目实际需要的模型即可,但最常见的需要建立用例和类图模型模型的数量:可以多个,也可以1个,比如一个项目可以建立多个用例模型或多个类图模型软件建模工具RationalRose是面向对象分析与设计建模最好的工具,它的应用领域宽,应用时间长,也较为成熟。当前,它是IT企业常用的CASE工具之一,计算机及软件专业方向的大学生、研究生和软件工程师必须学会它,掌握它,并用它来解决面向对象分析与设计建模的实际问题。StartUMLRationalRose主要特点支持多种语言,如Ada、CORBA、VisualBasic、Java,C++等;支持模型的Internet发布;可以生成简单、清晰且定制灵活的文档;双向工程保证了模型和代码高度一致(MDA);支持逆向工程,建立代码框架;支持多种关系型数据库的建模;从需求分析到测试,在整个软件生命周期中,都为团队开发提供强有力的支持RationalRose的作用整个开发团队可以使用用例图,来获得一个系统高层次的视图,并且可以协商项目的范畴;项目经理可以使用用例图和文档,把项目分解成便于管理的多个模块;系统分析员和客户在看到用例规格描述文档的时候,就可以明白系统将会提供什么样的功能;技术编写者在看到用例规格描述文档时,就可以着手编写用户手册和培训计划;系统分析员和软件开发者在看到时序图和协作图时,就可以明白整个系统的逻辑流程、对象以及对象之间的消息;RationalRose的作用测试人员可以使用用例文档、时序图、协作图获得测试脚本所需要的信息;软件开发人员使用类图和状态图,可以获得系统模块的详细视图以及模块之间的关系;部署人员在使用组件图和部署图时,就可以明白哪些是可执行文件或DLL文件,以及其他的一些组件是如何创建的,这些组件该部署在网络中哪些地方;整个团队使用Rose模型,就可以确定从需求到编码的整个过程,并且从编码到需求这个逆过程也是可以追踪的。软件建模工具用Rose建模实例简单介绍求职者领域模型建模求职者活动图网上求职招聘系统的登录操作时序图
对象分析方法一切皆对象对象间是独立的对象都具有原子性(不能分割)对象都是可抽象的对象都有层次性(层次越高,描述越粗略,适应能力越强)对象分析方法面向对象分析设计的完整过程本章小结建模的原因建模的目的建模的关键建模的内容建模的工具UML基础内容UML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结知识图谱UML概述
统一建模语言(UnifiedModelingLanguage)是一个用于描述面向对象软件设计、可视化、构造和文档化软件系统的建模语言。 它统一了GradyBooch、JimRumbangh和IvarJacobson三位大师的面向对象建模描述语言(Booch,OMT、OOSE),并对其做了进一步的发展,最终成为广泛接受的面对象建模语言。UML已被OMG所采用,目前成为业界的标准。UML概述适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。
(2)UML表示法:UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。认识UMLuml是一种标准的图形化建模语言。它是面向对象分析与设计的一种标准表示。它不是一种可视化的程序设计语言,而是一种可视化的建模语言。不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准。不是过程也不是方法,但允许任何一种过程和方法使用它。
UML的目标易于使用、表达能力强、进行可视化建模。与具体的实现无关,可应用于任何语言平台和工具平台。与具体的过程无关,可应用于任何软件开发的过程。简单并且可扩展,具有扩展和专有化机制,便于扩展无需对核心概念进行修改。
为面向对象的设计与开发中涌现出的高级概念,例如协作框架模式和组件提供支持,强调在软件开发中对架构框架模式和组件的重用。与最好的软件工程实践经验集成。可升级,具有广阔的适用性和可用性。有利于面对对象工具的市场成长。UML的体系结构uml是由图和元模型组成的。图是uml的语法。而元模型则给出的图的意思,是uml的语义。uml的语义是定义在一个四层或四个抽象级建模概念框架中的。这四层分别是:元元模型(meta-metamodel)层组成uml最基本的元素事物(thing),代表要定义的所有事物。元模型(metamodel)层组成了uml的基本元素,包括面向对象和面向组件的概念。这一层的每个概念都是元元模型中事物概念的实例。模型(model)层组成了uml的模型。这一层中的每个概念都是元模型层中概念的一个实例。用户模型(usermodel)层。这层中的所有元素都是uml模型的例子。这一层中的每个概念都是模型层的一个实例。元模型(meta-model)当然也是模型,他描述的对象是“模型中的元素、元素间关系以及表示法”,或者说它是一种语言,人们使用这种语言来描述模型。使用同样元模型的人,可以互相理解彼此所建立的模型。我们的每一句话,每篇文章都是一个模型中文是我们的建模语言。掌握中文的人,可以通过理解对方的句子和文章。中文、英文、德文、法文都是自然语言,也都是元模型。如果你要发明一种新的自然语言,你需要发明哪些要素呢?例如:你是否需要发明相关的词汇和语法?词汇是否需要分成名词、动词、形容词等等?每一个词汇是否都应该有读音和写法?(ps,《指环王》的作者托尔金大叔就发明了一种新的语言,名曰精灵语,而且居然还有个女人把它学会了。)或者,你发明了一种新的“自然语言”,但是它是不是真正意义上的自然语言呢?显然,要回答这个问题,我们需要先搞清楚什么是“自然语言”。怎么才能精确的说清楚?最好是建立一个模型,用这个模型来阐明“自然语言”的要素和结构。使用这个模型,我们可以定义自己的“自然语言”。这个模型对于任何一种自然语言(例如中文),就是元模型;而相对于一个句子或者一篇文章则是元元模型。如此类推,我们还可以建立元元元模型,元元元元模型,等等。但是,陷于人类的思维能力和实际的需要,4层可能就足够了。AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结UML组成基本构造块:也就是建模
元素,是模型的主体UML规则:也就是支配基
本构造块如何放在一起的
规则公共机制:运用于整个
UML模型中的公共机制、
扩展机制UML模型图的构成事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象关系(Relationships):关系把事物紧密联系在一起图(Diagrams):图是事物和关系的可视化表示AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结事物构造块事物构造块是对模型中最具有代表性的成分的抽象结构事物:UML中的名词,它是模型的静态部分,描述概念或物理元素。行为事物:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。分组事物:UML中的容器,用来组织模型,使模型更加的结构化。注释事务:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。面向对象视角下的世界首先建立反应现实世界中不同事物的“构造块”,然后确定“构造块”之间的“关系”,再确定各个构造块的属性和“行为”。这样,在软件系统中就可以模拟现实世界的“构造块”之间的交互与协作面向对象软件开发的核心思想就是高内聚(封装)、低耦合(消息驱动),使用简洁的接口拼合简单的部件结构事物类(class)和对象(object)接口(interface)主动类(activeclass)用例(usecase)协作(collaboration)构件(component)节点(node)类和对象类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象UML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法对象则是类的一个实例UML将类分为哪三个类1.边界类(BoundryClass);2.实体类(EntityClass);3.控制类(ControlClass);边界类1.用来描述什么问题?边界类用于描述外部参与者与系统之间的交互。边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。这种交互包括转换事件,并记录系统表示方式(例如接口)中的变更。2.可以带来什么好处?识别边界类可以帮助开发人员识别出用户对界面的需求。3.如何理解边界类边界类位于系统与外界的交界处,窗体、报表、以及表示通讯协议的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类。通过用例图可以确定需要的边界类,每个Actor/UseCase对至少要一个边界类,但并非每个Actor/UseCase对要唯一的边界类。用户界面类-帮助与系统用户进行通信的类系统接口类-帮助与其他系统进行通信的类设备接口类-为用来监测外部事件的设备(如传感器)提供接口的类
实体类实体类主要是作为数据管理和业务逻辑处理层面上存在的类别。实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。实体类保存要放进持久存储体的信息。持久存储体就是数据库、文件等可以永久存储数据的介质。实体类可以通过事件流和交互图发现。通常每个实体类在数据库中有相应的表,实体类中的属性对应数据库表中的字段。实体类是用于对必须存储的信息和相关行为建模的类。实体对象(实体类的实例)用于保存和更新一些现象的有关信息,例如:事件、人员或者一些现实生活中的对象。控制类1.用来描述什么问题?控制类用于描述一个用例所具有的事件流控制行为,控制一个用例中的事件顺序。2.如何理解控制类?控制类是控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。其他类并不向控制类发送很多消息,而是由控制类发出很多消息。控制类1.用来描述什么问题?控制类用于描述一个用例所具有的事件流控制行为,控制一个用例中的事件顺序。2.如何理解控制类?控制类是控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。其他类并不向控制类发送很多消息,而是由控制类发出很多消息。应用举例考试系统中当学生在考试时,学生与试卷交互,那么学生和试卷都是实体类;而考试时间,规则,分数都是控制类当考试完了将试卷提交给试卷保管者,则试卷则成了边界类。UML类总结1.边界类,描述外部与系统内部交互的类;2.控制类,控制其他类;3.实体类,存储信息(持久化)和相关行为的类;接口接口是描述某个类或构件的一个服务操作集主动类主动类实际上是一种特殊的类。引用它的原因,实际上是在开发中需要有一些类能够起到
启动控制活动的作用主动类是指其对象至少拥有一个进
程或线程,能够启动控制活动的类用例与协作用例是著名的大师IvarJacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个
用例定义一组用例实例。协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构
成的一个群体。对于某个用例的实现就可
以表示为一个协作构件在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换节点为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力行为事物交互(interaction): 是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合交互的表示法很简单,就是一条有向直线,并在上面标有操作名状态机(statemachine):是一个对象或交互在生命周期内响应事件所经历的状态序列在UML模型中将状态画为一个圆
角矩形,并在矩形内写出状态名
称及其子状态分组事物对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标注释事物结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分
AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结UML关系依赖依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义关联关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系泛化泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系实现实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约UML模型关系的种类种类变种表示法关键字或符号种类变种表示法关键字或符号抽象派生依赖关系《derive》导入私有依赖关系《access》显现《manifest》公有《import》实现实现关系虚线加空心三角信息流《flow》精化依赖关系《refine》包含并《merge》跟踪《trace》许可《permit》关联关联关系实线协议符合未指定绑定依赖关系《bind》(参数表)替换依赖关系《substitute》部署《deploy》使用调用《call》扩展Extend《extend》(扩展点)创建《create》扩展extension扩展关系实线加实心三角实例化《instantiate》泛化泛化关系实线加空间三角职责《responsibility》包含依赖关系《include》发送《send》关联关系关联(Association)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。在UML中,使用一条实线来表示关联关系在关联关系中,有两种比较特殊的关系:聚合和组合聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述泛化、实现、扩展与依赖泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件的服务。扩展表示将一个构造型附加到一个元类(metaclass)上,使得元类的定义中包括这个构造型。有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结UML规则命名:也就是为事物、关系和图起名字。和任何语言一样,名字都是一个标识符范围:与类的作用域相似,包括所有者作用域(ownerscope)和目标作用域(targetscope)两类可见性:可见性规则标准表示法Rose属性Rose方法public任一元素,若能访问包容器,就可以访问它+
protected只有包容器中的元素或包容器的后代才能够看到它#
private只有包容器中的元素才能够看得到它-
package只有声明在同一个包中的元素才能够看到该元素~AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结规格描述在图形表示法的每个部分后面都有一个规格描述(也称为详述),它用来对构造块的语法和语义进行文字叙述。这种构思,也就使可视化视图和文字视图的分离:UML修饰与通用划分在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类UML通用划分:
1)类与对象的划分:类是一种抽象,对象是一个具体
的实例
2)接口与实现的分离:接口是一种声明、是一个契
约,也是服务的入口;实现则是负责实施接口提供
的契约AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结UML扩展机制构造型:在实际的建模过程中,可能会需要定义一些特定于某个领域或某个系统的构造块标记值则是用来为事物添加新特性的。标记值的表示方法是用形如“{标记信息}”的字符串约束是用来增加新的语义或改变已存在规则的一种机制(自由文本和OCL两种表示法)。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结UML定义的图图名功能备注类图描述类、类的特性以及类之间的关系UML1原有对象图描述一个时间点上系统中各个对象的一个快照UML1非正式图复合结构图描述类的运行时刻的分解UML2.0新增构件图描述构件的结构与连接UML1原有部署图描述在各个节点上的部署UML1原有包图描述编译时的层次结构UML中非正式图用例图描述用户与系统如何交互UML1原有活动图描述过程行为与并行行为UML1原有状态机图描述事件如何改变对象生命周期UML1原有顺序图描述对象之间的交互,重点在强调顺序UML1原有通信图描述对象之间的交互,重点在于连接UML1中的协作图定时图描述对象之间的交互,重点在于定时UML2.0新增交互概观图是一种顺序图与活动图的混合UML2.0新增UML视图和图主要领域视图图结构静态视图类图设计视图复合结构图、协作图、构件图用例视图用例图动态状态视图状态机图活动视图活动图交互视图顺序图、通信图物理部署视图部署图模型管理模型管理视图包图特性描述包图UML图形分类各UML图及特征用例图(
UseCaseDiagram)用例图是从用户角度描述系统功能,是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联
类图(ClassDiagram)各UML图及特征对象图(
ObjectDiagram
)对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类
顺序图(SequenceDiagram)顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互
顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件
各UML图及特征协作图(CollaborationDiagram)协作图描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系.协作图的一个用途是表示一个类操作的实现
状态图(StateChartDiagram)状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成
各UML图及特征活动图(ActivityDiagram)活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动活动图描述了一组顺序的或并发的活动
构件图(ComponentDiagram)构件图为系统的构件建模型—构件即构造应用的软件单元—还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响
各UML图及特征部署图(DeploymentDiagram)部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配类图顺序图需求分析BD(BaseDesign)FD/DD类图顺序图用例图用例文档用例图顺序图主要图之间的关系各UML图的关系(FunctionalDesign/DetailedDesign)类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述对象接口是描述了一个类或构件的一个服务的操作集协作定义了一个交互,它是由一组共同工作以提供某种协作行为的角色和其他元素构成的一个群体用例是对一组动作序列的描述主动类对象至少拥有一个进程或线程的类构件是系统中物理的、可替代的部件参与者在系统外部与系统直接交互的人或事物节点是在运行时存在的物理元素交互它由在特定语境中共同完成一定任务的一组对象间交换的消息组成状态机它描述了一个对象或一个交互在生命期内响应事件所经历的状态序列包把元素组织成组的机制注释事物是UML模型的解释部分依赖一条可能有方向的虚线关联一条实线,可能有方向泛化一条带有空心箭头的实线实现一条带有空心箭头的虚线UML语法描述4+1视图逻辑视图并发视图组件视图用例视图:用户和开发人员,是其他视图的基础,描述用户的功能需求逻辑视图:设计和开发人员,描述用例视图中的系统功能的实现,主要关注系统内部。主要由类图和对象图,状态图,时序图,协作图,活动图来描述类和对象之间的关系。并发视图:开发和系统集成人员,描述系统资源的有效利用,代码并发控制、系统异步事件处理、线程的通信和同步。主要使用状态图、协作图、活动图。组件视图:开发人员使用,用来描述系统实现模块的以及它们之间的依赖关系。用组件图来描述。部署视图:开发、系统集成和测试人员,用来描述系统的物理部署,节点上的运行实例的部署情况。如一个程序或对象在那台计算机上运行,执行程序的各节点设备之间是如何连接的。用部署视图来描述部署视图开发过程AgendaUML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结习题判断题1、UML中一共有九种图:它们是用例图、类图、对象图、顺序图、协作图、状态图、活动图、构件图、部署图2、用例图是从程序员角度来描述系统的功能3、类图是描述系统中类的静态结构,对象图是描述系统中类的动态结构4、活动图和状态图用来描述系统的动态行为5、协作图的一个用途是表示一个类操作的实现选择题6、请在下面选项目中选出两种可以互相转换的图(a)顺序图(b)协作图(c)活动图(d)状态图7、下面哪些图可用于需求分析阶段(a)用例图(b)构件图(c)类图(d)顺序图习题
简答题8、什么是UML模型元素?9、简要介绍UML通用机制。10、UML中提供了多少种模型图,分别是什么?11、简要介绍UML的四层体系机构。12、简要说明UML中视图和图的关系。本章小结首先阐述了事物构造块、关系构造块,它们是UML建模元素的主体。事务构造块包括结构、行为、分组和注释四种类型;关系构造块主要包括关联、泛化、依赖、实现接着简要阐述了UML中公共的规则然后,系统地介绍了规格说明、修饰和通用划分三种公共机制;并对扩展机制进行了更深入的讲解在本章的最后又将读者的目光转回到“图”这个最重要的构造块中,简要地阐述了UML2.0中定义的13种图,以及不同图的划分和类别UML基础UML走向UML太多的OO术语令人迷惑Wirfs-Brock——ResponsibilityBooch——OperationCoad/Yourdon——ServiceStroustrup——Function…Method走向UML没有统一的符号,科学很难发展内容UML的组成事物构造块关系构造块UML规则UML公共机制UML扩展机制UML体系结构与图本章小结知识图谱UML概述
统一建模语言(UnifiedModelingLanguage)是一个用于描述面向对象软件设计、可视化、构造和文档化软件系统的建模语言。 它统一了GradyBooch、JimRumbangh和IvarJacobson三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子无级速度控制器项目可行性研究报告
- PHP程序设计项目化教程课件 项目3 汇率计算器-流程控制
- 2025年生物芯片点样仪项目可行性研究报告
- 2025年玻璃圣诞吊球项目可行性研究报告
- 2025年环保型多功能电动修剪机项目可行性研究报告
- 中原科技学院《医学实验技术基础》2023-2024学年第一学期期末试卷
- 浙江特殊教育职业学院《阳台上的小花园》2023-2024学年第一学期期末试卷
- 浙江省杭州萧山回澜重点中学2025年下学期初三年级9月月考试卷物理试题试卷含解析
- 山东工艺美术学院《高级英语1》2023-2024学年第二学期期末试卷
- 四川大学《医学遗传与优生》2023-2024学年第二学期期末试卷
- 浙江省台州市2025届高三第二次教学质量评估化学试题及答案(台州二模)
- 2025至2030年中国单级悬臂式化工离心泵行业投资前景及策略咨询报告
- 【初中地理】七年级地理下册全册期末总复习(课件)-2024-2025学年七年级地理课件(人教版2024年)
- 2025年无锡南洋职业技术学院单招职业技能测试题库含答案
- 2025年东北三省三校高三一模高考英语试卷试题(含答案详解)
- 阿那亚案例详细分析
- 选煤厂安全管理制度汇编
- 部编版八年级历史(下)全册教案
- 叉车驾驶员培训手册-共89页PPT课件
- 面试无机化学研究前沿ppt课件
- 【项目申报书】神经环路的形成、功能与可塑性
评论
0/150
提交评论