计算机工程
COMPUTER ENGINEERING
1999年 第25卷 第10期 Vol.25 No.10 1999



基于构件的框架开发方法及其特定域应用
吴明晖　应晶　何志均
摘要：传统的软件开发方法地面向领域的软件系统开发过程中难以支持重用性，针对此问题，提出了一种基于构件的框架开发方法FCDM，主要讲座领域分析、领域框架的划分、领域构件的提取及应用系统的生成等关键过程，并给出在特定领域中的应用实例。
关键词：软件重用；领域分析；构件；框架
The Framework of Components Development Methodology and Its Use in Domain
Wu Minghui Ying Jing He Zhijun
(Institute of Computer Software,Zhejiang University,Hangzhou 310027)
【Anstract】It is difficult for traditional software development methodology to support software reuse in domain system development.Aiming at this problem,this paper proposes the framework of eomponents development methodology,and discusses the effective way of domain analysis,frameworks and components pick-up,application system integration.Finaly it gives an example in domain.
【Key words】Software reuse,Domain analysis,Component,Framework
　　软件重用技术能显著地提高软件的开发效率、增强软件的可维护性和鲁棒性，从而达到延长软件的生命周期、降低开发成本和缩短开发周期的效果，因此对软件重用方向的研究一直是软件工程中的重点和热点。传统上的软件重用一般是指程序源代码的重用，而事实上源代码级的重用并不能给软件开发带来数量级上的提高[1]，重用应当包括软件的分析、设计、实现、维护阶段以及相应的文档、知识等一切与软件开发过程有关的对象，特别在大型系统的开发，由于系统固有的复杂性，不仅包括功能方面的需求，还包括了许多非功能方面的需求，如灵活性、适应性和可靠性等，要满足这些特性，重用性是必不可少的。对于一个特定领域来说，通常其工作流程和规范大多是相同或相似的，当软件开发人员为该领域中的某个企业设计开发系统后其大多数成果都是可以运用到同领域的其他企业，从而不必对类似的项目从零开始开发。为更好地利用前期的开发成果，在最初的开发过程中就应该以一种重用的思想来指导整个开发过程。
1　构件和框架
　　软件产业要达到工业生产的工程化水平，构件的生产和使用起着重要的作用。软件的生产也可以象硬件的生产一样，在设计好框架后通过标准的构件组装而成。
　　一般认为构件是具有一定功能、能够独立工作或同其他构件组合起来协调工作的程序体，一经产生，就与它的具体实现语言无关，可以认为是一段二进制码和数据段。当今关于构件的标准主要有Microsoft公司的OLE/COM、OMG组织的CORBA[2]等。
　　面向对象编程技术的运用极大地推动了软件工程的发展，采用面向对象编程技术可以有效地增加软件的重用性，这和构件有着相似之处。由于以下因素有必要采用构件，而不仅局限于面向对象编程：1)面向对象编程的重用属于白箱重用，即是源代码级的重用，而构件的重用可以是黑箱重用，使用者可以不对它进行继承、重载等操作而直接使用；2)面向对象编程的重用要受到其开发环境的制约，如用C++产生的类很难在以Object Pascal为开发语言的项目中重用；3)由于面向对象编程的重用是基于源代码的，而很多程序员出于技术保密的要求，不会公开其源代码，故而使得研究成果的重用范围很小，仅限于个人或项目开发小组。
　　若采用构件形式情况就会截然不同，因为构件是一段二进制代码，其内部具体实现是无法看到的，可将成熟的构件当作商品出售，在保证开发者的利益同时最大地满足社会需求。可见采用构件来开发软件可以更有效地重用他人已有的劳动成果。
　　在一个特定的域中，通过领域分析可以构造出一个领域模型、得出领域框架。 Ralph E.Johnson对框架[3]给出了如下定义：
　　1)框架是整个系统或部分系统的可重用设计，由一组抽象构件及构件实例间的相互作用方式组成；
　　2)框架是由开发人员定制的应用系统的骨架。
　　由此可见框架把一个系统有机地分解成一群相对独立的构件，定义了各个构件间的接口和作用关系，符合软件工程中设计的模块化、独立化和信息隐藏等特征。框架是一个大粒度的设计，是最初系统的设计成果，所以框架支持分析和设计级的重用。
2　FCDM开发方法及其应用
　　本文提出一种基于构件的框架开发方法：FCDM(Framework of Components Development Methodology)。FCDM着重支持领域分析、领域框架的产生和领域构件的提取等关键过程，在开发大型书店综合管理系统中得到有效的应用。
2.1 FCDM开发方法
　　FCDM方法是针对特定领域中的软件系统开发，以大粒度重用为指导思想而提出。该方法首先采用领域分析方法，找出行业的共性，得出领域模型，再根据领域模型划分出领域框架，然后根据框架中的约束条件标识出领域构件，得到领域框架库和领域构件库。在目标系统生成时就不需要从底层开始设计，而是根据需求从库中检索出符合要求的框架和构件，将其实例化，经胶合代码组合而成。图1反映的是一个迭代开发过程，领域框架库和领域构件库随着系统的运转而不断充实。

图1 FCDM开发方法过程示意图
　　(1) 领域分析
　　领域分析的目的是在软件开发过程中对应用领域的信息进行收集、抽象及组织，识别和构造出各种可重用的信息，使得这些信息能够在开发该领域的软件时得到最大限度的利用而提高开发效率。在FCDM方法中领域分析主要由以下两个步骤组成：1)确定领域范围、领域分析的目标和参与领域分析的专家；2)建立领域模型，标识出领域实体及实体的特征、属性及实体间的关系，产生相应的文档。
　　(2) 领域框架
　　框架定义了对象集合的行为，提供了一种革新的方式去重用软件的设计和代码、描述要解决的问题，以及问题的解决方法和上下文。框架可分为以下3类：1)开发系统框架：由专家产生，经开发人员封装进系统，如Microsoft Visual C++中的多文档应用框架、屏幕保护程序框架等；2)行业知识框架：封装了特定行业领域知识，一经产生即可在整个行业的同类软件的开发中进行重用，这是采用FCDM开发方法设计的重点；3)系统环境框架，软件体系结构层框架，如采用Client/Server或Browse/Server结构等。
　　在确定领域后，可以构造出一个形式化的模型作为某类产品的重用框架，用扩展的实体-关系图(EE-R图)来表示，分为外模式、逻辑模式和内模式3个层次。外部模式为用户视图，反映用户视角中系统的面貌。逻辑模式重点描述系统实体间的关系，它比内模式抽象，不涉及到具体的硬件环境，但也与外模式不同，它与具体的实现语言无关。而内模式是物理模型，它是实体具体实现的阶段，主要包含属性和方法，属性是其状态的表示，而方法是其行为的表示，属性通过方法而改变。对于属性和方法有着公有和私有之分，据此使得一个实体发生变化对整个系统产生的影响最小。构造框架的重点在于解空间，采取如下步骤：1)确定框架的约束条件，包括软件、硬件、性能及设计等；2)根据通用的高层设计，标识出高层的构件，确定高层构件间的联系。
　　采用框架技术进行软件开发的主要特点包括：1)行业内的软件结构一致性好；2)迫使软件设计人员加强对领域的了解，需求分析充分，避免了传统软件开发中急于编程，过早考虑实现细节的弊病；3)解决高级设计人员相对不足的问题，可以让那些经验丰富的人员去设计框架、领域构件而不必陷于低层编程；4)大粒度的重用使得平均开发费用降低，参数化框架使得适应性、灵活性增强。
　　(3) 领域构件提取
　　目前虽然已经存在巨大的构件库供软件开发人员使用，并使开发人员能充分感受到使用构件所带来的好处，但无论存在的构件库如何丰富，仍旧不可能满足新系统的所有需求，因此有必要开发自己所需的构件。以往开发的构件通常粒度较小，只能完成一些小系统级的功能，故而导致重用的效果不明显。在FCDM方法中，把构件分为两类：系统构件和领域构件，其中系统构件主要指开发环境自身所带的构件库，如PowerBuild的PBL、Delphi的VCL、Microsoft Visual C++的MFC等。领域构件又分为通用构件和特殊构件：通用构件是指整个领域中无须改动可使用的构件，如通用查询构件；特殊构件则与领域特定环境相关，要根据实际情况做相应的调整，如报表发生构件等。领域构件不同于系统构件，它与领域框架相适应，构件间的关系比较紧密，它们以框架所确定的方式进行通信，完成领域相关的功能，也正因为领域构件的这些特性，使得它们在特定域中能得到大粒度的重用。在使用领域构件的同时并不排斥系统构件，相反，而是要充分利用系统构件，一般情况下由系统构件完成比较低层的功能而领域构件完成高层功能，领域构件往往是系统构件的特定组合。
　　为此，提出了在设计领域构件时应遵循以下原则：1)构件的抽象分类应在领域模型和领域框架设计的基础上进行；2)构件的设计应根据子系统或子功能来划分，使每个构件与领域内实体相对应；3)构件的接口设计要规范友好，既要满足信息隐藏的要求，又要符合框架内的通信要求，开发人员能够方便地使用；4)适应性强，可根据领域内不同系统进行投影和组合，最大限度地满足需求；5)质量保证，由于构件的重用性使得它的应用范围广阔，因此使用前必须充分测试、审查；6)文档齐全，包括设计环境、理由、人员、使用范围、关键字、测试审查情况、使用实例等，提供相应的检索机制。
　　(4) 应用系统的生成
　　在完成以上的设计后，应用系统的生成将相对比较简单，领域框架和构件的设计已经解决了许多关键问题，框架和构件的结合将导出应用系统。由于领域框架和构件的设计人员不同于应用系统的开发人员，因此一个应用系统的成功与否关键在于合理地选择使用领域框架构件，这就有必要遵循以下原则：1)深入理解框架的设计理由和应用环境，根据新系统的需求在框架库中查找符合条件的框架，进行参数调整。在无合适的框架时要重新进行框架设计，在测试完毕后加以利用，新的框架及其文档加入框架库中；2)在选定框架的基础上从构件库选择领域构件，所选的构件不仅应在功能上满足要求，还要在风格上与框架相适应，不能破坏整个框架的结构、通信机制；所选的构件在功能上不满足时，必须对领域构件重新开发并完善领域构件库。
2.2 FCDM的应用实例
　　《新华书店集成管理系统》包括了现代书店经营管理的各个方面，面向多家大型书店，因此在需求分析时就不只局限于某一家特定书店的运转情况，而是广泛听取了多家地、市级新华书店的工作和管理人员的意见和要求，在领域专家的参与下从整个行业的角度进行的。经过领域分析，根据行业特征，将整个业务划分为以下几种大的框架类型：1)业务子系统框架；2)门市子系统框架；3)财务子系统框架；4)栈房子系统框架；5)决策子系统框架；
　　其中每个大的框架又由小的领域框架组成，如门市子系统框架的子框架有：零售、批发、教材销售、操作员监控、销售情况实时监控、读者查询、退书、门市盘存、折扣设置、操作员管理、销售报表生成、异地数据交换等。这些框架和子框架在大多数书店系统中是基本相同的，对于特殊情况可以进行灵活配置，使其符合要求，而不必从头开始设计。如有些书店的门市部设有二级栈房而有的没设，只需对其门市框架做相应设置即可。
　　根据领域构件的设计原则，可以划分出如下类型的领域构件：1)计算型：包括工资计算、利润计算等；2)查询统计型：包括畅行书目销排行榜、动销书目表、读者查询等；3)报表型：根据查询统计结果生成、预览、打印各种类型的报表；4)文档型：包括各类通知、电子邮件、报表、定单的发送、接受、协同等；5)决策型：根据运转情况给出各类图表，对当前形势进行分析预测，辅助负责人作出决策；6)通信型：负责数据交换，维护异地数据库的一致性和完整性。
　　领域构件是由其他领域构件和系统构件集组成，如通用查询构件就是由表单(TForm)、编辑框(TEdit)、位图按钮(TBitBtn)、数据库构件(TDataBase)、数据库查询构件(TQuery)、数据源构件(TDataSourse)、数据库网格(TDBGrid)、时间拾取器(TDateTimePicker)及报表型领域构件等组合而成。有了比较完备的框架和构件库，就可以通过良好的可视化开发工具(Borland Delphi)将所选的领域框架进行组合来产生新系统，这将是一件让人感到轻松和愉快的工作了。
3　结束语
　　面对特定领域多个系统的开发，迫切需要一种好的开发方法来有效支持软件重用性，本文提出一种基于构件的框架开发方法FCDM。该方法已在实践中应用，并证明这种方法是有效的，能显著加大重用的粒度，从而缩短整体开发周期，在提高品质的同时降低了费用。我们将继续完善FCDM方法并对构件库管理、框架系统进化等进一步进行研究。
基金项目：国家自然科学基金和浙江省自然科学基金
作者简介：吴明晖（1976～），男，研究生，主研方向：软件工程、人工智能
作者单位：浙江大学计算机软件研究所，杭州301127
参考文献
1 Tracz W.Software Reuse Myths.ACM SIGSOFT Software 曲 Engineering Notes,1988,13(1):17-21
2 Object Management Group.The Common Object Request Broker:Architecture and Specification,Revision2.0.Framingham,MA,1995
3 Johnson R E.Components,Frameworks,Patterns,ACM SIGSOFT Software Engineering Notes,1997,22(3): 10-17
4 王少锋.软件重用关键技术和基于重用的特定域软件开发方法研究[博士学位论文].杭州：浙江大学,1998-06
5 Show M,Garlan D.Software Architecture Perspectives On An Emerging Discipline.北京：清华大学出版社,1998-05
收稿日期：1999-01-18
