电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

构件软件开发范文

来源:火烈鸟作者:开心麻花2025-11-191

构件软件开发范文(精选11篇)

构件软件开发 第1篇

2010年6月, 我作为某市电子政务管理中心的一名工程师, 组织软件公司和网络公司开发我市的OA系统, 在本系统的开发中, 我负责完成整个系统的设计和项目管理的工作。在OA系统开发中, 我们使用了基于构件的开发技术。大量复用构件是有效地使用基于构件的开发技术的前提, 获取构件的途径有很多种:

(1) 在现有构件库中提取符合要求的构件, 直接使用或做适当修改。

(2) 从市场上购买现成的商业构件。

(3) 开发新的符合要求的构件。

1 在现有构件库中提取符合要求的构件, 直接使用或做适当修改

由于开发我市OA系统的软件公司对Microsoft的.net比较熟悉, 对.net下的开发语言也比较熟悉, 且熟悉com构件技术, 所以用C++.net编写了一些常用的构件, 经过测试后, 写成DLL文件, 同时注册成COM构件, 存于服务器中, 形成构件库, 供各构件调用。COM构件既可以被插入动态web页面中, 也可以在网络或单机环境的.net中使用。构件有若干个对外接口, 可以根据不同的需求, 选择不同的接口。构件之间是彼此独立的, 当需求发生变化时, 可能只需要更改个别COM构件, 但不会影响到其它构件的继续使用。同一构件可以在不同的应用环境中重复使用。

在该系统的开发中, 我们主要获取了如下一些构件库中的COM构件:

(1) 身份认证构件USECHECK.DLL, 它主要完成两个功能:一是身份认证, 主要提供用户登录时验明身份, 保证系统的安全性。二是根据用户的输入的用户名确定该用户的类别, 如它是普通用户还是系统管理员。因此, 该构件具有两个接口, 一个接口连接普通用户平台, 另一个接口连接系统管理员平台。

(2) 查询构件QUERY.DLL, 它完成的功能是查询相关信息。该构件具有两个接口, 一个是连接所查询的页面, 另一个是连接无此信息的页面。

(3) 连接数据库构件CONECTOR.DLL, 它完成一个功能就是连接所需的数据库。该构件有一个接口, 就是连接后台数据库。

此外, 还获取了错误处理构件ERROR.DLL;删除构件DELETE.DLL;添加构件ADD.DLL;修改构件UPDATE.DLL;异常管理ABNORMALl.DLL等构件, 由于篇幅有限, 这里就不再一一详细介绍了。

2 从市场上购买现成的商业构件

在OA系统中, 需要使用图书光盘点播和视频点播功能, 然而这些功能的构件在我们的构件库中没有, 如果让开发人员去编写, 我们初步的算了一下, 所花费的成本, 大于购买的成本, 况且开发还需要浪费时间, 所以我决定到市场上购买现成的商业构件。由于在开发OA系统中我们使用的构件都是COM构件, 为了让构件之间可以很容易的组装, 我们在购买视频点播构件时, 也考虑了购买COM标准的构件, 并把新买来的商业构件装入构件库中。

3 开发新的符合要求的构件

造成重复开发;还有就是对构件不理解, 无法很好的使用构件库里的构件。这些问题的产生都是程序员对在OA系统的开发过程中, 我们发现了一些新开发的控件可能以后经常会用到, 如:数据批量上传控件、日志控件、短讯控件、数据维护控件、支持翻页的数据绑定控件等等。我们把这些控件经过测试后, 写成DLL文件, 同时注册成COM构件, 存入构件库中, 供各构件调用。

当多个构件获取后就要将这些构件进行组装, 在构件组装过程中, 我们采用了基于功能的组装技术和面向对象的组装技术相结合。根据系统需求, 把构件库中提取的符合要求的构件、从市场上购买的现成的商业构件和当前开发系统中的软件元素相连接, 最终组装成新的目标软件。

在开发过程中我们也遇到了一些问题, 主要是有些程序员不知道构件库里已有某个构件, 现有构件不够了解造成的, 今后应该不定期的进行已有构件知识培训, 加强程序员对已有构件的熟悉程度。并且应该开发一个构件管理系统, 对已有构件进行描述、分类与组织。

在该项目的开发中, 采用了基于构件的开发技术。比起采用传统的开发技术, 开发周期明显的缩短了, 大大降低了开发成本, 提高了软件质量。目前, 该系统已经上线并顺利运行了两年多, 达到了开发的目标, 得到了市领导的一致好评!

参考文献

[1]杨芙清.软件复用及相关技术[J].计算机科学, 1999, 26 (5) .

[2]陈菲, 刘克勤.计算机软件复用技术研究[J].现代电力, 2002, 19 (6) .

[3]武悦, 廖哓莘.网络远程教学的XML实现[J].计算机与现代化, 2002, (4) :40-41.

[4]朱俊波, 史素娟.浅议软件开发中的复用技术[J].福建电脑, 2008, (02) .

[5]杨敬君.基于构件的软件复用技术研究与应用实践[D].大连海事大学, 2009.

[6]仉新刚.浅谈软件复用的理论与技术[J].科技信息 (学术研究) , 2008, (13) .

[7]张友生.系统分析师教程[M].北京:清华大学出版社, 2010, 2.

[8]余雪丽, 须毓孝, 李林峰等.软件体系结构及实例分析[M].北京:科学出版社, 2004, 8.

基于插件及构件技术的软件工程 第2篇

今天我们上了王斌老师的课,王老师对基于插件及构件技术的软件工程做了详细的讲解,使我对这个领域也有了一些粗浅的认识,有了一些自己的理解。

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

而软件体系结构则是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。

面向构件的网构软件研究 第3篇

关键词 面向构件;网构软件;研究

中图分类号 TP 文献标识码 A 文章编号 1673-9671-(2010)121-0032-01

自从1969年ARPANET(阿帕网络,Advanced Research Project Agency Network)出现之后,计算机网络的发展日趋加快,在网络时代,出现了网构软件这一新的名词。

1 网构软件的定义和特点

1)网构软件的定义。通常,网构软件(Internetware)是传统软件在分布式的网络环境下的扩展,是在动态、开放、多变的互联网络时代的具有自主性、演化性、协同性、多态性和反应性等许多个性特征的软件。

2)网构软件的特点。在互联网高速发展的新形势下,软件开发人员面临着分布式的动态、多变和开放的网络环境。相对于传统的集中式的封闭环境下的软件来说,网构软件具有许多独有的特点。

第一,自主性。就是分布在所有的节点的网构软件在构件的开发、运行和管理等所有层次都是大体上相互独立的。而传统软件中的各个实体之间具有非常强的依赖性。

第二,协同性。就是所有的网构软件节点之间能够在动态的网络环境中实现相互协作,进行协同工作。可以采取静态连接和动态连接的协同方法。在连接过程中,对于许多事件的发生,可以进行智能地处理,例如,转换不同的协议、控制异步同步通信以及处理安全性和可靠性等等。而传统软件仅仅采用静态的连接。

第三,反应性。就是网构软件可以洞察周围环境的出现的任何改变,随时对于其自身的结构和功能进行改变,从而和用户的需要相适应。而传统软件不能够随时作出变动。

第四,演化性。就是在用户的需要和网络环境发生变动时,网构软件可以实现在线演化,来适应外界环境的变化。

第五,多态性。就是网构软件可以在运行时,结合所有用户的需要,灵活性的提供具有相同的功能和不同的质量属性的服务,能够为用户提供个性化的服务。而传统软件的灵活性非常低。

2 面向构件的网构软件

1)构件的定义。构件是随着面向对象的软件开发的发展而出现的,它是能够独立交付的软件单元,其内部封装了设计和实现的内容,使用接口和其它构件组装形成具有更强大的功能的实体。构件具有动态连接技术和二进制的封装技术等许多特点,可以和现存的系统进行构件的动态更换和升级。为了能够实现数据的交换和信息的传递,程序员不需知道构件的内部构造,而仅仅知道构件提供的接口就可以了。更进一步来说,不同计算机之间的构件也是可以互相调用的。在构件的选择和开发的过程中,应该按照构件的规约进行。

2)网构软件的开发和传统软件的开发的不同之处。根据网构软件的特点,可以发现,相对于传统软件来说,网构软件具有许多优点。传统软件开发方法并不是非常适合网构软件这种网络时代的软件形态的开发。传统软件在相对静态、封闭、稳定的平台下进行开发,大体上主要使用自顶向下的开发方法,使整个系统开发过程都得到了有序的控制。而网构软件的开发环境主要都是动态、多变和开放的网络运行环境,软件的组成元素大体上都是现存的构件,网络平台为开发者提供了一个资源丰富的构件库。网构软件的开发过程就是将这些“无序”的构件根据软件的需求组合成“有序”的软件系统。经过一段时间后,网构软件的反应性和演化性使软件由原本“有序”再次变成“无序”,使开发的过程周而复始、反复进行。

通常情况下,传统软件的开发过程是有序的静态的执行分析、设计、编码、测试和维护这一系列的步骤。而对于网构软件的开发过程来说,是没有顺序的动态的。传统软件和网构软件在软件的维护这一过程存在非常大的不同之处,传统软件开发不重视软件的维护,而网构软件的开发却对于软件的维护工作高度重视。

3)一种基于信任机制的网构软件的构件选择模型。出现了网构软件这一新的名词之后,国内外众多的专家都对网构软件的构件选择模型作出了许多的工作,然而,对于为了构造网构软件而进行合适构件的选择的研究不多。笔者希望进行网构软件的构造可以通过在大量的软件构件中迅速地选择可信的构件,一方面要符合功能需求,另一方面,也要符合一些非功能需求,使网构软件的可信性得到大大的增强。

构件实体对于网构软件所独具的优点可以进行主动的协作,同时,在外界的网络环境或者用户的需求出现改变的时候,可以及时调整和演化,提出了一种基于信任机制的网构软件的构件选择模型,使网构软件的构件选择的速度得到大幅度的提高。采取构件描述的形式,向用户提供构件的接口、环境、功能、各非功能属性信息等,通过这种方式,用户就能够仅仅按照构件描述和构件的可信性来进行构件的快速选择。如果对于构件的描述信息使用一个信任值来进行表达,是不适应网构软件对构件性能、安全性等非功能属性的可信要求的,应该通过许多信任值的使用来评价构件的功能、安全性能等各个属性项描述信息,从而使信任的适用性得到大大的增强。

3 结束语

在当今的互联网时代下,网构软件具有自主性、演化性、协同性、多态性和反应性等有别于传统软件的特性。本文结合软件开发的实践,对于面向构件的网构软件进行了粗略的探讨。通过本文的研究,得到了一定的成果,但是,由于受到笔者的水平的限制以及研究时间和软件开发实践等多种因素的限制,本文的研究也存在一些有待完善之处,对于面向构件的网构软件的研究工作并不能仅仅止步于此,仍然需要下一步的继续深入研究,进行进一步的完善和提高。对于网构软件的研究,仍然还有很长的一段路程要走,是国内外相关的学者和专家们必须认真对待的问题。最后,希望本文能够抛砖引玉,以供读者参考,引起国内外众多专家和学者对于面向构件的网构软件的深入研究。

参考文献

[1]王璞巍,金芝,刘红岩.网构软件实体的功能描述及其发现[J].中国科学(F辑:信息科学),2009,12.

[2]张晓梅,张为群.一种基于信任机制的网构软件的构件选择方法研究[J].计算机科学,2010,02.

[3]周立,陈湘萍,黄罡,孙艳春,梅宏.支持协商的网构软件体系结构行为建模与验证[J].软件学报,2008,05.

[4]吴国全,魏峻,黄涛.基于非确定性推理的网构软件服务质量动态评估方法[J].软件学报,2008,05.

[5]吕建,陶先平,马晓星,胡昊,徐锋,曹春.基于Agent的网构软件模型研究[J].中国科学E辑,2005,12.

作者简介

基于构件的软件生产模型 第4篇

当前社会的信息化过程对软件需求的增长非常迅速, 但目前软件的开发与生产能力却相对不足, 这不仅造成许多急需的软件迟迟不能被开发出来, 而且形成了软件脱节现象。自20世纪60年代人们认识到软件危机并提出软件工程以来, 已经对软件开发问题进行了不懈的研究。近年来人们认识到, 要真正解决软件危机, 实现软件的工业化生产是惟一可行的途径[1]。

从软件工程的角度来看, 基于构件的软件工程CBSE (Component-BasedSoftware Engineering) 正能满足当前软件生产的这种需求。构件是软件系统的一个有用片段, 它可以与其它片段组装在一起形成一个更大的片段, 或是整个的解决方案。构件是可复用的软件组成成分, 可被用来构造其它软件。基于构件的软件工程的基本思想是:将软件分解为各个独立的构件, 这些构件与外部仅通过预先定义的接口进行通信, 这样把应用程序解决方案的很多部分的实现外包出去, 使软件的创建主要是通过构件的选择、评价和组装过程来取得。进而, 软件项目可以从一个以代码编写和错误修正为中心的过程转变为一个更为受控的组装过程[2]。本文以基于构件的软件工程理论为基础, 引入了可复用的软件构件模型, 在将该模型应用于上海市教委机关办公自动化系统的开发中取得了成功。为实现软件工业化生产、软件再工程进行了有益的探索。

1 构件技术

1.1 构 件

对于构件的定义, 目前没有确切统一的定义, 笔者倾向于采用在文献[3]中对构件的描述:构件可以简单地定义为构造块, 不同的软件系统能够由它们组装而成。它们经常设计为插接兼容的, 并且能够以尽可能多的方式进行组合, 使开发者获得最小的代码复制并最大化重用。

由此可见, 一般构件均包括对构件接口和构件实现两方面的描述, 即构件::=<构件接口, 构件实现>[4]。构件强调接口和实现的分离。其实现具有不透明性, 仅仅通过接口见之于其它构件。作为一个可独立发布的软件实体, 构件应具有复用的价值, 这样构件才能成为第三方部署和使用的单元。构件具有独立于第三方应用系统的生命周期, 其自身的演化不应影响使用它的第三方应用系统。最后, 构件模型负责构件之间的交互方式以及全局的或体系结构上的限制[5]。

构件的概念和面向对象中的对象概念有很多相似之处。对象通过将数据和在其上执行的操作进行封装, 以达到一定程度上的复用, 但对象在复用的过程中存在很多问题, 具体体现在:

(1) 由于对象对数据和操作进行了封装, 要对其进行复用, 就必须了解该对象的实现细节。这给对象的复用造成了很大障碍。

(2) 对象之间的集成是通过消息通信。在这种集成方式中, 对象之间的关系分散并固定在对象的实现中, 对象的组装缺乏灵活性。

(3) 由于对象继承关系和行为的重叠, 使得对象的替代性较差。用一个新的对象替代原有对象时可能会影响所有与其有继承关系的对象[6,6]。

而构件可以认为是一种包装对象实现的简便方法, 并且可以使它们组装成一个更大的软件系统。总的来说, 构件和对象的区别主要在于以下三个方面:

(1) 构件担当一个部署单元的作用, 它是基于构件模型的, 这种模型定义了符合这种模型的构件所要遵循的规则。

(2) 构件提供了对一个或多个对象实现的包装。

(3) 构件是一个组装单元, 它用于从很多独立创建的功能部分设计和构建系统, 每一个部分都潜在地使用一种面向对象语言或某种其它技术创建。

1.2 系统构件模型

按照分布计算体系结构的思想, 任何一个应用软件的构架均可划分为三种构造逻辑:一是界面表示逻辑, 用于覆盖与用户直接关联的前端应用;二是事务处理逻辑, 体现软件的核心处理功能;三是数据管理逻辑, 用于解决用户事务的数据交换和后端服务问题。每一种逻辑部件都可用特定功能的物理构件来实现。在系统设计中, 根据软件系统的层次性和功能性, 可以把系统垂直分割为多个子系统, 把每个子系统看作是一个复合构件。这些复合构件负责特定的事务处理, 提供高层次和大粒度的重用支持。每个复合构件由多个具有不同功能和不同抽象水平的构件构成。最终将这些复合构件按照功能层次细化为粒度更小、功能正交的原子构件, 对原子构件进行单独开发。待开发完毕, 将原子构件按照功能组装成需要的复合构件, 进而完成系统的开发。既降低了构件的设计难度和实现代价, 又提高了构件的重用性能和管理水平。

在办公自动化系统中, 根据功能将整个系统划分为收文管理、发文管理、督办管理、公共信息管理、会务管理和日程管理等六个子系统。各个子系统再细分成粒度更小的复合构件。各个复合构件可能由复合构件或位于各层的不同功能的原子构件组装而成。基于上述想法, 可以对复合构件做下面的描述:

Complex Component:=<Specification, Interface Mapping, Component SA>

其中, Specification为构件规范, 是对外可见的部分, 由构件接口描述, 包括构件提供的接口和所需的接口两个方面。Interface mapping为接口映射, 表示复合构件的构件规范, 即接口定义向组成该复合构件的成员构件的接口定义的映射。Component SA即为复合构件的软件体系结构, 表示该复合构件中的成员构件及成员构件间的交互。根据上述描述及D. Garlan和M. Shaw对软件体系结构的定义, 将现有的构件抽象为构件模型, 描述为:

其中, Specification是构件的对外可见的部分, 由构件接口 (Interface) 描述, 包括构件提供的接口 (IP) 和需要的接口 (IR) 两个方面。Interface Mapping表示接口为成员构件的接口定义的映射, 这些成员构件组成该复合构件 (Complex Component) 。连接件 (Connector) 可以看作是一种特殊的构件, 它可以使接口不匹配的两个构件进行连接操作。Component SA表示该复合构件中的成员构件及成员构件间的交互。

2 系统实现

2.1 构件接口的实现

根据构件模型, 构件由构件规范和构件实现两部分组成。构件规范由构件接口描述, 而构件接口包括构件对外提供的接口和构件需要的外部接口。面向对象技术为构件的对外接口提供了很好的支持, 但构件所需的外部接口部分却隐藏在实现细节中, 难以根据接口处的信息定义构件的实现。为了解决构件所需外部接口对外不可见的问题, 采用依赖注入技术。依赖注入技术起源于轻量级构件容器提供的控制反转机制IoC (Inversion of Control) , 即由容器定位插件的具体实现。依赖注入技术用部署描述文件描述构件之间的依赖关系, 在运行时由容器按部署描述文件动态地将被调用构件注入到调用构件之中[7]。所以, 可以利用依赖注入技术在部署描述文件中对构件所需外部接口进行描述, 使其对外可见并与构件实现细节分离, 进一步降低构件之间的耦合性。

2.2 构件模型的应用

在描述构件模型的基础上, 采用JDev框架, 结合J2EE技术实现了一个办公自动化OA系统 (如前文所述) 。下面以其中的领导日程管理模块为例, 介绍构件模型在软件开发中的应用。

可以把整个领导日程管理模块视为一个复合构件。将该复合构件分为表示层、控制层、业务逻辑层和数据访问层。每一层均为其上一层提供服务并作为其下一层的客户端。表示层包括原子构件LeaderSchedulePage, 控制层包括原子构件LeaderScheduleAction, 业务层包括原子构件LeaderScheduleBean, 数据访问层包括原子构件LeaderScheduleDAO。于是可以用复合构件模型对领导日程管理模块进行描述。其中一部分描述如下:

由此可见, 每个原子构件都为其它原子构件提供接口, 而领导日程管理复合构件对外提供了管理领导日程的接口。

2.3 构件模型的实现

下面基于JDev框架给出上面描述的用户登录模块的实现。其中每一个原子构件均要实现其对外提供的接口并利用IoC模式在配置描述文件中描述其所需的外部接口。以原子构件LeaderScheduleDAO为例。LeaderScheduleDAO的接口如下:

其中:原子构件LeaderScheduleDao所需的外部接口, 即构件SqlMapProgramDao对外提供的接口, 可以在需要时利用IoC模式由容器插入到LeaderScheduleDao中。

在原子构件均已得到实现的条件下, 同样可以利用IoC模式对原子构件进行组装, 组装过程可以在配置描述文件中进行描述如下:

(1) 组装LeaderSchedulePage构件和LeaderScheduleAction构件:

这样, 复合构件LeaderSchedule就组装好了, 只要LeaderSchedule所需的外部接口得到提供, 复合构件LeaderSchedule的功能就可以利用JDev框架实现。

3 结 论

提出了基于可复用软构件的软件生产模型。针对OA系统的软件体系结构, 采用自顶向下的软件设计方法, 将整个软件系统的每个子系统看作是一个复合构件, 该复合构件又由其它的复合构件和原子构件组装而成。进而将软件系统逐步分解, 递归地对其进行描述、开发。采用自底向上的构件组装技术[8], 首先对所有的原子构件进行描述, 之后在软件体系结构的层次上对它们进行组装, 最后构成一个完整的软件系统。构件在接口处进行集成, 并在其内部实现细节不被了解的条件下得到复用, 大大提高了构件的复用程度。为降低软件系统开发的复杂性, 进行并行和分布式开发, 减少维护费用等奠定了技术上的基础。

参考文献

[1]唐勇敏.以构件为核心的软件工业化的生产方式[J].计算机应用, 2006, 26 (8) :225.

[2]ALAN W B.Large-scale, component-based development[M].USA:Prentice Hall PTR, 2000:59。

[3]Krzyszof Czameck, Ulrich Eisenecker.Generative programming:meth-ods, tools, and applications[M].Boston, USA:Addison Wesley, 2000:141。

[6]张世琨, 张文娟, 常欣, 等.基于软件体系结构的可复用构件制作和组装[J].软件学报, 2001, 12 (9) :1351-1359.

[5]宋旭东, 王毅, 刘晓冰, 等.基于构件技术的综合决策支持系统[J].计算机工程, 2008, 34 (14) :269.

[6]吕明琪, 薛锦云, 胡启敏.基于软件体系结构的可复用构件模型[J].计算机应用研究, 2008, 25 (1) :120.

[7]Johnson R, Hoeller J, Arendsen A.Spring:java/j2ee Appli-cationFramework[EB/OL]. (2004) .http://www.springframework.org/.

构件软件开发 第5篇

嵌入式计算系统已经广泛的应用于生活中的各个领域,如:交通、能源、医疗、控制、通信、军事等。近年来随着计算机硬件性能的不断提高,嵌入式系统中软件的规模和复杂性不断增加,使软件对整个系统的影响逐渐占据了统治地位。关键系统中的嵌入式软件失效将会导致生命与财产的重大损失。因此,嵌入式软件通常具有极高的功能可靠性、严格的实时性等要求,如何保证系统同时满足给定的功能和非功能需求已成为当前高可信嵌入式计算领域中的研究热点。目前,工业界已有一些比较有效的嵌入式软件测试和调试方法(如:在处理器中嵌入ICE 功能,调试代理软件,JTAG 模拟等)。但从软件工程的角度来看,这些方法都是在系统的开发中后期阶段所使用,而在嵌入式软件设计与分析的前期阶段还缺乏有效的方法和工具对系统设计进行分析与验证。

本文基于接口自动机模型对构件化嵌入式软件设计(CBESD: Component-BasedEmbedded Software Designs)的分析与验证方法展开进一步研究,在Eclipse 开放平台上实现了一个CBESD的模型分析与验证原型工具T-CBESD(a Tool for Component-based EmbeddedSoftware Designs)。该工具的目的是应用于构件化嵌入式软件开发的设计建模阶段,对设计者所关心的系统重要功能性质以及与时间相关的实时行为性质进行严格形式化分析和验证,提高系统可靠性的可信度。

本文内容安排如下:第2 节中给出了非实时功能行为验证以及实时功能行为验证的理论基础,包括:描述系统动态行为的多种接口自动机模型,基于场景的系统规约描述模型,以及形式化分析与验证的抽象算法等。在第3 节中给出了原型工具T-CBESD 的基本设计思想,非实时功能行为验证模块以及实时功能行为验证模块的设计与实现,包括:工具输入输出接口设计、状态空间数据结构设计、基于场景的系统规约模型的输入预处理、具体验证算法的设计与实现等。第4 节中给出了应用实例研究;最后是相关工作比较和结束语,对本文中原型工具的特点、意义以及进一步的工作进行简要讨论。

2.工具的理论基础

软件工程中的构件化设计方法学通过复用和组合软件模块来构造系统,从而提高系统开发效率和可靠性。通常,一个复杂的嵌入式系统由多个计算子系统构成,其软件系统也具有较高的构件化特征,因此,构件化的设计已成为解决嵌入式软件设计复杂性问题的一种手段。与此同时,构件接口之间的交互场景也成为体现系统行为复杂性的一个重要方面。

本文中所讨论的原型工具就是使用形式化的接口自动机模型来对系统构件接口动态行为进行设计建模,并使用UML 交互概观图模型来描述多种基于场景的构件交互行为规约,然后应用形式化分析算法对设计模型是否满足系统规约进行分析和验证。

2.1 建模系统构件以及组合行为

接口自动机(interface automata,简称IA)是用来刻画软件构件接口交互行为时序特征的一种形式化语言。它描述了一个构件被使用的时候其对外界环境的输入假设和输出保证,即构件内方法被调用的先后次序以及构件对外环境输出调用信息或结果的次序。

输入动作可以用来建模:1)构件内可以被调用的方法或过程;2)通信信道的接收端;3)调用外部过程的返回等。输出动作可以用来建模:1)对其他构件中的方法或过程的调用;2)通信信道的发送消息端;3)构件中方法或过程的调用结束时的返回;4)构件中方法或过程执行中出现的异常返回,等。内部动作则表达了两个构件在组合过程中的同步交互行为。

考虑到嵌入式软件的实时性建模需求,需要对IA 进行实时语义的扩展,以增强接口自动机对实时系统的描述能力。直观上,对接口自动机每一个转换添加时间区间约束,以表示此转换发生的最小、最大时限;扩展后的模型称为实时接口自动机。

我们使用接口自动机的组合状态空间来表达多构件系统的组合行为;自动机组合状态空间中每一条可能的状态转换序列用来表达多构件系统的一个组合行为轨迹。基本IA 和扩展的RTIA 组合状态空间的定义略有不同,以下只给出了RTIA 组合空间(实时接口自动机网络)的定义;不带时间语义的基本接口自动机的组合定义参见文献。

2.2 基于场景的交互行为规约

在基于场景的系统规约中,通常将一个系统相对独立的功能模块建模为一个场景描述。这个场景表达了参与其中的各构件之间如何进行交互。进一步的,在系统设计阶段,还会关心有多个简单场景组合起来的复杂场景需求,即需要考虑多个简单场景之间的逻辑关系。

交互概观图(Interaction Overview Diagrams)是在UML2 规范中引入的一种用以描述系统中复杂交互场景的动态行为模型。交互概观图本质上是将活动图模型与顺序图模型结合在一起,图中的每一个节点都可以视为一个用顺序图表达的简单交互场景,然后利用活动图所提供的顺序、迭代、并发、选择等操作将多个不同的顺序图场景联系在一起;这样就可以用来表达语义更为丰富的系统交互行为。在本文中所关心的以下几种场景组合一致性问题都可以用交互概观图来有效的描述:

1.存在一致性: 某个特定的场景D 是否在系统所有行为中至少出现一次,或者某个指定的场景D 是否在系统的所有行为中一定不会出现。

2.前向强制一致性:当某个条件场景D1 出现时,则场景D2 一定会随之在系统后续行为中发生。

3.逆向强制一致性: 当某个条件场景D1 出现时,则场景D2 一定在D1 之前就在系统的行为中发生。

4.双向强制一致性: 当两个条件场景D1、D2 在系统一个行为中先后出现时,则在这两个场景之间一定有D3 发生。

2.3 模型分析与验证算法

基于以上给出的接口自动机系统组合行为模型以及交互场景系统规约模型,可以对2.2节中提出的多个基于功能的一致性验证问题进行分析与验证;同时,考虑嵌入式软件设计中的实时需求,以上每个基于功能的一致性验证问题都存在一个相应的带时间约束的版本;即在完成功能性验证的同时,也必须同时满足交互场景中给定的时间约束。在相关研究工作中,对上述几类模型验证问题进行了形式化定义和分析,并分别设计了相应的验证算法。算法的基本思想是对带有不同语义信息的系统组合行为的状态空间进行搜索,将每一个可能的系统行为与基于场景的交互规约进行比较,来判断设计模型是否满足各种系统规约。例如:对于存在一致性验证问题,如果在组合状态空间中顺序图D 所描述场景中的消息事件序列至少出现一次,则判定系统行为满足D,其相应的抽象算法框架参见文献中的算法;其中所提到的投影路径是为了处理状态空间中环路的出现导致所检验的系统行为路径可能是无穷长度的问题。对于系统实时行为的验证算法,则需要进一步考虑由于时间的引入所带来的如何将连续时间进行整型化处理,以及带时间约束的投影路径的建立;RTIA-Network 的一致性验证抽象算法框架参见文献。中国代写论文网与您分享论文范文

3.T-CBESD 的设计与实现

基于以上的理论分析与验证框架,本文设计了一个原型工具T-CBESD(a Tool forComponent-Based Embedded Software Designs)。T-CBESD 的目的是应用于构件化嵌入式软件开发的设计建模阶段,对设计者所关心的一些系统重要功能性质以及与时间相关的实时行为性质进行严格形式化分析和验证,以提高系统可靠性的可信度。工具的基本设计原则主要包括以下两个方面:

T-CBESD 应当具备跨平台运行、易扩展特征:即工具应该可以尽可能在多种不同运行平台上运行,并且考虑到在未来工作中,我们将在目前的工作基础上对接口自动机模型进行资源以及能耗等语义描述方面的进一步扩展;因此,选择了面向对象程序设计语言Java作为工具的实现语言。Java 具有良好的跨平台运行特征以及丰富的类库资源,并可以使用面向对象程序设计思想中的类继承等方法对工具进行方便可靠的扩展。

T-CBESD 应当具备易使用、易维护特征:用户可以比较方便的使用工具,或进行调整;因此,选择了工业界广泛使用的开放集成开发环境Eclipse 作为工具的运行平台,即使用Eclipse 的插件(plug-in)技术来设计和开发T-CBESD。用户可以很容易在Eclipse 环境中通过插件技术来安装、配置和使用工具;同时,在T-CBESD 的输入输出接口中所使用的XML语言在Java 和Eclipse 环境中也是得到完全的支持。

主要的逻辑处理框架包括:

输入输出接口; UML 顺序图模型的预处理;自动机组合模型的建立;非实时功能验证算法的实现;实时功能验证算法的实现等。以下分别给出详细说明。

3.1 输入输出接口设计

T-CBESD 的输入输出均是以XML 文件形式来描述的系统设计模型、系统需求规约以及验证结果信息等。其中,工具的输入包括:描述系统设计的接口自动机模型的XML 文件和描述系统规约的消息交互序列的XML 文件;输出则包括:描述系统组合行为的接口自动机组合模型的XML 文件和包含验证结果信息的XML 文件。这里,最核心部分是接口自动机模型的XML 文件格式的设计。在图3 中给出了一个非实时构件基本接口自动机模型的XML 文件示例说明;通过XML 的树形标签格式,分别定义了自动机名、自动机个数(如果这是一个组合自动机)、状态个数、状态名、后继状态名、转换个数、转换名、转换的出发和到达状态名、动作个数、动作名、动作类型等数据信息,用来完整准确的保存接口自动机模型的语义信息。此外,对于扩展的实时接口自动机模型,其相应的XML 文件格式定义中还包含与动作相关联的时间区间约束标记。

在上述定义的XML 文件基础上,就可以使用Java 类库中的DOM(文档对象模型)方法很方便的对自动机模型进行解析及生成。例如:在T-CBESD 中设计了parseXmlDocument()和parseRtXmlDocument()两个类方法来分别对基本接口自动机模型XML 文件和实时接口自动机模型XML 文件进行解析,并根据Automata,Transition 以及State 等类定义在内存空间创建相应的自动机对象。

3.2 UML 顺序图模型的输入预处理

虽然 T-CBESD 的输入输出定义为标准XML 文档格式,但在工具中加入了从UML 建模环境Rational Rose 的顺序图模型到T-CBESD 的XML 输入文件(描述消息交互序列集)的自动化转换处理。其原因有二:

其一,现在工业界已存在较为成熟的图形化建模工具,可以快速方便的绘制UML 模型图,可以利用这些工具作为T-CBESD 的前端,而不用在T-CBESD 中重新设计复杂的用户接口来支持图形化建模设计。

其二,在2.2 节中提到,一个顺序图场景可能会包含多个不同的消息事件序列;显然,如果让系统设计与分析人员从每一个顺序图中手动的生成所有可能的消息事件序列,这并不是件容易的事情。因此,需要提供一种从顺序图模型自动化生成所有可能的消息事件集合的方法。

在Rational Rose 中所生成的顺序图模型文件是MDL 格式,需要先转换成XML 格式文件,然后进行相应消息序列的抽取。其处理过程如图5 中所示,首先通过在Rational Rose中加载XMI 插件将MDL 格式的文件转换为XML 格式;然后对XML 文件进行解析,建立文档解析树,提取消息事件节点,并根据顺序图中的事件发生先后顺序构造一个相应的有向无环图(在此,定义了顺序图的参加者类(Element Class)、消息类(Message Class)以及结点类(Node Class)用于图的构造);最后设计了一个拓扑排序算法,对该有向图中的消息事件节点进行拓扑排序,从而得到一个顺序图中所有可能的消息事件序列的集合。

3.3 自动机组合模型的建立

接口自动机的组合过程与一般自动机组合的语义存在不同之处。在两个接口自动机组合的状态空间中,有可能存在两个构件接口之间交互不同步的所谓“非法状态”,在应用验证算法之前必须将这些非法状态找出来并从状态空间中去除掉。文献中给出了一个识别非法状态集合的基于不动点(Fixpoint)的抽象算法框架,基本思想是先构造出所有可能的组合状态的空间图,然后逆向搜索非法状态集。在T-CBESD 的实现中我们则采用正向的合法状态集合构造方法,其好处是避免了需要首先生成所有的状态空间。给出了工具中基本自动机模型的组合算法流程图。此外,在实时接口自动机组合的过程中还需要进一步考虑时间约束;如在2.1 节中形式化定义表示一样,所得到的每一个组合状态都会有一个相应的时间标记值。

3.4 非实时功能性质验证算法的实现

在3.3 节中建立的自动机组合状态空间的基础上,就可以应用文献中的一致性验证算法等对3.2 节中所给出系统需求中的消息交互序列进行分析验证。T-CBESD 中实现了包括存在一致性、前向一致性、逆向一致性以及双向一致性在内的多种形式的非实时功能行为验证算法。给出了工具中非实时功能性质验证模块的类图框架。主要包括两大部分:一部分是自动机模型核心类,包括Automata Class,Transition Class,State Class 以及组合模型的 Composition Class ; 另一部分则是与验证算法相关的类,包括:ExistConsistencyChecking Class,ActionString Class,AdjacentMatrix Class 和辅助类TransitionNode Class。其中,存在一致性验证类(ExistConsistencyChecking Class)作为功能验证算法类的基类,其他形式的一致性验证算法类(如:BackwardConsistencyCheckingClass,ForwardConsistencyChecking Class 和 BiConsistencyChecking Class 等)都依赖存在一致性验证类,调用其方法实现所需的功能。

在基类ExistConsistencyChecking 的实现过程中,一个关键的问题是:当在系统组合状态空间图中搜索与UML 顺序图交互序列所对应的投影路径时,有可能出现一个满足条件的投影路径一部分出现在某个环路内部,而另一部分却出现在此环路的外部路径上的情形[11,12]。如果只是采用经典的深度优先遍历或广度优先遍历方法对组合状态空间图进行搜索判定,将会遗漏掉这种情况。为此,在T-CBESD 中设计了动作名表(ActionString Class)和邻接矩阵(AdjacentMatrix Class)。其中,动作名表是以接口自动机的动作名作为表头向量,并以执行该动作名的转换作为表结点的一张哈希表,其定义见图8 所示(注:未包含类方法说明)。

基本思想为:对于所给出的一个消息交互序列,先根据消息名从动作名表中依次取出与消息名所对应的表头结点以及表结点,构成一张与消息序列中消息次序对应的消息名表。

然后遍历这张消息名表来搜索投影路径,搜索过程中需要根据邻接矩阵来判断两个结点之间是否可达。

3.5 实时功能性质验证算法的实现

在实时功能性质验证算法的实现中,考虑到实时一致性验证抽象算法框架实际上包含了两次对组合系统状态空间图的搜索过程;也就是说在非实时功能一致性验证中只需找到一条满足条件的投影路径,而在实时功能一致性验证中,是需要先根据消息序列找出所有可能的投影路径,然后进行检验。因此,T-CBESD 中依据动作名表以及邻接矩阵对图进行穷举搜索,搜索到一条投影路径之后并不立即结束,而是继续找下一条投影路径,找出所有与给定路径相符合的投影路径。在此基础上根据所给出的时间布尔表达式对这些投影路径进行筛选,如果找到符合时间布尔表达的投影路径验证则验证成功,否则,验证失败。

4.实例应用

目前,T-CBESD 的设计开发和运行环境是:Windows Xp 操作系统平台,Eclipse SDK3.4.0,Java SDK 1.6,所引用的MDL 文件是由Rational Rose 2003 生成。本节中分别给出T-CBESD 的非实时功能性质验证和实时功能验证两方面的实例应用说明。

在T-CBESD 中所构造的构件Communication 和User 的合法组合状态空间(去除了非法状态集)包括6 个组合状态:(s0|s0),(s1|s1),(s2|s1),(s3|s1),(s4|s1),(s5|s1)。对于存在一致性验证,不妨设顺序图中抽取的一个消息交互序列send*nack*send*ack 作为验证规约,显然,直观上就能判断Communication 和User 的组合系统应该是满足这个规约的。

运行T-CBESD 进行验证的结果,显示组合系统确实满足存在一致性,其相应的系统执行路径为:s0|s0??s1|s1??s2|s1??s3|s1??s4|s1??s5|s1。对于前向一致性验证,就本例而言,不妨设D1 消息序列为send*nack,D2 消息序列为send*ack,然后将其作为工具的系统规约来输入,其验证结果应该仍然是满足。运行T-CBESD 的验证结果,显示的确存在一条系统执行路径满足前向一致性。事实上,所找到这条路径与存在一致性的路径是相同的。

对于逆向存在一致性,若设D1 消息序列是send,D2 消息序列是ack,T-CBESD 给出的结果是不存在这样的一条组合系统路径满足它。这也符合对本例的直观判断,即在接受到ack之后又执行send 动作是不合法的,因此这个存在一致性是不满足的。对于双向一致性,若给出的D1 消息序列是send,D2 消息序列是send,D3 消息序列是nack,验证的结果是搜索成功,得到的可满足的组合系统执行路径为:s0|s0??s1|s1??s2|s1??s3|s1??s4|s1。图13 所示为T-CBESD 的非实时功能验证模块插件的界面。界面左边部分为操作区,主要提供组合、查看、工具输入、验证类型等功能选择,界面右边部分为分析与验证过程中工具所反馈的数据信息。

5.相关研究工作

SpIN是一个经典的分布式系统模型检验工具。系统每一个构件的自动机模型使用SpIN 中promela 语言所构造的进程(process)来表达,组合系统的状态空间通过计算所有自动机异步积来得到,系统规约使用LTL 时序公式描述;系统是否满足规约性质则通过组合系统和时序公式相对应的Buchi 自动机进行同步积,然后检验其结果是否为空。目前SpIN在工业界硬件设计以及通信协议规约的验证领域得到了较广泛的应用,但对同时具有功能和非功能需求的嵌入式软件验证领域,SpIN 并未提供相应的支持。UppAAL是一个基于时间自动机理论的实时系统仿真和验证工具。其基本思想为将实时系统的行为建模为一个实时自动机网络,并进行了数据类型的扩展,采用时间μ-算子作为系统的规约语言,主要对系统进行安全性和活性等性质的检验。UppAAL 具有良好的图形化编辑和模拟功能。

目前,已有一些工具以UppAAL 为核心作进一步扩展,如:TIMES是以时间自动机模型验证为基础的一个工具集环境,可以进行建模、可调度分析、系统合成以及特定平台上的代码生成;Save-IDE则是基于构件模型SaveCCM[20]所建立的一个支持构件化嵌入式系统开发的工具集,等等。此外,与接口自动机相关的工具包括:Chic是第一个基于接口自动机理论的原型工具。它是作为Jbuilder 集成环境下的一个插件模块来设计开发的,其目的只是用于对相关理论工作的一个初步验证,现在已经被另一个工具Ticc所替代。

Ticc 的理论基础是接口自动机的一个扩展版本:Sociable Interface,其基本思想仍然是检验构件接口组合中是否兼容。ptolemy II中也实现了基本接口自动机模型的组合兼容性分析工作,不过ptolemy II 是一个包含了多种不同工具集的混成系统建模、分析、合成和代码生成的开发环境。此外,以法国INRIA 为中心的欧洲多个研究机构正在构建的OpenEmbeDD是一个以Eclipse 为开放平台的模型驱动嵌入式系统开发工具集。这是一个庞大的开源工具组合环境,提供嵌入式系统设计(包括软件和硬件)、模拟、验证、合成以及测试等各个阶段的开发支持。

与上述相关工具相比,T-CBESD 的特点在于:首先,可以直接使用UML 的顺序图模型作为系统规约输入进行验证,而不需要系统设计人员去重新学习时序逻辑语言来构造规约说明;避免了在大多数相关工作中需要在不同的形式模型之间进行复杂转换,通常这些转换是需要相当的空间和时间消耗。其次,相比较上述基于接口自动机模型的研究,本文的工作在接口自动机组合兼容性的基础上对构件式嵌入式软件系统设计模型与场景式规约模型之间的一致性问题给出了一个更为完整的验证框架;可以进一步进行各类一致性问题的分析和验证;第三,通过扩展时间区间所得到的实时接口自动机的描述能力本质上与时间自动机的描述能力是等价的,并且通过在顺序图模型中使用时间不等式约束,使得所定义的实时接口自动机网络与带时间约束的顺序图之间的一致性问题更具有一般性。最后,Eclipse 开放平台给工具提供了良好的开发、维护和使用环境。

6.结束语及未来工作

本文在 Eclipse 开放平台上设计并实现了一个基于接口自动机模型的构件化嵌入式软件设计分析与验证的原型工具T-CBESD。该工具的目的是应用于构件化嵌入式软件开发的设计建模阶段,对系统重要功能性质以及与时间相关的实时行为性质进行严格形式化分析和验证,使得设计者可以尽早在系统开发前期发现错误并予以修改,以降低成本并提高系统可靠性的可信度。论文主要内容包括:非实时功能验证以及实时功能验证的理论基础;T-CBESD 的基本设计思想;工具的输入输出接口、状态空间数据结构、验证算法等的设计与实现;以及应用实例分析。

进一步的工作包括以下几个方面:

扩展工具的输入和输出接口形式。输入方面,目前T-CBESD 中自动机模型的XML 文件是需要用户手动生成,我们希望也可以使用Rational Rose 等图形化建模环境作为前端工具来方便用户进行系统接口自动机模型的设计。但是接口自动机与UML 状态机的语法和语义都存在不同之处,需要重新设计一个中间转换过程来处理。同时,考虑在顺序图形式化定义的基础上进一步对UML 交互概观图进行形式化描述,并将其作为工具的另一种扩展形式的输入模型。输出方面,将设计更为完整的验证结果信息XML 文件格式,并考虑与软件测试技术相结合,利用验证结果给出的系统出错(验证失败)行为轨迹来指导生成相应的测试用例。

在工具的核心算法部分,将进一步设计并实现包括资源接口自动机和能耗接口自动机在内的分析与验证算法,以扩展T-CBESD 的功能。同时,考虑到在实时接口自动机组合过程中可能出现的状态空间爆炸问题,将对实时验证算法作进一步改进,设计新的On-the-Fly 验证算法实现,即:在构造一个新状态的时候就对当前路径进行即时验证。

应用复杂的多构件系统设计实例,来对工具的性能进行检验和提高。目前所运行的实例相对比较简单,主要目的是为了检查实现算法的正确性,还需要在复杂多构件系统模型情形下对算法性能作进一步检验和改进。现在我们正在对某无人机飞行控制软件系统进行模型分析和抽取工作,准备将其作为T-CBESD 的一个复杂实例验证。

构件软件开发 第6篇

随着现代工程技术的发展,型钢与混凝土的组合构件越来越多地在建筑结构中应用。但组合构件的设计与计算中还存在一些问题,例如,基于规范公式只能对一些规则截面进行承载力验算,工程中遇到不规则截面或规则截面的组合截面时,经常采用近似方法,如截面刚度等效的方法计算承载力,这存在较大的误差。当需要对关键构件进行延性判断时,现有的国内设计软件也不具备延性分析功能。采用国外权威软件XTRACT虽能较方便地对复杂组合截面进行验算,但该软件在国内应用普遍存在正版化问题。基于结构设计工作的需要,本文作者通过研究任意截面组合构件承载力及延性的计算方法及算法的实现,研发了SRCTRACT软件,该软件具备任意组合截面极限承载力和延性计算功能,可辅助工程师进行构件设计和优化。

SRCTRACT基本功能

SRCTRACT基本模块包括:截面输入模块、材料输入模块和计算分析模块。对常规截面,软件可直接从截面库中导入截面建模,对几何形状复杂构件,可采用自定义截面命令逐点输入坐标进行建模。当设计条件变化需要根据情况对材料本构进行调整时,SRCTRACT提供了自定义材料本构的功能,用户可对材料本构进行调整。

计算方法与算法实现

承载力计算算法实现

构件承载力计算基于平截面假定,将截面离散为有限个混凝土单元、型钢单元和钢筋单元,然后根据输入的加载角度迭代确定中和轴位置,并在每个位置均计算一次截面轴力和弯矩,遍历所有角度及中和轴后便可得到截面弯矩-轴力承载力曲线。见图1计算示意图。

具体求解流程如下:按材料离散截面单元;给定中和轴高度h;计算中和轴的截面极限转角;根据截面极限转角计算每个单元的应力、应变,然后计算相应的轴力、弯矩极限承载力;按固定增量调整h,重复步骤(2)~(4)计算,直至遍历所有的h值;整理加载过程中轴力、弯矩、转角极限值,便可得到构件正截面承载能力曲线。

延性计算算法实现

SRCTRACT提供两种荷载加载形式,一是构件轴力在加载中保持不变,只改变弯矩,另一种是加载过程弯矩与轴力的比值保持不变,直至达到构件承载力极限。二者区别在于前者属于非偏心加载,后者属于偏心加载,相对应这两种加载形式,软件提供了二分法和弧长法两种计算方法:

二分法算法实现。设受压区最大压应变为变量,从0至极限应变变化,每个变化值对应一个中和轴高度,使内外力平衡,记录此状态的弯矩与曲率,并判断钢筋或混凝土应变是否到达极限应变,如果是则退出迭代,如果不是,则增加受压区最大应变,直至到达极限应变。

弧长法算法实现。弧长法迭代步骤:

设定外荷载增量△F。

第i级外荷载Fi为hT=A+Eh G

调用i-1级截面变形向量作为第i级的变形迭代初始值,计算最新的变形向量。此步需要一内循环迭代,步骤为:

a)计算第k次迭代结束时的截面非平衡力向量为:hT=A+Eh G

其中P为截面恢复力。k为内部迭代次数,i为外部迭代次数。

b)计算第k+1次迭代时变形增量为:

hT=A+Eh G K为刚度矩阵。

c)更新截面变形:hT=A+Eh G

判断最新状态下混凝土单元和钢筋单元是否到达极限应变,如果是则停止迭代,否则返回第2步。如非平衡力接近0,说明第i级迭代收敛。

工程应用

某超高层住宅平面中部大开洞,上下部分仅靠两个连廊连接。连廊宽2000mm,板厚200mm,两侧型钢混凝土梁尺寸为400×900mm。连廊平面内、外受弯矩均较大,是结构的关键构件。为验算梁板整体的协调变形受力情况,使用SRCTRACT对“槽型”型钢混凝土组合截面进行分析,设计截面如图2所示。“槽型”组合截面配筋率1.28%,含钢率3.21%,SRCTRACT计算所得构件承载力PM曲线如图3所示,构件延性曲线如图4所示。

可见由于开洞的原因。结构整体x向平动时上下两部分有错动现象,使得连接部位的面内弯矩较大,但构件仍能较好地承受地震作用力,满足中震不屈服要求。

现国内结构分析软件对多材料、几何形状复杂的组合截面仍无法进行准确的承载力以及延性验算和设计,开发任意截面组合构件承载力及延性计算软件很有必要。

本文采用的针对任意截面组合构件承载力及延性的计算算法理论正确,数值求解有效,满足工程需要,值得广泛应用与推广。

构件软件开发 第7篇

1 嵌入式实时软件构件化开发技术概述

嵌入式系统指的是在具有具体应用功能的专用系统通常情况下都会有较强的成本敏感性。它的硬件及软件都需要经过高效的设计, 通过去陈冗余等, 努力提高相同面积硅片的性能。传统嵌入式软件基于上述因素的考虑, 一般都会尽可能的对代码量进行压缩, 从而使软件资源的需求降低。这种做法容易导致大多数的嵌入式软件出现结构紧密度增加, 可读性和可移植性变差的情况。但是, 在实际的发展过程中, 嵌入式系统随着硬件技术的不断发展与进步, 其所具有的资源已经非常充足, 在这种背景下, 其已经具备对传统嵌入式软件进行改造的条件。

嵌入式实时软件的构件化开发技术指的是促进软件复用性提高的一种软件开发技术, 其是以分布式、护展性、封装性以及复用性四者的相结合为主要构架思想, 它的主要技术有EJB、COM以及CORBA等。嵌入式实时软件的构件化开发技术是基于模块化的系统、结构化的设计以及针对对象技术发展而来的, 其主要是利用已经成功开发并通过验证的软件构件, 对软件开发的资源投入进行减少, 促进软件质量的提高。

构件化的嵌入式实时软件的构成部分主要是一组软件构件, 由一个或是多个构件组成一个完整的全新应用, 而这个新应用也可以利用自身的构件, 对软件的复用性进行提高。由此可以看出, 传统嵌入式软件对专用性要求较高, 软件和应用需要一一对应, 而构件化的嵌入式实时软件则具有较高的组合性, 大大的提高了其自身的复用性和扩展性。

2 嵌入式实时软件进行构件化的开发与改造

嵌入式系统所具有的种类较多, 因此, 与其是对应关系的嵌入式实时软件也同样具有种类较多和结构复杂的特点。根据嵌入式实时软件的不同功能和所在层次可以分为硬件驱动、嵌入式操作系统以及应用程序三种。由此得出, 对嵌入式实时软件进行构件化开发与改造可以采用如下三种方式:基于层次的构件、基于功能的构件化以及基于应用对象的构件化。

2.1 驱动构件的开发与改造

基于构件化对驱动程度进行开发与改造之后, 驱动构件应该进行上层访问接口的提供, 并以对Linux系统的设备驱动程序进行管理的方式为参考对设备驱动程序进行分类, 主要有字符和块两类设备, 驱动构件所提供的上层访问接口也同样分为这两类。在操作系统中, 驱动管理构件可以利用接口进行加载驱动构件、管理硬件资源等操作。驱动构件的动态加载及卸载操作使嵌入式系统的驱动程序实现了单独升级操作, 驱动程序的构件化改造对其自身的内部细节进行隐藏, 确保修改驱动程序不会对驱动构件造成影响。此外, 以针对编程为出发点, 驱动程序的构件化改造实际上也可以看作是对硬件设备的抽象化, 用户所使用的是字符和块的两种统一设备, 其各设备中的驱动构件已经融进中断处理程序, 因此缩减了位于底层部位中断管理用户的操作步骤。

2.2 核心构建的开发与改造

核心构件主要指的是构件化改造嵌入式的实时操作系统。这个操作系统的主要功能是对任务进行管理, 其功能主要表现为:第一, 按照构件所具有的自描述信息进行构件化运行空间的生成, 如加载驱动构件所需要的缓冲区;第二, 构件之间所具有的通信机制, 如构件在运行状态下的监控和错误报告;第二, 构建所具有的干预机制, 如对错误状态进行强行终止的构件。

构件化操作系统的开发与改造主要是针对操作系统的核心部分, 将该部分分别进行构件化改造, 使其在运行状态下处于内核态, 而用户程序则处于用户态, 同时在操作系统中运用构件化思想, 可以对其接口进行统一化、规范化的管理, 这样就可以避免不安全用户的操作对操作系统运行产生不良影响, 进而促进了嵌入式实时操作系统的安全性和稳定性的提高。对于操作系统中诸如抽象化硬件资源等的非核心部分, 可以在构件化改造的过程中将其设置为用户态, 或是将其直接置于底层驱动构件。

2.3 应用构件的开发与改造

随着科技的发展, 嵌入式实时系统所具有的功能复杂性也得到了提高, 其中的嵌入式实时软件的功能也逐渐增多, 但是在实际的运行过程中, 其功能的使用频率是不尽相同的。通过构件化思想的利用, 可以对构件进行动态的调动:根据不同的功能对应用软件进行构件化改造, 使其中的应用构件通过核心构件管理, 运用动态的方式将其调入到内存执行中, 使用频率较高的应用构建通常情况下都存在于内存当中, 其可以随时进行运行或是转入内核态, 对系统的运行效率有着提高的作用;而使用频率较低的应用构件则只要在需要运行时才进行调入操作, 这样可以节省系统的资源。

3 构件化开发技术对嵌入式实时软件性能所产生的影响

构件化开发技术的应用使整个嵌入式系统通过集线器连接在一起, 嵌入式设备为测试实验提供了相关的硬件资源, 在设备上进行运行的软件系统主要有硬件驱动、嵌入式操作系统以及应用程序三种。另外, 在系统中还连入了一台PC机, 又因为集线器可以无条件广播所有收到的通讯, 因此与系统相连接的所有设备的通讯都可以对彼此进行显示, 而PC机中具有监控软件, 能够对整个系统的通讯进行监控。

构件化改造协议栈会对协议栈的性能产生影响, 这是由于协议构件化后, 其构件对内存进行调动以及拷贝数据的次数都会有所增加, 进而对协议栈的性能造成影响。但是, 构件化改造对协议工作流程并没有产生影响。利用构件化改造可以对嵌入式实时软件的可配置性、可移植性和可靠性进行提高, 对嵌入式实时软件的各个应用尺寸进行精简, 大大的节约了其储存的空间。

4 结语

综上所述, 按照嵌入式实时系统的特点, 对嵌入式实时软件进行构件化的改造, 通过底层驱动以及操作系统的构件化改造, 可以有效的促进其可移植性和安全性的提高;通过构件化改造应用层软件, 可以有效的促进其可配置性的提高, 与此同时还可以对软件系统的应用体积进行合理的缩减。通过构件化开发技术的使用, 对嵌入式实时软件的性能进行完善, 提高软件的质量。

参考文献

[1]杨霞.高可信嵌入式操作系统体系架构研究[D].成都:电子科技大学, 2010.

[2]杨志斌, 皮磊, 胡凯, 等.复杂嵌入式实时系统体系结构设计与分析语言:AADL[J].软件学报, 2010 (5) .

基于软件构件的专家系统平台 第8篇

EST2000逻辑上被分为三层:软件构件层,系统定义层和解释运行层。软件构件层存储着平台中所有的可重用软件构件,以供开发者构造领域专家系统使用;系统定义层为二次开发者提供了诸如界面设计,脚本编写及模拟运行等开发工具;解释运行层负责解释执行开发者定义的领域专家系统。

1.1 软件构件管理器

由于开发平台是基于软构件技术的,软构件管理器自然是整个开发平台的核心。软构件管理器负责保存和管理构件的信息,并且要能够提供构件的细节给开发平台的其它部分使用。能否设计出一个功能完善,结构清晰,界面友好的软构件管理器是整个开发平台成败的关键之一。图1显示了软件构件管理器的结构。

软件构件管理器被划分为三层:(1)核心模块:负责软构件信息的读取、保存。软构件信息的一致性检查。这一层实现软构件管理器的最基本功能;(2)内部功能模块:建筑于核心模块之上,提供软构件管理器的信息维护,接口检查等高级功能;(3)对外接口:由于软构件管理器是整个开发平台的核心,所有的软构件信息都由软构件管理器来管理,开发平台的其它部分若想知道一个软构件的细节,必须向软构件管理器查询。系统的可扩展性也要求构件管理器有灵活的、强大的对外接口以供使用。

一个软构件具有若干属性,例如名字、路径、功能描述、方法、属性等。其有着完整的BNF范式定义。

1.2 系统设计器

系统设计器是提供给二次开发人员进行系统开发的。主要包含界面设计系统及脚本语言编辑系统。其体系结构如图2所示。

系统设计器中非常重要的一部分是界面生成器。界面生成器是用来帮助用户设计应用界面的。据统计,在一般的系统中有30~80%的工作量花费在UI上面。一个好的界面生成器应该提供良好的可操作性、快速界面生成、丰富的界面元素和所见即所得的界面生成方式。在考虑了这些要求以及实现的难度后,提出了一种流程式的界面描述方法。

2 流程式界面技术

流程式的界面描述方法是模拟软件工作流程绘制出的用户界面。通常用户在开始设计一个系统时都会对整个软件的工作流程有一个整体的认识。提出的界面设计方法正是基于这个工作流程的。在这种方法中,这个界面实际上是一张有向图。定义了该系统中包含的功能单元以及功能单元间的连接与顺序关系。其中与或元素比较特殊,用来控制用户的操作过程,即在解释运行环境中,如果用户不按照流程中定义的顺序操作,解释环境可以检测并予以警告。

有些系统流程比较复杂,一张界面无法全部描述出来,或者即使描述出来也由于过于复杂而无法为用户应用。这时,系统提供了一种层次化界面描述方式。也就是说系统的设计者可以通过一个叫做“层次元素”的界面元素来描述界面的层次关系。当用户选择这个层次元素后,自动进入下层子界面。下层界面中有返回上层界面的链接。这样,通过层次化方法可以描述比较复杂的用户界面。同时也使得界面比较有条理,易于最终用户使用。

3 结束语

软件构件管理器管理者系统中所有的软件组件,为系统其它部分提供了诸多的功能接口,大大提高了EST2000的可扩展性。在权衡了灵活性与实现的复杂性基础上,设计了机遇流程模式的用户界面描述方法,为开发人员提供了简洁有效界面开发方法。此外还设计了脚本语言及其编辑环境。根据设计系统的输出,构造了解释运行环境,包括界面绘制及脚本语言解释模块。

摘要:构造了专家系统开发平台的软件体系结构。提出了整个开发平台的概念结构和逻辑结构,详细描述了整体结构中各个模块的功能要求。

关键词:专家系统,软件构件,开发平台,图形用户界面

参考文献

[1]Geng Gangyong,Zhong Guihao.Using software component techn-ology to develop domain software.[S.l].:Computer Science,1997(1):58-62.

自动连续视频播放构件开发与使用 第9篇

视频播放是网络应用程序最常用的功能之一, 它通常需要特定的 播放器才 能播放 , 比较流行 的播放器 软件主要 有Windows Media Player和Real Player等。通过这些播放器软件不但可以在本机上播放网上比较流行的视频格式如RMVB、RM、WMV、FLV、SWF (其中主要有RM格式和WMV格式 ) 等格式的单个视频文件, 而且也可以实现连续列表播放。但在网上, 开发与Windows Media Player和Real Player相关的播放程序通常只能实现单个播放, 当有多个视频需要播放时, 需要用户选择指定的视频后才能继续播放, 如果不选择, 那就只能重复播放原来的视频或者停止播放, 这给一些需要播放连续多个视频时就会带来不便, 如在线学习时用户希望多个教程、小新闻视频等能够连续自动播放多个视频等, 这种播放器显然不能满足人们的要求, 那么, 如何才能开发出具有连续视频播放功能的Web视频播放器呢? 下面以常用的流媒体格式WMV和RM为例来说明如何开发和使用自动连续视频播放构件。

2多个视频连续自动播放

在本机上, 利用Windows Media Player和Real Player等都可以实现多个视频的连续自动播放, 它需要视频播放列表文件中指定需要播放的多个视频来完成, 如果要在网上播放, 通常在设计的播放器中要指定一个要播放的文件, 如果要多个文件播放, 只需要把要播放的文件用播放列表文件来代替即可。不过不同的播放器播放列表文件的格式是不同的:

RM格式的播放列表文件中, 只是存储视频文件的物理路径, 文件的扩展名为“.m3u”如:

H:U盘 程序 自动连续播放 MUSIC 红梅花儿开蔡依林.rm

因此, 在线网上播放RM格式的文件, 只要读取指定文件夹中要播放的RM格式的文件, 并把它写入到文件写入到扩展名为“.m3u”的文件中, 然后将扩展名为“.m3u”的文件指定为要播放的文件就可以实现自动生成播放列表文件, 并自动连续播放了。

WMV格式的播放表列文件是一个扩展名为“wpl”的XML格式的文件, 文件的格式如下:

其中之间就是要播放的文件列表, 因此, 在设计在线播放时, 可以先将及之前的代码写入视频播放列表中, 然后读取数据库中的数据写入列表中, 再将后面一段代码写入视频播放列表文件中即可。

由此可见, 自动连续视频播放其实是动态自动生成播放列表文件并将播放列表文件指定为播放播放文件即可。因此构件的设计的重点是如何自动生成播放列表文件和自动生成 播放器。

3自动连续视频播放构件的开发

3.1开发前准备

(1)准备多个视频文件, 如3个WMV格式的视频文件和3个RM格式的视频文件, 并存放在MUSIC文件夹中。

(2)准备一个数据库, 用于保存视频文件信息, 数据库名称是“MYDB.MDB”, 表的名称是“MiedaList”, 并根据步骤 (1) 中准备的视频文件, 将视频文件信息添加到数据库中。如图1所示。

3.2创建 Web 网站

先创建一个测试网站来实现, 创建Web网站的基本步骤是:

(1)在VS2010中创建一个名称为“连续自动播放” 的网站。

(2)在当前网站中通过“添加现在项”将数据库添加到当前网站的 “App_Data”文件夹中, 如果当前网站没有该文件夹, 可以创建一个名称为“App_Data”文件夹。

(3)在当前网站中新建一个名称为“MUSIC”的文件夹 , 将原来准备的的视频文件通过“添加现有项”, 添加到该文件夹中。

(4)选择“解决方案资源管理器”中的网站项目文件夹名称, 右击, 在出现的快捷菜单中选择“添加新项”(或者在“网站”菜单中选择 “添加新项”), 在出现的模板窗口中选择“类”, 在名称中输入“VideoPlayt”, 在语言中选择“C#”, 新建一个“VideoPlay”类, 因需要数据库和文件操作, 需要在前面添加System.IO、System.Text、System.Data、System.Data. OleDb等几个命名空间的引用。

3.3在 Web 网站中创建构件类

视频播放构件的重点是自动生成播放列表文件和动态生成不同视频播放器, 它是通过3个类来实现的。

(1)确定要连接数据库的连接字符串

(2)根据数据库内容动态创建播放列表

它是通过类函数CreatePlayListFile来实现, 程序代码如下:

类函数CreatePlayListFile有4个参数,

第一个VideoType参数为字符参数, 指的是视频播放类型, WMV或RM, 调用时“WMV”表示为WMV格式视频生成播放列表, 如果调用时用“RM”, 表示为为RM格式生成播放列表文件。

第二个参数FieldsOrderNo为整型参数, 为歌曲名在数据库中对应序列号。

第三个参数LinNumber是播放列表文件中指定最多一次播放多少个文件。

第四个参数PlayListFilename是播放列表文件名, RM格式扩展名为.m3u, WMV为.wpl

如调用时FILE_NAMERM格式为RM.m3u, WMV格式为 PlayWMV.wpl。

(3)动态创建RM格式播放器

动态创建RM格式播放器是通过创建类函数RM_MPlay来实现, 其程序代码如下:

类函数RM_MPlay只有一个参数PlayListFileName, 它是指播放表列文件名。

(4)动态创建WMV格式播放器

动态创建WMV格式播放器是通过创建类函数WMV_MPlay来实现, 其程序代码如下:

类函数WMV_MPlay只有一个参数PlayListFileName, 它是指播放表列文件名。

要注意, 以上所有的类必须包含在类命名空间namespace MyVideoPlay {} 之间, 这样, 以便在使用该动态库时能够引用。

4自动连续视频播放构件的测试

(1)测试WMV格式视频的自动连续播放

在当前网站中创建一个名称为“WMVPlay.aspx”的Web窗体, 在页面上添加一个ID为" Literal1" 的Literal1, 并添加以下事件代码:

程序运行结果如图2所示。当第一个视频播放完后, 能够自动播第二个、第三个WMV格式的视频。

(2)测试RM格式视频的自动连续播放

在当前网站中创建一个名称为“RMPlay.aspx”的Web窗体, 在页面上添加一个ID为" Literal1" 的Literal1, 并添加以下事件代码:

程序同样能够实现自动连续播放, 不过客户端要安装RealPlayer。

5自动连续视频播放构件的发布与使用

5.1自动连续视频播放构件的发布

在当前网站中选择“生成”菜单的“发布网站”, 弹出如发布网站对话框, 在目标位置中填写发布的目标位置 (ftp、Http或者相机指定文件夹) 即可。网站发布完成后, 在目标位置会增加一个名称为“Bin”文件夹, 其中增加一个扩展名为.dll的文件, “App_Code.dll”就是编写的类代码文件, 这个文件即是包含编写的且能够利用的构件类代码文件, 也是后面视频播放设计所用的文件。

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

有了动态链接库文件App_Code.dll, 在其他任何一个需要使用自动连续播放的程序中都要可以调用了, 而且程序设计变得特别简单, 下面介绍使用App_Code.dll的步骤:

(1)新建一个网站, 如“使用构件”。

(2)在当前网站中建立一个名称为MUSIC的文件夹 , 将相关视频文件通过“添加现有项”, 添加到该文件夹中。

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

(4)将保存视频信息的数据库通过“添加现有项”, 添加 到“App_Data”文件夹中 (如果没有该文件夹, 则建立)。

(5)添加一个名称为“WMVListPlay.aspx”的Web窗体 ,界面很简单, 在窗体上添加一个ID为" Literal1" 的Literal1, 进入代码视图, 添加以下代码:

6结语

自动连续视频播放构件能够根据数据库中视频文件的信息, 动态生成RM格式和WMV格式的视频播放列表文件, 并根据视频列表文件动态生成视频播放器, 视频播放器能够自动加载视频播放列表文件实现自动连续播放, 在教学、新闻、播客等网站都可以利用, 因此该构件具有较大的应用价值。该构件在Microsoft Visual Studio 2010、安装Windows Media Player和RealPlayer环境测试通过。

摘要:介绍在ASP.NET中,根据数据库中视频文件的类型,动态创建视频表列文件和自动生成播放界面来实现视频文件的自动连续播放,并将构件经编译后的DLL应用到其他应用程序中,轻而易举实现视频自动连续播放。

基于构件的软件工程技术研究 第10篇

1.1 构件软件工程技术内涵

构件是系统当中二进制软件单元, 其运行的端口比较规范化, 并能够直接和第三方实施组装, 而基于构件的软件工程主要是通过操作便捷的构件在软件结构当中组成单独应用程序, 从而来实现软件重用以及重组的目标。对于构件软件工程技术的运行方式方面, 即插即用是其最为显著的特征, 软件工程和一般的工程有着不同, 软件是逻辑产品, 所以在其功能上也只能依赖软硬件运行环境和人们对其实施的操作, 并且软件不是实物产品, 其费用主要就是体现在研制开发过程中, 并非是在生产上, 其自身的复杂程度也相对比较高。通过逐渐成熟的基本构件技术可将软件工具拆分成多个层次来发挥其自身的功能。

1.2 基于构件软件工程技术的优势分析

基于构件的软件工程技术自身有着显著的优势, 首先从其组建的结构上来看, 传统软件工程结构体系对市场和客户的需求满足程度还远远不够, 对实际的竞争环境的适应程度也不高, 而在基于构件的软件工程技术下对新的结构体系进行了开发, 从而最大化的实现其需求。而在软件的开发过程方面的优势体现主要就是能够实现分析设计以及运行的整体协调, 对多个系统的配件循环使用。对于软件的开发方法而言, 其从原先的单一系统已经向着多应用系统进行转变。还有就是在软件的方法论层面, 构建软件的开发能够提供规范化端口, 也是软件开发过程编程简单的构建组合, 这一软件的方法论是将软件端口作为关键点并面向社会的。

2 基于构件软件工程技术的不足及其开发过程探究

2.1 基于构件软件工程技术的不足分析

从现阶段的构件软件工程的发展来看还有诸多的不足之处, 主要是体现在CORBA的效率不高以及安全性得不到有效保证, 并且还没有集成开发环境, 从而就使其在竞争能力方面相对比较弱, 没能够进入到主流开发技术行列。总体而言, 其在总体的架构上是分成客户端以及服务器端这两个重要的部分, 对于客户端的程序所发起的任何对象请求都需要进行两次压缩和解包的操作, 而在两次通过ORB核心下就会使得其自身的效率比较低, 从而造成安全性得不到有效保证。

除此之外就是COM+自身的问题, 主要就是其并非是独立层, 而是集成在操作系统下, 这一操作系统是其重要组成部分, 由于不是独立中间层这样就很难形成软件界统一标准, 所以对硬件以及操作系统的差异屏蔽就不能有效实现。另外就是COM与COM+没有解决PLLhell的相关问题, 在对新应用程序进行安装过程中就会对原有的应用程序造成损坏从而让计算机用户产生恐慌心理。再有就是EJB/J2EE方面的问题, 其最为显著的特征就是多层架构, 而每层都致力于给应用程序提供特定功能, 但由于其层次多所以在实际的部署上就存在着很大的难度, 并且也不能达到预期的效率, 对这些方面的不足之处进行优化处理就有着其必要性。

2.2 基于构件软件工程开发过程探究

基于构件软件工程的开发过程在生存周期方面和传统的有着一些区别, 其显得更为简单化, 对任何的系统加强对其实施分析都是必要的, 而对构件软件工程系统的分析就要能够遵从相关的原则, 主要有封装原则以及抽象原则和继承原则等。构件属性以及服务要和接口得到紧密结合, 从而使得构件能得以集中并完整描述具体事物, 而封装信息隐蔽作用则有效对事物相对独立性得到了反映。另外从抽象原则方面来看主要体现在两个层面, 首先是对个体事物细节差异进行舍弃并抽取共同特征来获取事物抽象概念, 还有是只要对系统目标相关事物本质进行了解其他应进行舍弃。

对构件软件工程的开发过程是复杂的, 首先对蓝图的设计方面要将构件定义好, 把整个系统分解一级子模块, 如果太多复杂就继续进行分解二级子模块。然后就是构件准备和生产, 在对蓝图设计之后要对模块构件进行准备和生产。为能够对软件开发时间和成本得到最大化的节约就要在网上搜寻实际需要的构件, 这些构件往往是反复测试的, 在价格和质量上都相对比较优异。还有几十对特殊的构件进行自定义, 做好独立开发构件的思想准备。

另外就是构件的集成以及测试方面, 对单个的构件购买以及生产完成后, 就要按照蓝图的设计实施二级子模块组装以及测试, 在组装完成后实施兼容性以及功能测试。在对二级子模块的测试通过后对其实施组装然后实施一级子模块兼容性以及功能的测试, 接着就能够实施软件系统系统集成测试, 倘若在这一过程中发现出现了问题就及时的通过电子邮件来告知开发商, 在对漏洞修复之后进行下载对原有问题构件加以替换。再有就是使用中用户以及相关维护人员要能及时对软件错误发现, 并要能定期的撰写软件问题和修改的报告, 这样对软件的持续良好的应用有着其重要性。

3 结语

总而言之, 构件软件系统对传统的软件运行条件以及开发的方法都有着相应的改变, 这些方面的进步对软件编程领域的发展也起到了重要推动作用。通过对构件软件工程技术的简要分析探究, 从理论上对其发展有着促进作用, 由于受到本文篇幅限制不能进一步深化探究, 希望此次理论研究能起到抛砖引玉的作用以待后来者居上, 借此来进一步的推动构建软件的发展。

参考文献

[1]崔宁.基于构件的软件工程理论与方法分析[J].电子技术与软件工程, 2014 (18) .

[2]马鸣.基于构件的软件工程理论与方法探讨[J].电子测试, 2013 (16) .

[3]砂砾.浅析软件工程在企业系统中应用[J].中小企业管理与科技 (上旬刊) , 2013 (05) .

[4]黄志杰.探析软件工程的开发和应用[J].中小企业管理与科技 (下旬刊) , 2013 (03) .

一种网构软件构件选择方法 第11篇

随着信息技术的迅猛高速发展,一种全新的软件形态网构软件应运而生。众多学者从不同的角度对网构软件进行探讨和研究,取得可喜的成绩;然而,纵观他们在网构软件构件选取(包括构件检索和构件选择两个步骤)方面的研究,总结他们的研究理论、方法和成果[1,2,3,4,5,6,7],发现他们主要关注于以下几个方面:

(1) 网构软件构件选择标准,即以什么样的标准对网构软件构件进行评价并以此标准选择合适的构件以构建网构软件;

(2) 针对用户的某个需求选择一个构件;

(3) 构件检索技术。

而实际上,用户的需求通常有很多,而且有一些用户要选择多个类型的多个构件来构建网构软件以完成较复杂的任务。这样,按照常规方法进行选择,首先利用某种检索技术或方法从构件库中检索满足用户基本要求的构件(通常会检索出很多个构件);然后针对用户的某个要求以某种标准选出一个构件;最后重复以上步骤就可以选出多个构件。按这样进行选择,重复操作会使用户感到厌倦,最重要的是选出的构件不一定为用户所满意,如某些构件的可靠性很高但可用性很差(反之亦然)。为了解决上述问题,根据文献[8]提出的功能刻面分类方法,本文首先利用基于功能刻面的方法从构件库中检索出多类构件,然后利用遗传算法从这多类构件中选择出一组构件。

1 基于刻面的网构软件构件分类

1.1 网构软件构件描述

为了对网构软件构件进行检索和选择,首先必须对网构软件构件进行描述。根据各种构件的分类和检索方法的特点,参考上海构件库[9]中的构件的表示形式,结合实际应用问题,本文从以下4个方面对网构软件构件进行描述:构件编号、构件名称、构件功能、构件属性(非功能性属性)。

构件编号:它是构件的唯一标识符,是一个构件区分另一个构件的唯一标准;

构件名称:对某个构件的称呼;

构件功能:构件所能提供的功能,如下载、编译器、网络聊天等;

构件属性:构件所拥有的一些特性,通常指非功能性属性,如可靠性、实时性性等。

1.2 网构软件构件分类

根据上述网构软件构件的描述和各种构件分类检索方法的应用范围,以及本文中实际问题的特点,作者选择常用的基于刻面的构件分类检索方法,从构件库中检索构件并进行分类。基于刻面的检索方法是从多个刻面对构件进行分类,每个刻面有若干关键字,这些关键字表征构件在这个刻面的一些特征。如本文用基于功能刻面的构件分类方法对构件按功能进行分类,然后从这些分类的构件中选择一组构件以构建网构软件来帮助用户完成较复杂的任务。

假如构件库中有足够量(如MAX个)的构件,某用户要选择m个不同功能类型(Q1,Q2,,Qm)的构件来完成一个较复杂的任务,同时又对选出的m个构件提出n个个性化的要求(R1,R2,,Rn)(非功能性需求) ,这样用户就提出了m个功能性需求和n个非功能性需求。首先用基于功能刻面的构件分类检索方法从构件库中选出各个功能构件的集合C1,C2,,Cm,某个构件CijCi,其中1im,1jki,ki是集合Ci中的元素个数。接下来的工作就是从这m个集合中的每个集合中选出一个构件,使得选出的m个构件更好地符合用户的个性化的要求(R1,R2,,Rn)。

2 基于GA的网构软件构件选择

2.1 网构软件构件选择问题

根据以上分析,本文的网构软件构件选择问题CSPI(Component Selection Problem in Internetware)可描述如下:

如图1所示,在构建一个网构软件过程模型中,首先用基于功能刻面的分类检索方法(满足用户最基本的要求)从构件库中选出一批构件,这些构件按功能分为m类,即有m个构件类(C1,C2,,Cm),每个构件类Cik个候选构件(Ci1,Ci2,,Cik),其中1im ;而每个候选构件Cijn个属性(Ci,j,1,Ci,j,2,,Ci,j,n),其中1im,1jk,而在这n个属性中效益型属性有θ个,效益型属性构成的集合为A;每个用户提供一组需求(R1,R2,,Rn)(非功能性需求)。这样,CSPI就变成从m个构件类中选出m个构件,并且每个构件类中只允许选择一个构件,使得选出的m个构件(C1j1,C2j2,,Cmjm),其中,1j1,j2,,jmk,在满足用户基本功能需求和用户需求(R1,R2,,Rn)中的成本型约束前提下,其综合性能最优或接近最优,也就是使得函数i=1mFun(Ciji)的函数值最大,其中Fun(Ciji)是对构件Ciji按照一定的评价标准评价后所得到的一个效用值。

CSPI映射到一个多维多选择的背包问题MMKP[10](Multiple Choices Multi-Dimensional Knapsack Problem):

(1) CSPI中的构件类相当于MMKP中的物品类;

(2) CSPI中的构件类中的候选构件相当于MMKP中的物品类中的待选物品;

(3) CSPI中的候选构件的效益型属性相当于MMKP中的物品价值属性;

(4) CSPI中的候选构件的成本型属性相当于MMKP中的物品所要耗费的资源属性;

(5) CSPI中的用户对构件所提出需求约束相当于背包中的可用资源。

CSPI可用如下数学公式进行描述:

i=1m(Ci,j,sxij)RssA(1)

Max:i=1m(Fun(Ciji)xiji)(2)

上述公式中,若构件Cij被选中,则xij为1,否则,xij为0 。式(1)表示所选出的m个构件的第s个属性要满足用户的需求,这里Rs表示用户对第s个属性所提出的要求,并且,该属性是成本型且具有可加性,若是该属性为可乘性,则应将式(1)改为如下公式:

i=1m(Ci,j,sxij)RssA

显然,用上述公式描述的网构软件中构件选择问题是个函数优化问题,而且是MMKP问题。因为MMKP问题已经在相关文献中被证明是一个NP难问题[11],所以本文所描述的CSPI问题也是一个NP问题,因此,就不能够在多项式时间内求出理想的最优的m个构件(C1j1,C2j2,,Cmjm)所组成的构件集合。因此,为了能够在用户可接受的时间范围内将所找到的构件的相关信息反馈个用户,以便用户能够及时得到结果,本文拟采用GA选出接近理想的构件集合。

2.2 利用GA解决网构软件构件选择问题

2.2.1 编码

一般说来,GA编码方式有二进制编码、实数(即浮点数)编码、符号编码、格雷码编码以及多参数编码等方法。这些编码方式均有各自的优缺点及其适用环境。对于很多组合优化问题,目标函数的值不仅与表示解的字符串有关,而且与其所在字符串的位置有关,这样的问题称为有序问题。本文根据实际问题特点选择使用符号编码(即有序串编码)方法对染色体进行编码,其具体编码规则如下所示:

用户选出的10个构件用10个整数进行编码。若构件Cij被选中,则第i个整数为j。这样形成的10个整数组成的编码的序列称为染色体即个体,而染色体中的每个整数j称为基因。如一个染色体序列为2324252627表示第一类构件中的第2个构件、第二类构件中的第3个构件、第三类构件中的第2个构件、第四类构件中的第4个构件、第五类构件中的第2个构件、第六类构件中的第5个构件、第七类构件中的第2个构件、第八类构件中的第2个构件、第九类构件中的第2个构件、第十类构件中的第7个构件被选中。

2.2.2 种群初始化

种群的初始化方法主要有两种:第一种方法是采用随机数函数产生的随机数对染色体进行赋值的方法;第二种方法是先将一些先验知识转化为满足约束条件的一组约束,然后在这些满足约束条件的情况下随机地选取PopSize(种群规模)个染色体进行初始化种群。第一种方法主要适合于问题的解不依赖于先验知识的情况下或者问题的解的约束很松弛的情况下;而采用第二种方法生成的种群中的染色体均满足约束条件,这样就不需要再进行约束计算,从而能够更快地找到种群中的好的染色体。

种群的初始化即是对种群中的PopSize(种群规模)个染色体进行初始化。本文采用产生随机数的方法对种群进行初始化,即用随机函数产生一个整数Num,接着用M(构件类数目)对Num进行求模运算(Num%M),然后将Num%M赋值给种群中的第一个个体,按照上述方法依次对种群中的染色体进行PopSize次赋值。

2.2.3 适应度函数

适应度函数是为了计算每个染色体的适应能力即适应度值的函数,而适应度是表明染色体或解的优劣性即适应环境的能力,其值越大表明该染色体的的适应性越强,即该染色体适应环境的能力越强。而在CSPI中,染色体的适应度越大就表明该染色体所对应的构件就越接近用户的需求,用户就很有可能选择这些网构软件构件。

而如何表征网构软件构件的优劣呢?本文采用构件效益型属性的加权和来表征构件的优劣,用式(2)作为适应度函数。

2.2.4 遗传操作

对种群中的各个个体评价后按个体的适应度大小进行排序,然后进行遗传操作。通常,GA的遗传操作主要有以下三种选择、交叉、变异。本文中选择策略采用轮盘赌选择策略将染色体复制到下一代;交叉操作采用依概率Pc(交叉率)进行交叉,即依概率Pc 选择种群中两个不同的染色体按单点式执行交叉并产生两个新的染色体,并将它们插入到新种群中。

变异操作是采用改进的启发式变异操作(针对遗传算法中盲目性变异引入蚁群算法的正反馈思想),根据变异率Pm随机的选取随机个变异点。先随机产生一个数i,表示有i个点进行变异;接着随机产生i个随机数k1,k2,,ki,分别表示要对某个染色体的k1,k2,,ki位进行交换完成变异。根据信息素τij(t)来决定是否进行变异操作。

2.2.5 算法终止条件

当算法进行遗传操作后,就要判断算法是否满足终止准则,若满足,算法就输出最优染色体并终止;否则就要重新计算新种群中各个染色体的适应值进行循环。

一般说来,GA终止的条件有以下三种:

一是预先给定的最大演化代数 MaxGen(如设置为10000),当演化代数Gen大于最大演化代数MaxGen时算法就终止(在程序中表现为退出while 循环)并返回当前的最优个体。该方法实现很容易,操作也简单,但是不一定得到较好的解,这是因为算法还没有找到用户满意的解就有可能由于算法的演化代数Gen已经达到预先给定的最大演化代数 MaxGen ,从而导致算法被迫退出循环而终止。当然算法还没有找到用户满意的解而终止,还有可能是由于算法已经收敛。避免算法由于演化代数Gen已经达到预先给定的最大演化代数MaxGen而导致算法被迫退出循环,而终止的简单措施就是将最大演化代数MaxGen设置为一个很大的数;

二是算法演化过程中连续若干代未能使子代中最优个体的适应值有所提高,算法将停止并返回当前最优个体。算法演化过程中连续若干代未能使子代中最优个体的适应值有所提高是算法收敛的表现之一,该方法较常用;

三是当算法演化了若干次后找到最优解,算法将停止并返回当前最优个体。当然这是比较理想的情况,一般而言,这种情况是不会出现或者很少出现,这是因为算法只能是得到更优或近似最优的解。

3 仿真实验与结果分析

本实验中,原始数据是从随机产生的1000个构件中按功能刻面检索到的相关数据,这些数据经标准化后变为都是在闭区间[0,1]的浮点数。

实验中所涉及到的参数主要有种群规模即种群大小PopSize、交叉率Pc、变异率Pm、最大进化代数MaxGen=200 、信息素τij(0)=0.5。

一般说来,种群规模PopSize对算法的运行时间具有很大的影响。种群规模PopSize越大,则求解所需进化代数Gen越多;另外,种群规模PopSize越大,处理每代染色体所需时间Time越长;而算法总的运行时间与GenTime成正比,于是PopSize越大,则Gen越多,Time也越长,从而算法总的运行时间也越长。本文中设置PopSize=100。

交叉率Pc和变异率Pm对用GA所求出的满足约束的解的全局性收敛有很大影响。Pc太小会降低进化速率,增加完成进化所需的代数Gen;反之,Pc太大会导致进化速率过快,影响进化过程的稳定性。变异率Pm与交叉率Pc类似,也不宜过高和过低。因此,在GA中,交叉率Pc和变异率Pm通常被设置为常数。经过多次实验,本文中设置交叉率Pc=0.45,变异率Pm=0.05。

最大进化代数MaxGen的主要作用就是保证算法在最坏的情况下能够终止。

信息素τij(t)的作用是指导遗传算法有目的的变异。

如图2所示,图中横坐标表示演化的代数,纵坐标表示在已经演化的代数中的找的最好的染色体的适应性值,也就是在演化一定代数后,与染色体相对应的10个构件的效用值。从图2中可以看出遗传算法进化到158代时,已经取得适应值很好的解。从158代以后,算法的适应值不变,但标准差和平均适应值在变化,这表明算法专门以适应值的优劣并不能完全评价个体的优劣,也就是说,适应值很优的个体有很多个,但最终输出的很优个体只有1个Best Gen:1 3 2 4 6 3 7 3 8 2即第1个构件类的第1个构件、第2个构件类的第3个构件、第3个构件类的第2个构件、第4个构件类的第4个构件、第5个构件类的第6个构件、第6个构件类的第3个构件、第7个构件类的第3个构件、第8个构件类的第3个构件、第9个构件类的第8个构件、第10个构件类的第2个构件这10个构件被选中,即这10个构件是最接近用户需求的构件组合。

从图2 中可还以看出,进行相同的迭代次数,改进的GA(上面的虚线曲线)所得到的结果明显高于GA(下面的实线曲线),并且改进的GA在迭代次数较少的情况下就可以获得比较理想的结果,而普通GA需要进行相当的迭代次数才有可能获得较好的结果。即用改进的GA比用一般GA来选取的10个构件的效用较好。

实验也说明了GA的收敛速度较慢,其最终取得的解的质量普遍低于改进的GA。这说明充分利用反馈信息能够明显提高解的质量。

4 结 语

本文通过分析国内外相关研究成果,结合网构软件的特点,针对现有的构件检索技术方法很难找到更好的满足用户多个非功能性需求的多个构件问题,用适当的方法描述CSPI,并结合MMKP特点,将CSPI映射到MMKP;充分利用GA的适应性强、扩展性好、容错能力高、擅长全局搜索的优势,引入GA选择合适的构件构建网构软件以帮助用户完成较复杂的任务。仿真实验表明:GA能够选择合适的构件构建网构软件;在此基础上,引入蚁群算法的正反馈思想,改进遗传算法的变异操作,实验仿真表明改进的算法的解的质量优于遗传算法,说明改进的遗传算法能够选择更合适的构件构建网构软件。

参考文献

[1]Ma Xiujuan,Zhou Minghui,Mei Hong.A case study of internetware de-velopment[C]//Proceedings of the Second Asia-Pacific Symposium,2010:1-13.

[2]Tang J,Zheng L,Jin Z.Aggregation of autonomous Internetware entities[C]//Proceedings of the First Asia-Pacific Symposium on Internet-ware,Oct,2009.

[3]LüJ,Ma X X,Tao X P,et al.On environment-driven software model for Internetware[J].Sci.China Ser.F:Info.Sci,2008,51(6):683-721.

[4]Marcin Solarski,Matthias Bossardt,Thomas Becker.Component-Based Deployment and Management of Services in Active Networks[C].Lec-ture Notes in Computer Science,2002,2546,Active Networks:87-98.

[5]刘玲.基于本体的构件检索的研究[D].中国石油大学(华东),2010.

[6]杨瑜,谢玲,周立,等.一种高可用实时网构软件的构成成分的自动选择方法[C]//2007全国软件及其应用学术会议论文集,2007:60-65.

[7]张春梅,李蜀瑜.嵌入式软件中一种修正QOS值的构件选择方法[J].计算机应用与软件,2011,28(6):63-65.

[8]范菁,杨冰,熊丽荣,等.基于功能语义的构件描述和检索研究[J].计算机系统应用,2009,18(4):26-31.

[9]上海构件库[CP/OL].http://www.sstc.org.cn/.

[10]Tian M,Gramm A,Naumowicz T,et al.A Concept for QoS Integration in Web Services[J].Web Information Systems Engineering Work-shops,IEEE,2003.

构件软件开发范文

构件软件开发范文(精选11篇)构件软件开发 第1篇2010年6月, 我作为某市电子政务管理中心的一名工程师, 组织软件公司和网络公司开发我市...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部