Component-based software engineering
Encyclopedia
Component-based software engineering (CBSE) (also known as component-based development (CBD)) is a branch of 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...

 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 module
Modular 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 message
      Error message
      An 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 McIlroy
Douglas 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 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,...

 (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 server
Application 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 object
    Business 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
    • Newi
      Newi
      Newi 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...

  • Component-based 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 for specific domains
    • Earth System Modeling Framework (ESMF
      ESMF
      The 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...

      )
  • Component-oriented programming
    • Bundles as defined by the OSGi
      OSGi
      The 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 Architecture
      Common Component Architecture
      The 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 language
      Eiffel (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 Microsystems
      Sun Microsystems
      Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

       (now Oracle
      Oracle Corporation
      Oracle 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 programming
      Flow-based programming
      In 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 model
      Fractal component model
      Fractal 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 ObjectWeb
      ObjectWeb
      The 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 Midgard
      Midgard (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 PHP
      PHP
      PHP 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...

    • Oberon
      Oberon (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 Pascal
      Component Pascal
      Component 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 Builder
      BlackBox Component Builder
      BlackBox 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...

    • rCOS
      RCOS
      rCOS 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-IIST
      UNU-IIST
      The United Nations University International Institute for Software Technology is a United Nations University Research Training Centre based in Macau.-History:...

    • SOFA component system
      SOFA component system
      SOFA 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 ObjectWeb
      ObjectWeb
      The 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
    • UNO
      Universal Network Objects
      In 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.org
      OpenOffice.org
      OpenOffice.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
    • VCL
      Visual Component Library
      VCL 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 CLX
      Component Library for Cross Platform
      Component 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 Borland
      Borland
      Borland 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 LCL
      Lazarus (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 Extension
      Visual Basic Extension
      In 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/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...

       and DCOM
      Distributed component object model
      Distributed 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 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...

    • XPCOM
      XPCOM
      XPCOM 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 Foundation
      Mozilla Foundation
      The 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...

  • Compound document
    Compound document
    In 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 Builder
      BlackBox Component Builder
      BlackBox 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 GNOME
      GNOME
      GNOME 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...

    • Fresco
      Fresco (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 KDE
      KDE
      KDE 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 embedding
      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...

       (OLE)
    • OpenDoc
      OpenDoc
      OpenDoc was a multi-platform software componentry framework standard for compound documents, intended as an alternative to Microsoft's Object Linking and Embedding ....

  • 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...

     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 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...

    • 9P
      9P
      9P 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 9
      Plan 9 from Bell Labs
      Plan 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 Inferno
      Inferno (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
      Çorba
      Chorba , 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 Group
      Object Management Group
      Object 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-Bus
      D-Bus
      In 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.org
      Freedesktop.org
      freedesktop.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
    • DCOP
      DCOP
      DCOP, 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 KDE
      KDE
      KDE 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)
    • DCOM
      Distributed component object model
      Distributed 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 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...

       (and COM+) from 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...

    • DSOM and 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:...

       from 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...

       (now scrapped)
    • ICE
      Internet Communications Engine
      The 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 ZeroC
      ZeroC
      ZeroC, 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 Sun
      Sun Microsystems
      Sun 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 Objects
      Universal Network Objects
      In 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.org
      OpenOffice.org
      OpenOffice.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 service
      Web service
      A 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
      • REST
        Representational State Transfer
        Representational 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...

    • Zope
      Zope
      Zope 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
  • Generic programming
    Generic programming
    In 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 Definitions
      Open Service Interface Definitions
      Open 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 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...

       and CORBA
      Çorba
      Chorba , 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 Babel
        Babel Middleware
        Babel 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 CCA
        CCA
        CCA 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.)
    • SOAP
      SOAP
      SOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks...

       IDL
      Interface description language
      An interface description language , or IDL for short, is a specification language used to describe a software component's interface...

       from World Wide Web Consortium
      World Wide Web Consortium
      The 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)
    • WDDX
      WDDX
      WDDX is a programming-language-, platform- and transport-neutral data interchange mechanism to pass data between different environments and different computers...

    • XML-RPC
      XML-RPC
      XML-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
  • Inversion of Control (IoC) and Plain Old C++/Java Object (POCO/POJO) component frameworks
  • Pipes and Filters
    Pipeline (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...

    • 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...


See also

  • Business logic
    Business logic
    Business 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 programming
    Modular 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...

  • Third party software component
  • Web service
    Web service
    A 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 Veryard
    Richard Veryard
    Richard 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

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK