《组件设计讲义1.ppt》由会员分享,可在线阅读,更多相关《组件设计讲义1.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、组件设计华东理工大学华东理工大学 计算机科学与工程系计算机科学与工程系雷向欣雷向欣组件设计第一讲主要内容v软件领域的发展v对象技术v组件技术v分布式计算v分布式对象技术软件领域的发展软件设计方法的发展软件需求的变化软件环境的变化软件开发模式的变化近十多年来软件学科的变化组件化n大型软件系统的快速、经济和高质量的实现,一直是软件界努力的目标。n高级程序设计语言、数据库管理系统、模块化、面向对象、代码自动生成、分布式系统、软件重用都是努力的一部分。n组件化软件系统开发是解决大规模软件系统开发复杂性问题的一种有效途径。对象技术组件技术概念:类、对象、组件组件n组件有很多不同的用法n如:组件可用于实现
2、ActiveX或JavaBeans的用户界面组件n组件具有运行时间可以被访问的接口,在组件开发生命周期的某个时间点上,组件可以独立地交付和安装n通常单个组件只有通过与其他组件协同才能实现自己的有用性n组件是可以插入系统中的对象组件特征n软件组件模型具有以下主要特点:n自包含,组件是自包含的软件结构n接口n协作,组件是为了与其他组件协作的基于组件的开发n基于组件的开发有多种定义n基于组件的开发是一种软件开发方法,采用这种方法贯穿整个开发基础设施和项目管理,都是基于组件进行的。n这种定义指出组件的开发包括采用基于组件的思想构建软件系统,整个系统开发是以组件为中心进行。概念:重用概念:接口与实现分离
3、概念:模块概念:多态性多态性(Polymorphism)v对象技术的重要概念v以一致的方式看待不同的事物v在C+运行时,通过继承和虚成员函数实现v运行时刻绑定(Runtime binding)v在组件技术中,通过接口体现概念:模板模板(Template)v函数模板和类模板v抽象层次更高v泛型技术(Generic programming)(通用编程?)v已纳入C+标准中概念:C/S和多层结构C/S和多层结构v指软件的结构vC/S是基础v多层结构具有较好的灵活性和可扩展性v多层结构与基于组件的系统相结合v变种如:B/S概念:其他v现代软件的发展形成了很多重要的概念v掌握这些概念对于提高自己的软件理
4、解水平很重要v防止混淆和滥用这些概念软件形式v单机软件-整体发布vClient/Server软件-简单的网络应用v分布式应用软件软件所面临的问题v软件的复杂度增加-代码开发管理v软件升级和更新-牵一而动全身v分布式软件的发布和配置-用户需要培训,程序员和开发人员更需要软件所面临的问题(续)vCustom-mode&standard software-如何平衡?v依赖于全职的开发人员-软件的层次划分v软件的可扩展性-用户可订制,脚本支持v与标准接轨-如web-B/S软件的发展趋势v组件软件、软件组件中间件市场已形成v软件基础设施的重要性经验的重用v软件的可重用性要求重用的粒度不同vAPI的多样化
5、v软件方案(solution),consulting市场组件软件v部分升级-补丁-缩短软件的开发周期v增加了异构软件的可能-标准接口,标准规范,标准协议v动态组合,提高软件生产力v符合现代软件的发展要求软件组件v关键,接口设计-接口不变性-接口可扩展性v对基础设施的依赖-CORBA,COM,EJB等v内部独立设计,独立开发v独立发布,独立测试分布式计算背景v传统的应用系统模式是“主机/终端”或“客户机/服务器”,客户机/服务器系统(Client/Server System)的结构是指:v把一个大型的计算机应用系统变为多个能互为独立的子系统,而服务器便是整个应用系统资源的存储与管理中心,多台客户
6、机则各自处理相应的功能,共同实现完整的应用。v随着Internet 的发展壮大,这些传统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,即所谓的“浏览器浏览器/服务器服务器”结构、“瘦客户机瘦客户机”模式。计算机技术的发展计算机技术的发展可通过使用计算机的不同方式来描述。v50年代,计算机是串行处理机,一次运行一个作业直至完成。这些处理机通过一个操作员从控制台操纵,而对于普通用户则是不可访问的。v60年代,需求相似的作业作为一个组以批处理的方式通过计算机运行以减少计算机的空闲时间。同一时期还提出了其他一些技术,如利用缓冲、假脱机和多道程序等的脱机处理。计算机技术的发展v70年代产生了
7、分时系统,不仅作为提高计算机利用率的手段,也使用户离计算机更近了。分时是迈向分布式系统的第一步:用户可以在不同的地点共享并访问资源。v80年代是个人计算的10年:人们有了他们自己专用的机器。由于基于微处理器的系统所提供的出色的性能/价格比和网络技术的稳步提高.v 90年代是分布式系统的10年。客户机服务器模式q二十世纪90年代兴起的客户机服务器数据库技术是自70年代关系数据库技术以来数据库领域的一次重大飞跃。q在客户机服务器数据库系统中,系统的处理任务被划分为客户系统与数据库服务器前后两端,因而大量的数据库操作可在后端运行,工作站只需能够运行前端软件即可。客户机服务器模式q尽管客户机服务器系统
8、比传统的集中式系统更复杂,然而这一新的计算模型带来的优势是显而易见的,例如减减轻轻了网络传输负担,实实现现了了工工作作站站无无关关性性,更方方便便维维护数据的完整性护数据的完整性等。客户机服务器模式q其实客户机服务器体系结构并不仅仅局限于数据库应用,这种计算模型有着更广阔的前景。q如果一个系统被划分为两类不同的但相互联系的组成部分,其中一方提出对信息或服务的请求(称为客客户户机机),而另一方提供这种信息或服务(称为服服务务器器),那么这种体系结构即可看作是一种客户机服务器计算模型。客户机服务器模式q按照这一定义,局域网中的工作站与文件服务器之间也是一种客户机服务器模型,其中工作站向文件服务器发
9、送服务请求,例如要求访问文件或网络打印等,文件服务器接收这些请求后为工作站提供相应服务。q因特网的许多应用程序均采用客户机服务器模型,例如Web浏览器与服务器、电子邮件客户程序与服务程序、FTP客户程序与服务程序等。客户机服务器v客户机与服务器是一个相相对对的的概概念念,一个服务器可能是另一个服务器的客户机,一个客户机也可能是另一个客户机的服务器。v客客户户机机与与服服务务器器的的划划分分有时指执行任务的计算机硬件系统或通信设备,例如局域网中的工作站与文件服务器通常是由两台不同的计算机系统担任;v客客户户机机与与服服务务器器的的划划分分有时也指计算机软件系统,这时我们经常又将这两端分别称为客户
10、程序与服务程序。客户机服务器客户机服务器v一个常见的简单例子是在过程式程序设计中,执行过程调用表达式的子程序与实现过程体的子程序可看作一种客户机服务器体系结构,其中过程实现方扮演服务程序过程实现方扮演服务程序,过程调用方扮过程调用方扮演客户程序演客户程序。v在面向对象程序设计中,消息传递消息传递可看作是客户程序向服务程序发送服务请求的一种途径,发送消息发送消息的是客户程序客户程序,接收并处理消息接收并处理消息的是服务程序服务程序。客户机服务器的缺点客户机服务器的缺点n在Client/Server结构模式中,客户端直接连接到数据库服务器,由二者分担业务处理,这样体系有以下的缺点:vClient与
11、Server直接连接,安全性低。非法用户容易通过Client直接闯入中心数据库,造成数据损失;v Client程序肥大,并且随着业务规则的变化,需要随时更新Client端程序,大大增加维护量,造成维护工作困难;客户机服务器的客户机服务器的缺点缺点v 每个Client都要直接连到数据库服务器,使服务器为每个 Client建立连接而消耗大量本就紧张的服务器资源;v 大量的数据直接Client/Server传送,在业务高峰期容易造成网络流量暴增,网络阻塞。客户机服务器的缺点客户机服务器的缺点vClient/Server模式的这些先天不足,随着业务量的变化,出现越来越多的问题,我们有必要对这种两层体系
12、进行改革,将业务处理与客户交互分开来,实现瘦客户瘦客户/业务服务业务服务/数据服务数据服务的多层分布式应用体系结构。多层分布式应用体系结构。两层模式三层模式三层模式三层客户机服务器体系结构与两层结构的最大区别是:q将业务逻辑层抽象为一个独立的中间层q客户端的表示层与服务端的关系数据库之间被中间的业务逻辑层分隔q表示层组件只能通过业务逻辑层组件间接地访问关系数据库。三层模式这种新的软件体系结构至少带来几大好处好处。v首先,由于客户端组件更大程度地从系统中分离出来,系统其余部分的变化(例如,数据库表结构或数据访问规则的变动)对客户端的影响进一步减少,从而提高了整个系统的可扩展性。v其次,中间层可以
13、运行在不同于客户机或数据库服务器的其他机器上,通过合理的任务划分与物理部署可使整个系统的工作负载更趋均衡,从而提高应用程序的运行效率。o运行业务逻辑层的机器又称应用服务器,利用应用服务器的群集机制(clustering)还可进一步提高系统的可伸缩性与可靠性。三层模式v此外,从客户端组件的角度看,业务逻辑中间层相当于将一个企业的所有业务流程抽象为一组更高层次的应用编程接口(API),客户端组件完全通过这些API构建整个企业的应用系统,并且客户端的用户界面方式也可呈现出多样性。q与两层结构相比,三层结构或多层结构可更好地支持对企业业务流程的集中控制与管理。分布式计算v分分布布式式计计算算是当前软件
14、开发技术的一个重要发展方向。vC.A.R.Hoare指出:“分分布布式式计计算算是一个具有重大理论与实践意义的迷人课题,其迷人之处在于理论与实践的同步发展,一方面实践推动了理论,另一方面理论又指导着实践。”分布式计算n分布式计算有两种典型的应用途径。v第一种应用途径是将分布式软件系统看作直接反映了现实世界中的分布性,例如当今许多业务处理流程通常呈现一种分布式运作方式,负责加工或制造的工厂可能位于珠江三角洲一带,而负责销售与市场营销的部门则可能分别位于北京、上海和广州,这时负责业务流程的软件系统也可作相应的分布式处理。v第二种应用途径主要用于改进某些应用程序的运行性能,使它们比单进程的集中式实现
15、更具有效率,此时软件系统的分布性并不是现实世界中分布性的映射,而是为充分利用额外的计算资源而人为引入的。软件体系结构q在计算机硬件技术与网络通信技术的支持下,应用需求驱使计算机软件的规模与复杂度不断增长。面对这种情况,对整个软件系统的体系结构进行分析与设计就远远重要于对算法与数据结构的选择。q软件体系结构关心的正是整个软件系统的结构,它决定了一个软件系统由什么样的组件组成,以及这些组件之间的交互关系如何。软件体系结构n典型的软件体系结构风格有:设计图形用户界面常用的事件驱动风格;操作系统常用的层次化设计;设计编译程序常用的管道与过滤器风格;许多应用程序都会使用的面向对象风格等.分布式计算的优点
16、分布式计算的主要优点是通过使用如下技分布式计算的主要优点是通过使用如下技术使计算资源的使用更有效:术使计算资源的使用更有效:v稀有资源的共享。例如如果只有一台高性能打印机或绘图仪,分布式计算使网络上的每个人都能使用它们,而不仅仅是那些在连接着打印机或绘 图仪的机器上有账号的用户。v在许多不同机器上平衡负载。v把应用程序放在最符合需要的机器上。分布式计算的优点 共享稀有资源和平衡负载是计算机上行分布化和计算机下行分布化的核心思想之一,这两种技术都是把非分布式计算转向分布式计算。v计算机上行分布化(Computer upsizing)是指把业务从PC机上的非分布式计算转移到网络分布式计算(包括PC
17、机、高性能服务器和工作站)的过程。v计算机下行分布化(Computer downsizing)是指把业务从实验室里的大型机上的非分布式计算转移到办公室里的工作站和PC机上的分布式计算的过程。问题一个分布式应用系统在软件体系结构层次需要考虑的主要问题包括:v如何将组件合成系统v如何将功能指派到设计要素v通信与同步协议、全局控制结构、物理的分布、可伸缩性与可靠性等 基于组件开发的成熟度阶段n分布式组件n分布式系统n分布式对象n面向对象n传统开发基于组件开发的成熟度阶段组件的演化CORBA3.0 Java-EJB,DNA,XML分布式对象分布式对象/系统系统基于组件的开发基于组件的开发CORBA2.
18、0 UML,DCOM面向对象面向对象OOA,OMT,BoochPascal,Ada,Cobol结构化程序设计结构化程序设计1970 1980 1990 2000 2010组件技术组件技术要实现组件技术必须具备下列几个条件要实现组件技术必须具备下列几个条件:有标准软件体系结构,保证组件间通信协议统一,实现同步和异步操作控制,突破本地空间限制,充分利用网络环境。组件有标准接口,保证系统可分解成多个功能独立的单元,用组件组装而成。组件独立于编程语言。组件提供版本兼容,来实现应用系统的扩展和更新。组件技术规范组件技术规范o在 1855 年,时年 26 岁的 Joshua Chamberlain 是 B
19、owdoin 大学的修辞学教授,在一次演讲中讲述了规则与自由之间的关系,以及二者之间失衡带来的危害。o没有自由的规则是专制,而没有规则的自由是混乱。公司信息系统部门的管理可能会形成过度的规则或过度的自由。组件技术规范组件技术规范规范(specification)实现(implementation)规范是“做什么”,而实现是“怎么做”。在分析软件系统的动态行为的时候,组件的规范确定了外界如何使用这个组件的服务,而实现则是组件内部的服务步骤。分布式对象技术分布式对象技术q分布式对象技术已经成为建立应用框架和软件组件的核心技术,在开发大型分布式应用系统中表现出强大的生命力,为软件开发提供了极大的方便,并形成了三项具有代表性的主流技术,即:vOMG的公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)vMicrosoft的OLE/DCOM(Distributed Component Object Model,DCOM)vSUN公司的EJB(Enterprise Java Bean,EJB),其中CORBA在平台独立、语言无关性等方面占有相对优势。思考思考v面向对象v组件v组件对象模型v分布式计算THE END!
限制150内