您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 软件设计与体系结构秦航3.
软件设计和体系结构清华大学出版社1第3章软件体系结构建模和UML清华大学出版社2内容提要3.1软件体系结构建模概述3.2基于软件体系结构的开发3.3UML概述体系结构3.4.1UML的发展历程3.4.2UML的特点和用途3.4.3UML2.0的建模机制3.4面向对象开发方法3.4.1基本概念3.4.2面向对象方法的优势3.5UML2.0结构建模683.5.1类图3.5.2对象图清华大学出版社3内容提要3.5.3构件图3.5.4部署图3.6UML2.0行为建模3.6.1用例图3.6.2顺序图3.6.3通信图3.6.4交互概览图3.6.5时序图3.6.6状态图3.6.7活动图3.7小结清华大学出版社43.1软件体系结构建模概述研究软件体系结构的首要问题,是如何表示软件体系结构,即如何对软件体系结构建模。结构模型框架模型动态模型过程模型功能模型清华大学出版社53.2基于软件体系结构的开发第一,经过40多年的软件开发实践,今天很少待开发的软件系统同以前的系统没有任何相似之处,识别相似系统的通用结构模式,有助于理解系统之间的高层联系,使得新系统可以作为以前系统的变种来构造。第二,合适的体系结构,是软件系统成功的关键,而不合适的体系结构往往导致灾难性的后果。第三,对软件体系结构的准确理解,可以使开发人员在不同的设计方案中做出理性的选择。第四,体系结构对于分析和描述复杂系统的高层属性,通常是十分必要的。第五,各种体系结构风格的提炼、描述和普遍采用,可以丰富设计人员的“词汇”,便于在系统设计中互相交流。第六,目前,相当大的维护工作量花费在程序理解方面,如果在软件开发文档中清楚地记录了系统的体系结构,不仅可以显著地节省软件理解的工作量,而且便于在软件维护全过程中保持系统的总体结构和特性不变。清华大学出版社63.3UML概述体系结构3.4.1UML的发展历程GradyBooch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。Jacobson于1994年提出了OOSE方法,其最大特点,是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。1994年10月,GradyBooch和JimRumbaugh开始致力于这一工作。他们首先将Booch93和OMT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM0.8(UnitiedMethod)。1995年秋,OOSE的创始人IvarJacobson加盟到这一工作。经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本,即UML0.9和UML0.91,并将UM重新命名为UML(UnifiedModelingLanguage)。1996年,一些机构将UML作为其商业策略已日趋明显。UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强、促进UML的定义工作。这一机构对UML1.0及UML1.1的定义和发布起了重要的促进作用。2001年,推出了UML2.0新的业界标准。清华大学出版社7UML的发展历程清华大学出版社83.4.2UML的特点和用途(1)统一标准。UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。(2)面向对象的特性。UML还吸取了面向对象技术领域中其他流派的长处,其中也包括非面向对象方法的影响。(3)UML在演变过程中还提出了一些新的概念。在UML标准中新加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibilitymechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activitydiagram)等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)等概念。(4)立于过程。UML作为建模语言,不依赖特定的程序设计,独立于开发过程。(5)UML对系统的逻辑模型和实现模型都能清晰的表示,可以用于复杂软件系统的建模。清华大学出版社93.4.3UML2.0的建模机制(1)语言定义精确度提高。这是支持自动化高标准需要的结果。自动化意味着模型将消除不明确和不精密,可以保证计算机程序能转换并熟练的操纵模型。(2)改良的语言组织。该特性由模块化组成的,模块化的优点在于它不仅仅使得语言更加容易的被新用户所采用,而且促进了工具之间的相互作用。(3)重点改进大规模的软件系统模型性。一些流行的应用软件表现出将现有的独立应用程序集中到更加复杂的系统中去。(4)对特定领域改进的支持。使用UML的实践经验,证明了其所为的扩展机制的价值。这些机制使基础语言更加简洁,更加准确精炼。(5)全面的合并,合理化、清晰化各种不同的模型概念。该特性导致一种单一化,更加统一化语言产生,时UML2.0的图形符号也进行了一些调整。清华大学出版社103.4面向对象开发方法一般人们在认识和了解客观现实世界时,通常运用的一些构造法则:区分对象及其属性,例如区分具体的一辆汽车和它的重量,最大速度。区分整体对象及其组成部分,例如区分台式计算机的组成(主机、显示器等)。不同对象类的形成以及区分,例如所有类型的计算机(大、中、小型计算机、服务器、工作站和普通微型计算机等)。清华大学出版社113.4.1基本概念(1)对象对象指的是一个独立的、异步的、并发的实体,它能“知道一些事情”(即存储数据),“做一些工作”(即封装服务),并“与其它对象协同工作”(通过交换消息),从而完成系统的所有功能。(2)类类的定义,包括一组数据属性和在数据上的一组合法的操作。(3)继承性广义地说,继承是指能够直接获得已有的性质和特性,而不必重复定义它们。(4)多态性(Polymorphism)在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。清华大学出版社123.4.1基本概念(5)重载(Overloading)有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。(6)消息和方法在面向对象领域,两个对象的交互是通过消息的发送和接收来完成的。消息分为简单消息、同步消息和异步消息(7)聚集在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般—具体结构关系,整体—部分结构关系。清华大学出版社133.4.2面向对象方法的优势相对于传统的结构化方法和面向数据的方法,面向对象方法拥有以下优势。(1)支持软件的重用性。重用性是指同一事物不经过修好或稍加修改就可以多次重复使用的性质。软件重用是软件工程追求的目标之一。(2)提高软件可维护性和安全性。面向对象方法通过对属性和操作的封装实现了软件工程倡导的信息隐藏的原则。清华大学出版社143.5UML2.0结构建模3.5.1类图1.类(class)+delayFight(innumber:int):int+getArrivalTime():longFlight-fightNumber:int-departureTime:long-flightDuration:long类是来描述具有相同特征、约束和语义的一类对象,这些对象具有共同的属性和操作。类图中的一个类可以简单地只给出类名,也可以具体列出该类拥有的成员变量和方法,甚至更详细地描述可见性、方法参数、变量类型等信息。清华大学出版社152.抽象类(Abstractclass)+desposit(inamount:decimal):bool+withdrawal(inamount:decimal):bool-owner:string-balance:decimalBankAccount抽象类是指一个类只提供操作明,而不对其进行实现。对这些操作的实现可以由其子类进行,并且不同的子类可以对同一操作具有不同的实现。清华大学出版社163.接口(Interface)+飞()接口飞翔+讲人话()唐老鸭讲人话**清华大学出版社174.关联关系(Association)ClassDiagramClass-Use1..*1..*描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。当关联是双向的,那么就可以用无向连线表示。一般的关联关系语义较弱。也有两种语义较强,分别是聚合与组合。清华大学出版社185.依赖关系(Dependency)+新陈代谢(in氧气,in水)+繁殖()-有生命动物氧气水依赖关系****两个类之间存在依赖关系,表明一个类使用或需要知道另一个类中包含的信息。有多种表现形式,例如绑定(bind)、友元(friend)等。清华大学出版社196.聚合关系(Aggrengation)+v形飞行()+一形飞行()雁群-+下蛋()+飞()大雁-聚合关系1***聚合关系,表明两个类的实例之间存在一种拥有或属于关系,可以看作是一种较弱的整体-部分关系。清华大学出版社207.合成关系(Composition)+下蛋()-羽毛-有角质没有牙齿鸟-翅膀合成(组合)关系1***合成(composition)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。清华大学出版社218.泛化关系(Generalization)+下蛋()鸟-羽毛-有角质没有牙齿+新陈代谢(氧气,水)()+繁殖()()动物-有生命泛化关系在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间。清华大学出版社223.5.2对象图在对象图中,对象名可以有三种表示形式:(1)对象名:类名(2):类名(3)对象名Name:string=张金age:int=20person:Person清华大学出版社233.5.3构件图构件(Component)是系统中遵从一组接口且提供其实现的物理的、可替换的部分。构件能够完成独立功能,它是软件系统的组成部分。servlet控制器计数器投币前端显示清华大学出版社243.5.4部署图部署图(ComponentDiagram)描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。DataBaseClient1WebSiteServerClient2******清华大学出版社253.6UML2.0行为建模3.6.1用例图1.用例图定义2.参与者(Actor)3.用例(UseCase)(1)参与者与用例之间的关系(2)用例之间的关系(3)参与者之间的关系。清华大学出版社264.实例(1)参与者之间的泛化关系(2)用例之间扩展和包含关系经理安全主管保安管理人事批准预算批准安全证书监视周边********司机旅行为汽车加油吃饭extends**uses清华大学出版社273.6.2顺序图顺序图描述对象之间的动态交互关系,着重表现对象间消息传递的时间顺序。顺序图有两个坐标轴:纵坐标轴表示时间,横坐标轴表示不同的对象。管理员注册表单图书入库1.登录3.提交入库2.验证清华大学出版社283.6.3通信图与顺序图不同,通信图主要关注参与交互的对象通过连接组成的结构。Computer:printerServer:Printer1.Print(ps-file)1.1打印机空闲Print(ps-file)printer(Ps-file)清华大学出版社293.
本文标题:软件设计与体系结构秦航3.
链接地址:https://www.777doc.com/doc-1992180 .html