All Topics  
Component-based software engineering

 

   Email Print
   Bookmark   Link






 

Component-based software engineering



 
 
Component-based software engineering (CBSE) (also known as Component-Based Development (CBD) or Software Componentry) is a branch of the 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....
 discipline, with emphasis on decomposition
Decomposition (computer science)

Decomposition in computer science, also known as factoring, refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain....
 of the engineered systems into functional
Functional programming

In computer science, functional programming is a programming paradigm that treats computation as the evaluation of function s and avoids program state and immutable object data....
 or logic
Logic

Logic is the study of the principles of valid demonstration and inference. Logic is a branch of philosophy, a part of the classical Trivium . The word derives from Greek language ?????? , fem....
al components with well-defined interfaces
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
 used for communication across the components.

Components are considered to be a higher level of abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 than objects
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
 and as such they do not share state
Program state

One of the key concepts in computer programming is the idea of state, essentially a snapshot of the measure of various conditions in the system....
 and communicate by exchanging messages
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
 carrying data.

Software component
A software component is a system element offering a predefined service or event, and able to communicate with other components.






Discussion
Ask a question about 'Component-based software engineering'
Start a new discussion about 'Component-based software engineering'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Component-based software engineering (CBSE) (also known as Component-Based Development (CBD) or Software Componentry) is a branch of the 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....
 discipline, with emphasis on decomposition
Decomposition (computer science)

Decomposition in computer science, also known as factoring, refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain....
 of the engineered systems into functional
Functional programming

In computer science, functional programming is a programming paradigm that treats computation as the evaluation of function s and avoids program state and immutable object data....
 or logic
Logic

Logic is the study of the principles of valid demonstration and inference. Logic is a branch of philosophy, a part of the classical Trivium . The word derives from Greek language ?????? , fem....
al components with well-defined interfaces
Interface (computer science)

Interface generally refers to an Abstraction_%28computer_science%29 that an entity provides of itself to the outside. This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide Polymorphism in object-orien...
 used for communication across the components.

Components are considered to be a higher level of abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 than objects
Object (computer science)

In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably....
 and as such they do not share state
Program state

One of the key concepts in computer programming is the idea of state, essentially a snapshot of the measure of various conditions in the system....
 and communicate by exchanging messages
Message passing

Message passing in computer science, is a form of communication used in parallel computing, object-oriented programming, and interprocess communication....
 carrying data.

Software component


A software component is a system element offering a predefined service or event, and able to communicate with other components. Clemens Szyperski and David Messerschmitt
David Messerschmitt

David G. Messerschmitt is an engineer and professor emeritus at the University of California, Berkeley in the Department of Electrical Engineering and Computer Sciences in the UC Berkeley College of Engineering....
 give the following five criteria for what a software component shall be to fulfill the definition:

  • Multiple-use
  • Non-context-specific
  • Composable with other components
  • Encapsulated
    Information hiding

    Information hiding in computer science is the principle of hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed....
     i.e., non-investigable through its interfaces
  • A unit of independent deployment and versioning


A simpler definition can be: A component is an object written to a specification. It does not matter what the specification is: COM
Component Object Model

Component Object Model is an 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....
, Enterprise JavaBeans, etc., as long as the object adheres to the specification. It is only by adhering to the specification that the object becomes a component and gains features such as reusability
Reusability

In computer science and software engineering, reusability is the likelihood a segment of source code can be used again to add new functionalities with slight or no modification....
.

Software components often take the form of objects or collections of objects (from object-oriented programming
Object-oriented programming

Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
), 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 . IDLs describe an interface in a language-neutral way, enabling communication between software components that do not share a language – for example, between components written in C++ and components...
 (IDL) so that the component may exist autonomously from other components in a computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
.

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 an object into a sequence of bits so that it can be stored on a storage medium or transmitted across a computer network connection link....
 or marshalling
Marshalling

Marshalling may refer to :* Heraldry#Marshalling* Marshalling * Aircraft marshalling* A marshalling yard in railroading...
 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 can be used again to add new functionalities with slight or no modification....
 is an important characteristic of a high quality software component. A software component should be designed and implemented so that it can be reused in many different programs.

It takes significant effort and awareness to write a software component that is effectively reusable. The component needs:

  • to be fully documented;
  • more thorough testing;
  • robust input validity checking;
  • to pass back useful error message
    Error message

    An error message is a message displayed when an unexpected condition occurs, usually on a computer or other device. Error messages are often displayed using dialog boxes....
    s as appropriate;
  • to be built with an awareness that it will be put to unforeseen uses;
  • a mechanism for compensating developers who invest the (substantial) efforts implied above.


In the 1960s, scientific subroutine libraries were built 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. Today, 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 program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
s, software framework
Software framework

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality....
s and software design patterns, and the extensive theory of object-oriented programming
Object-oriented programming

Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
 and the object oriented design
Object oriented design

Object-oriented design is the process of planning a system of interacting Object-oriented programming for the purpose of solving a software problem....
 of all these. It claims that software components, like the idea of hardware component
Electronic component

An electronic component is a basic Electronics element usually packaged in a discrete form with two or more connecting leads or metallic pads....
s, used for example in telecommunications, can ultimately be made interchangeable and reliable.

History


The idea that software should be componentized, built from prefabricated components, was first published in 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....
's address at the NATO
NATO

The North Atlantic Treaty Organization , also called the Atlantic Alliance, is a military alliance established by the signing of the North Atlantic Treaty on 4 April 1949....
 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....
 in Garmisch
Garmisch-Partenkirchen

Garmisch-Partenkirchen is a market town in Bavaria, southern Germany. It is the administrative centre of the Garmisch-Partenkirchen , in the Oberbayern region, not far from the border with Austria....
, Germany
Germany

Germany , officially the Federal Republic of Germany , is a country in Central Europe. It is bordered to the north by the North Sea, Denmark, and the Baltic Sea; to the east by Poland and the Czech Republic; to the south by Austria and Switzerland; and to the west by France, Luxembourg, Belgium, and the Netherlands....
, 1968 titled Mass Produced Software Components. This conference set out to counter the so-called software crisis
Software crisis

The software crisis was a term used in the early days of software engineering, before it was a well-established subject. The term was used to describe the impact of rapid increases in computer power and the complexity of the problems which could be tackled....
. His subsequent inclusion of pipes and filters into the Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 was the first implementation of an infrastructure for this idea.

The modern concept of a software component was largely defined by Brad Cox
Brad Cox

Brad Cox is a computer scientist and Doctor of Philosophy of mathematical biology known mostly for his work in software engineering , software componentry, and the Objective-C programming language....
 of Stepstone
Stepstone

Stepstone 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....
, who 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 Reflection , Object-oriented programming programming language which adds Smalltalk-style message passing to C .Today it is used primarily on Mac OS X, iPhone OS, and GNUstep, three environments based on the OpenStep standard, and is the primary language used for the NEXTSTEP, OpenStep#OPENSTEP, and Cocoa application framew...
 programming language. (He summarizes this view in his book Object-Oriented Programming - An Evolutionary Approach 1986.)

IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
 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. A distributed version based on CORBA, DSOM, allowed objects on different computers to communicate....
 in the early 1990s. Some claim that Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 paved the way for actual deployment of component software with OLE
Object Linking and Embedding

Object Linking and Embedding is a technology that allows embedding and linking to documents and other objects developed by Microsoft. For developers, it brought OLE custom controls , a way to develop and use custom user interface elements....
 and COM
Component Object Model

Component Object Model is an 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....
. Today, many successful software component models exist.

Differences from object-oriented programming

The idea in object-oriented programming
Object-oriented programming

Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
 (OOP) is 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 design and object-oriented analysis focus on modeling real-world interactions and attempting to create 'verbs' and 'nouns' which can be used in intuitive 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 software should be developed by gluing prefabricated components together much like in the field of electronics
Electronics

Electronics refers to the flow of charge through nonmetal electrical conductor , whereas electrical refers to the flow of charge through metal electrical conductor....
 or mechanics
Mechanics

Mechanics is the branch of physics concerned with the behaviour of physical body when subjected to forces or Displacement , and the subsequent effect 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 ....
.

Some argue that this distinction was made by earlier computer scientist
Computer scientist

A computer scientist is a person who has acquired knowledge of computer science, the study of the theoretical foundations of information and computation and their application in computer systems....
s, with Donald Knuth
Donald Knuth

Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
's theory of "literate programming
Literate programming

Literate programming is an approach to programming which was introduced by Donald Knuth. Knuth conceived literate programming 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 Netherlands computer science. He received the 1972 Turing Award for fundamental contributions in the area of programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at University of Texas at Austin from 1984 until 2000....
's theory in the article The Cruelty of Really Teaching Computer Science
The Cruelty of Really Teaching Computer Science

?The Cruelty of Really Teaching Computing Science? is a 1988 paper by Edsger W. Dijkstra, which argues that computer programming should be understood as a branch of mathematics, and that the formal mathematical proof of a computer 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, structure, space, change, and related topics of pattern and form. Mathematicians seek out patterns whether found in numbers, space, natural science, computers, imaginary abstractions, or elsewhere....
.

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 them not really competitors, but only descriptions of the same problem from two different points of view.

Architecture

A computer running several software components is often called an application server
Application server

An application server, in an Multitier architecture, is a server that hosts an Application programming interface to expose business logic and business processes for use by third-party Business software....
. Using this combination of application servers and software components is usually called distributed computing
Distributed computing

Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
. The usual real-world application of this is in financial applications or business software.

Technologies

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

      Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
       operating system
      Operating system

      An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
  • Component-oriented programming
    • Fractal component model
      Fractal component model

      PresentationFractal is a modular and extensible component model that can be used with various programming languages to software design, implement, deployment and reconfigure various systems and applications, from operating systems to middleware platforms and to graphical user interfaces....
      from
    • Visual Basic Extension
      Visual Basic Extension

      In computer programming, a Visual Basic Extension or custom control, was the software component used in Microsoft Visual Basic versions 1.0 to 3.0....
      s, OCX/ActiveX/COM
      Component Object Model

      Component Object Model is an 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 from Microsoft
      Microsoft

      Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
    • XPCOM
      XPCOM

      XPCOM is a cross platform software componentry from Mozilla. It is similar to CORBA and Microsoft Component Object Model. It has multiple language bindings and Interface description language descriptions so programmers can plug their custom functionality into the framework and connect it with other components....
       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, operate key infrastructure and control trademarks and other intellectual property....
    • VCL
      Visual Component Library

      VCL is a visual software component-based framework for developing Microsoft Windows applications, developed by Borland for use in its Delphi programming language and C++ Builder software development environment....
       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....
       from Borland
      Borland

      Borland Software Corporation is a Computer software company headquartered in Austin, Texas. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn....
       and similar free LCL
      Lazarus (software)

      Lazarus is a cross platform Visual programming Integrated development environment which provides a Delphi programming language Clone for Pascal programming language and Object Pascal developers....
       library.
    • Enterprise JavaBeans from Sun Microsystems
      Sun Microsystems

      Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
    • UNO
      Universal Network Objects

      In computing, a Universal Network Object is the software component used in OpenOffice.org. 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 or over the Internet....
       from the OpenOffice.org
      OpenOffice.org

      OpenOffice.org , commonly known simply as OpenOffice, is an office application suite available for a number of different computer operating systems....
       office suite
    • Eiffel programming language
      Eiffel (programming language)

      Eiffel is an International Organization for Standardization-standardized, object-oriented programming language designed to enable programmers to efficiently develop extensible, reusable, reliable software....
    • Oberon programming language and BlackBox
    • Bundles as defined by the OSGi
      OSGi

      The OSGi Alliance is an open standards organization founded in March 1999. The Alliance and its members have specified a Java -based Service platform that can be remotely managed....
       Service Platform
    • The System.ComponentModel namespace in Microsoft .NET
    • Flow-based programming
      Flow-based programming

      In computer science, flow-based programming is a programming paradigm that defines application software as networks of "black box" process , which exchange data across predefined connections by message passing....
    • MidCOM component framework for Midgard
      Midgard (software)

      Midgard is an Open Source Persistence framework. It provides an Object-oriented programming and Replication environment for building data-intensive applications....
       and PHP
      PHP

      PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
  • Compound document
    Compound document

    In computing, a compound document is a document type typically produced using word processor 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
    • Bonobo (component model), a part of GNOME
      Gnome

      A gnome is a mythical creature characterized by its extremely small size and wiktionary:subterranean lifestyle. The word gnome is derived from the New Latin gnomus....
    • KPart
      KPart

      In computer programming, KParts is the name of the software component framework for the KDE desktop environment. An individual component is called a KPart....
      , the KDE
      KDE

      KDE is a free software project based around its flagship product, a desktop environment for Unix-like systems. The goal of the project is to provide basic desktop functions and applications for daily needs as well as tools and documentation for developers to write stand-alone applications for the system....
       Compound document technology
    • Object linking and embedding
      Object Linking and Embedding

      Object Linking and Embedding is a technology that allows embedding and linking to documents and other objects developed by Microsoft. For developers, it brought OLE custom controls , 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, inspired by the Xerox Star system and intended as an alternative to Microsoft's Object Linking and Embedding ....
    • Fresco
      Fresco (computing)

      In computing, Fresco is a windowing system. It was intended as a replacement for the X Window System. As of October 23, 2008, the last activity in was dated June 11, 2004....
  • Business object
    Business object (computer science)

    Business objects are object oriented in an object oriented computer program that represent the entities in the business domain that the program is designed to support....
     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 ....
  • Distributed computing
    Distributed computing

    Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
     software components
    • 9P
      9P

      9P , is a network protocol developed for the Plan 9 from Bell Labs distributed operating systemas the means of connecting the components of a Plan 9 system....
       distributed protocol developed for Plan 9
      Plan 9 from Bell Labs

      Plan 9 from Bell Labs is a distributed operating system, primarily used for research. It was developed as the research 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 an operating system for creating and supporting distributed services.It was based on the experience of Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly compilers, graphics, security, networking and portability....
       and other systems.
    • CORBA
      Çorba

      Chorba , shurpa , sorpa , or shorpo is one of various kinds of soup or stew found in national cuisines across Eurasia. The term is likely of Persian language or Turkic languages origin....
       and the CORBA Component Model from the Object Management Group
      Object Management Group

      Object Management Group is a consortium, originally aimed at setting standardization for distributed object-oriented systems, and is now focused on modeling and model-based standards....
    • D-BUS
      D-Bus

      D-Bus is a simple inter-process communication system for software applications to communicate with one another. D-Bus was heavily influenced by KDE2–3's DCOP system and has replaced it in the KDE 4 release; it is supported on Linux, Microsoft Windows and Apple OS X operating systems and is used by Qt 4 and GNOME....
       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....
       organization
    • DCOM and later versions of COM
      Component Object Model

      Component Object Model is an 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 a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
    • DCOP
      DCOP

      DCOP, which stands for Desktop COmmunication Protocol, is a light-weight inter-process communication and software componentry communication system....
       from KDE
      KDE

      KDE is a free software project based around its flagship product, a desktop environment for Unix-like systems. The goal of the project is to provide basic desktop functions and applications for daily needs as well as tools and documentation for developers to write stand-alone applications for the system....
    • DSOM and SOM
      System Object Model

      In computing, the System Object Model is an object-oriented shared library system developed by IBM. A distributed version based on CORBA, DSOM, allowed objects on different computers to communicate....
       from IBM (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 license under the GNU GPL and a proprietary license....
       from ZeroC
      ZeroC

      ZeroC, Inc. is a company based in Palm Beach Gardens, Florida, Florida, United States, 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. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
    • .NET Remoting
      .NET Remoting

      .NET Remoting is a Microsoft application programming interface for Inter-process communication released in 2002 with the 1.0 version of .NET Framework....
       from Microsoft
      Microsoft

      Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
    • Web Service
      Web service

      A Web service is defined by the W3C as "a software system designed to support interoperability Machine to Machine interaction over a computer network"....
      s
      • REST
        Representational State Transfer

        Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. As such, it is not strictly a method for building "web services." The terms "representational state transfer" and "REST" were introduced in 2000 in the doctoral dissertation of Roy Fielding, one of the principa...
    • Universal Network Objects
      Universal Network Objects

      In computing, a Universal Network Object is the software component used in OpenOffice.org. 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 or over the Internet....
       (UNO) from OpenOffice.org
      OpenOffice.org

      OpenOffice.org , commonly known simply as OpenOffice, is an office application suite available for a number of different computer operating systems....
    • Zope
      Zope

      Zope is a free software and open source software, object-oriented web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment." It can be almost fully managed with a web-based user interface....
       from
  • Interface description languages
    • XML-RPC
      XML-RPC

      XML-RPC is a remote procedure call protocol which uses XML to encode its calls and [] as a transport mechanism. ...
      , the predecessor of SOAP
    • SOAP IDL
      Interface description language

      An interface description language , or IDL for short, is a specification language used to describe a software component's Interface . IDLs describe an interface in a language-neutral way, enabling communication between software components that do not share a language – for example, between components written in C++ and components...
       from W3C
    • WDDX
      WDDX

      WDDX is a programming-language-, platform- and transport-neutral data interchange mechanism to pass data between different environments and different computers....
    • Part of both COM
      Component Object Model

      Component Object Model is an 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 , shurpa , sorpa , or shorpo is one of various kinds of soup or stew found in national cuisines across Eurasia. The term is likely of Persian language or Turkic languages origin....
    • 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 changing technologies....
    • Platform-Independent Component Modeling Language
  • Generic programming
    Generic programming

    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 and was pioneered by Ada which appeared in 1983....
     emphasizes separation of algorithms from data representation


See also

  • Business logic
    Business logic

    Business logic is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface....
  • Modular programming
  • Third party software component
  • Web Service
    Web service

    A Web service is defined by the W3C as "a software system designed to support interoperability Machine to Machine interaction over a computer network"....


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.
  • Clemens Szyperski (2002). Component Software: Beyond Object-Oriented Programming. 2nd ed. Addison-Wesley Professional, Boston ISBN 0-201-74572-0
  • 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 consultant, who nowadays specializes in Service Oriented Architecture and the Service-Based Business....
     (2001). Component-based business : plug and play. London : Springer. ISBN 1852333618


External links

  • - reports (PDF)
  • The history of manufacturing vs software compared.
  • .
  • of a usage-based mechanism for incentivizing component producers.
  • comprehensive list of
  • Article "" by Douglas C. Schmidt
  • and