软件方法学是指组织软件生产过程的一系列方法、技术和规范。
传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流等观点反映问题的本质,面向对象方法的出现使软件方法学迈进了一大步,但是,它还没有解决高层次上复用、分布式异构互操作等难点。
基于组件的软件设计方法学在软件方法学上为解决这个难题提供了机会,它把应用逻辑和实现分离,提供标准接口和框架,使软件开发变成组件的组合,基于组件的软件方法学是以接口为中心、面向行为的、基于体系结构设计的,它要求:对组件要有明确的定义;用组件描述技术和规范如UML、JavaBean、EJB、Servlet等描述组件;开发应用系统要按组件来裁剪、划分组织与分配角色;使用支持检验组件特性和生成文档的工具,确保组件规范的实现和质量测试。
应用基于组件的软件设计方法学可以更有效地支持复用技术,改善软件质量,减少软件设计和开发的工作量,降低软件开发的费用和提高生产力。
在基于组件的软件设计方法学方面,近期的研究主要包括:
l组件模型。在组件模型方面,已形成三个主要流派,即Sun公司的EJB、微软公司的COM+/DCOM、OMG的CORBA/ORB。
l组件组合。组件组合是基于组件的开发方法的重点。近期研究包括:在程序语言级上的组件组合方法,包括面向对象的编程语言、约束性和基于逻辑的编程语言等;新的模块化和包装技术,包括面向方面的编程(Aspect-Oriented Programming)、面向主题的编程(Subject-Oriented Programming)等;基于设计的组合方法,包括基于事件的组合方法、组合设计模式、反射技术等。
l组件的选择。目前的组件存储和检索方法大致可分为信息检索方法、描述型方法、操作语义方法、指称语义方法、拓扑方法和结构化方法等6类。但是,目前并没有一个被普遍接受的关于存储、分类和检索软件组件的解决方案。
l工具支持。随着组件和中间件技术日趋成熟,支持基于组件的软件开发的开发环境和工具显得十分重要,这些工具要为组件的设计、开发、组合和测试,实现基于组件的应用系统提供服务和支持。
近年来对基于组件的软件开发方法的研究已经取得了不少成果,在国内外许多大规模分布式应用系统中得到应用和实践。
在组件和组件库的标准化方面,在美国军方和政府资助的项目中,已经建立了若干组件库系统,如CARDS、ASSET、DSRS等。由DARPA发起,由美国军方、SEI和MITRE支持的STARS项目在此基础上考虑了开放体系结构的组件库之间共享资源和无缝互操作和问题,提交了ALOAF的组件库框架。可复用库互操作组织RIG致力于开发可互操作性的解决方案,其成果包括BIDM和UDM,定义了实现互操作、复用库交换组件时所需的数据模型。北大西洋组织NATO制定了一组关于软件组件复用的标准,包括“可复用组件开发标准”、“可复用软件组件库管理标准”等。
在组件的实现、组合技术方面,CORBA、J2EE、.NET等各种规范和技术对基于组件的软件开发提供了有力的支持。在国内,青鸟工程是基于组件的软件开发领域中具有代表性的研究。
在基于组件的软件方法方面,我们的研究内容包括:研究基于组件的软件开发方法、模型和过程,重点研究组件库技术、组件组合、组件的测试和质量保证、基于COTS的开发等理论和技术,建立一套方法和支持工具,提供一个方便组件的选择、创建、组装、集成和维护的开放体系结构,为大规模的分布式软件系统的开发和实现打下坚实的基础