HOME

TheInfoList



OR:

Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a given
software system A software system is a system of intercommunicating components based on software forming part of a computer system (a combination of hardware and software). It "consists of a number of separate programs, configuration files, which are used to se ...
. It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems. 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 engineering practitioners 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 architecture In software engineering, service-oriented architecture (SOA) is an architectural style that focuses on discrete services instead of a monolithic design. By consequence, it is also applied in the field of software design where services are provid ...
s (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 architectures (EDA).


Definition and characteristics of components

An individual software component is a software package, a web service, a web resource, or a
module Module, modular and modularity may refer to the concept of modularity. They may also refer to: Computing and engineering * Modular design, the engineering discipline of designing complex devices using separately designed sub-components * Modul ...
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 Interface or interfacing may refer to: Academic journals * ''Interface'' (journal), by the Electrochemical Society * '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics'' * '' Int ...
''. 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 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 Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an ai ...
(not classes) or collections of objects (from
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
), in some binary or textual form, adhering to some
interface description language interface description language or interface definition language (IDL), is a generic term for a language that lets a program or object written in one language communicate with another program written in an unknown language. IDLs describe an inter ...
(IDL) so that the component may exist autonomously from other components in a
computer A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations ( computation) automatically. Modern digital electronic computers can perform generic sets of operations known as programs. These prog ...
. In other words, a component acts without changing its source code. Although the behavior of the component's source code may change based on the application's extensibility, provided by its writer. 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: * fully documented * thoroughly tested ** robust - with comprehensive input-validity checking ** able to pass back appropriate error messages or return codes * designed with an awareness that it ''will'' be put to unforeseen uses In the 1960s, programmers built scientific
subroutine In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed. Functions may ...
libraries that were reusable in a broad array of engineering and scientific applications. Though these subroutine libraries reused well-defined
algorithms In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
in an effective manner, they had a limited domain of application. Commercial sites routinely created application programs from reusable modules written in
assembly language In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
,
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily u ...
, PL/1 and other second- and third-generation languages using both
system A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and express ...
and user application libraries. , modern reusable components encapsulate both data structures and the algorithms that are applied to the data structures. Component-based software engineering builds on prior theories of software objects, software architectures,
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
s and
software design pattern In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine ...
s, and the extensive theory of
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
and the object-oriented design of all these. It claims that software components, like the idea of hardware
components Circuit Component may refer to: •Are devices that perform functions when they are connected in a circuit.   In engineering, science, and technology Generic systems *System components, an entity with discrete structure, such as an assemb ...
, 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 Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consist ...
should be componentized - built from prefabricated ''components'' - first became prominent with Douglas McIlroy's address at the
NATO The North Atlantic Treaty Organization (NATO, ; french: Organisation du traité de l'Atlantique nord, ), also called the North Atlantic Alliance, is an intergovernmental military alliance between 30 member states – 28 European and two N ...
conference on
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
in Garmisch,
Germany Germany,, officially the Federal Republic of Germany, is a country in Central Europe. It is the second most populous country in Europe after Russia, and the most populous member state of the European Union. Germany is situated betwee ...
, 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 Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
was the first implementation of an infrastructure for this idea. Brad Cox of
Stepstone Next may refer to: Arts and entertainment Film * ''Next'' (1990 film), an animated short about William Shakespeare * ''Next'' (2007 film), a sci-fi film starring Nicolas Cage * '' Next: A Primer on Urban Painting'', a 2005 documentary film Lit ...
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.) The software components are used in two different contexts and two kinds: i) using components as parts to build a single executable, or ii) each executable is treated as a component in a distributed environment, where components collaborate with each other using internet or intranet communication protocols for IPC (Inter Process Communications). The above belongs to former kind, while the below belongs to later kind. IBM led the path with their System Object Model (SOM) in the early 1990s. As a reaction,
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
paved the way for actual deployment of component software with Object linking and embedding (OLE) and Component Object Model (COM). many successful software component models exist. In 2021 open-source toolchai
Bit
provided a free infrastructure for the development and composition of components into software applications, products, services and systems.


Architecture

A computer running several software components is often called an
application server An application server is a server that hosts applications or software that delivers a business application through a communication protocol. An application server framework is a service layer model. It includes software components available to a ...
. This combination of application servers and software components is usually called
distributed computing A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
. Typical real-world application of this is in, e.g., financial applications or business software.


Component models

A
component model Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a give ...
is a definition of properties that components must satisfy, methods and mechanisms for the composition of components. During the last decades, researchers and practitioners have proposed several component models with different characteristics. A classification of the existing component models is given in. Examples of component models are: Enterprise JavaBeans (EJB) model, Component Object Model (COM) model, .NET model, X-MAN component model, and Common Object Request Broker Architecture (CORBA) component model.


Technologies

*
Business object A business object is an entity within a multi-tiered software application that works in conjunction with the data access and business logic layers to transport data. For example, a "Manager" would be a ''business object'' where its attributes ...
technologies ** Newi * Component-based
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
s for specific domains ** Advanced Component Framework ** Earth System Modeling Framework (
ESMF The Earth System Modeling Framework (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 ...
) ** MASH IoT Platform for Asset Management ** KOALA component model developed for software in consumer electronics ** React (JavaScript library) **
Software Communications Architecture {{inline, date=May 2014 The Software Communications Architecture (SCA) is an open architecture framework that defines a standard way for radios to instantiate, configure, and manage waveform applications running on their platform. The SCA separat ...
(JTRS SCA) * Component-oriented programming ** Bundles as defined by the OSGi Service Platform ** Component Object Model (OCX/ActiveX/COM) and DCOM from
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
** TASCS - SciDAC Center for Technology for Advanced Scientific Component Software ** Eiffel programming language ** Enterprise JavaBeans from
Sun Microsystems Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, t ...
(now
Oracle An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination. Description The word ...
) ** Flow-based programming ** Fractal component model from ObjectWeb ** MidCOM component framework for Midgard and PHP ** Oberon,
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 language Pascal and preserves its heritage, but is incompatible with Pascal. Instead, it is a minor ...
, and BlackBox Component Builder ** rCOS method of component-based model driven design from
UNU-IIST The United Nations University International Institute for Software Technology (UNU-IIST; ; Portuguese: ''Instituto Internacional para Tecnologia de Programação da Universidade das Nações Unidas'') was a United Nations University Research Tr ...
** SOFA component system from ObjectWeb ** The System.ComponentModel namespace in
Microsoft .NET The Microsoft .NET strategy is a marketing plan that Microsoft followed in the early 2000s. Steve Ballmer described it as the company's "most ambitious undertaking since Internet Strategy Day in 1995". In support of this strategy, between 2000 and ...
**
Unity Unity may refer to: Buildings * Unity Building, Oregon, Illinois, US; a historic building * Unity Building (Chicago), Illinois, US; a skyscraper * Unity Buildings, Liverpool, UK; two buildings in England * Unity Chapel, Wyoming, Wisconsin, US; a ...
developed by Unity Technologies **
Unreal Engine Unreal Engine (UE) is a 3D computer graphics game engine developed by Epic Games, first showcased in the 1998 first-person shooter game '' Unreal''. Initially developed for PC first-person shooters, it has since been used in a variety of g ...
developed by Epic Games ** UNO from the OpenOffice.org office suite ** VCL and CLX from
Borland Borland Software Corporation was a computer technology company founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn. Its main business was the development and sale of software development and software deployment product ...
and similar free LCL library. **
XPCOM Cross Platform Component Object Model (XPCOM) is a cross-platform component model from Mozilla. It is similar to Microsoft Component Object Model (COM) and Common Object Request Broker Architecture (CORBA). It features multiple language bindings ...
from Mozilla Foundation * Compound document technologies ** Active Documents in Oberon System and BlackBox Component Builder ** KParts, the KDE compound document technology ** Object linking and embedding (OLE) ** OpenDoc *
Distributed computing A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
software components ** .NET Remoting from
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
** 9P distributed protocol developed for Plan 9, and used by Inferno and other systems. ** CORBA and the CORBA Component Model from the Object Management Group **
D-Bus In computing, D-Bus (short for "Desktop Bus") is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project ...
from the freedesktop.org organization ** DCOM and later versions of
COM Com or COM may refer to: Computing * COM (hardware interface), a serial port interface on IBM PC-compatible computers * COM file, or .com file, short for "command", a file extension for an executable file in MS-DOS * .com, an Internet top-level d ...
(and COM+) from
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
** DSOM and SOM from IBM (now scrapped) ** Ice from ZeroC ** Java EE from Sun ** Kompics from
SICS RISE SICS (previously Swedish Institute of Computer Science) is a leading research institute for applied information and communication technology in Sweden, founded in 1985. It explores the digitalization of products, services and businesses. In ...
** Universal Network Objects (UNO) from OpenOffice.org ** Web services *** REST ** Zope from Zope Corporation *
AXCIOMA
(the component framework for distributed, real-time, and embedded systems) b
Remedy IT
*
COHORTE
the cross-platform runtime for executing and managing robust and reliable distributed Service-oriented Component-based applications, b
isandlaTech
**DX-MAN Service Model * Generic programming emphasizes separation of algorithms from data representation * Interface description languages (IDLs) ** Open Service Interface Definitions (OSIDs) ** Part of both
COM Com or COM may refer to: Computing * COM (hardware interface), a serial port interface on IBM PC-compatible computers * COM file, or .com file, short for "command", a file extension for an executable file in MS-DOS * .com, an Internet top-level d ...
and CORBA ** Platform-Independent Component Modeling Language ** SIDL - Scientific Interface Definition Language *** Part of the
Babel Babel is a name used in the Hebrew Bible for the city of Babylon and may refer to: Arts and media Written works Books * ''Babel'' (book), by Patti Smith * ''Babel'' (2012 manga), by Narumi Shigematsu * ''Babel'' (2017 manga), by Yūgo Ishika ...
Scientific Programming Language Interoperability System (SIDL and Babel are core technologies of the CCA and the SciDAC TASCS Center - see above.) **
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are us ...
IDL from
World Wide Web Consortium The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web. Founded in 1994 and led by Tim Berners-Lee, the consortium is made up of member organizations that maintain full-time staff working ...
(W3C) ** WDDX **
XML-RPC XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism.Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) ''Programming Web Services with XML-RPC.'' O'Reilly. First Edition ...
, the predecessor of
SOAP Soap is a salt of a fatty acid used in a variety of cleansing and lubricating products. In a domestic setting, soaps are surfactants usually used for washing, bathing, and other types of housekeeping. In industrial settings, soaps are us ...
* Inversion of control (IoC) and Plain Old C++/Java Object (POCO/POJO) component frameworks * Pipes and filters ** Unix operating system


See also

* Business logic * Modular programming *
Service Component Architecture Service Component Architecture (SCA) is a software technology designed to provide a model for applications that follow service-oriented architecture principles. The technology, created by major software vendors, including IBM, Oracle Corporati ...
(SCA) *
Software Communications Architecture {{inline, date=May 2014 The Software Communications Architecture (SCA) is an open architecture framework that defines a standard way for radios to instantiate, configure, and manage waveform applications running on their platform. The SCA separat ...
(JTRS SCA) * Third-party software component * Web service *
Web components Web Components are a set of features that provide a standard component model for the Web allowing for encapsulation and interoperability of individual HTML elements. Primary technologies used to create them include: * Custom Elements: APIs to ...


References


Further reading

* Brad J. Cox, Andrew J. Novobilski (1991). ''Object-Oriented Programming: An Evolutionary Approach''. 2nd ed. Addison-Wesley, Reading * 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 * Richard Veryard (2001). ''Component-based business : plug and play''. London : Springer. * Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). ''Component Software: Beyond Object-Oriented Programming''. 2nd ed. ACM Press - Pearson Educational, London 2002


External links


''Why Software Reuse has Failed and How to Make It Work for You''
by Douglas C. Schmidt
''What is the True essence and reality of CBD?''
(Evidence to show existing CBD paradigm is flawed) * comprehensive list o
Component Systems
on
SourceForge SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirroring ...

''Brief Introduction to Real COP (Component Oriented Programming)''
by Using a small GUI application as an example {{DEFAULTSORT:Component-Based Software Engineering Object-oriented programming Software architecture Software engineering