Component-based software engineering
Encyclopedia
Component-based software engineering (CBSE) (also known as component-based development (CBD)) is a branch of software engineering
that emphasizes the separation of concerns
in respect of the wide-ranging functionality available throughout a given software system. This practice aims to bring about an equally wide-ranging degree of benefits in both the short-term and the long-term for the software itself and for organizations that sponsor such software.
Software engineers regard components as part of the starting platform for service-orientation
. Components play this role, for example, in Web services, and more recently, in service-oriented architectures (SOA)
, whereby a component is converted by the Web service into a service and subsequently inherits further characteristics beyond that of an ordinary component.
Components can produce or consume events and can be used for event driven architecture
s (EDA).
that encapsulates a set of related functions (or data).
All system processes are placed into separate components so that all of the data and functions inside each component are semantically related (just as with the contents of classes). Because of this principle, it is often said that components are modular and cohesive.
With regard to system-wide co-ordination, components communicate with each other via interfaces. When a component offers services to the rest of the system, it adopts a provided interface that specifies the services that other components can utilize, and how they can do so. This interface can be seen as a signature of the component - the client does not need to know about the inner workings of the component (implementation) in order to make use of it. This principle results in components referred to as encapsulated
. The UML
illustrations within this article represent provided interfaces by a lollipop-symbol attached to the outer edge of the component.
However, when a component needs to use another component in order to function, it adopts a used interface that specifies the services that it needs. In the UML illustrations in this article, used interfaces are represented by an open socket symbol attached to the outer edge of the component.
Another important attribute of components is that they are substitutable, so that a component can replace another (at design time or run-time), if the successor component meets the requirements of the initial component (expressed via the interfaces). Consequently, components can be replaced with either an updated version or an alternative without breaking the system in which the component operates.
As a general rule of thumb for engineers substituting components, component B can immediately replace component A, if component B provides at least what component A provided and uses no more than what component A used.
Software components often take the form of objects (not classes
) or collections of objects (from object-oriented programming
), in some binary or textual form, adhering to some interface description language
(IDL) so that the component may exist autonomously from other components in a computer
.
When a component is to be accessed or shared across execution contexts or network links, techniques such as serialization
or marshalling
are often employed to deliver the component to its destination.
Reusability
is an important characteristic of a high-quality software component. Programmers should design and implement software components in such a way that many different programs can reuse them. Furthermore, component-based usability testing
should be considered when software components directly interact with users.
It takes significant effort and awareness to write a software component that is effectively reusable. The component needs to be:
In the 1960s, programmers built scientific subroutine
libraries that were reusable in a broad array of engineering and scientific applications. Though these subroutine libraries reused well-defined algorithms in an effective manner, they had a limited domain of application. Commercial sites routinely created application programs from reusable modules written in Assembler
, COBOL
, PL/1 and other second- and third-generation languages using both system
and user application libraries.
, modern reusable components encapsulate both data structures and the algorithms that are applied to the data structures.
It builds on prior theories of software objects, software architecture
s, software framework
s and software design patterns, and the extensive theory of object-oriented programming
and the object oriented design
of all these. It claims that software components, like the idea of hardware components
, used for example in telecommunications, can ultimately be made interchangeable and reliable. On the other hand, it is argued that it is a mistake to focus on independent components rather than the framework (without which they would not exist).
's address at the NATO conference on software engineering
in Garmisch
, Germany
, 1968, titled Mass Produced Software Components. The conference set out to counter the so-called software crisis
. McIlroy's subsequent inclusion of pipes and filters
into the Unix
operating system
was the first implementation of an infrastructure for this idea.
Brad Cox
of Stepstone
largely defined the modern concept of a software component. He called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective-C
programming language. (He summarizes this view in his book Object-Oriented Programming - An Evolutionary Approach 1986.)
IBM
led the path with their System Object Model (SOM)
in the early 1990s. As a reaction, Microsoft
paved the way for actual deployment of component software with OLE
and COM
. many successful software component models exist.
(OOP) maintain that software should be written according to a mental model of the actual or imagined objects it represents. OOP and the related disciplines of object-oriented analysis and object-oriented design focus on modeling real-world interactions and attempting to create "nouns" and "verbs" that can be used in more human-readable ways, ideally by end users as well as by programmers coding for those end users.
Component-based software engineering, by contrast, makes no such assumptions, and instead states that developers should construct software by gluing together prefabricated components - much like in the fields of electronics
or mechanics
. Some peers will even talk of modularizing systems as software components as a new programming paradigm
.
Some argue that earlier computer scientist
s made this distinction, with Donald Knuth
's theory of "literate programming
" optimistically assuming there was convergence between intuitive and formal models, and Edsger Dijkstra
's theory in the article The Cruelty of Really Teaching Computer Science
, which stated that programming was simply, and only, a branch of mathematics
.
In both forms, this notion has led to many academic debates about the pros and cons of the two approaches and possible strategies for uniting the two. Some consider the different strategies not as competitors, but as descriptions of the same problem from different points of view.
. Using this combination of application servers and software components is usually called distributed computing
. The usual real-world application of this is in e.g. financial applications or business software.
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
that emphasizes the separation of concerns
Separation of concerns
In computer science, separation of concerns is the process of separating a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors...
in respect of the wide-ranging functionality available throughout a given software system. This practice aims to bring about an equally wide-ranging degree of benefits in both the short-term and the long-term for the software itself and for organizations that sponsor such software.
Software engineers regard components as part of the starting platform for service-orientation
Service-orientation
Service-orientation is a design paradigm to build computer software in the form of services. Like other design paradigms , service-orientation provides a governing approach to automate business logic as distributed systems...
. Components play this role, for example, in Web services, and more recently, in service-oriented architectures (SOA)
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...
, whereby a component is converted by the Web service into a service and subsequently inherits further characteristics beyond that of an ordinary component.
Components can produce or consume events and can be used for event driven architecture
Event Driven Architecture
Event-driven architecture is a software architecture pattern promoting the production, detection, consumption of, and reaction to events....
s (EDA).
Definition and characteristics of components
An individual software component is a software package, a Web service, or a moduleModular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
that encapsulates a set of related functions (or data).
All system processes are placed into separate components so that all of the data and functions inside each component are semantically related (just as with the contents of classes). Because of this principle, it is often said that components are modular and cohesive.
With regard to system-wide co-ordination, components communicate with each other via interfaces. When a component offers services to the rest of the system, it adopts a provided interface that specifies the services that other components can utilize, and how they can do so. This interface can be seen as a signature of the component - the client does not need to know about the inner workings of the component (implementation) in order to make use of it. This principle results in components referred to as encapsulated
Encapsulation (object-oriented programming)
In a programming language encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof:* A language mechanism for restricting access to some of the object's components....
. The UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
illustrations within this article represent provided interfaces by a lollipop-symbol attached to the outer edge of the component.
However, when a component needs to use another component in order to function, it adopts a used interface that specifies the services that it needs. In the UML illustrations in this article, used interfaces are represented by an open socket symbol attached to the outer edge of the component.
Another important attribute of components is that they are substitutable, so that a component can replace another (at design time or run-time), if the successor component meets the requirements of the initial component (expressed via the interfaces). Consequently, components can be replaced with either an updated version or an alternative without breaking the system in which the component operates.
As a general rule of thumb for engineers substituting components, component B can immediately replace component A, if component B provides at least what component A provided and uses no more than what component A used.
Software components often take the form of objects (not classes
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
) or collections of objects (from object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
), in some binary or textual form, adhering to some interface description language
Interface description language
An interface description language , or IDL for short, is a specification language used to describe a software component's interface...
(IDL) so that the component may exist autonomously from other components in a computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
.
When a component is to be accessed or shared across execution contexts or network links, techniques such as serialization
Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...
or marshalling
Marshalling (computer science)
In computer science, marshalling is the process of transforming the memory representation of an object to a data format suitable for storage or transmission...
are often employed to deliver the component to its destination.
Reusability
Reusability
In computer science and software engineering, reusability is the likelihood a segment of source code that can be used again to add new functionalities with slight or no modification...
is an important characteristic of a high-quality software component. Programmers should design and implement software components in such a way that many different programs can reuse them. Furthermore, component-based usability testing
Component-Based Usability Testing
Component-based usability testing is a testing approach which aims at empirically testing the usability of an interaction component. The latter is defined as an elementary unit of an interactive system, on which behaviour-based evaluation is possible...
should be considered when software components directly interact with users.
It takes significant effort and awareness to write a software component that is effectively reusable. The component needs to be:
- fully documented
- thoroughly tested
- robust - with comprehensive input-validity checking
- able to pass back appropriate error messageError messageAn error message is information displayed when an unexpected condition occurs, usually on a computer or other device. On modern operating systems with graphical user interfaces, error messages are often displayed using dialog boxes...
s or return codes
- designed with an awareness that it will be put to unforeseen uses
In the 1960s, programmers built scientific subroutine
Subroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....
libraries that were reusable in a broad array of engineering and scientific applications. Though these subroutine libraries reused well-defined algorithms in an effective manner, they had a limited domain of application. Commercial sites routinely created application programs from reusable modules written in Assembler
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...
, COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....
, PL/1 and other second- and third-generation languages using both system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
and user application libraries.
, modern reusable components encapsulate both data structures and the algorithms that are applied to the data structures.
It builds on prior theories of software objects, software architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
s, software framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
s and software design patterns, and the extensive theory of object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
and the object oriented design
Object oriented design
Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to software design.-Overview:...
of all these. It claims that software components, like the idea of hardware components
Electronic component
An electronic component is a basic electronic element and may be available in a discrete form having two or more electrical terminals . These are intended to be connected together, usually by soldering to a printed circuit board, in order to create an electronic circuit with a particular function...
, used for example in telecommunications, can ultimately be made interchangeable and reliable. On the other hand, it is argued that it is a mistake to focus on independent components rather than the framework (without which they would not exist).
History
The idea that software should be componentized - built from prefabricated components - first became prominent with Douglas McIlroyDouglas McIlroy
Malcolm Douglas McIlroy is a mathematician, engineer, and programmer. As of 2007 he is an Adjunct Professor of Computer Science at Dartmouth College. Dr...
's address at the NATO conference on software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
in Garmisch
Garmisch-Partenkirchen
Garmisch-Partenkirchen is a mountain resort town in Bavaria, southern Germany. It is the administrative centre of the district of Garmisch-Partenkirchen, in the Oberbayern region, and the district is on the border with Austria...
, Germany
Germany
Germany , officially the Federal Republic of Germany , is a federal parliamentary republic in Europe. The country consists of 16 states while the capital and largest city is Berlin. Germany covers an area of 357,021 km2 and has a largely temperate seasonal climate...
, 1968, titled Mass Produced Software Components. The conference set out to counter the so-called software crisis
Software crisis
Software crisis is the term used in early days of computing science. The term was used to describe the impact of rapid increases in computer power and the complexity of the problems that could be tackled. In essence, it refers to the difficulty of writing correct, understandable, and verifiable...
. McIlroy's subsequent inclusion of pipes and filters
Pipeline (Unix)
In Unix-like computer operating systems , a pipeline is the original software pipeline: a set of processes chained by their standard streams, so that the output of each process feeds directly as input to the next one. Each connection is implemented by an anonymous pipe...
into the Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
was the first implementation of an infrastructure for this idea.
Brad Cox
Brad Cox
Brad Cox is a computer scientist and Ph.D. of mathematical biology known mostly for his work in software engineering , software componentry, and the Objective-C programming language....
of Stepstone
Stepstone
Stepstone, originally named Productivity Products International , was a software company founded in 1983 by Brad Cox and Tom Love, best known for releasing the original version of the Objective-C programming language....
largely defined the modern concept of a software component. He called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective-C
Objective-C
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
programming language. (He summarizes this view in his book Object-Oriented Programming - An Evolutionary Approach 1986.)
IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
led the path with their System Object Model (SOM)
System Object Model
In computing, the System Object Model is an object-oriented shared library system developed by IBM. DSOM, a distributed version based on CORBA, allowed objects on different computers to communicate.-Applications:...
in the early 1990s. As a reaction, Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...
paved the way for actual deployment of component software with OLE
Object Linking and Embedding
Object Linking and Embedding is a technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control eXtension , a way to develop and use custom user interface elements...
and COM
Component Object Model
Component Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
. many successful software component models exist.
Differences from object-oriented programming
Proponents of object-oriented programmingObject-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
(OOP) maintain that software should be written according to a mental model of the actual or imagined objects it represents. OOP and the related disciplines of object-oriented analysis and object-oriented design focus on modeling real-world interactions and attempting to create "nouns" and "verbs" that can be used in more human-readable ways, ideally by end users as well as by programmers coding for those end users.
Component-based software engineering, by contrast, makes no such assumptions, and instead states that developers should construct software by gluing together prefabricated components - much like in the fields of electronics
Electronics
Electronics is the branch of science, engineering and technology that deals with electrical circuits involving active electrical components such as vacuum tubes, transistors, diodes and integrated circuits, and associated passive interconnection technologies...
or mechanics
Mechanics
Mechanics is the branch of physics concerned with the behavior of physical bodies when subjected to forces or displacements, and the subsequent effects of the bodies on their environment....
. Some peers will even talk of modularizing systems as software components as a new programming paradigm
Programming paradigm
A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a...
.
Some argue that earlier computer scientist
Computer scientist
A computer scientist is a scientist who has acquired knowledge of computer science, the study of the theoretical foundations of information and computation and their application in computer systems....
s made this distinction, with Donald Knuth
Donald Knuth
Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...
's theory of "literate programming
Literate programming
Literate programming is an approach to programming introduced by Donald Knuth as an alternative to the structured programming paradigm of the 1970s....
" optimistically assuming there was convergence between intuitive and formal models, and Edsger Dijkstra
Edsger Dijkstra
Edsger Wybe Dijkstra ; ) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.Shortly before his...
's theory in the article The Cruelty of Really Teaching Computer Science
The Cruelty of Really Teaching Computer Science
“On the Cruelty of Really Teaching Computing Science” is a 1988 paper by E. W. Dijkstra which argues that computer programming should be understood as a branch of mathematics, and that the formal provability of a program is a major criterion for correctness....
, which stated that programming was simply, and only, a branch of mathematics
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...
.
In both forms, this notion has led to many academic debates about the pros and cons of the two approaches and possible strategies for uniting the two. Some consider the different strategies not as competitors, but as descriptions of the same problem from different points of view.
Architecture
A computer running several software components is often called an application serverApplication server
An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do...
. Using this combination of application servers and software components is usually called distributed computing
Distributed computing
Distributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal...
. The usual real-world application of this is in e.g. financial applications or business software.
Technologies
- Business objectBusiness object (computer science)A business object is a type of an intelligible entity being an actor inside the business layer in an n-layered architecture of object-oriented computer programs....
technologies- NewiNewiNewi is an acronym for NEw World Infrastructure, a software architecture for software componentry, mostly known as Newi Business Objects which coined the term business object.Newi was developed by Integrated Object Systems, England...
- Newi
- Component-based software frameworkSoftware frameworkIn computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
s for specific domains- Earth System Modeling Framework (ESMFESMFThe ESMF is open source software for building climate, numerical weather prediction, data assimilation, and other Earth science software applications. These applications are computationally demanding and usually run on supercomputers...
)
- Earth System Modeling Framework (ESMF
- Component-oriented programming
- Bundles as defined by the OSGiOSGiThe Open Services Gateway initiative framework is a module system and service platform for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments...
Service Platform - Common Component ArchitectureCommon Component ArchitectureThe Common Component Architecture is a standard for Component-based software engineering used in high-performance computing. The designers of the Common Component Architecture are the members of the...
(CCA) - Common Component Architecture Forum, Scientific/HPC Component Software - TASCS - SciDAC Center for Technology for Advanced Scientific Component Software
- Eiffel programming languageEiffel (programming language)Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...
- Enterprise JavaBeans from Sun MicrosystemsSun MicrosystemsSun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
(now OracleOracle CorporationOracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...
) - Flow-based programmingFlow-based programmingIn computer science, flow-based programming is a programming paradigm that defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes...
- Fractal component modelFractal component modelFractal is a modular and extensible component model that can be used with various programming languages to design, implement, deploy and reconfigure various systems and applications, from operating systems to middleware platforms and to graphical user interfaces....
from ObjectWebObjectWebThe OW2 Consortium is a not-for-profit, international consortium mainly devoted to producing open source middleware, EAI, e-business, clustering, grid computing. It was founded by INRIA, Groupe Bull, and France Télécom... - MidCOM component framework for MidgardMidgard (software)Midgard is an open source persistent storage framework. It provides an object-oriented and replicated environment for building data-intensive applications.Midgard also ships with MidCOM content management system built on the Midgard framework...
and PHPPHPPHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document... - OberonOberon (programming language)Oberon is a programming language created in 1986 by Professor Niklaus Wirth and his associates at ETH Zurich in Switzerland. It was developed as part of the implementation of the Oberon operating system...
, Component PascalComponent PascalComponent Pascal is a programming language in the tradition of Niklaus Wirth's Pascal, Modula-2, Oberon and Oberon-2. It bears the name of the Pascal programming language but is incompatible with it. Instead, it is a minor variant and refinement of Oberon-2, designed and supported by a small ETH...
, and BlackBox Component BuilderBlackBox Component BuilderBlackBox Component Builder is an integrated development environment optimized for component-based software development. It consists of development tools, a library of reusable components, a framework that simplifies the development of robust custom components and applications, and a run-time... - rCOSRCOSrCOS stands for refinement of object and component systems. It is a method component-based model-driven softwaredevelopment. It was originally developed by He Jifeng, Zhiming Liu and Xiaoshan Li at UNU-IIST, and consists of a relational semantic theory, a refinement calculus and tool support for...
method of component-based model driven design from UNU-IISTUNU-IISTThe United Nations University International Institute for Software Technology is a United Nations University Research Training Centre based in Macau.-History:... - SOFA component systemSOFA component systemSOFA 2 is a component system developed by at Charles University in Prague. It provides many advanced features: ADL-based design, behavior specification and verification based on behavior protocols, software connectors supporting different communication styles and providing transparent distribution...
from ObjectWebObjectWebThe OW2 Consortium is a not-for-profit, international consortium mainly devoted to producing open source middleware, EAI, e-business, clustering, grid computing. It was founded by INRIA, Groupe Bull, and France Télécom... - The
System.ComponentModel
namespace in Microsoft .NET - Unity3D developed by Unity Technologies
- UNOUniversal Network ObjectsIn computing, Universal Network Objects is the component model used in the OpenOffice.org application suite of programs. It is interface-based and designed to offer interoperability between different programming languages, object models and machine architectures, on a single machine, within a LAN...
from the OpenOffice.orgOpenOffice.orgOpenOffice.org, commonly known as OOo or OpenOffice, is an open-source application suite whose main components are for word processing, spreadsheets, presentations, graphics, and databases. OpenOffice is available for a number of different computer operating systems, is distributed as free software...
office suite - VCLVisual Component LibraryVCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...
and CLXComponent Library for Cross PlatformComponent Library for Cross Platform , is a cross-platform visual component-based framework for developing Microsoft Windows and Linux applications. It is developed by Borland for use in its Kylix, Delphi, and C++ Builder software development environment....
from BorlandBorlandBorland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...
and similar free LCLLazarus (software)Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...
library. - Visual Basic ExtensionVisual Basic ExtensionIn computer programming, a Visual Basic Extension or custom control, was the component model used in Microsoft Visual Basic versions 1.0 to 3.0. It is still supported in the 16-bit version of version 4.0, but was made obsolete by OCXs...
s, OCX/ActiveX/COMComponent Object ModelComponent Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
and DCOMDistributed component object modelDistributed Component Object Model is a proprietary Microsoft technology for communication among software components distributed across networked computers. DCOM, which originally was called "Network OLE", extends Microsoft's COM, and provides the communication substrate under Microsoft's COM+...
from MicrosoftMicrosoftMicrosoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions... - XPCOMXPCOMXPCOM is a cross-platform component model from Mozilla. It is similar to Microsoft COM and CORBA. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.-The model:XPCOM is one of the main...
from Mozilla FoundationMozilla FoundationThe Mozilla Foundation is a non-profit organization that exists to support and provide leadership for the open source Mozilla project. The organization sets the policies that govern development, operates key infrastructure and controls trademarks and other intellectual property...
- Bundles as defined by the OSGi
- Compound documentCompound documentIn computing, a compound document is a document type typically produced using word processing software, and is a regular text document intermingled with non-text elements such as spreadsheets, pictures, digital videos, digital audio, and other multimedia features...
technologies- Active Documents in Oberon System and BlackBox Component BuilderBlackBox Component BuilderBlackBox Component Builder is an integrated development environment optimized for component-based software development. It consists of development tools, a library of reusable components, a framework that simplifies the development of robust custom components and applications, and a run-time...
- Bonobo (component model), a part of GNOMEGNOMEGNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...
- FrescoFresco (computing)In computing, Fresco was a windowing system intended as a replacement for the X Window System. It was free software, licensed under the terms of the GNU Lesser General Public License ....
- KPart, the KDEKDEKDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
compound document technology - Object linking and embeddingObject Linking and EmbeddingObject Linking and Embedding is a technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control eXtension , a way to develop and use custom user interface elements...
(OLE) - OpenDocOpenDocOpenDoc was a multi-platform software componentry framework standard for compound documents, intended as an alternative to Microsoft's Object Linking and Embedding ....
- Active Documents in Oberon System and BlackBox Component Builder
- Distributed computingDistributed computingDistributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal...
software components- .NET Remoting.NET Remoting.NET Remoting is a Microsoft application programming interface for interprocess communication released in 2002 with the 1.0 version of .NET Framework. It is one in a series of Microsoft technologies that began in 1990 with the first version of Object Linking and Embedding for 16-bit Windows...
from MicrosoftMicrosoftMicrosoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions... - 9P9P9P is a network protocol developed for the Plan 9 from Bell Labs distributed operating system as the means of connecting the components of a Plan 9 system. Files are key objects in Plan 9. They represent windows, network connections, processes, and almost anything else available in the operating...
distributed protocol developed for Plan 9Plan 9 from Bell LabsPlan 9 from Bell Labs is a distributed operating system. It was developed primarily for research purposes as the successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002...
, and used by InfernoInferno (operating system)Inferno is a distributed operating system started at Bell Labs, but is now developed and maintained by Vita Nuova Holdings as free software. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly...
and other systems. - CORBAÇorbaChorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
and the CORBA Component Model from the Object Management GroupObject Management GroupObject Management Group is a consortium, originally aimed at setting standards for distributed object-oriented systems, and is now focused on modeling and model-based standards.- Overview :... - D-BusD-BusIn computing, D-Bus is a simple inter-process communication open-source system for software applications to communicate with one another. Heavily influenced by KDE2–3's DCOP system, D-Bus has replaced DCOP in the KDE 4 release. An implementation of D-Bus supports most POSIX operating...
from the freedesktop.orgFreedesktop.orgfreedesktop.org is a project to work on interoperability and shared base technology for free software desktop environments for the X Window System on Linux and other Unix-like operating systems. It was founded by Havoc Pennington from Red Hat in March 2000.The organisation focuses on the user....
organization - DCOPDCOPDCOP, which stands for Desktop COmmunication Protocol, is a light-weight interprocess and software componentry communication system. The main point of this system is to allow applications to interoperate, and to share complex tasks...
from KDEKDEKDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
(deprecated) - DCOMDistributed component object modelDistributed Component Object Model is a proprietary Microsoft technology for communication among software components distributed across networked computers. DCOM, which originally was called "Network OLE", extends Microsoft's COM, and provides the communication substrate under Microsoft's COM+...
and later versions of COMComponent Object ModelComponent Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
(and COM+) from MicrosoftMicrosoftMicrosoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions... - DSOM and SOMSystem Object ModelIn computing, the System Object Model is an object-oriented shared library system developed by IBM. DSOM, a distributed version based on CORBA, allowed objects on different computers to communicate.-Applications:...
from IBMIBMInternational Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
(now scrapped) - ICEInternet Communications EngineThe Internet Communications Engine, or Ice, is an object-oriented middleware that provides object-oriented Remote Procedure Call, grid computing and Publish/subscribe functionality developed by ZeroC and dual-licensed under the GNU GPL and a proprietary license...
from ZeroCZeroCZeroC, Inc. is a company based in Palm Beach Gardens, Florida, U.S., revolving around the development and licensing of the Internet Communications Engine, or ICE, an object middleware system considered an alternative to CORBA and SOAP... - Java EE from SunSun MicrosystemsSun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
- Universal Network ObjectsUniversal Network ObjectsIn computing, Universal Network Objects is the component model used in the OpenOffice.org application suite of programs. It is interface-based and designed to offer interoperability between different programming languages, object models and machine architectures, on a single machine, within a LAN...
(UNO) from OpenOffice.orgOpenOffice.orgOpenOffice.org, commonly known as OOo or OpenOffice, is an open-source application suite whose main components are for word processing, spreadsheets, presentations, graphics, and databases. OpenOffice is available for a number of different computer operating systems, is distributed as free software... - Web serviceWeb serviceA Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...
s- RESTRepresentational State TransferRepresentational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation...
- REST
- ZopeZopeZope is a free and open-source, object-oriented Web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web...
from Zope Corporation
- .NET Remoting
- Generic programmingGeneric programmingIn a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters...
emphasizes separation of algorithms from data representation - Interface description languages (IDLs)
- Open Service Interface DefinitionsOpen Service Interface DefinitionsOpen Service Interface Definitions are programmatic interface specifications describing services. These interfaces are specified by the Open Knowledge Initiative to implement a Service-Oriented Architecture to achieve interoperability among applications across a varied base of underlying and...
(OSIDs) - Part of both COMComponent Object ModelComponent Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
and CORBAÇorbaChorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East... - Platform-Independent Component Modeling Language
- SIDL - Scientific Interface Definition Language
- Part of the BabelBabel MiddlewareBabel is an open source middleware systemserving the scientific computing community.As language interoperability tool, Babel enables arbitrary mixing of softwarelibraries written in C/C++,Fortran, Python, and Java...
Scientific Programming Language Interoperability System (SIDL and Babel are core technologies of the CCACCACCA can refer to:*ICAO callsign for Air China*California Charter Academy*California College of the Arts*California Culinary Academy*Canadian Canoe Association*Canadian Cascade Arc*Canadian Cat Association*Canadian Centre for Architecture...
and the SciDAC TASCS Center - see above.)
- Part of the Babel
- SOAPSOAPSOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks...
IDLInterface description languageAn interface description language , or IDL for short, is a specification language used to describe a software component's interface...
from World Wide Web ConsortiumWorld Wide Web ConsortiumThe World Wide Web Consortium is the main international standards organization for the World Wide Web .Founded and headed by Tim Berners-Lee, the consortium is made up of member organizations which maintain full-time staff for the purpose of working together in the development of standards for the...
(W3C) - WDDXWDDXWDDX is a programming-language-, platform- and transport-neutral data interchange mechanism to pass data between different environments and different computers...
- XML-RPCXML-RPCXML-RPC is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism. "XML-RPC" also refers generically to the use of XML for remote procedure call, independently of the specific protocol...
, the predecessor of SOAP
- Open Service Interface Definitions
- Inversion of Control (IoC) and Plain Old C++/Java Object (POCO/POJO) component frameworks
- Pipes and FiltersPipeline (software)In software engineering, a pipeline consists of a chain of processing elements , arranged so that the output of each element is the input of the next. Usually some amount of buffering is provided between consecutive elements...
- UnixUnixUnix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
operating systemOperating systemAn operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
- Unix
See also
- Business logicBusiness logicBusiness logic, or domain logic, is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface.- Scope of business logic :Business logic:...
- Modular programmingModular programmingModular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
- Third party software component
- Web serviceWeb serviceA Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...
Further reading
- Brad J. Cox, Andrew J. Novobilski (1991). Object-Oriented Programming: An Evolutionary Approach. 2nd ed. Addison-Wesley, Reading ISBN 0-201-54834-8
- Bertrand Meyer (1997). Object-Oriented Software Construction. 2nd ed. Prentice Hall.
- George T. Heineman, William T. Councill (2001). Component-Based Software Engineering: Putting the Pieces Together. Addison-Wesley Professional, Reading 2001 ISBN 0-201-70485-4
- Richard VeryardRichard VeryardRichard Veryard is a British computer scientist, author and business consultant, known for his work on Service Oriented Architecture and the Service-Based Business.-Biography:...
(2001). Component-based business : plug and play. London : Springer. ISBN 1852333618 - Clemens Szyperski (2002). Component Software: Beyond Object-Oriented Programming. 2nd ed. Addison-Wesley Professional, Boston ISBN 0-201-74572-0
- David Polberger (2009). Component technology in an embedded system. Master's thesis in computer science, available online. ISSN 1651-6389
External links
- Planning the Software Industrial Revolution The history of manufacturing vs software compared.
- The independence of notion of component-orientation.
- Cox's feasibility demonstration of a usage-based mechanism for incentivizing component producers.
- Why Software Reuse has Failed and How to Make It Work for You by Douglas C. SchmidtDouglas C. SchmidtDouglas C. Schmidt is a computer scientist and author known for his works in the fields of object-oriented programming, distributed computing and design patterns. Currently he is working as Associate Chair of Computer Science and Engineering and Professor of Computer Science in Vanderbilt University...
- New proposals to explore the Component properties: (i) Reuse and (ii) Replaceable
- Dynamically Self Configuring Automotive System
- New proposal for exploring a kind of CBSE comparable to the CBE
- comprehensive list of Component Systems on SourceForgeSourceForgeSourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...