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.
Flow-based programming
flow-basedAdvanced Modular Processing System
FBP is thus naturally component-oriented.






RCOS (computer sciences)
rCOS
rCOS stands for refinement of object and component systems.
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.

