面向构件
在任何行业中,复杂情况通常是通过应用很多关键概念来解决的。这些概念是通过像抽象、分解、迭代和细化这们的方法来表达的。其中的关键是分解技术---把一个较大的问题分解成较小的、可管理的单元,那样每一个单元都可以单独处理。这个技术是软件工程的许多方法的核心。这些方法可以称为结构化设计、模块化编程或面向对象,它们产生的单元称为模块、包或构件。
最近,人们开始关注于通过有计划地集成现有的软件部分来进行软件开发。这通常称为基于构件的开发(Component-Based Development, CBD)或基于构件的软件工程(Component-Based Software Engineering, CBSE),而其中的各个部分称为构件,在此我们通称为面向构件。
关于到底什么是构件、什么不是构件的问题有很多不同意见,但无论如何,CBD的基本是从定义良好、独立开发的部分来建立系统。对于CBD而言,构件远非模块化编程方法中的子程序、面向对象方法中的对象或类、或系统模型中的包。在CBD中,构件的概念既包含了这些思想又扩展了它们。构件是设计、实现以及维护基于构件的系统的基础。现在我们将采用一个相当广泛、全面的构件定义:
构件是一个独立发布的功能部分,可以通过它的接口访问它的服务。
这个定义强调了构件的很多重要方面。第一,它将构件定义为一个可交付的单元。第二,构件会提供一些有用的功能,这些功能集合到一起会满足一些需求。这些功能的设计符合一些设计准则。第三,构件通过接口提供服务。