孔祥艳
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
当前,企业信息系统需求呈井喷状态,软件规模越来越大,而人们对于软件开发周期的要求却越来越短。使用传统的信息系统开发方法,大量的重复劳动导致开发效率的降低。而使用构件化技术开发信息系统不仅能显著提高软件的质量,降低开发人员的劳动强度,而且能随着系统业务流程的变化而变化。因此,基于构件技术开发企业信息化系统方法受到了业内人士的普遍关注。
软件构件是指具有相对独立功能和可复用价值的软件成分,是粗粒度、相对独立、可替换的软件系统组成部分,能够完成明晰功能的软件实体,可独立部署并易于第三方组装。它的使用同开发、生产无关,构件其实就是对一组类的组合进行封装,并完成1个或多个功能,为用户提供多个接口。整个构件隐藏了具体的实现,只通过接口对外提供服务。
信息系统是稳定性和可变性相统一的实体。其稳定性特征表明,大部分信息系统在信息模型和功能上有类似之处,尽管不同领域对信息系统的功能需求各异,但在一定范围内系统所处理的信息结构是相对稳定的,变化的只是其内容;同时,信息系统所涉及到的业务种类有限,处理过程也具有相似性,不同的只是其运作和控制方式上的差异。正是基于信息系统的稳定性和基础业务的相似性,从而可以将相同的操作进行抽象,将实体信息及其处理处理过程封装在不同的构件中。
基于构件的信息系统开发与传统开发方式不同之处在于分析、设计和实现等各个阶段中所充实的工作不再是从零开始,而是从开发转变为系统集成,可以看成是一个以组装构件为主的软件开发过程。一种可行的构件化企业信息系统开发框架如图1所示。
上述方法可以快速建立信息系统,其核心部分是构件。根据构件处理信息的不同,可将其分为3类:
①通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等;
图1 企业信息系统的构件化开发框架
②领域共性构件:是企业信息系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;
③应用专用构件:是每个应用系统的特有构成成分。信息系统开发中的重复劳动主要指前两类构成成分的重复开发。
因此,通过凝结共性,通用基本构件和领域共性构件将具有良好的可复用性,由此可将开发者的主要精力聚集在系统专用构件的开发及各构件的组装工作中。
企业信息系统的构件化方法摒弃“一切从零开始”的开发模式,而是以已有工作为基础,充分利用积累的知识和经验,通过用户需求和问题域的详细分析发掘可重用的成分,在旧系统中提炼或新开发通用基本构件和领域共性构件。开发者的精力投入专属新系统功能的构件开发过程。所有构件经过测试、标准化、描述和分类后导入构件库,从而新系统的开发是构件开发、组装和系统测试的过程。
在实际的开发中,软件的复用程度并不理想。基于构件的软件开发将开发的重点由原来的软件编程转变为利用已有构件组合集成新的软件系统。由于建立一个应用需要复用很多已有的软件构件,这些构件可能是在不同的时间、由不同的人员开发的,并且有不同的用途,因此需要将它们组装在一起。除了良好的软件架构和合理的软件开发过程指导外,程序员对构件的正确理解和准确利用至关重要。软件复用面临一个矛盾:一方面存在大量的可复用构件,另一方面程序员很难找到真正需要的构件。要解决这个问题,就需要对构件的静态特性和动态行为做出准确、全面的描述,并建立构件库对构件进行合理的分类和组织,提供良好的检索方法支持。
基于上述软件复用中的实际问题可以看出,构件的描述技术作为构件化软件设计中的关键技术之一,在基于构件软件开发(CBSD)的应用实践中占有重要地位。构件描述是指以构件模型为基础,解决构件的精确描述、理解及组装的问题。它规定了一个软构件所需的结构和内容,不仅用于指导软件构件的设计、开发、管理、组装和测试等活动,而且可用于构件库的组织、存储、检索和浏览。
面向对象基于Web的.NET技术是企业信息系统开发中经常采用的开发平台。.NET平台非常适合于构件化布署,采用构件化工程方法,将代码与逻辑和业务对象的剥离能够实现软件复用。一个.NET平台下采用C#语言提炼、开发和加工构件的过程示意图如图2所示。C#是面向构件的编程语言,对构件开发有很好的支持。XML描述能嵌入C#构件注释中。传统构件描述中采用数学符号(难以理解、实现、维护及推广)或直接使用自然语言(很难保证构件质量),而XML具有良好的扩展性和自描述性,因此可将XML作为构件描述语言。
图2 .NET平台下C#语言构件开发过程
用C#等语言开发的源代码,构成各个功能模块。将能够复用的功能模块提取出来,通过标准的接口定义,解耦合(构件与数据库、应用环境等分离,真正意义上实现独立,以适用于其他应用系统),并通过XML描述对构件进行良好的注释。VSTS(Visual Studio Team System,Microsoft开发工具)编译源码后,生成2个文件,DLL程序集(构件)和含有构件描述数据的XML文档。通过XML构件描述解析工具的解析将XML文档转换为构件描述元数据,最后,构件源码、程序集和构件描述元数据3类形式的文件通过构件入库管理系统一起入构件库。
这样,使用者在构件库中搜索到所需构件时,通过阅读详细的描述信息能够清楚地了解构件的基本功能,正确地应用于企业信息系统的开发,而且当构件升级为新版本时,其描述信息也能随之更新,避免了描述与实体的脱节。
企业信息系统构件化开发方法的框架具有通用意义,可用于基于构件开发软件的过程中。上述提出的.NET平台下C#语言开发构件的过程已应用于工程实践中,构件的XML描述能够自动载入构件库,实现了构件体与描述的一体化,提高了构件的精确描述度和理解力。
[1]杨芙清,梅 宏.构件化软件设计与实现[M].北京:清华大学出版社,2008.
[2]王志坚,费玉奎,娄渊清.软件构件技术及应用[M].北京:科学出版社,2005.
[3]LOWY J.Programming.NET Components[M].Gravenstein Highway North Sebastopol:O'Reilly Media,2005.