在基于构件的软件开发(CBSD)中,作为复用基础设旌的 构件库 系统已成为企业内部和企业间协作的必然装备,而要建立系统化的构件库,建立合适的 构件模型 是第一步。构件模型是构件本质特征及构件间关系的抽象描述。它定义了构件的本质属性,规定了构件接口的结构以及构件与软件体系结构、构件与构件之间的交互机制。构件模型通常还提供创建和实现构件的指导原则。
1 当前典型构件模型简介与分析
在围绕构件库进行软件开发的过程中,不同的角色、不同的关注点所需要的构件信息也不相同。基于这一认识北京大学信息科学技术学院软件研究所将构件模型分为三种:构件描述、分类的模型,构件规约、组装的模型和构件实现的模型。下面以这种分类方法来分析一下当前典型构件模型。
(1)构件描述、分类的模型试图以一种综合的方式来描述构件,使得构件易于为用户所理解,易于在库中被有效高效地分类、存储和检索。REBOOT(Reuse Based Object-Oriented Techniques)模型就是其中之一,它通过刻面的方法从各个角度刻划软构件属性,来实现对构件的分类和检索。
(2)构件规约、组装的模型描述构件的 功能和行为规约,并通过配置这些规约来刻划系统。著名的3C模型就是用来刻划构件规约和组装的。3C模型是一个指导性的构件模型,它从概念、内容、语境三个部分来描述构件,但是3C横型缺乏形式化定义和易懂的描述。因此仅具有一定的宏观指导意义。
(3)构件实现的模型用于帮助人们决定如何用某种程序设计语言或以某种可执行单元的形式来实现构件。有代表性的实现级工业标准构件模型有CORBA、DCOM/COM和Enterpise JavaBean,三足鼎立构成竞争与互操作并存的格局,工业构件模型最大的缺点在于其缺乏对构件语义的深入支持。
综合考虑现有的构件模型,可得出以下结论:
(1)现有的面向构件描述和分类的模型缺乏对构件语义特别是构件领域特征的语义的描述,而这些正是理解构件基于领域的复用价值的关键。
(2)现有的面向构件规约和组装的模型缺乏对构件演化的支持,对构件组装的支持机制也未达到标准化。
(3)现有的构件模型都很少涉及有关构件复用和构件管理的信息,比如构件的复用度等。
(4)在构件库系统中,构件模型的应用是既面向构件描述和分类又面向构件规约和组装的,而目前关注如此多方面的构件模型还不多见。
2 对构件库中构件模型的改进
人们对构件库中构件的操作包括入库、检索、学习、组装和演化等,在对构件进行这些操作时,变换支持其实现的底层构件模型是不现实的。所以,笔者试图探求一种构件描述模型,并让它同时支持构件的语义检索、自动化组装、以及对演化的自动化支持等。
2.1 构件模型所要描述的信息
在对构件进行描述之前,必须先明确有哪些信息需要被构件模型来描述。而要明确构件模型中到底需要记录那些信息,就应该看构件库中围绕构件都做了哪些活动。经过分析,构件库中分角色对构件的操作有:
(1)构件发布者:注册构件描述、分类信息;注册构件实体信息(离线构件);注册构件接口信息(在线构件)。
(2)软件开发人员:查询;下载构件实体(离线构件);获取构件接口信息(在线构件);学习构件的功用和构件的用法等信息;应用构件进行应用系统组装;对不适用的构件进行演化。
为了支持这些活动,构件模型中应该具有下列信息:
(1)面向构件描述和分类的信息
所有对用户查找、理解、选择、适应性修改以及使用构件有帮助的信息;
所有对构件库管理者分类和管理构件及构件间关系有帮助的信息;
构件的其他属性,包括:生产者、版本、使用者、反馈意见、知识产权控制等。
(2)面向构件规约和组装的信息
构件对外提供的功能;
构件需要外界为它提供的功能;
构件被用于什么语境;
支持构件演化的信息。
综上所述,不同的角色在构件库中对构件的操作也不同。所以,对构件的信息需求也不同。在一般情况下,可以认为在企业里构件的入库者就是构件的生产者,他们应该将主要的构件描述信息在构件入库时录入进去;而构件使用者对构件的行为有查找、学习、组装和演化等,并且在构件使用者应用构件库进行软件开发时,在不同时期所关注的构件信息也是不同的。所以,应该分阶段、分层次地把构件的信息展现给构件使用者。在这里,将按照查找、学习、组装与演化三个层次来展现构件的性质。
2.2 构件模型
构件(Component)是指语义完整、语法正确和有可复用价值的单位软件,是软件复用过程中可以盟确辨识的系统构成。结构上,它是基于检索部分、基于学习部分和基于组装和演化部分的复合体。
这里,RetrievalPart是基于构件检索的部分,查找的目的是为了能够准确、快速地找到所需要的构件,这里支持构件查找所用的描述信息由六个刻面和复用度(一个“属性一值”对)组成;为了能够支持计算机检索。这部分信息必须用形式化语言来描述。StudyPart是对构件学习的部分;学习阶段的目的是进一步确定构件是否满足软件开发的要求,这部分工作是由构件使用者来做的.所以用自然语言描述最合适;支持构件学习的信息可以分为构件内部信息描述和构件外围信息描述两种,构件的内部信息是外界可见的属性和行为,其中包括:公有属性及对它们的自然语言描述和公有行为及对它们的自然语言描述。构件的外围描述包括:生产者,版本,使用者,反馈意见,知识产权控制等。AssemblyAndEvolvementPart是支持构件组装和演化的部分;组装和演化阶段软件使用者所关心的是构件的具体功能和构件的详细使用语境,为了使这阶段支持自动化组装,所以这部分应该用形式化语言描述。
2.2.1 基于检索的部分
基于检索部分描述的主要目的是为了能够准确、快速地找到所需要的构件。很多专家学者在这方面已经做了很多工作,目前各类 构件库 中使用最多的是关键词分类法,枚举、层次分类法,属性一值分类法和刻面分类法四种。这里选用了刻面分类法来描述构件,并加入了复用 度这个属性一值对来描述构件的复用价值。刻面分类部分选取了功能(Functionality),层次(Level),表示方法(Representation),硬件环境(HardwareEnvironment),软件环境(SOFtwareEnvironment),程序语言(Programming Language)六个刻面来描述。
定义1基于检索部分(RetfievalPart)。基于检索部分可以表示为:
RetrievalPart=[Functionahty,Level,Representation,Hard-wareEnvironment,SoftwareEnvironment,ProgrammingLanguage,ReuseDegree]
其中,功能选取的术语:任务管理,资源管理。时间管理,编程支持,中断管理,异常管理,用户界面。安全管理,网络服务,数据库管理等;层次选取的术语:需求,设计,实现.实施,测试等;表示方法选取的术语:源代码,目标代码,文档,图表等;硬件环境选取的术语:CPU,内存,显卡,主板等;软件环境是所需软件的列表。其中既包括系统软件又包括应用软件,例如:Win98.Win2000,WinXP,Linux,OffICe2000等;程序语言选取的术语:C,C#,Visual C++,VB,Java,Visual Foxpm等。这里给选取的术语空间加入机器学习的机制,随着新构件的不断入库,更多、更规范的术语的出现,来不断丰富和完善各个刻面的术语空间。
定义1.l复用度(ReuseDegree)。复用度等于初始值(Initialization)加上复用次数与人库时间的比值。
ReuseDegaee="Initialization"+ReuseTime/EmerTime初始值在软件入库时由入库人员设定,并且在以后的构件库运行过程中可以由构件库管理人员或构件使用者更改。
2.2.2 基于学习的部分
定义2基于学习的部分(StudyPart)。基于学习的部分可以分两部分来描述:内部信息描述(ImerInfo)和外围信息描述(Outerlnfo)。
StudyPart=[InnerInfo,Outerlnfo]
其中,内部信息描述的是构件能向外界提供什么服务,需要外界为它提供什么服务,包括:外显的属性和向外提供的服务及其自然语言描述。外部信息描述的是构件的一些外部信息,如生产者、版本、使用者、反馈意见、知识产权控制等。
定义2.1 内部信息描述(Innerlnfo)。内部信息描述按照构件结构分成公有属性(PublicAttribute)和公有行为(PublicAction)两部分描述。
Innerlnfo=[PublicAttribute,PublicAction]
定义2.1.1公有属性。公有属性的结构是属性名称(AttributeName)和相对应的自然语言描述(AttfibuteNature-LanguageDesefiptionl的对偶。因为基于学习部分是让“人”去学习.所以用自然语言描述是最合适的。
本文关键字:管理系统 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术