构件化软件软件领域的发展课件

上传人:m**** 文档编号:592861670 上传时间:2024-09-23 格式:PPT 页数:77 大小:1.44MB
返回 下载 相关 举报
构件化软件软件领域的发展课件_第1页
第1页 / 共77页
构件化软件软件领域的发展课件_第2页
第2页 / 共77页
构件化软件软件领域的发展课件_第3页
第3页 / 共77页
构件化软件软件领域的发展课件_第4页
第4页 / 共77页
构件化软件软件领域的发展课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《构件化软件软件领域的发展课件》由会员分享,可在线阅读,更多相关《构件化软件软件领域的发展课件(77页珍藏版)》请在金锄头文库上搜索。

1、构件化软件Component Software2019年8月25感谢你的观看1RoadmapPart 1: OO基础OO基本原理Design by Contract异常处理;并发对象;持久对象Part 2: OO设计原则和设计模式敏捷软件开发方法OO设计原则OO设计模式应用框架技术AOP2019年8月25感谢你的观看2RoadmapPart 3: 构件技术构件化软件分布对象服务计算2019年8月25感谢你的观看3摘要引言构件构件技术构件的组合2019年8月25感谢你的观看4摘要引言引言构件构件技术构件的组合2019年8月25感谢你的观看5引言2019年8月25感谢你的观看6lSoftware

2、should be componentized lbuilt from prefabricated components lDouglas McIlroys address at the NATO conference on software engineering in Garmisch, Germany, 1968 titled Mass Produced Software Components. 引言软件问题的核心质量不高 生产率低 常常是一对矛盾能不能向其它成熟产业学习?复用分工市场竞争但软件有其自身特点2019年8月25感谢你的观看7引言2019年8月25感谢你的观看8复用 不完全一

3、致的使用场景分工 难以完全解除的部件耦合市场竞争 不能沿用物质产品的盈利模式引言基于构件的软件开发一直未曾完全实现的老想法重用“工业化”影响因素不仅限于技术层面2019年8月25感谢你的观看9回顾:软件领域的发展程序设计方法的发展软件需求的变化软件环境的变化软件开发模式的变化2019年8月25感谢你的观看10程序设计方法的发展功能分解法 计算任务结构化程序设计 以数据为中心面向对象程序设计 以对象为中心构件(组件)程序设计 以构件为中心2019年8月25感谢你的观看11综合使用软件需求的变化计算2019年8月25感谢你的观看12l实用l管理(MIS)l分布式系统软件环境的变化单任务2019年8

4、月25感谢你的观看13多任务文字界面图形界面单线程多线程平台相关跨平台单机(本地)网络(分布式)单一语言多种语言软件开发模式机器码2019年8月25感谢你的观看14高级语言和脚本代码OS + Compiler + EditorOS + Compilers + IDEs+ Libraries + Wizards+ Components + other infrastructures+ 经验发展变化的结果软件学科的形成不变因素:计算机的基本运作模式探求新的计算模型量子计算 ?生物信息学?2019年8月25感谢你的观看15回顾软件学科多年来的变化2019年8月25感谢你的观看16l软件的产生过程:原

5、始代码编译 Link 终代码、脚本混合l软件的分发过程:文档、说明书、自动安装工具、培训、升级l软件工程:需求分析设计 code test 使用l对象技术和构件技术的不断普及,与大环境发展相结合对象技术2019年8月25感谢你的观看17l用一种新的思路来看待问题l多年的发展证明了OO符合软件的规律l对象技术的发展需要开发工具和开发语言的支持l三大特性:封装性、继承性、多态性l两种思想lObject-BasedlObject-Oriented构件技术2019年8月25感谢你的观看18l构件技术适合于现代的软件环境l软件更新快、规模大、强调协作等l构件的概念、软件ICl构件的可独立发布性要求“接口

6、与实现分离”l构件infrastructure,构件体系lCOM、CORBA(和Java)、.NETl中间件(middleware)市场摘要引言构件构件构件技术构件的组合2019年8月25感谢你的观看19构件参考文献Clemens Szyperski, Dominik Gruntz, Stephan Murer. Component Software: Beyond Object-Oriented Programming, Second Edition.2019年8月25感谢你的观看20构件的特性独立部署单元 必须能跟它所在的环境及其它构件完全分离,因此必须封装自己的全部内部特征 (原子性)作

7、为第三方的组装单元 必须封装它的实现,并且只通过良好定义的接口与外部环境进行交互 (足够好的内聚性)没有(外部的)可见状态 构件不能与自己的拷贝有所区别,但某些特殊属性可以没有此种限制2019年8月25感谢你的观看21比较构件 vs. 对象构件的行为可以通过对象来实现但是构件并非一定要包含类元素,它甚至可以不包含类难以判断一个构件内部是否是“完全面向对象”的构件 vs. 模块模块化是构件技术产生的前提但对于构件,传统的模块化概念和标准是远远不够的2019年8月25感谢你的观看22一个实例单元,具有唯一的标志;可能具有外部可见状态;封装状态和行为包多个类构件分类:白盒,灰盒,黑盒白盒:提供构件的

8、同时也提供实现构件的全部代码,应用构件时需要对源代码进行某些修改,然后才能把它集成到系统中实现一定的目的灰盒:只提供有关界面部分的源代码,对构件的内核不清楚,只能在接口界面上做一些用户化的工作黑盒:完全不提供代码,只提供构件的二进制可执行形式2019年8月25感谢你的观看23COTSCommercial Off The Shelf现成买来的,即强调构件的预制性不提供源码,强调构件的封装性和透明性强调可互换性不是为某一个客户定制的,而是某一领域中通用的2019年8月25感谢你的观看24软件构件定义Clemens Szyperski,1996:A software component is a u

9、nit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties. 2019年8月25感谢你的观看25软件构件定义软件构件是一种组装单元,它具有规范的接口契约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装技术因素:独立性、合约接口,组装市场因素:第三方,部

10、署2019年8月25感谢你的观看26软件构件接口:用户与构件发生交互的连接渠道,第3方只能通过构件接口的规格说明理解和复用构件接口规格说明是一种契约,它足够精确地描述构件实现的功能,同时不把构件限定于唯一的实现方法e.g. IDL, WSDL2019年8月25感谢你的观看27软件构件显式语境依赖构件的需求:为了使构件正常工作,必须说明其对部署环境的具体要求。这些要求被称为语境依赖,指的是构件组装和部署的语境。包括了定义组装规则的构件模型和定义构件部署、安装和激活规则的构件平台。Required Interfaces2019年8月25感谢你的观看28构件的规模“最大化重用”策略:只实现核心功能,

11、然后重用其他所有的一切。缺点:语境依赖的爆炸性增长2019年8月25感谢你的观看29最大化重用降低了可用性最大化重用降低了可用性健壮性简洁性0100%重用率增加语境依赖会使构件因重用而简洁,但却降低其可用性增加自给性可以减少语境依赖,增加可用性,并且使构件更加健壮,但却使构件规模过大构件基础设施构件基础设施(infrastructure)是异构构件互操作的标准和通信平台构件框架(framework)是构件实例即插即用的支撑结构,通过一定的环境条件和交互规则,构件框架允许一组构件形成一个孤岛,独立地与外部构件或其它框架交互和协作,构件框架及其内含的构件也可以视为一个构件。OMG CORBA, M

12、icrosoft COM/DCOM (或.NET),SUN JavaBean/EJB2019年8月25感谢你的观看30软件体系结构软件体系结构(Software Architecture)是对系统宏观结构的描述,是由一组构件(components),连接件(connectors)以及配置(configuration)组成。在较高级别上抽象出不同系统的共性有助于软件工程师在设计早期正确选择软件构架便于对软件系统的性质进行描述和分析构架本身是可复用的资产,软件构架设计的复用会促进软件代码复用,软件构架为构件的组装提供了框架和语境2019年8月25感谢你的观看31摘要引言构件构件技术构件技术构件的组

13、合2019年8月25感谢你的观看32构件技术MS:COM (Component Object Model), COM+, .NetOMG:CORBA (Common Object Request Broker Architecture), CCM, OMA, MDASUN:JavaBean, EJB (Enterprise JavaBean)2019年8月25感谢你的观看33COMCOM是MS平台上所有构件的基石93年发布,脱胎于MS的OLE (Object Linking and Embedding)规范+实现96年,DCOM2019年8月25感谢你的观看34COM:构件对象模型2019年8

14、月25感谢你的观看35l建立在二进制层次上的标准l许多概念与C+的特征相似,如vtablel程序与程序之间的通信建立在此基础上lCOM规范l平台无关l定义了大量的标准接口用于各种用途lCOM实现l平台相关lWindows实现了规范要求以及许多辅助功能COM特性2019年8月25感谢你的观看36l语言无关l规范和实现都是语言无关的l进程透明 位置透明linproc server、out-of-proc serverl可重用性l多线程特性l可扩展性COM:接口2019年8月25感谢你的观看37lCOM接口lIID:128位的全局唯一标识符l接口定义语言COM IDLl对应于C+中由纯虚函数组成的类

15、l基接口:IUnknownlCOM接口特性:l接口不变性l继承性l多态性运行时刻的多态性COM:对象2019年8月25感谢你的观看38lCOM对象lCLSIDl实现多个接口lCOM对象特性:l身份确定l封装l可重用COM:构件2019年8月25感谢你的观看39lCOM对象的载体l包含多个COM对象l进程内构件lDLLlExport Entrysl进程外构件lIPC:RPC/LPCCOM:进程内构件2019年8月25感谢你的观看40lInproc serverlExport EntrysCOM:进程外构件2019年8月25感谢你的观看41lOut-of-proc serverCOM:远程构件20

16、19年8月25感谢你的观看42lremote serverCOM:构件信息发布2019年8月25感谢你的观看43l注册表l发布构件的信息、对象的信息、接口的信息等l注册工具和配置工具lRegsvr32.exel.regl自注册 -RegServerlDCOMCNFG.EXElMTS Explorer、活动目录COM:创建COM对象2019年8月25感谢你的观看44l对象的创建过程COM:COM对象管理2019年8月25感谢你的观看45l客户使用规则,控制对象生命周期lCOM实现优化l各种辅助手段l构件类别 component categoryl类别标识符CATIDlMTS和COM+COM:CO

17、M体系2019年8月25感谢你的观看46l基本的功能l扩展功能l连接点l结构化存储l名字服务l自动化l其他lCOM+COM:COM+2019年8月25感谢你的观看47l建立在COM的基础上,COM的自然延伸lServicesl事件服务l队列服务l事务服务l负载平衡l其他COM:应用2019年8月25感谢你的观看48lOLElActiveX controll脚本功能扩展lOLE DBlADSI (Active Directory Service Interfaces)lASPl其他COM:分布式应用2019年8月25感谢你的观看49lCOM/COM+为基于Windows的分布式应用提供了基础设施

18、lTransactionlSecuritylOLE DBlWebl集成Active Directoryl管理功能CORBA2019年8月25感谢你的观看50lOMG,800多家厂商联合制定的标准l91年 1.0,主要是C语言映射l95年 2.0,加入IIOPl最新版本3.0lCORBA规范l制订了互操作规范,上层标准协议l一系列映射到多种语言的规范l各种服务相关的规范lCORBA实现:ORBCORBA体系结构2019年8月25感谢你的观看51CORBA:跨平台、跨语言2019年8月25感谢你的观看52l典型的语言:C+语言、Java语言、Smalltalkl多种平台l关键:IOR(Intero

19、perable Object reference)lORB实现部分ORB实现商业ORBOrbix,IONA公司Visibroker,Inprise公司,4.0版完全支持2.3规范Netscape communicator浏览器嵌入Visibroker自由ORBORBit,遵循CORBA 2.2规范,支持C语言,性能较高mico,GNU,OpenSourceTAO,美国华盛顿大学分布式对象计算研究小组omniORB,AT&T剑桥实验室国产ORB国防科大的嵌入式CORBA(eBus)东南大学的ORBUS2019年8月25感谢你的观看53CORBA:客户2019年8月25感谢你的观看54l客户通过s

20、tub或者CORBA库与对象或者ORB进行通信CORBA:对象2019年8月25感谢你的观看55l对象与OA进行通信CORBA:C+映射开发过程2019年8月25感谢你的观看56l编写IDLlIDLC+l利用生成的stub类编写客户l利用生成的impl类编写服务器对象l以字符串形式传递ORCORBA:核心2019年8月25感谢你的观看57lCORBA IDLl支持多继承l支持结构化数据类型l字符串形式的ORlPOA (Portable Object Adapter)lCORBA对象的环境contextl策略设置CORBA:核心(续)2019年8月25感谢你的观看58lGIOP(General

21、Inter-ORB Protocol)l互操作协议框架lIIOP(Internet Inter-ORB Protocol)lIORlCORBA对象的标识l实现仓库、接口仓库l未标准化CORBA:服务2019年8月25感谢你的观看59l命名服务l层次命名l绑定lTrading Servicel功能更强、使用更灵活的对象查询服务l事件服务l事件发送方和接受方之间的decoupleCCM: Corba Component Model2019年8月25感谢你的观看60EJBJ2EEEJB 在 J2EE 中的位置2019年8月25感谢你的观看61EJB2019年8月25感谢你的观看62EJBSessio

22、n BeansEntity BeansMessage-driven beans2019年8月25感谢你的观看63摘要引言构件构件对象模型构件的组合构件的组合2019年8月25感谢你的观看64构件的组合Components are for compositionConnection-oriented composition Contextual compositionData-driven compositionFederation and peer-to-peer2019年8月25感谢你的观看65Connection-oriented compositionWiring outgoing an

23、d incoming interfaces.对于一个接口来说 非对称Caller - callee当对于component来说 可以同时充当caller和callee (组合时刻)类型检查2019年8月25感谢你的观看66Component InterfacesBehavior constraints: 对于一个提供数据库访问接口的构件login query add del logoutlogin (query | add | del)* logoutNon-functional requirementsVersions2019年8月25感谢你的观看67Component interfaces

24、Call-backsCall-back procedureObject reference2019年8月25感谢你的观看68Contextual composition设想诸如Transaction、Security等非功能特性如何在分布构件组装中得以实现?几乎每个实际分布构件系统都用到由开发者在功能代码中实现?太复杂可否另加? (separation of concerns)!How to?自动化?2019年8月25感谢你的观看69Contextual composition:Domains and contexts2019年8月25感谢你的观看70c1c3uvwxc2Load-balanc

25、ing domain(RsrcID=7)Transaction domain(TxID=42)跨越语境边界的调用被拦截,然后根据语境属性或者被预处理,或者被置后处理,或者被拒绝如果两个构件共享一组兼容的语境属性集,则它们可以被看做是处在如果两个构件共享一组兼容的语境属性集,则它们可以被看做是处在同一域中同一域中Contextual composition使用“Containers”EJB containersCCM containersCLR contexts and channels以前的container只支持预定义的context, 但新技术.NET: The list of conte

26、xt properties is extensibleEJB 3.0: 使用AroundInvoke注释,你可以将任意bean方法作为拦截器方法在任意bean方法之前和之后运行(但这个修改源程序的方式不够SoC)2019年8月25感谢你的观看71Contextual composition实现原理为每个context维护一个逻辑上共享的信息空间Transaction ID; 用户认证信息,等等实现上在Domain中的各个构件间进行交互时携带这些信息;在调用前后插入Interceptors处理这些信息麻烦的问题是这些aspects并不都是“正交”的(意味着Interceptor之间的顺序有关系!

27、)2019年8月25感谢你的观看722019年8月25感谢你的观看732024/9/23Institute of Computer SoftwareNanjing UniversityDate-driven compositionEJB message-driven beansJava Message Service (JMS)Microsoft message queue (MSMQ)异步,松耦合 适合工作流系统,较不适合交互系统;2019年8月25感谢你的观看742024/9/23Institute of Computer SoftwareNanjing UniversityFederat

28、ion and peer-to-peerJini即插即用设备之间无需驱动程序,就可以互相辨认并交换信息资源 基于Java分布计算技术的解决方案2019年8月25感谢你的观看752024/9/23Institute of Computer SoftwareNanjing UniversityPeer-to-Peer第一代集中的文件列表服务器,Napster 第二代分散的文件列表服务器,Gnutella, FastTrack第三代提供更高的效率、可靠性和匿名性匿名网:Freenet, I2P, GNUnet, Entropy2019年8月25感谢你的观看76作业请列举构件和对象的相似点和不同点构件的组合有几种方式?2019年8月25感谢你的观看77

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号