青鸟构件库概念模型
- 格式:doc
- 大小:104.50 KB
- 文档页数:20
国内外研发觉状及进展趋势基于构件的软件开发是幸免重复劳动,提高软件生产效率的软件开发方式,属于“软件复用”的一种实现方式,其起点是应用系统的开发再也不采纳一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积存的知识和体会,如需求分析结果、设计方案、源代码、测试打算及测试案例等,从而将开发的重点集中于应用的特有组成成份。
通过软件复用,在应用系统开发中能够充分地利用己有的开发功效,排除包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率;同时,通过复用高质量的已有开发功效,幸免了从头开发可能引入的错误,从而提高了软件的质量,因此基于构件开发的软件系统强调构件化和体系结构的作用,具有很强的自适应性、互操作性、扩展性和重用性。
最近几年来,构件技术和基于构件的软件开发技术慢慢成为阻碍整个软件产业的关键技术,构件化已经成为软件企业的需求,软件构件市场已现眉目,软件工业化生成模式正在推动软件产业的规模化进展。
支持构件开发和治理和基于构件进行软件开发的标准、基础工具和产品正慢慢完善。
3.1主流软件构件标准的分析比较当前,要紧有以下三种比较有阻碍的软件构件技术标准:OMG 的CORBA、微软公司的COM/DCOM和SUN的EJB(Enterprise Java Bean)。
1) CORBA是公共对象请求代理体系结构(common objectsrequest brokerarchitecture)的缩写,是对象治理组织(OMG-Object Management Group)开发的一套散布式对象技术标准,涉及接口、注册、数据库、通信和犯错处置等方面的问题。
和对象治理体系结构(OMA)概念的其他对象效劳相结合,CORBA成为支持散布式系统中对象技术的中间件设施。
CORBA的对象请求代理(ORB)作为转发消息的中间件,实现了对象间的无缝集成和互操作。
因此,CORBA可作为面向对象的软件构件在运行级上组装的技术基础,从而实现构件的黑盒复用。
构件:构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
构件管理:1构件描述2构件分类与构件库组织:关键字分类法刻面分类法(青鸟)超文本组织方法(基本单位是结点)3人员及权限管理构件重用步骤:检索与提取构件(检索方法同上3种加其他)理解与评价构件修改构件(实参)构件组装(功能数据面向对象)软件体系结构:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构的意义:体系结构是风险承担者进行交流的手段体系结构是早期设计决策的体现软件体系结构是可传递和可重用的模型软件体系结构建模的种类:结构模型框架模型动态模型过程模型功能模型4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
开发视图也称模块视图,主要侧重于软件模块的组织和管理。
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。
场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格反映了领域中众多系统所共有的结构和语义特性经典的体系结构风格数据流风格:批处理序列;管道/过滤器。
调用/返回风格:主程序/子程序;面向对象风格;层次结构。
独立构件风格:进程通讯;事件系统。
虚拟机风格:解释器;基于规则的系统。
仓库风格:数据库系统;超文本系统;黑板系统。
基于BIM的构件库系统设计与实现第一章 B一、技术概述随着建筑信息化技术的不断发展,建筑行业对BIM(Building Information Modeling,建筑信息模型)的应用越来越广泛。
BIM技术是一种基于三维可视化的建筑设计、施工和运营管理的新型方法,它通过将建筑物的各种信息进行数字化存储和管理,实现了建筑设计、施工、运营等各个阶段的协同工作,提高了工程质量和效率。
本文档主要介绍了基于BIM的构件库系统设计与实现的相关技术。
构件库是指在BIM模型中,对建筑物的构件进行分类、管理和检索的一种数据结构。
构件库系统是基于BIM技术的一种应用,它通过对建筑物的构件进行分类、管理和检索,为设计师、施工人员和运营管理人员提供了一个便捷的信息资源共享平台。
构件库系统的设计和实现涉及到多个方面的技术,包括BIM技术、数据库技术、计算机网络技术等。
本文档将介绍BIM技术的基本概念和特点,包括BIM模型的构建、数据管理、协同工作等方面的内容。
本文档将详细介绍构件库系统的设计原则和架构,包括构件库的分类、管理、检索等方面的内容。
本文档将对构件库系统的实现方法和技术进行详细的阐述,包括数据库设计、网络通信、界面设计等方面的内容。
通过本文档的学习,读者可以了解到基于BIM的构件库系统的基本原理和实现方法,为今后的研究和应用奠定基础。
1.1 B一、技术的发展历程BIM(Building Information Modeling,建筑信息模型)技术作为一种新兴的建筑设计和管理手段,自上世纪90年代诞生以来,已经在世界各地得到了广泛的应用和推广。
随着计算机技术的不断发展和普及,BIM技术也在不断地完善和发展,逐渐成为建筑设计和管理的重要工具。
BIM技术的发展起步较晚,但近年来得到了政府和行业的高度重视。
自2013年起,国家开始大力推广BIM技术在建筑行业的应用,先后出台了一系列政策和标准,为BIM技术的发展提供了有力的支持。
基于BIM的铁路信号构件库搭建与运用摘要:随着建筑信息模型(Building Information Modeling,BIM)技术的不断成熟与发展,BIM已经成为我国建筑工程领域的研究热点。
铁路建设领域目前也在大力推进BIM技术的应用且隧道、桥梁等站前专业已经取得了较大的成果与突破,通信、信号等站后专业近年来也开始积极推广BIM技术的运用,并取得了一定的研究成果。
针对铁路信号专业BIM正向设计过程中构件不完善的问题,充分调研了铁路信号专业BIM设计过程中所涉及的各类构件,并根据铁路工程构件分解方法完成了铁路信号BIM构件的分解。
关键词:BIM技术;铁路信号;建筑信息模型;构件分解;构件库一、铁路信号工程中的BIM技术概述BIM技术是现代出现的一种模型名称,其全称是建筑信息模型。
这项技术是知识共享的一种方式,能够将某一个工程整个生命周期当中的全部决策关键点通过信息化和数字化的方式表现出来,提供给相应的决策者来进行决定;在此过程当中各方面的不同核心信息可以进行统一的提取、修改、储存来反映各自的工作。
通过这种不同方面的信息共享,最终形成一个全面的信息库,让决策者能够最直观地看到自己决定可能带来的影响,以及判断如何才能以更好的方式来处理眼前的状况。
在当前的铁路工程建设过程中,BIM技术往往较多地运用在信号施工阶段,除施工作业外,该技术可以从施工维护,建设管理等多个角度入手,让不同的使用者共同参与进行更新与维护。
正是由于BIM技术具备共享性和实时性等特点,使得它在铁路信号施工过程中发挥了极其重要的作用,并且在日后的升级与改造中,BIM技术还将继续发挥其作用,为铁路施工更好的服务,本文针对BIM技术如何更好地应用在铁路信号工程中提出了建议。
二、BIM技术应用的意义BIM技术在铁路信号设备数据管理中的应用具有重要意义。
BIM可构建出三维信息模型,在信息模型中对铁路信号设备、铁路轨迹线路等进行描述;在整个设备数据管理中会涉及大量数据信息,通过BIM技术可以在模型中集成各类信息,达到可视化分析设计、施工等各个环节关键点的作用。
体系结构第一章软件重用和构件技术软件重用(Software reuse)是一种预先构造好的,为重用目的而设计的软件构件类建立或组装软件系统的过程。
构件描述模型:构件模型是对构件本质特征的抽象描述。
一、参考模型(代表3C模型)3c分别代表概念(Concepte)、内容(Content)、语境(Context)。
主要用于形式化的描述方法。
二、描述模型(代表REBOOT模型)ReBoot认为可以用有限维信息空间的术语组织从若干个刻面的综合角度来刻画一个构件。
三、现实模型(代表青鸟构件模型)青鸟模型由内部接口和外部接口两部分组成。
构件获取途径:1、从现有的构件中获得符合要求的或基本符合要求的构件,直接使用或适当修改,得到可重用的构件。
2、通过遗留工程,将具有潜在的重用价值的构件提取出来,得到重用构件。
3、从市场上购买现有的商业构件。
4、开发新的符合要求的构件。
构件分类:1关键字分类法;2刻面分类法;3超文本分类法、构件库检索方法:1基于关键字的检索;2刻面检索法;3超文本检索法;4其他检索方法。
构件组装的方法:1)基于功能的组装技术;2)基于数据的组装技术;3)面对对象的组装技术。
第二章体系结构概论体系结构基本组成部分:包括系统构件(指具有一定功能、可明确辨识的软件单位,并具备特点:语义完整、语法正确、有可重用价值),连接件(用来构建构件间的交互以及支配这些交互的体系结构模块),约束(描述了体系结构配置和拓扑的要求,确定了体系结构的构件与连接件的连接关系)。
第三章软件体系结构的风格人们在开发某些类型软件过程中积累起来的组织规则和结构就形成了软件体系结构风格。
软件体系结构风格是描述某一特定领域中系统组织方式的惯用模式。
软件体系结构风格的最关键的四要素内容:一个词汇表,一套配置规则,一套语义解释原则,和定义对基于这种风格的系统所进行的分析。
通用体系结构的分类:1、数据流风格:批处理序列;管道-过滤器2、调用/返回风格:主程序\子程序;面对对象风格;层次结构3、独立构件风格:进程通讯;事件系统;4、虚拟机风格:解释器;基于规则的系统;5、仓库风格:数据库系统;超文本系统;黑板系统。
1、构件是核心和基础,重用是必需的手段。
2、软件重用是指在两次或多次不同的软件软件开发过程中重复使用相同或相近软件元素的过程。
3、软件元素包括程序代码、设计文档、设计过程、需求分析文档甚至领域知识。
4、把可重用的元素称作软构件,简称为软构件。
5、可重用软件元素越大,就说重用的粒度越大。
6、构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和代码实现的复合体。
7、面向对象技术达到类级重用,以类为封装的单位。
8、构件模型是对构件本质特征的抽象描述。
三个主要流派,分别是OMG(对象管理组织)的CORBA(通用对象请求代理结构)、Sun的EJB和Microsoft的DOM(分布式构件对象模型)。
9、获取构件的四个途径:(1)从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用构件。
(2)通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用构件。
(3)从市场上购买现成的商业构件,即COTS构件。
(4)开发符合要求的构件。
10、构件分类方法三大类:关键字分类、刻面分类法、超文本组织方法11、构件检索方法:基于关键字的检索、刻面检索法、超文本检索法和其他检索方法。
12、减少构件修改的工作量,要求工作人员尽量使构件的功能、行为和接口设计更为抽象画、通用化和参数化。
13、构件组装技术:基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。
14、软件体系结构的定义:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构的意义:(1)体系结构是风险承担者进行交流的手段;(2)体系结构是早期设计决策的体现--①软件体系结构明确了对系统实现的约束条件②软件体系结构决定了开发和维护组织的组织结构③软件体系结构制约着系统的质量属性④通过研究软件体系结构可能预测软件的质量⑤软件体系结构使推理和控制更改更简单⑥软件体系结构有助于循序渐进的原型设计⑦软件体系结构可以作为培训的基础;(3)软件体系结构是可传递和可重用的模型。
青鸟构件库概念模型一、引言二、语法结构2.1功能移出部分2.2模板参数2.3特例化实例化描述2.4协作规约、成员规约和规约互联2.5协作对象、成员对象和对象互联参考文献附录附录1--青鸟构件描述语言BNF回页首一、引言在过去三十年中,软件生产率一直稳步增长,但仍不足以满足社会对软件产业的需求[1,2]。
为了解决这一问题,科技人员在软件工程和人工智能领域进行了深入的研究。
近几年来,人们开始认识到,要真正实现软件的工业化生产方式,保证软件生产的高效率和高质量,软件复用是一条现实可行的途径[3]。
作为软件复用中一个主要的研究方向,构件描述与复合的研究最早可以追溯到70年代Parnas所提出的模块[4]。
早期的研究工作主要集中在模块互联语言(Module Interconnection Language)方面,如MIL75[5]、Intercol[6]等。
进入80年代,研究重点开始转向构件描述语言(Component Description Language),其中具有代表性的工作包括Gougen开发的OBJ[7]和LIL[8],“Berlin approach”开发的ACT TWO[9],以及Meld[10]等。
Litvintchouk和Mastsumoto指出两种语言的区别主要在于,模块互联语言是描述性的(declarative),而构件描述语言是强制性的(imperative)[11]。
进入90年代,研究重点转向如何将模块互联语言的优点引入到构件描述语言当中,即使构件描述语言同时具有描述构件和构件子系统的能力,主要的工作包括Π[12]、CDL[13]、CIDER[14]、LILEANNA[15]、RESOLVE[16]以及OOMIL[17]以及等。
青鸟构件描述语言的主要作用是描述构件接口,它可以应用在以下三个方面:1、在工具的支持下实现自动或半自动的构件复合;2、利用接口描述中的形式化信息来进行构件验证;3、利用规约匹配技术来进行构件查询。
JB_CDL的设计目标是同时满足以上三个方面的应用,目前的实现方案主要针对第一方面应用,但同时也考虑了今后扩展的可能。
JB_CDL的特点在于:1、以采用面向对象范型的代码件和设计件为描述对象;2、语言本身也采用面向对象范型;3、以一致的形式描述类和框架等不同形态的构件;4、与青鸟构件库系统紧密结合。
回页首二、语法结构JB_CDL分九个部分来描述规约,即功能移出、模板参数、特例化实例化描述、协作规约、成员规约、规约互联、协作对象、成员对象、对象互联,其BNF范式如表1所示。
另外,需要注意的是规约声明必须以句号结束。
以下分别介绍这几个部分的语法和语义。
表1. 规约声明的BNF范式2.1功能移出部分功能移出部分负责描述构件提供功能的基调及语义,但目前移出功能的语义还只能用文字来描述。
另外,为了保证与CORBA标准[18,19]的兼容性,JB_CDL中的基本类型与CORBA标准给出的基本类型相一致。
表2列出了功能移出部分的BNF。
例1给出了一个用JB_CDL描述的堆栈构件。
表2. 功能移出部分的BNF范式例1. 整数堆栈2.2模板参数当构件为规约模板时,模板参数部分给出了其所需的参数。
我们可以将例1中描述的堆栈修改为一个规约模板,如例3所示。
模板参数部分的BNF范式如表5所示。
表3. 模板参数部分的BNF范式例2. 堆栈模板2.3特例化实例化描述特例化实例化描述部分用于描述构件之间的特例化关系和实例化关系,其BNF范式如表4所示。
例3、4在例2的基础上给出了Stack_Template的特例化Stack_Template_With_Top 和实例化Stack_Of_Integer。
表4. 特例化实例化描述部分的BNF范式例3. 提供Top功能的堆栈模板例4. 利用堆栈模板实现的整数堆栈2.4协作规约、成员规约和规约互联协作规约描述了外部协作规约;成员规约描述了内部成员规约;而规约互联描述了规约之间的静态关系,包括继承、组装、实例连接和消息连接。
这三部分描述的主要作用是辅助用户对构件的理解,其BNF如表5所示:表5. 规约级结构的BNF范式2.5协作对象、成员对象和对象互联协作对象并不指明具体的构件,而只是利用其规约描绘出协作者的虚象,为了正确地使用该构件,必须将这些虚象与一个满足需求规约的构件相连接。
传统的模块互联语言只能在代码级进行复合,这使得复合而成的构件功能较为单一[3]。
而协作对象的引入可以解决这一问题,它描述了构件协作者应具备的接口,而所有符合这一规约的实现都可以与该构件进行复合,从而提高了构件复合的灵活性,扩展了复合构件的功能范围。
成员对象给出了该构件包含的成员构件,这些成员构件通过相互协作来完成该构件需要移出的功能。
对象互联将以上两部分给出的构件进行适当的互联,使得每个构件都能够与它的所有协作构件连接起来。
这三部分的BNF 如表6所示。
表6. 对象级结构的BNF范式以下用一个在〖JBCDL14〗中给出的家庭供热系统的例子来表现JB_CDL对构件子系统的描述能力。
该系统包括四个构件:时钟(clock)、控制器(controller)、温度计(thermometer)和加热器(heater)。
该系统的工作流程如下:时钟定时触发控制器去检测当前温度,如果低于预定温度则打开加热器,反之则关闭加热器。
例5. 家庭供热系统回页首参考文献1. B. Boehm, “Improving software productivity”, IEEE Software, pp. 43-57, Sept, 19872.Cox, “Planning the software revolution”, IEEE Software, vol. 7, no. 9, pp. 25-35, Nov,19903.Hafedh Mili, Fatma Mili, and Ali Mili, Reusing Software: Issues and Research Directions,IEEE Transactions on Software Engineering, Vol. 21, No. 6, pp. 528-562, June 19954.Parnas, On the criteria to be used in decomposing systems into modules, Communication ofthe ACM, pp. 1053-1058, December 1972.5.Deremer and H. Kron, Programming in the large versus programming in the small, IEEETransaction on Software Engineering, pp. 321-327, June 1976.6.Tichy, Software Development Control Based on System State Descriptions, PhD Thesis,Carnegie-Mellon University, January 1980.7.Gougen, Parameterized programming, IEEE Transactions on Software Engineering,SE-10(5):528-543, 1983.8.Gougen, Reusing and interconnecting software component, IEEE Computer, pp.16-28, Februray1986.9.Blum, H. Ehrig, and F. Parisi-Presicce, Algebraic specification of modules and their basicinterconnections, Journal of Computer and System Sciences, 34:293-339,1987.10.Kaiser and D. Garlan, Melding sofwtare systems from reusable building blocks, IEEESoftware, 4(4):17-24, July 1987.11.Litvintchouk and A. Mastsumoto, Design of Ada systems yielding reusable components: Anapproach using structured algebraic specification, IEEE Transaction on SoftwareEngineering, SE-10(5):544-551, 1984.12.Cramer, W. Fey, M. Goedicke, and M. Grode-Rhode, Towards a formally based componentdescription language - a foundation for reuse, Structured Programming, 12:91-110, 1991.13.Robert J. Gautier, Huw E. Oliver, Mark Ratcliffe, and Benjamin R. Whittle, CDL--A ComponentDescription Language for Reuse, International Journal of Software Engineering andKnowledge Engineering, Vol. 3, No. 4, pp. 499-518, 1993.14.Whittle and M. Ratcliffe, Software component interface description for reuse, IEE BCSSoftware Engineering Journal, 8(6), November 1993.15.Will Tracz, LILEANNA: A Parameterized Programming Languages, in Advances in SoftwareReuse, Selected Papers from the Second International Workshop on Software Reusability, R. Prieto-Diaz and W. B. Frakes eds., pp. 66-78, Lucca, Italy, March 24-26, 1993.16.Paolo Bucci, Stephen H. Edwards, etc., Special Feature: Component-Based Software UsingRESOLVE, ACM SIGSOFT. Software Engineering Notes, Vol. 19, No. 4, pp.21-67, October 1994.17.Pat Hall and Ray Weedon, Object Oriented Module Interconnection Languages, in Advancesin Software Reuse, Selected Papers from the Second International Workshop on Software Reusability, R. Prieto-Diaz and W. B. Frakes eds., pp. 29-38, Lucca, Italy, March 24-26, 1993.18.Steve Vinoski, CORBA: Integrating Diverse Applications Within Distributed HeterogeneousEnvironments, IEEE Communications, Vol. 14, No. 2, February 1997.19.Ron Ben-Natan, CORBA: a guide to common object request broker architecture, McGraw-HillPress, 1995.回页首附录附录1--青鸟构件描述语言BNF specification ::=specification spec-name[ template-para-section ][ specialization-instantiation-section ][ required-spec-section ][ contained-spec-section ][ spec-connection-section ][ required-object-section ][ contained-object-section ][ object-connection-section ][ provided-function-section ]end specification .provided-function-section ::=provides{ function-declaration } ;function-declaration ::=func-name [ ( para-list ) ] returns return-type [ description STRING ]para-list ::=para-decl { , para-decl }para-decl ::=para-name is a typepara-name ::= IDENTIFIERtype ::=pointer of base-type |reference of base-type |base-typebase-type ::=built-in-type |temp-para |SPEC-NAMEbuilt-in-type ::=long | long long | short | integer | float | double | long double | char | wchar | boolean | enum | anyreturn-type ::=type | nonetemplate-para-section ::=template parameterstemp-para { , temp-para } ;temp-para ::= IDENTIFIERspecialization-instantiation-section ::= specialization-description ;| instantiation-description ;specialization-description ::=inherits full-spec-namefull-spec-name ::=SPEC-NAME [ where-statement ]where-statement ::=where assignment { and assignment } endassignment ::=built-in-type replaces IDENTIFIER instantiation-description ::=instantiates full-spec-namerequired-spec-section ::=required specificationsspec-listspec-list ::=SPEC-NAME { , SPEC-NAME } ;contained-spec-section ::=contained specificationsspec-listspec-connection-section ::=specification connections{ spec-connection } ;spec-connection ::=SPEC-NAME spec-relation SPEC_NAMEspec-relation ::=inherits | consists | relates with | sends message torequired-object-section ::=required objects{ object-decl } ;object-decl ::=object-name is a full-spec-namecontained-spec-section ::=contained objects{ object-decl } ;object-connection-section ::=object connections{ object-connection } ;object-connection ::=IDTENFIER of IDTENFIER = IDTENTIFIER。