Component-based software engineering

software componentcomponentcomponentssoftware componentscomponent-basedsoftware componentrycomponent modelcomponent-orientedcomponent-based developmentapplication components
Component-based software engineering (CBSE), also called components-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.wikipedia
335 Related Articles

Software system

software systemssystemssystem
Component-based software engineering (CBSE), also called components-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).

Service-oriented architecture

SOAService Oriented Architectureservice-oriented
Components play this role, for example, in web services, and more recently, in service-oriented architectures (SOA), whereby a component is converted by the web service into a service and subsequently inherits further characteristics beyond that of an ordinary component.
Service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network.

Interface description language

IDLinterface definition languagecall semantics
Software components often take the form of objects (not classes) or collections of objects (from object-oriented programming), in some binary or textual form, adhering to some interface description language (IDL) so that the component may exist autonomously from other components in a computer.
An interface description language or interface definition language (IDL), is a specification language used to describe a software component's application programming interface (API).

Modular programming

modulesmodularmodule
An individual software component is a software package, a web service, a web resource, or a module that encapsulates a set of related functions (or data).
A component is a similar concept, but typically refers to a higher level; a component is a piece of a whole system, while a module is a piece of an individual program.

Component-based usability testing

Furthermore, component-based usability testing should be considered when software components directly interact with users.
The CBUT approach can be regarded as part of component-based software engineering branch of software engineering.

Serialization

serializeddata serializationserializable
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

reusableSoftware Reusabilityoften re-used
Reusability is an important characteristic of a high-quality software component.
Proponents claim that objects and software components offer a more advanced form of reusability, although it has been tough to objectively measure and define levels or scores of reusability.

Software framework

frameworkframeworksdevelopment framework
Component-based software engineering builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these.
Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.

Software design pattern

design patterndesign patternspattern
Component-based software engineering builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these.
Since some authors see this as a step backward from software reuse as provided by components, researchers have worked to turn patterns into components.

Douglas McIlroy

Doug McIlroyM. Douglas McIlroyMcIlroy
The idea that software should be componentized - built from prefabricated components - first became prominent with Douglas McIlroy's address at the NATO conference on software engineering in Garmisch, Germany, 1968, titled Mass Produced Software Components.
McIlroy is best known for having originally developed Unix pipelines, software componentry and several Unix tools, such as spell, diff, sort, join, graph, speak, and tr.

Service-orientation

service-orientedservice orientedservice orientation
Software engineering practitioners regard components as part of the starting platform for service-orientation.

Software architecture

architecturearchitecturessoftware
Component-based software engineering builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these.
Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in 1996, which promoted software architecture concepts such as components, connectors, and styles.

Enterprise JavaBeans

EJBEnterprise JavaBeanEnterprise Java Beans
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.
EJB is a server-side software component that encapsulates business logic of an application.

Objective-C

Objective-C++Objective CCategory
He called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective-C programming language.
In order to demonstrate that real progress could be made, Cox showed that making interchangeable software components really needed only a few practical changes to existing tools.

Brad Cox

Brad Cox of Stepstone largely defined the modern concept of a software component.
Brad Cox is a computer scientist known mostly for creating the Objective-C programming language with his business partner Tom Love and for his work in software engineering (specifically software reuse) and software componentry.

Distributed Component Object Model

DCOM(D)COMDistributed COM
Distributed Component Object Model (DCOM) is a proprietary Microsoft technology for communication between software components on networked computers.

Object Linking and Embedding

OLEActiveXOLE 2
As a reaction, Microsoft paved the way for actual deployment of component software with Object linking and embedding (OLE) and Component Object Model (COM).
OLE 1.0 later evolved to become an architecture for software components known as the Component Object Model (COM), and later DCOM.

Visual Component Library

VCL
The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications.

Universal Network Objects

UNOUNO APIunoconv
Universal Network Objects (UNO) is the component model used in the OpenOffice.org and LibreOffice computer software application suites.

XPCOM

Cross Platform Component Object Model (XPCOM) is a cross-platform component model from Mozilla.

Interface (computing)

interfaceinterfacescomputer interface
With regard to system-wide co-ordination, components communicate with each other via interfaces.

OpenDoc

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

Object-oriented programming

object-orientedobject orientedobject-oriented programming language
Software components often take the form of objects (not classes) or collections of objects (from object-oriented programming), in some binary or textual form, adhering to some interface description language (IDL) so that the component may exist autonomously from other components in a computer. Component-based software engineering builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these.