基于组件的软件工程

基于组件的软件工程( CBSE ),也称为基于组件的开发( CBD ),是一种软件工程风格,旨在用松散耦合的模块化组件构建软件。它强调了软件系统不同部分之间关注点的分离。
组件的定义和特征
单个软件组件是一个软件包, Web服务, Web资源或封装一组相关功能或数据的模块。
组件通过接口相互通信。每个组件提供一个接口(称为提供的接口),其他组件可以通过该接口使用它。当组件使用另一个组件的接口时,该接口称为使用的接口。
在本文的UML插图中,规定界面由Lollipop-Symbols表示,而使用的接口则由开放的插座符号表示。

必须可以替代组件,这意味着必须由具有相同接口的另一个可以替换一个,而不会破坏系统的其余部分。
组件应重复使用。
当软件组件直接与用户交互时,应考虑基于组件的可用性测试。
组件应该是:
- 充分记录
- 经过彻底测试
- 强大 - 全面输入效率检查
- 能够传递适当的错误消息或返回代码
历史
在1968年在德国加米奇(Garmisch)的北约软件工程会议上,道格拉斯·麦克罗伊(Douglas McIrroy)在1968年的北约软件工程会议上的地址首先是由预制组件建造的,该想法首先是由道格拉斯·麦克罗伊( Douglas McIrroy)的地址引起的。会议着手应对所谓的软件危机。 McIlroy随后将管道和过滤器纳入UNIX操作系统是该想法的基础架构的首次实施。
Stepstone的Brad Cox在很大程度上定义了软件组件的现代概念。他称他们为软件IC ,并着手通过发明Objective-C编程语言来为这些组件创建基础架构和市场。 (他在他的书面向对象的编程中总结了这一观点 - 1986年的进化方法。)
软件组件在两种不同的上下文和两种中使用:i)使用组件作为零件来构建单个可执行文件,或ii)每个可执行文件在分布式环境中被视为一个组件,其中组件使用Internet或Interanet彼此协作IPC的通信协议(INTER PROCESS CONBLOCATIONS)。以上属于以前的种类,而下面属于以后的种类。
IBM在1990年代初以他们的系统对像模型(SOM)领导了这条路。作为反应, Microsoft为使用对象链接和嵌入(OLE)和组件对像模型(COM)的组件软件实际部署铺平了道路。截至2010年,许多成功的软件组件模型存在。
建筑学
运行多个软件组件的计算机通常称为应用程序服务器。应用服务器和软件组件的这种组合通常称为分布式计算。 EG,财务应用程序或业务软件中的典型现实应用程序。
组件模型
组件模型是组件属性的规范。
对现有组件模型进行了分类。组件模型的示例是:企业Javabeans (EJB)模型,组件对像模型(COM)模型, .NET模型,X-MAN组件模型和Common Object Repption请求代理体系结构(CORBA)组件模型。
技术
- 业务对象技术
- 基于组件的特定域软件框架
- 面向组件的编程
- OSGI服务平台定义的捆绑包
- Microsoft的组件对像模型(OCX/ActiveX/COM)和DCOM
- TASCS-高级科学组件软件的SCIDAC技术中心
- EIFFEL编程语言
- Sun Microsystems (现为Oracle )的企业Javabeans
- 基于流程的编程
- 来自ObjectWeb的分形组件模型
- Midgard和PHP的MIDCOM组件框架
- Oberon ,组件Pascal和Blackbox组件构建器
- RCOS基于组件的模型驱动设计的方法来自UNU-IIST
- 来自ObjectWeb的沙发组件系统
System.ComponentModel
在Microsoft .NET中的名称空间- 团结技术开发的团结
- Epic Games开发的虚幻引擎
- UNO来自OpenOffice.org办公室套房
- 来自Borland的VCL和CLX和类似的免费LCL库。
- Mozilla基金会的XPCOM
- 复合文档技术
-
分布式计算软件组件
- .NET从Microsoft远离
- 9P为计划9开发的分布式协议,由Inferno和其他系统使用。
- 来自对像管理组的CORBA和CORBA组件模型
- freedesktop.org组织的D-BUS
- DCOM以及Microsoft的com (和com+)的后期版本
- DSOM和SOM来自IBM (现在报废)
- 来自Zeroc的冰
- 太阳的Java EE
- 来自SICS的Kompics
- 来自OpenOffice.org的通用网络对象(UNO)
- 网页服务
- Zope Corporation的Zope
- Axcioma (分布式,实时和嵌入式系统的组件框架)通过补救措施
- COHORTE由Isandlatech执行和管理可靠且可靠的分布式分布式分布式的基于服务的组件应用程序的跨平台运行时
- DX-MAN服务模型
- 通用编程强调将算法与数据表示分离
- 接口描述语言(IDLS)
- 控制(IOC)和普通的旧C ++/Java对象(POCO/POJO)组件框架的反转
-
管道和过滤器
- UNIX操作系统