构件化体系结构

2024-09-21

构件化体系结构(精选7篇)

构件化体系结构 篇1

0引言

1968年,在北大西洋公约组织(NATO)召开的软件工程会议上,首次提出来了软件危机(Software Crisis)的概念[1]。会议上,Mcllroy提交了一篇题为《Mass-Produced Software Components》的论文,首次提出了软件构件(Software Components)以及构件工厂等概念,指出软件复用的一个重要基础就是需要有充足的软件构件。稍后,NATO制定了关于软件复用的一套指导性标准,其中就有关于构件及利用标准构件来实现软件复用的基本思路。

1软件构件化的好处及困难

所谓的构件就是指封装的、规范的、可重用的软件模块。广义上讲,构件可以是需求分析、设计、代码、测试用例、文档或软件开发过程的中其他产品;狭义上来说,构件一般指对外提供一组规约化接口的、符合一定标准的、可替换的软件系统的程序模块[2]。

通过软件构件实现软件的复用,可以提高软件研制效率,增强软件可靠性,提升软件技术竞争力,实现共享知识促进软件开发的技术进步和标准化,从长远看,肯定能提高星载软件的研制能力。可以说软件构件是最有价值的软件资产。

但是我们也应该清醒地看到,在星载嵌入式环境下实现软件构件的困难,包括:

1.1环境的适应性

不同的用户需求产生了不同的载荷功能要求,不同的架构设计师构建了不同的卫星载荷的硬件系统,上层的需求变化,底层的硬件环境变化,那么处于中间层的星载嵌入式软件,需要有一种复用机制来以不变应万变,需要通过构件抽象去适应不同需求、不同硬件的差异,并由此负担了资源成本和效率的代价。

1.2新技术的追踪

复用构件是为了新产品的研制,然而软件产品耦合的因素很多,操作系统、处理器、编程语言……这些技术因素都在发展变化中,那么随之而来的问题是:大多数情况下,我们的研发部门只是技术发展方向的追随者,不是引领者,如何保证在目前的技术体系下设计的构件产品,有较长的使用寿命,在将来一段时期内的项目中都能被复用?积累的软件构件会不会有朝一日因为技术淘汰而用无可用?这就需要构件设计者能敏锐的把握新技术的发展方向并应用在构件设计中。

1.3资源的限制

一般的软件系统的处理器性能、存储器容量等资源都较为丰富,软件的性能要求方面不多,构件粒度的定义有较大的伸缩度。而星载嵌入式软件,软硬件结合紧密,需要充分考虑硬件因素,在软硬件资源局限性较大的同时,对实时性和可靠性要求高,并行、同步、中断、时序、可靠性等等方面有更多的苛刻限制,所以星载嵌入式环境下软件构件开发更有难度。

1.4复用的成本

相对于专用化设计,构件化显然需要额外增加软件的调度、接口、层次,增加了软件本身的通信成本、资源成本、规模成本和管理成本。

同时,为避免错误扩散,提高构件的适用能力,就必须构件经过更严格的软件测试,因此开发可复用构件的费用要比开发一般模块的费用要昂贵,W.Tracz认为开发可复用构件的费用比开发一般模块要超出30%〜200%。收回在复用项目上的投资需要时间,W.Tracz发现,在一个软件上的投资只有在该可复用构件第3次被复用之后才能收回[3]。

2构件体系的技术策划

星载嵌入式软件的构件体系建立是一个系统工程,也是一个循序渐进的过程,需要从研究构件特征及关系入手,建立一个构件模型,通过构件描述语言来解决构件的描述、组装问题;然后有目的的生产构件或者从已有星载载荷系统中挖掘提取构件;建立构件库对构件进行有效的分类、组织、检索及配置管理;在构件模型的基础上研究构件组装机制,并按照构件化软件架构开展软件的开发活动。

嵌入式环境下软件构件体系的架构示意如图1:

2.1构件模型

软件构件只有存在于一个定义好的软件环境(构件标准)里才能实现互联互通互操作,才能发挥效用,每个构件都提供了一套服务,软件怎么使用其他构件提供的服务、构件怎样命名、怎么在运行时发现新构件和它们的服务,因此首先必须建立一个软件构件模型,通过构件模型来全面定义构件的基本属性、构件接口结构、构件应用的框架、构件间的交互机制等内容,并提供创建构件和实现构件的规则。

国内外的研究机构根据自己的领域特征曾提出一些嵌入式构件模型,国外的如PECT、Koala、PBO[4]以及PECOS等构件模型,国内的CBMESP、Z-CCM、DRSCDE等构件模型,它们对实时嵌入式系统的构件开发都提出了有效的解决方案,但大多数都局限于具体实时嵌入式应用领域,与特定软件平台紧密相关,难以做到开放性、普适性,并在构件的易用性、可移植性、可靠性和质量保证方面仍存不足。

因此,通过对星载领域的软件进行分析,对其中的稳定需求和共同特征进行抽象,形成星载领域的构件模型,在此基础上,设计开发适合领域环境的构件,并加以提炼入库,以备将来复用[5,6]。并且使用构件描述语言以严格而又易于理解的方式,为构件交互、构件组装和构件开发人员提供全面准确的构件信息,将构件模型进行形式化的描述。

构件模型一般可以从概念、内容、语境等角度,对构件的属性、接口、环境、关联等若干个主要元素进行定义,一个典型的构件模型元素结构如图2:

2.2构件的开发和组装

领域模型建立后,就可以按照模型定义,借鉴通用构件模型的某些特点,从实际开发环境和开发平台出发,研究分析、设计出适合星载领域软件开发和组装的构件,明确定义构件的接口以及接口配置,并进行文档化;另外,还可以通过软件再工程的手段,从已有的大量星载载荷软件资产中标识并提取可复用的构件。

构件的开发设计一定要摆脱与特定硬件平台、软件平台的耦合,以提高构件的普适性、可移植性和高复用性。

构件的组装集成是软件构件中的核心技术,构件组装集成是要通过构件的接口或者连接件来协调各个构件的行为,通过将一定数量的构件按照约定的交互机制及组装机制集成,使通过构件组合成的软件产品能够满足星载实时嵌入式系统的特定功能及非功能盖求,如服务功能、资源约束限制、环境依赖及构件时间行为等,从而实现构件的价值。

按照软件的基本结构,经常采用的构件组装机制,包括构件顺序组装、构件选择组装、构件循环组装、构件并行组装、构件同步组装和构件中断组装。

星载嵌入式环境下的构件组装受到从构件模型、需求,到构件粒度大小、组装平台特点、运行环境等多种要素的制约,同时兼顾构件之间的行为联系、数据联系等等问题,因此构件组装必须要需要结合具体的应用要求,对构件的服务功能进行选择和连接。

2.3构件的测试

一个构件的开发设计完成以后,必须通过测试来检査构件能否满足任务书中的设计指标,是否符合构件规范中的结构关系。

构件测试是构件体系结构中的重要一环,关键的原因就是构件的开发者和使用者相分离,在实际应用过程中,构件的运行环境和条件未必与构件开发时的约束一致,而且构件的使用者往往不拥有构件的源代码,这就对构件提出了很高的质量要求,必须通过严格的测试来保证。例如美国的Ariane5火箭发射失败的原因就是复用了Ariane4系统中的构件,而没有重新进完备的测试[5]。

随着构件的规模和复杂性增加,构件的生产成本越来越高,构件中存在的缺陷和故障造成的各类损失也大大增加,甚至会带来灾难性的后果,因此,在构件入库前必须对构件进行全面的测试。确保每个构件的正确性,才能确保将来集成此构件的每个载荷应用软件的可靠性!

因此,相对于以往的应用软件测试,构件测试的项目更多、要求更高,需要针对构件的所有属性来设计测试用例,只有测试的有效性得到充分保证,构件化才能实用化。

2.4构件的应用

传统的星载嵌入式软件开发一般都要经过系统需求分析、概要设计、详细设计、单元测试、软硬件集成、确认测试等几个阶段。而利用构件进行软件开发的过程有别于传统的开发方法,通过分析开发过程中的构件需求,然后在构件库中提取可以沿用的构件,或者进行少量改造就可以适用的构件,将新开发的构件与库中提取的构件进行集成、测试,形成最终的软件产品。传统开发方法与构件开发方法过程的对比见图3:

可见,基于构件的星载软件开发,不能完全沿用以往软件开发的过程、质量控制、文档等技术要求,需要建立一套与之适应的开发方法和研制规范。

2.5构件的管理

对星载嵌入式软件构件的管理,应结合构件化的特点,从构件库管理、配置管理、绩效管理等多方面入手,才能真正把软件构件化工作落到实处。

设计出的各类构件需要在构件库中组织、存储,当构件达到一定规模以后,构件检索将是一项构件管理的重要工作。每个星载嵌入式软件构件都需要在时间、空间、能力、接口、环境、其他非功能性需满足的前提下,进行匹配分析来确定是否能复用,所以如何提髙构件检索过程的效率、査全率和查准率是基于构件的软件开发成功的一个关键。

传统的构件检索方法如基于构件关键字描述的检索方法,其检索结果的查全率较高。然而由于缺乏对构件接口功能语义的准确描述,其检索结果的准确率和效率较低。另一方面,基于形式化描述方法的构件检索效率和查准率都高,然而出于形式化逻辑中精确的接口匹配要求,以及构件用户提供形式化的构件查询请求较为困难,导致检索结果的查全率较低。

因此,要在构件库结构基础上,设计检索方法,并开发适合星载软件开发环境的构件检索、构件编辑等工具。

构件库在建设的过程中,还要注意对构件的配置管理控制,对构件的版本必须严控,过多的构件分支肯定会给项目带来管理和技术上的风险[7,8,9,10]。例如图4中,两个有关联的的构件A 1.0,构件B 1.0已经在某项目X中被复用和验证,项目Y中也集成了构件A和构件B,尽管构件B发生了技术状态变化,版本演变到了1.1,但集成后的应用功能、性能依然能保证正常,而到了项目Z时,构件B演变到1.2,技术状态出现的变化却最终导致在集成时出现了bug。

此外,还需要开发构件管理工具,对构件的组装情况进行标识、记录、检索、追踪,便于对构件的错误修复和升级换代。

作为研制管理部门,还需要进行构件的绩效管理,既要从利益角度去激励设计构件用以复用,也要提高设计者的责任意识,达到利益与责任的均衡。

3结束语

总之,构件化带来的好处显而易见,但我们也要认识到构件复用带来的问题和困难,任意构件都只具有资源、功能、接口等一定条件下有限的适用性,构件错误会随着应用数量的增加而扩散,因此需要针对星载软件领域的实际来策划构件体系结构和模型,需要改进传统的开发方法,并建立与之适应的管理体制,只有精心规划、认真探索和开拓,才能通过软件构件化工作,真正提高星载软件的可靠性、研制效率和研制能力。

摘要:软件构件技术是当前软件工程的一个热点研究领域,本文从软件构件体系的角度,全面叙述了如何通过构件化技术方法,提高星载软件的研制效率和研制能力,为解决星载软件重复研发,可靠性保障成本较高的问题提供了一条技术解决方案。

关键词:软件工程,构件,星载软件

参考文献

[1]史济民.软件工程原理、方法与应用[M].北京:高等教育出版社,1990.

[2]李航.基于通用试验体系结构支撑平台的组件框架设计模式[J].软件,2013,34(5):85-87.

[3]Tracz W.Software reuse maxims.ACM SIGSOFT Software Engineering Notes,1988,13(4):28-31.

[4]David B.Stewart,Richard A.Volpe,and Pradeep K.Khosla.Design of dynamically reconfigurable real-time software using port-based objects[J].IEEE Trans.Software Eng.,1997,23(12):759-776.

[5]李景峰等.一种特定领域软件开发模型[J].西安电子科技大学学报,2000,5.

[6]景涛,白成刚,胡庆培.构件软件的测试问题综述[J].计算机工程与应用.2002 38(24).

[7]路志,戴志涛.版本控制系统在嵌入式系统实验中的应用[J].软件,2014,35(11):86-90.

[8]Wang S,Liu Z,Sun Q,Zou H,Yang F.Towards an accurate evaluation of quality of cloud service in service-oriented cloud computing.Journal of Intelligent Manufacturing,2014,25(2):283-291.

[9]Wang S,Zheng Z,Wu Z,Lyu M,Yang F.Reputation Measurement and Malicious Feedback Rating Prevention in Web Service Recommendation Systems.IEEE Transactions on Services Computing,2015,8(5):755-767.

[10]Wang S,Sun Q,Zou H,Yang F.Particle Swarm Optimization with Skyline Operator for Fast Cloud-based Web Service Composition.Mobile Networks and Applications,2013,18(1):116-121.

构件化角色设计的研究 篇2

1 构件化软件

本文将构件分成六个层[1]:语义层描述构件具体实现功能, 是构件价值的体现;基约层用来描述构件实体提供或需求服务的接口, 负责构件之间的通信, 连接包括一组参数;技术层描述构件适应具体的操作平台、兼容语言等;契约层即行为交互层, 描述构件之间及构件与环境之间的行为交互, 包括消息的顺序、消息的同步、消息的异步及消息堵塞等条件;服务层描述构件非功能属性, 主要指构件的服务质量;构件是可在一定的范围内, 有限制的修改以达到提高复用目的, 同时构件多次复用具有持久性, 即构件多次复用的结果是一致的修改后的构件独立于原构件。

根据以上的分析, 本文从复用观点出发, 认为构件是具有相对独立的功能, 显示且严格的接口描述, 具体的语境依赖, 特定的契约约束, 相对明确的服务指标, 可被限制性修改且能多次复用、易于组装的软件单元。

2 角色控制

目前, 大多数信息管理系统的权限控制都是从资源存取控制客体出发进行管理, 这种权限管理方式没有考虑到实际企业的权限结构, 缺乏灵活性和透明性。

无论是基于本体方向, 还是面向对象方向, 或者是基于层次关系方向。角色控制在以下方面存在不足, 首先, 权限操作复杂, 授权方式不够灵活, 不能满足后期新角色的加入, 特别是对一些大型的结构性数据的权限管理力量薄弱;其次, 随着构件化技术的成熟, 要求资源共享能力越来越高但目前的角色管理在不同的系统中大都自行开发, 没有达到复用的目的;第三, 系统中的角色管理被限定在确定的用户, 同时用户必须兼顾角色中的权限, 因此, 角色管理对用户的透明性差。

3 构件化角色设计原则

基于构件的复用最终的价值是将设计可复用的产品以即插即用的方式用到工程中去, 目前, 无论是基于本体方向, 还是面向对象方向, 或者是基于层次关系方向。它们在以下方面存在不足, 首先, 权限操作复杂, 授权方式不够灵活, 不能满足后期新角色的加入, 特别是对一些大型的结构性数据的权限管理力量薄弱;其次, 随着构件化技术的成熟, 要求资源共享能力越来越高但目前的角色管理在不同的系统中大都自行开发, 没有达到复用的目的;第三, 系统中的角色管理被限定在确定的用户, 同时用户必须兼顾角色中的权限, 因此, 角色管理对用户的透明性差。

基于此, 本文提出角色构件的设计应具有可复用性、用户透明性及可配置性等原则。

3.1 复用性

构件复用作为一种现实有效的软件开发方法正受到越来越多的重视和研究。近年来, 随着DNA, 中间件等三层体系结构和分布式对象的兴起, 为基于可复用构件的软件体系结构赋予了更大的内涵。从而使人们在评价构件复用的意义时, 不应只局限于开发周期的缩短, 软件质量的可靠提高, 更要认识到构件组装式的开发在系统维护 (如版本更新, 功能增删等) , 分布式计算等方面所带来的极大便利。由于维护阶段占软件开发周期总成本的67%左右, 因此构件重用对整个软件产业的重要意义就不言而喻了。从维护和分布计算的角度考虑构件复用就是要实现“即插即用”。

3.2 用户透明性

在计算机技术中, 一种本来是存在的事物或属性, 但从某个角度看似乎不存在称为透明性现象。通常, 在计算机系统中, 低层次的机器级的概念性结构和功能特性, 对高级程序员来说是透明的。本文提出的透明性狭义指系统中的角色管理被限定在确定的用户, 同时用户必须兼顾角色中的权限因此, 角色管理对用户的透明性差。

本文构件化角色的设计如下:所有构件仅提供限制性功能接口, 通过配置使得不同的用户得到不同的权限, 用户修改构件是封闭的, 使用构件是透明的, 角色构件的功能及权限对所有用户都是透明的, 用户只需知道做什么, 不必理会怎样做。

3.3 可配置性

可配置性的最低层次就是一般的配置文件、配置参数, 这是一种比较规格和静态的参数结构, 参数表, 稍微复杂一些可以采用树结构。软件中自然是有大量的参数需要这样去配置。二次开发程序, 用来满足复杂的、动态的功能实现和参数定义。一般说普通配置文件解决不了问题的时候, 脚本程序就需要出场了。可配置性高的层次是指技术发展的方向, 实现 (而不是说用户使用) 的难易程度。自然, 一般而言普通配置文件和参数体系容易被用户理解;而二次开发的脚本不太容易被用户理解和掌握。但也不能绝对这么说。通过一定的方法和努力, 二次开发的代码也可以很简单, 但依然保持了它的功能灵活性。

本文提出的可配置性狭义的指通过配置用户的等级来实现用户的权限。

4 结语

构件化软件被视为软件复用有效手段之一[2], 角色控制模块是重复开发率最高的模块之一, 基于此, 本文将构件化的思想引入到角色控制管理中, 提出了角色设计应具有复用性、用户透明性及可配置性等原则, 为角色复用、再复用和基于角色的权限控制提供了一种可行的解决途径。

摘要:系统中角色控制模块是重复开发率最高的模块之一。本文将构件化的思想引入到角色控制管理中, 提出了角色设计应具有复用性、用户透明性及可配置性等原则, 为角色复用、再复用和基于角色的权限控制提供了一种可行的解决途径。

关键词:构件化,角色控制,复用性

参考文献

[1]Qi Huac heng;Ron g Mei, Zh angGuangquan;A behavior-driven modelof component interaction adaptation[C].Computer Science&Education, 2009.

[2]C.Canal, Pascal Poizat and GwenSalaün.Model-based Adaptation ofBehavioral Mismatching Components[J].In IEEE Transactions on SoftwareEngineering, 2010, 34 (4) :546-563.

构件化嵌入式操作系统设计 篇3

关键词:构件化,嵌入式,操作系统,异构构件,形式化方法

传统的嵌入式操作系统采用一体化、大内核方式开发,这种设计方法限制了嵌入式操作系统的可移植性、可伸缩性,严重影响了嵌入式操作系统的开发效率及功能的鲁棒性,构件的重用性、灵活性、可维护性、高效性使它成为构建嵌入式系统的一个良好的选择,所以构件化嵌入式操作系统[1]的引入对嵌入式系统有其一定意义。另外,分层的设计模式因为具有使复杂问题简单化,分割处理的特点使得利用它进行嵌入式系统的设计成为一个不错的选择,对此笔者结合构件化与分层结构的设计思想,提出一种灵活的嵌入式操作系统的设计思想。

软件开发中的效率关系到软件的开发成本与机会成本,对构件化嵌入式操作系统异构构件的直接使用无疑会带来开发效率下降的问题,所谓异构构件[2,3],就是对于满足不同构件模型标准定制的构件,考虑到异构构件的使用带来的开发效率下降问题使得开发人员无法使用一些现成的不同构件模型的构件,并且限制跨平台的构件使用,对此笔者提出一种构件的封装方法,用来屏蔽构件间的差异,使得在每层上充分发挥构件的灵活优势。

1 构件机制

构件是自包含的、可编程的、与具体语义无关的代码片段。它由类组成,但与一般意义上的类不同的是它进行了再次的封装,对外它提供一组接口,从而达到了内部具体的实现与定义的分离,将构件本身与接口独立开。

为说明构件间的作用描述一种构件的配置,假设有两个构件,每个构件有若干接口,有的是自身使用的,另外一些是向外部提供的,将对外提供的放在下方,自身使用的接口放于构件上方,每个接口由若干方法组成,比如命令、对事件的处理方法。关于命令是自上而下传递的,对事件的处理方法是自下而上方向传递的。假设构件2是硬件层封装的,那么与之相关的中断处理部分会发出一个事件,用于调用构件1,而构件1接到这个事件时,可能有2种情况发生,一是向上再发出一个事件,调用其他构件;二是向下发送一个命令到构件2,构件2会有一个接口用以实现这条命令。

2 分层结构

在一个系统中不同的功能部件都具有自己不同的上下文环境,但总是存在一些功能构件与另一些功能构件具有相似的上下文环境,分层的思想就是根据这些相似的上下文环境,将具有相似的上下文环境的功能构件纳入同一层次当中,达到对操作系统进行功能集合的划分目的。不同的层次之间的功能模块的上下文环境有较大的差异,因此对于处在不同层次的功能构件,它们的接口、组织和内部的具体实现等方面的差异也是较大的,这样一来,就得到一种较为优良的同层构件构造方式,这种方式类似于面向对象中涉及的父类与子类的关系,从一层中有相似上下文的功能构件中抽象出一种相对统一的功能构件作为一个统一模型,对其赋予不同的通信参数就此得到功能模块的一个特例,这些特例属于同一层的功能模块。

2.1 分层的总体结构

在上面提及的分层结构的基础上将操作系统分层:驱动层主要提供设备驱动包括中断控制及时钟驱动程序,字符设备驱动,块设备驱动等;内核层主要是一些关于信号量、内存管理、消息队列、中断管理、任务管理的模块等,其中还包括对系统中间层提供的编程接口,因为在每层中实现构件接口化方式,所以在某种程度上实现了无内核的形式,内核层也需要实现构件化方式,使得内核配置更为灵活;系统中间层负责为应用程序层提供高效的编程接口。

2.2 分层结构中的构件具体实现

在分层划分的基础上需要将各个层的模型继续划分成为经过对每个抽象模型构件赋予通信参数后就可以实例化的、可独立编程、测试的构件实体。对于实体化的构件来说存在一个界面划分的问题,也就是粒度大小和独立性的取舍问题,在独立性较强的构件中它是完全自包含的,对外部构件的依赖性很低,构件间的组合较为方便,但是这样的大粒度构件是以牺牲灵活性为代价;相反粒度小的构件虽然灵活性较强,但是在组合系统的时候就比较复杂。需要权衡取舍,一般情况负责驱动硬件的构件,因为与底层硬件联系,所以独立性较强,但粒度较大。下面以驱动构件为例说明一般构件的具体实现。

触摸屏驱动见表1,触摸屏构件具有两个接口IGet它包括使用及访问它的具体方法,如获取触摸屏事件及相关硬件参数。ISet是系统对象使用的接口,它用来管理触摸屏驱动对象,使之与硬件绑定,并赋予其资源,如中断请求号等。

通过表1的构件描述,只需要在构件框架的基础上填充相应的代码即可完成整个驱动。实际上,构件驱动模型把驱动看作是一个服务程序,通过系统提供的中间层,驱动构件可以与用户端程序进行交互,而中间层的模式不设计构件驱动与用户程序的内部逻辑实现,也不会对驱动构件与用户程序的接口产生影响,中间层也是相对遵循一定的独立的通信规范,不受驱动构件和用户程序的影响,三者是相对独立的,是构件的重用性、灵活性、可维护性、高效性的所在。

2.3 关于异构构件的处理

提到构件的具体实现就不能不考虑一个问题,即基于不同方法生成的构件之间的交互问题,所谓异构构件是通过不同的构件模型标准实现的构件,不同的构件模型支持不同的构件特征,这种不同的特征主要体现在构件的属性、方法、事件集等几个方面,所以必须提供一种封装形式使得异构构件可以进行交互,使得构件的可重用性得到更大的发挥。

为完成对构件的封装需要一个用于再次封装遵循不同标准构件实例的包装器[4],它用来封装相应构件模型的构件的实现,经过它的包装使得构件对外呈现统一的接口形式,可以屏蔽构件对外部的差异;包装集则提供所有的包装器,其中包括类与接口的集合,通过这里定义的接口使得它可以独立于构件的具体模型,这里也贯穿着构件的编程思想,也就是面向接口的编程,用户可以用统一的方式访问构件,在包装集中还包括包装过的构件对原构件的对应关系;连接器集合中包括对应于不同连接关系的连接器;工作现场负责选择、配置构件最终生成构件的实例。

包装器的内部必须实现一个统一的IBoxing接口定义的方法并提供相关功能,对于包装器支持的所有构件模型,都可以使用这个接口对支持的构件模型的构件以统一的方式进行访问,如果需要添加对新构件的支持包装器需要实现对于新构件模型的IBoxing接口的功能。

IBoxing接口功能Instantiation负责实例化一个构件,此过程通过createInstance实现,或者将一个构件的实例分配到一个包装器,当然这个过程中需要专递特定构件的相关参数;General Information负责将包装好的构件或特定的构件模型的相关信息传递到负责组装构件的功能部分;Feature Access负责抽取特征类及其特征,由于每个构建模型都有其自身支持的特征类,所以为了达到真正意思上的屏蔽需要得到各构件模型支持的特征类及其特征,可以通过getFeatures方法对特征类进行过滤或通过getFeatureInfo方法对所有特征进行检索,构建包装器结构。

参考文献

[1]Labrisse J.嵌入式系统构件[M].2版.袁勤勇,黄绍金,唐青,译.北京:机械工业出版社,2001:130-143.

[2]Abowd G D,Allen R,Garlan D.Formalizing Style to Under-stand Descriptions of Software Architecture[J].ACM Trans-actions on Software Engineering and Methodology,1995,4(4):319-364.

[3]Sakamura K,Koshizuka N.T-Engine:The Open,Real-TimeEmbedded-Systems Platform[J].IEEEMicro,2002,22(6):48-57.

构件化设计在电子签名中的应用 篇4

在学校的机房管理中, 清点学生名单是一件重复而繁锁的事情, 特别是同时上机人数较多时, 这样不仅费时, 而且经常出现先点名的人被记录, 而后点名没有被记录到的情况。点名时间过长, 不仅影响其他学生的正常上机调试思路, 而且登记记录也费时间, 为解决这个问题, 以ASP.NET为开发工具, 以构件化的设计思路, 开发了一个电子签名程序, 经学校机房使用, 效果很好。

2 电子签名系统需要解决的问题

(1) 系统能够自动将现在的时间转化为一个学期的第几周星期几, 例如, 某学校2011年秋学期是2011年8月28日开学, 现在是2011年9月25日, 转化为结果为:第5周星期日。

(1) 能自动记录学生上机时间。

(2) 能限定学生一人只能签名一次。

(3) 通过IP限定, 一台计算机只能签名一次。

(4) 超过指定时间, 限定功能自动取消。

(5) 能记录并提醒学生迟到时间。

(6) 能统计一个学期所有学生签名情况。

3 电子签名系统设计

3.1 数据库

电子签名系统需要3个数据表:第一个表是学生基本信息表, 表名student, 该表主要用于记录学生的基本情况, 表的结构如表1所示。

第二个表是用于记录学生签名信息的表, 表名是QM, 表的结构如表2所示。

第三个表是将签名结果以统计形式显示出来的, 是一个交叉表查询, 表名是QMSQL, 要求是将QM表中学号、姓名两个字段设计为行标题, 而分组设计为列标题的查询的设计, 如图1所示。

3.2 Web构件开发

在ASP.NET中, 可以通过用户控件、Web Services和Class来开发Web构件, 下面所讲的实例均是以Class来实现。为了实现上述功能, 需要开发几个Web小构件, 方法是将要实现的功能在类中实现, 在程序中直接调用即可。

(1) 获取当前时间在一年中的第几周, 参数为日期时间型dt, 返回整型结果。

(2) 将现在的时间转化为一个学期的第几周, 参数为字符型起始时间StartTime, 返回整型结果。

(3) 检查用户当天是否已经签名, 参数分别为字符型的表名tableName、学号字段名XHFieldName、学号字段值XHFieldValue、周时间字段名ZJFieldName、时间字段值ZJFieldValue, 返回逻辑型结果。

(4) 检查签名用户的合法性, 参数分别为字符型表名tableName、用户名字段名UserNameFieldName、用户名字段值UserNameFieldValue、密码字段名PasswordFieldName、密码字段值PasswordFieldValue, 返回逻辑型结果。

(5) 实现电子签名。参数分别为字符型的查询SQL语句parasql、记录签名的表名tablename、学号字段值XH、姓名字段名XM, 签名时间字段值ZJ。

3.3 程序基本流程

程序基本流程是:用户首先登录并签名, 并判断用户身份的合法性。如果身份合法, 则判断当前时间, 如果时间在指定时间之内, 则将签名结果写入服务器的数据库。签名成功后, 自动跳转到显示签名结果的页面。

4 实现电子签名

4.1 登录表单设计

用户登录程序, 可事先连接数据库, 读取数据库中的班次字段, 将班级字段中不重复的班次字段记录添加到列表框中, 姓名和学号由学生签名时自己输入, 签名时间通过构件类自动生成, 如图2所示。

4.2 登录界面事件处理

(1) 创建类实例

(2) 通过调用构件, 在时间文本框自动显示时间

(3) 提交时检查签名并实现签名

4.3 显示签名结果

无论签名是否成功, 均提供查看程序给学生查看自己签名结果是否已经写入数据库。签名结果其实是显示数据库中已经签名的数据, 所以是一个数据显示程序, 该部分内容已经有很多文章中作了介绍, 在经就不再赘述。签名结果有两种形式, 第一种是签名的数据, 包括签名者的学号、姓名、签名时间等;第二种数据是签名的统计结果, 是将学生每周的签名结果都显示出来, 以便检查和统计, 为了使同一程序实现两种结果的显示, 可以通过地址栏传递参数来实现。显示签名的程序是DisplayQM.aspx, 当以参数DisplayQM.aspx OP=QMd时, 显示签名的统计结果, 当以参数DisplayQM.aspx OP=QM可以显示签名原始数据, 详细设计可参考源程序代码。DisplayQM.aspx的设计效果如图3所示。

4.4 程序运行效果

程序首先运行DZQM.aspx, 运行效果如图4所示。

如果输入正确的班次、姓名和学号, 提交后运行效果如图5所示。

单击“确定”按钮, 5秒钟后, 显示签名结果, 如图6所示。

5 结语

构件化的设计的最大好处是代码可以重复利用, 从而实现软件复用。本程序能够自动计算周次和时间、自动统计并显示签名结果, 在机房上机管理中通过电子签名, 可以客观公正地记录学生上机或签名时间, 自动记录并统计, 减轻了教师管理和统计的工作量, 提高工作效率, 使用了几年时间, 效果良好。

参考文献

[1]刘友生, 陈一平, 曹光忠.Web Services内部架构对QoS的影响[J].辽宁工程技术大学学报 (自然科学版) , 2010, (01) .

[2]刘友生, 等.构件化Web项目开发.北京:清华大学出版社, 2011.

构件化体系结构 篇5

1.1 自动连续视频播放构件的使用

有了动态链接库文件App_Code.dll,在其他任何一个需要使用股票实时接收信息系统的程序中都要可以调用了,而且程序设计变得特别简单,下面介绍使用App_Code.dll的步骤:

(1)新建一个网站,如“GP”。

(2)在当前网站中新建一个名称为“Bin”的文件夹,点击项目文件夹,在出现的快捷菜单中选择“添加引用”(或者在“网站”菜单中选择“添加引用”),会弹出一个添加引用对话框,将“App_Code.dll”文件导入到该文件夹中。

1.2 页面整体布局(Show Gp Chart.aspx)

(1)整个页面用表格布局。

(2)左边用于添加自选股和查看对应的股票,下面放置一个名称为“Literal2”的Literal控件,用于显示添加的自选股。

(3)右边的上面用于显示股票的基本信息,如今日开盘价、昨日收盘价、今日最高价、今日最低价、成交量和成交额等信息。

(4)右边左下方,用于显示股票的买入和卖出竞价信息(如买一至买五的价和量),以及当前最新价格。

(5)右边右下方,主要有3部分,第一部分是显示日期和时间,第二部分是显示股票名称、及分时、日K线等链接,第3部分是用于显示K线图。

主页面布局设计效果如图1所示。

1.3 页面局部布局

1.3.1 我的自选股界面(左边)

在表格的一个单元格中进行设计,主要控件及功能如表1所示。

1.3.2 股票行情

(1)股票基本信息的显示

股票基本信息通过表1进行定位,通过Literal显示相关信息,主要控件及功能如表2所示。

(2)股票的买入和卖出竞价信息的显示

股票的买入和卖出竞价信息通过右边左下方表格进行定位,通过Literal显示相关信息,主要控件及功能如表3所示。

(3)股票实时图、K线及日期时间信息的显示

股票的买入和卖出竞价信息通过右边右下方表格进行定位,通过Literal显示相关信息,主要控件及功能如表4所示。

1.4 事件处理代码

(1)为页面加载添加事件(Page_Load事件)

首先创建构件类的实例,然后通过参数接收股票代码,将股票代码作为参数传递到构件类中,分别显示股票名称、开盘价、收盘价、竞卖价、当前买入报价及量和当前卖出报价及量,并通过Literal1显示当前股票的分时图,通过建构件类的Bind Filed Rec Value To Literal方法,将自选股绑定到Literal2控件中,详细代码如下:

(2)为“查询”按钮添加事件

查询按钮的功能是首先根据用户输入的代码创建一个超链接,然后直接转向该链接,显示该股票信息,代码如下:

(3)为“添加到自选股”按钮添加事件

“添加到自选股”按钮首先判断有股票是否在自选股中,如果已经存在就没有必要添加了,否则就将股票添加到数据库(因添加数据是数据库最基本的操作,这里就不详述了),然后再重新调用构件类的Bind Filed Rec Value To Literal方法,将更新后的自选股显示出来,关键代码如下:

(4)为“分时”、“日K线”、“周K线”和“月K线”超链接按钮添加事件

“分时”按钮的功能是先确定股票代码,然后调用构件类的produceiframe方法,动态创建一个内部框架,并通过Literal1控件显示出来,这样分时K线图就可以通过Literal1控件在指定位置了,代码如下:

“日K线”、“周K线”和“月K线”按钮的代码与“分时”按钮相同,只不过传递的参数不同而已。

2程序运行效果

当程序开始运行时,由于未选择股票,则显示默认的股票(600000,浦发银行)的信息,如图2所示。

当选择一个股票(如自选股中的“中国核电”,程序即显示“中国核电”股票的相关信息,如图3所示。

当单击“日K线”超链接时的运行效果,如图4所示。

当单击“周K线”和“月K线”超链接时的运行效果,如图5所示。

如果将该软件安装在服务器上,也可以通过手机访问,效果如图6、图7、图8和图9所示。

3结语

股票实时接收信息系统能够实时接收股票信息,方便用户炒股,而且可以根据用户特点,设计自己喜欢的界面效果,通过IE浏览器和手机模拟测试,效果良好。

参考文献

[1]刘友生,等.基于构件的ASP.NET(C#)网站开发教程.北京:化学工业出版社,2011.

[2]刘友生,等.构件化Web项目开发(ASP.NET C#).北京:清华大学出版社,2011.

[3]刘友生.自动连续视频播放构件开发与使用[J].电脑编程技巧与维护,2014,(05).

[4]刘友生.用构件快速开发等级限额投票系统[J].电脑编程技巧与维护,2014,(07).

构件化仿真模型研究与自动化实现 篇6

随着计算机软硬件技术的飞速发展以及系统仿真技术研究的不断深入,仿真系统的规模日益扩大、功能不断增强、复杂度越来越高,对仿真系统的可扩展性、适应性、可重用性和互操作性提出了越来越高的要求[1,2]。

传统的仿真系统一般是针对单个系统、特定功能的开发,对每个仿真系统采用不同的设计方法和实现结构。从而导致了大量重复的开发,不但开发周期长、经费浪费严重,而且使得系统的维护和升级变得非常困难。

对此,将软件构件技术引入到仿真系统的开发中,进行构件化建模仿真。基于构件技术的仿真系统开发将仿真系统分解成为独立、可复用、可替代的仿真构件,通过仿真构件组合的模式可以有效地减少仿真系统新代码数量、缩短开发周期,增强仿真系统的适应性、可重用性[3]。本文下面主要对仿真构件的特征描述与实现结构进行相关的分析与研究。

1 仿真构件的模型分析

仿真构件模型是为了仿真构件的实现、文档化和部署而建立的标准。仿真构件模型标准包括可重用的构件化模型描述规范和构件接口规范,是构件化仿真系统必须具备的基本元素。保证仿真系统中构件具有一致的语义和语法描述规范,特别是仿真构件的接口定义,使得仿真构件之间以及仿真构件与系统之间能够实现良好的互操作性,也是仿真构件实现可重用性和互操作性的基础。

在软件工程领域,构件模型主要包括COM/COM+ /.NET、CORBA以及EJB。但是,这些构件技术没有指定统一的标准规范,并不是天然适合于仿真系统开发的。尽管仿真构件是属于软件构件中的一种,但它与通常的软件工程构件,如基于Web服务的构件、商务构件等有不同之处[4,5]。

基于Web服务的构件借助Web方便地提供和使用服务,通过定义WSDL(Web服务描述语言)对在Web领域内的通信协议和消息格式进行标准化,提供一个更好、没有语义歧义的服务并支持服务或构件的重用。但是,仿真构件只能在特定的仿真环境中运行,这是由于约束的限制,比如仿真构件的有效性限制了仿真构件的应用范围[6]。

商务构件的目的是提高商务过程的支持能力,其软件系统大多是信息系统。但仿真构件关注点与之不同,仿真构件更关注仿真过程中事件的出现和时间的约束,以及对客观世界功能的简化等。软件工程的构件与仿真构件还有一个重要的差别是互操作的接口。软件构件更关注接口的语法层,如接口名、接口的参数定义等。仿真构件除了满足一定的语法层接口,还必须要求严格一致的语义层接口,仿真系统之间的互操作必须遵循公共的协议信息接口。

尽管软件构件模型并不是天然适合仿真构件模型,但是软件构件模型已经具有广泛的应用市场和比较成熟的技术支撑,并且相对简单易用,而单独为仿真应用创建一种仿真模型规范并要获得广泛的应用并不现实。因此,比较实际的做法就是将仿真系统中与仿真相关部分和与仿真无关部分分离开,与仿真无关部分完全可以采用软件构件模型进行开发,而与仿真相关部分则可以应用比较成熟的仿真框架技术。例如,软件构件模型可以采用CORBA,仿真框架技术可以采用HLA,结合两者则可构成一个非常可行的构件化开发模式,如图1所示。在这种开发模式下,将仿真联邦分解成相对独立的CORBA构件,各个构件能够独立开发,提高了开发效率,同时使得仿真系统具有很好的扩展、可重用性。

2 仿真构件的元数据描述

元数据是保证仿真构件顺利重用的重要信息,它不仅有助于模型开发者和使用者理解仿真构件,而且有助于在资源库中搜索、选择和重用仿真构件[7]。元数据描述仿真构件模型的基本特征,包括了用于创建、集成、运行和测试仿真构件的相关信息。构件开发者在仿真构件中附加元数据,使得构件使用者在集成构件时可以获取更多接口信息,从而增强仿真构件的可操作性和可组合性。下面列出仿真构件几个关键的元数据项:

(1) 仿真构件的基本信息:包括仿真构件ID、名称、功能、版本、作者、创建时间、修改时间;

(2) 仿真构件的开发信息:包括仿真构件的开发语言、开发平台、开发操作系统;

(3) 仿真构件的应用信息:包括仿真构件应用领域、应用操作系统;

(4) 仿真构件的存储信息:包括仿真构件的文件名、文件属性、存储路径;

(5) 仿真构件的接口信息:包括仿真构件接口个数、各个接口的描述信息以及接口方法的详细信息。

当然,仿真构件的元数据不止以上几个,比如构件的VV&A信息、使用历史等元数据,甚至还可以允许构件开发者扩展自己的元数据定义。有了规范良好的仿真构件元数据,模型开发者可以方便地搜索、使用已有的仿真构件,同时给仿真构件使用者更加透明的构件信息,提高了构件的重用程度。

在进行仿真系统的构件设计时,如果将元数据信息直接嵌入到仿真构件之中,不但增加了构件开发的工作量,也可能引入错误代码;同时构件使用方对元数据的获取也不方便,依赖于开发方提供的文档性说明,不利于集成工作的有效进行。较好的做法是以配置文件的方式提供元数据信息,而且这种配置文件应该以一种标准化的格式提供,这样能更适用于不同的仿真环境。XML是当前被广泛应用的标准化文本格式,并有较多工具支持XML文件的自动创建和修改。因此,以XML的格式提供构件的元数据是比较好的做法。

如图2所示,给出了雷达对抗仿真系统中信号处理构件元数据的XML表示。通过XML的解析器(如VC下的MSXML),构件使用方可以很方便的从XML中导出元数据,提取出所需要的接口信息进行仿真构件的组装。

3 仿真构件的实现结构

在实现上,仿真构件主要包括三大部分:模型描述文件、模型数据文件以及代码执行体,各部分功能如下:

(1) 模型描述文件:主要用来定义仿真构件的静态结构,描述仿真构件的动态行为能力,如元数据描述。

(2) 模型数据文件:主要用来提供仿真构件运行过程中所需的数据,如初始化脚本,根据模型描述文件为构件内仿真对象实例提供初始化数据,比如创建的实例个数和该实例相应属性的默认值等。

(3) 代码执行体:是仿真构件特定于某种平台和编程语言的代码实现,通过编码化实现模型对数据的操作,完成仿真模型具体的服务功能,这是仿真模型设计与开发的最后一步,只有这样才能最终体现仿真构件的价值。

如图3所示,模型描述文件定义了模型结构,模型数据文件描述了构件运行中所需要的数据,代码执行体实现了模型操作,即仿真服务的调用。因此,模型结构和模型操作经过设计和开发后,通常不会随意改变;而模型数据在不同的仿真运行中通常发生变化,但必须在模型结构的基础上进行,作为模型操作的输入。这种结构使模型数据的变化不会影响到模型结构和模型操作,提高了数据处理的灵活性和仿真模型的重用性。

4 仿真构件自动化工具设计与实现

仿真构件自动化工具是为了从实现上更好的支持构件化仿真模型的快速开发,减少重复劳动,提仿真软件的质量,主要包括仿真构件开发平台与仿真构件组装平台两部分。

1) 仿真构件开发平台

仿真构件开发平台实现仿真构件代码框架的自动生成。根据构件模型的组成(过程、实体、交互),分别为其定义一组用于实现的代码模板集。模板由控制逻辑和静态文本组成,由于模板中的文本可根据需要定制,因此具有较高的灵活性。利用XML强大的信息交换能力和开放性标准,制定相应的处理过程,可根据仿真构件模型的描述从模板中抽取所需要的数据产生代码。主要需要实现的功能如下:

(1) 仿真构件特征描述:描述仿真构件的特征,主要包括构件的名称、接口名称、接口包含的方法以及构件相关的元数据描述,描述信息保存在XML格式的文档中;

(2) 仿真构件代码框架生成:利用仿真构件特征描述文件生成对应的代码框架;

(3) 仿真构件代码浏览与编辑:在生成的代码框架的基础上可以进行代码的查看和编辑,实现仿真构件的相关接口方法;

(4) 仿真构件代码编译:编译生成或编辑的构件代码,生成对应的构件文件,一般以dll形式保存。

基于上述分析的功能要求,实现了一个仿真构件开发平台,利用该工具生成仿真构件代码框架,其运行过程为:

(1) 进行仿真构件基本特征描述,并保存为对应的XML文件,该部分由构件模型向导生成,如图4所示。

(2) 利用生成的XML文件自动生成对应的仿真构件代码框架,并能够进行浏览和编辑,如图5所示。

(3) 编译编辑好的仿真构件代码,测试编码的正确性,并生成对应的构件执行文件。

2) 仿真构件组装平台

仿真构件组装平台给仿真构件的使用者提供一个进行构件组装的环境,用来简化仿真构件的组装操作,也可以称作仿真构件的装配车间。仿真构件组装平台需要实现的功能主要包括:

(1) 仿真构件维护查询:搜索并列出构建仿真系统需要的仿真构件集,在仿真构件组装过程中对这些满足需求的构件集进行管理;

(2) 组装框架维护查询:对已有的仿真系统组装框架进行维护,并提供当前可用的框架给构件组装者选择;

(3) 组装结构描述:描述可视化组装环境中已配置的仿真系统框架结构和仿真构件信息;

(4) 组装结构描述的XML转化:利用XML的标准实现组装结构的描述,并生成XML文件;

(5) XML文件管理:进行XML文件的存储和载入等管理;

(6) 代码生成:将XML文件描述的组装信息转化为代码;

(7) 编译运行:编译生成代码,并提供仿真运行环境。

基于上述分析的功能要求,实现了一个仿真构件的组装平台,如图6所示。在该平台运行界面的左边区域有两个列表用来实现仿真构件的管理和维护;中间区域为仿真构件的可视化组装区域,下方显示的是当前选择的仿真构件的基本信息;右边区域的列表显示当前的组装配置信息,上方显示的是组装的基本信息。实现仿真构件组装的主要操作过程为:首先从构架库中选择仿真构件组装框架,然后从构件库中选择对应的仿真构件进行配置,并填写组装的基本信息,全部配置完成之后通过保存选项将配置信息保存为XML文件,最后在编程环境中导入XML文件,生成相关代码进行编译即可以生成动态链接库或可执行程序。

5 结 语

本文对仿真构件进行了较为全面的分析与研究,同时开发了仿真构件开发工具,实现了仿真构件代码框架的自动生成与仿真构件组装的自动化,有效地提高了仿真构件开发的自动化程度,减少了工作量,对于促进构件技术在仿真系统中的应用具有一定的现实意义。构件化的仿真系统开发建立在仿真构件之上,通过组合仿真构件灵活实现仿真系统,能有效地提高仿真系统的可扩展、可重用等特性,同时也符合了标准化建模仿真的思想,必将成为未来仿真系统开发的主流方向之一。

摘要:为提高仿真系统的可扩展性、适应性、可重用性和互操作性等特性,将软件构件技术引入到仿真系统的开发中,对仿真模型构件进行深入的分析与研究,主要包括仿真构件的模型分析、仿真构件的元数据描述、仿真构件的实现结构分析。最后,设计并开发了仿真构件自动化开发工具,实现了仿真构件的代码框架自动生成与仿真构件的自动化组装。

关键词:仿真,构件,元数据,代码生成

参考文献

[1]杨锋,李群,等.体系对抗仿真跨层次建模方法论[J].系统仿真学报,2005,17(2):270-274.

[2]程相东,肖明清.基于MDA的分布式建模仿真框架[J].计算机工程,2010,36(15):268-270.

[3]卿杜政,李伯虎,孙磊,等.基于构件的一体化建模仿真环境(CISE)研究[J].系统仿真学报,2008,20(4):900-904.

[4]李海,郭彬彬.基于COM服务器构件的HLA集成技术[J].北京理工大学学报,2006,26(2):162-165.

[5]潘慧芳,周兴社,於志文.CORBA构件模型综述[J].计算机应用研究,2005,22(5):14-15.

[6]张建伟,李辉,游志远.用CORBA实现实时分布式仿真系统[J].四川大学学报:自然科学版,2003,40(1):168-170.

构件化体系结构 篇7

21世纪的今天, 科技的进步推动了计算机技术的蓬勃发展, 同时就当前操作系统设计的发展趋势而言, 逐渐的趋向于构建化的模型设计, 并将内核的设计加以实现。操作系统的内核在某种程度上是对系统编程接口的一种定义, 同时内核的优化设计对于计算机系统的健壮性和效率有着一定的决定性作用。因此本文对构件化操作系统的内核设计以及其发展趋势进行研究分析有一定的经济价值和理论基础。

1 构件化操作系统内核的结构和操作系统

1.1 构件化操作系统内核的结构

一般而言, 当前构件化操作系统的内核结构主要是对进程线程模型加以采用, 这种内核主要有单内核和微内核两种主要的结构。

所谓的单内核结构对于效率有着一定的重视性, 这种单内核结构在对模块化设计方式采用的过程中, 往往依据于各种各样的功能, 进而将不同的模块加以划分, 其模块之间并借助于直接的函数进行调用。就其实质性而言, 单内核结构有着相对较高的效率, 当时往往有着相对不足的灵活性, 在实际的裁剪以及维护中有着相对较大的难度。

而微内核模型对于系统的结构性有着一定的重视性, 主要是将大量内核功能借助于一种用户态服务进程的一种方式完成, 这种微内核结构不仅仅将各个模块之间的耦合度降低。同时也将系统的灵活度逐渐提高, 但是这种微内核模型结构同样也有着一定的局限性, 相对频繁的模块之间的通信进而将系统的效率显著降低。

构件化操作系统内核主要是各个组成部分依据于构件的形式加以实现, 其构建在某种程度上是一种相对独立的部署单元, 其接口有着一定的功能性和明确性, 对于构件的独立性有着一定的强调性。

1.2 构件化操作系统内核的模型

构件化操作系统内核模型不同于传统的存储抽象和进程/线程模型, 这种构件化操作系统内核的一些服务体/执行流模型主要是将一种整体上的操作系统中的计算功能和存储功能逐渐的将其分为一种执行流和服务体, 实现两者之间的一种相互分离。

所谓的执行流在某种程度上主要是物理CPU连续执行极其指令的一种重要的轨迹, 操作系统中的任一CPU将会提供一个执行流, 并不和特定的地址空间进行绑定, 对于存储模型有着一定的独立性。而服务体主要是系统的一种基本的组成单位, 不仅仅有着一定的通信功能和地址空间, 同时对也能将某种功能的一种代码和其数据的集合实现。其系统中有存储管理功能模块和IO管理模块, 是构件的一种典型的表现形式, 地址空间有着相互隔离的作用。

1.3 构件化操作系统内核的操作系统

构件化操作系统内核的操作系统中, 主要有三个不同的层次, 分别为基本机制层、系统服务层以及运行环境层。首先就基本机制层而言, 是构件化操作系统内核的核心服务体, 主要实现服务体和端口的管理, 并实现服务体之间的通信以及调度等。而系统服务层主要是一种对象管理服务体, 并做好物理内存管理、虚拟内存管理、驱动管理以及设备管理等。

2 构件化操作系统的内核设计

2.1 构件化操作系统内核中服务体和端口管理机制设计

构件化操作系统在对各个构件处理控制的过程中, 更要做好其服务体和各个端口之间的设计。一般而言, 核心服务体主要是对全局双向链表对服务体数据结构管理的一种维护, 任何一个服务体的端口相对来说较多, 所提供的端口主要是服务于其接口。

任何一个端口都有多个小端口, 同时小端口在某种程度上将会有一个进入过程。核心服务体所有系统对象进行组织成为一个端口, 并将相应的消息发送, 当服务体端口创建时, 是一种静态确定的状态, 其小端口在实际的运行过程中处于一种动态的变化, 一旦执行流在某一端口进入时, 将会生成一种小端口。

端口授权机制作为端口访问的重要途径, 在对端口进行消息发送时, 就要保证有着端口的授权, 当服务体发送消息的过程中, 核心服务体将会借助于发送端将其使用的端口逐渐的像目标服务体端口逐渐转换, 一旦其进入目标服务体执行前, 进而逐渐的实现该端口在目标服务体之间的端口授权。端口在实际的变化过程中, 由于每个服务体的结构将会存在一张端口授权表, 主要包括空闲索引位图, 是对可分配的端口授权加以决定, 同时也存在授权映射表和反向授权映射表两个部分。核心服务体实现过程中, 借助于AMT实现其端口的转换, 并将一种特殊的端口授权加以提供, 也即是一次发送权, 一旦消息发送之后, 将会删除其一次发送权。

2.2 构件化操作系统内核服务体间通信机制设计

构件化操作系统内核服务中通信机制设计的过程中, 主要是将各个构件之间的交互加以实现, 消息头部的主要字段有消息号、标志、描述项数目、目标端口授权以及应答端口授权。消息号主要是将消息ID发送给目标, 其标志主要是一些消息的类型。消息描述区在对消息携带的数据进行描述的过程中, 主要有联机数据、端口授权传递以及脱机数据三种。端口授权传递的过程中主要是借助于传递的数据实现发送方端口授权的一种传递。消息推动同步通信过程中, 首先实现消息的发送, 并接受一定的等待应答, 通过一定的调度运行, 进而实现的一种应答过程。

通信机制设计的过程中, 主要有三种消息通信的方式, 也即是同步-连续方式、同步-分离方式以及异步方式三种。同步连续方式主要是将目标服务体对源服务体实现的一种应答, 一旦消息发送之后, 其执行流将会进入目标服务体中, 并在源服务体中返回。同步-分离方式在某种程度上并不需要将目标服务体实现对源服务体的一种应答, 执行流不到消息发送点时, 原有的小端口将会被释放, 进而实现消息的处理。异步方式主要是消息放松之后, 并执行流在当前的服务体内进行执行的过程, 并使得消息被异步处理。

2.3 构件化操作系统内核调度机制设计

构件化操作系统内核调度机制设计的过程中, 主要是对并发/并行事务加以支持, 其执行对象对并发/并行执行的多个事务加以表示, 任何一个执行对象都有着一定的优先级, 这种核心服务体主要是对优先级的时间片轮转调度算法加以采用。

这种调度机制不同于传统操作系统中的构件, 其构件往往有着一定的独立性, 尤其是在对象和端口统一的一种设计原则中, 执行的对象同样也是一种特殊的端口, 一旦创建执行对象的过程中, 将会对一个端口到核心服务体进行注册。

2.4 构件化操作系统内核同步/互斥机制设计

同步/互斥机制主要是提供信号量对象在某种程度上对同步/互斥的一种实现, 在正在执行事务的过程中可以发出一定的请求或者是将信号量加以释放, 其信号量对象实现过程往往借助于端口, 其核心服务躯体可操作的一些信号量对象同样也有着一定的明确性。

2.5 构件化操作系统内核中断/异常机制设计

构件化操作系统内核中断/异常机制设计的过程中, 一旦发生中断, 竟会捕获该服务体映射的中断处理桩代码, 进而实现对对事务的一种执行, 执行过程中对切换操作执行加以确保, 其消息中主要有中断码和一些寄存器的相关内容, 其中断处理的过程如图1所示。

3 构件化操作系统内核系统测试和发展趋势

3.1 系统测试

构件化操作系统内核设计过程中, 同样也有着一定的安全可靠性的基础保障, 进而有着一定的特权级别管理, 对各种构件以及系统构件的统一性加以保障, 并保证系统有着交互性的高效性。在对核心服务体效率进行测评时, 就要做好通信机制、中断机制以及调度机制部分之间的测试。

通信机制测试的过程中, 借助于Echo服务器, 并对三中服务体的通信方式加以选择, 结果表明, 异步通信和进程间的通信往往有着大致相同的通信时间, 两者有着一致的语义。而同步通信过程和传统的进程间通信往往有着相对较大的差异, 不仅仅将调度延时以及消息拷贝延时减少, 同时其效率相对来说明显高于传统的异步进程间通信。

终端机制和特权级切换的过程中, 服务体间通行实现中断和异常机制优化之后, 并没有带来相对较大的开销。执行对象和集成调度的过程中, Linux运行环境的测试时间在某种程度上相对高于Linux操作系统, 进而将执行对象调度机制的有效性真实性反映。

3.2 发展趋势

构件化操作系统内核在实际的发展过程中, 一方面将会借助于自动化配置逐渐的将系统意志的效率提高, 进而实现性的内核代码直接生成, 并附加一定的详细报告, 对于新内核的结构有着一定的描述。一方面将会面向网络化、智能化以及信息化更快更好的发展着, 进而将崭新的工作和管理平台加以展现, 实现对家里所有的家电的一种远程控制和管理。另一方面将会面向构建的体系结构更好的发展着, 其网络通信协议更加的标准统一性。

4 结语

总而言之, 构件化操作系统内核中的服务体执行流模型主要是分离系统的运行抽象和存储抽象, 并保证构件有着一定的独立性, 各个通信机制通信往往有着一定的高效性能够, 通过对其进行了综合性的测试, 进而总结出构件化操作系统内核设计有着一定的有效性和可行性, 未来的构件化操作系统内核将会有着更加全面的发展。

摘要:本文对构件化操作系统内核设计以及发展趋势进行研究时, 首先分析了构件化操作系统内核的基本结构、模型以及操作系统, 其次具体分析了构件化操作系统的内核设计, 最后总结了构件化操作系统内核的开发利用和发展趋势。

关键词:构件化操作系统,结构,内核设计,发展趋势

参考文献

[1]崔亚斌.硬件实时操作系统内核可伸缩性与性能优化技术研究[D].浙江大学, 2014.

[2]徐正锦.基于XML-Glue的可扩展脚本框架模型设计[J].计算机时代, 2011, (11) :7-8, 12.

上一篇:相似理论下一篇:大学生学习动力