fbpx
Wikipedia

Component-based software engineering

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

An example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer's order, requires the card processing component to charge the customer's credit/debit card (functionality that the latter provides).

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

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

 
A simple example of several software components - pictured within a hypothetical holiday-reservation system represented in UML 2.0.

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 (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. 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 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 assembly language, COBOL, PL/1 and other second- and third-generation languages using both system and user application libraries.

As of 2010, 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 frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these. It claims that software components, like the idea of hardware components, used for example in telecommunications,[1] 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).[2]

History

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.[3] The conference set out to counter the so-called software crisis. McIlroy's subsequent inclusion of pipes and filters into the Unix operating system was the first implementation of an infrastructure for this idea.

Brad Cox of Stepstone largely defined the modern concept of a software component.[4] 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 paved the way for actual deployment of component software with Object linking and embedding (OLE) and Component Object Model (COM).[5] As of 2010 many successful software component models exist.

In 2021 open-source toolchain 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. This combination of application servers and software components is usually called distributed computing. Typical real-world application of this is in, e.g., financial applications or business software.

Component models

A component model is a definition of properties that components must satisfy, methods and mechanisms for the composition of components.[6]

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.[6][7] Examples of component models are: Enterprise JavaBeans (EJB) model, Component Object Model (COM) model, .NET model, X-MAN component model,[8] and Common Object Request Broker Architecture (CORBA) component model.

Technologies

See also

References

  1. ^ Foukalas et al "Protocol Reconfiguration Using Component-Based Design"
  2. ^ Wallace, Bruce (May 19, 2010). "A hole for every component, and every component in its hole". Existential Programming. There is no such thing as a Component
  3. ^ McIlroy, Malcolm Douglas (January 1969). "Mass produced software components" (PDF). Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientific Affairs Division, NATO. p. 79.
  4. ^ Rainer Niekamp. "Software Component Architecture" (PDF). Gestión de Congresos - CIMNE/Institute for Scientific Computing, TU Braunschweig. p. 4. Retrieved 2011-07-29. The modern concept of a software component largely defined by Brad Cox of Stepstone, => Objective-C programming language
  5. ^ Raphael Gfeller (December 9, 2008). "Upgrading of component-based application". HSR - Hochschule für Technik Rapperswill. p. 4. Retrieved 2011-07-29. 1990, IBM invents their System Object Model. 1990, as a reaction, Microsoft released OLE 1.0 OLE custom controls (OCX)[permanent dead link]
  6. ^ a b Crnkovic, I.; Sentilles, S.; Vulgarakis, A.; Chaudron, M. R. V. (2011). "A Classification Framework for Software Component Models". IEEE Transactions on Software Engineering. 37 (5): 593–615. doi:10.1109/TSE.2010.83. S2CID 15449138.
  7. ^ Lau, Kung-Kiu; Wang, Zheng (2007). "Software Component Models". IEEE Transactions on Software Engineering. 33 (10): 709–724. doi:10.1109/TSE.2007.70726. ISSN 0098-5589.
  8. ^ Lau, Kung-Kiu; Velasco Elizondo, Perla; Wang, Zheng (2005). Heineman, George T.; Crnkovic, Ivica; Schmidt, Heinz W.; Stafford, Judith A.; Szyperski, Clemens; Wallnau, Kurt (eds.). "Exogenous Connectors for Software Components". Component-Based Software Engineering. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 3489: 90–106. doi:10.1007/11424529_7. ISBN 9783540320494. S2CID 17971442.
  9. ^ MASH defines assets as people, property and information and management as monitoring, control and configuration. Presented at the 2013 IEEE IoT conference in Mountain View MASH includes a full IDE, Android client and runtime. "MASH YouTube channel"
  10. ^ A component-oriented approach is an ideal way to handle the diversity of software in consumer electronics. The Koala model, used for embedded software in TV sets, allows late binding of reusable components with no additional overhead. [1]
  11. ^ Component model for embedded devices like TV developed by Philips based on paper by van Ommering, R.: Koala, a Component Model for Consumer Electronics Product Software [2] 2014-08-09 at the Wayback Machine
  12. ^ Arad, Cosmin (April 2013). Programming Model and Protocols for Reconfigurable Distributed Systems (PDF). Doctoral Dissertation. Stockholm, Sweden: KTH Royal Institute of Technology. ISBN 978-91-7501-694-8.
  13. ^ Arellanes, Damian; Lau, Kung-Kiu (2017). "Exogenous Connectors for Hierarchical Service Composition" (PDF). 2017 IEEE 10th Conference on Service-Oriented Computing and Applications (SOCA). Kanazawa: IEEE: 125–132. doi:10.1109/SOCA.2017.25. ISBN 9781538613269. S2CID 31211787.

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 (2001). Component-based business : plug and play. London : Springer. ISBN 1-85233-361-8
  • Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). Component Software: Beyond Object-Oriented Programming. 2nd ed. ACM Press - Pearson Educational, London 2002 ISBN 0-201-74572-0

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 of Component Systems on SourceForge
  • Brief Introduction to Real COP (Component Oriented Programming) by Using a small GUI application as an example

component, based, software, engineering, cbse, also, called, component, based, development, branch, software, engineering, that, emphasizes, separation, concerns, with, respect, wide, ranging, functionality, available, throughout, given, software, system, reus. 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 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 An example of two components expressed in UML 2 0 The checkout component responsible for facilitating the customer s order requires the card processing component to charge the customer s credit debit card functionality that the latter provides 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 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 Components can produce or consume events and can be used for event driven architectures EDA Contents 1 Definition and characteristics of components 2 History 3 Architecture 4 Component models 5 Technologies 6 See also 7 References 8 Further reading 9 External linksDefinition and characteristics of components EditAn 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 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 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 A simple example of several software components pictured within a hypothetical holiday reservation system represented in UML 2 0 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 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 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 usesIn the 1960s programmers built scientific subroutine 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 assembly language COBOL PL 1 and other second and third generation languages using both system and user application libraries As of 2010 update 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 frameworks and software design patterns and the extensive theory of object oriented programming and the object oriented design of all these It claims that software components like the idea of hardware components used for example in telecommunications 1 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 2 History EditThe 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 3 The conference set out to counter the so called software crisis McIlroy s subsequent inclusion of pipes and filters into the Unix operating system was the first implementation of an infrastructure for this idea Brad Cox of Stepstone largely defined the modern concept of a software component 4 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 paved the way for actual deployment of component software with Object linking and embedding OLE and Component Object Model COM 5 As of 2010 update many successful software component models exist In 2021 open source toolchain Bit provided a free infrastructure for the development and composition of components into software applications products services and systems Architecture EditA computer running several software components is often called an application server This combination of application servers and software components is usually called distributed computing Typical real world application of this is in e g financial applications or business software Component models EditA component model is a definition of properties that components must satisfy methods and mechanisms for the composition of components 6 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 6 7 Examples of component models are Enterprise JavaBeans EJB model Component Object Model COM model NET model X MAN component model 8 and Common Object Request Broker Architecture CORBA component model Technologies EditThis section is in list format but may read better as prose You can help by converting this section if appropriate Editing help is available January 2020 Business object technologies Newi Component based software frameworks for specific domains Advanced Component Framework Earth System Modeling Framework ESMF MASH IoT Platform for Asset Management 9 KOALA component model developed for software in consumer electronics 10 11 React JavaScript library Software Communications Architecture JTRS SCA Component oriented programming Bundles as defined by the OSGi Service Platform Component Object Model OCX ActiveX COM and DCOM from Microsoft TASCS SciDAC Center for Technology for Advanced Scientific Component Software Eiffel programming language Enterprise JavaBeans from Sun Microsystems now Oracle Flow based programming Fractal component model from ObjectWeb MidCOM component framework for Midgard and PHP Oberon Component Pascal and BlackBox Component Builder rCOS method of component based model driven design from UNU IIST SOFA component system from ObjectWeb The System ComponentModel namespace in Microsoft NET Unity developed by Unity Technologies Unreal Engine developed by Epic Games UNO from the OpenOffice org office suite VCL and CLX from Borland and similar free LCL library XPCOM 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 software components NET Remoting from Microsoft 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 from the freedesktop org organization DCOM and later versions of COM and COM from Microsoft DSOM and SOM from IBM now scrapped Ice from ZeroC Java EE from Sun Kompics 12 from SICS 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 by Remedy IT COHORTE the cross platform runtime for executing and managing robust and reliable distributed Service oriented Component based applications by isandlaTech DX MAN Service Model 13 Generic programming emphasizes separation of algorithms from data representation Interface description languages IDLs Open Service Interface Definitions OSIDs Part of both COM and CORBA Platform Independent Component Modeling Language SIDL Scientific Interface Definition Language Part of the Babel Scientific Programming Language Interoperability System SIDL and Babel are core technologies of the CCA and the SciDAC TASCS Center see above SOAP IDL from World Wide Web Consortium W3C WDDX XML RPC the predecessor of SOAP Inversion of control IoC and Plain Old C Java Object POCO POJO component frameworks Pipes and filters Unix operating systemSee also EditBusiness logic Modular programming Service Component Architecture SCA Software Communications Architecture JTRS SCA Third party software component Web service Web componentsReferences Edit Foukalas et al Protocol Reconfiguration Using Component Based Design Wallace Bruce May 19 2010 A hole for every component and every component in its hole Existential Programming There is no such thing as a Component McIlroy Malcolm Douglas January 1969 Mass produced software components PDF Software Engineering Report of a conference sponsored by the NATO Science Committee Garmisch Germany 7 11 Oct 1968 Scientific Affairs Division NATO p 79 Rainer Niekamp Software Component Architecture PDF Gestion de Congresos CIMNE Institute for Scientific Computing TU Braunschweig p 4 Retrieved 2011 07 29 The modern concept of a software component largely defined by Brad Cox of Stepstone gt Objective C programming language Raphael Gfeller December 9 2008 Upgrading of component based application HSR Hochschule fur Technik Rapperswill p 4 Retrieved 2011 07 29 1990 IBM invents their System Object Model 1990 as a reaction Microsoft released OLE 1 0 OLE custom controls OCX permanent dead link a b Crnkovic I Sentilles S Vulgarakis A Chaudron M R V 2011 A Classification Framework for Software Component Models IEEE Transactions on Software Engineering 37 5 593 615 doi 10 1109 TSE 2010 83 S2CID 15449138 Lau Kung Kiu Wang Zheng 2007 Software Component Models IEEE Transactions on Software Engineering 33 10 709 724 doi 10 1109 TSE 2007 70726 ISSN 0098 5589 Lau Kung Kiu Velasco Elizondo Perla Wang Zheng 2005 Heineman George T Crnkovic Ivica Schmidt Heinz W Stafford Judith A Szyperski Clemens Wallnau Kurt eds Exogenous Connectors for Software Components Component Based Software Engineering Lecture Notes in Computer Science Springer Berlin Heidelberg 3489 90 106 doi 10 1007 11424529 7 ISBN 9783540320494 S2CID 17971442 MASH defines assets as people property and information and management as monitoring control and configuration Presented at the 2013 IEEE IoT conference in Mountain View MASH includes a full IDE Android client and runtime MASH YouTube channel A component oriented approach is an ideal way to handle the diversity of software in consumer electronics The Koala model used for embedded software in TV sets allows late binding of reusable components with no additional overhead 1 Component model for embedded devices like TV developed by Philips based on paper by van Ommering R Koala a Component Model for Consumer Electronics Product Software 2 Archived 2014 08 09 at the Wayback Machine Arad Cosmin April 2013 Programming Model and Protocols for Reconfigurable Distributed Systems PDF Doctoral Dissertation Stockholm Sweden KTH Royal Institute of Technology ISBN 978 91 7501 694 8 Arellanes Damian Lau Kung Kiu 2017 Exogenous Connectors for Hierarchical Service Composition PDF 2017 IEEE 10th Conference on Service Oriented Computing and Applications SOCA Kanazawa IEEE 125 132 doi 10 1109 SOCA 2017 25 ISBN 9781538613269 S2CID 31211787 Further reading EditBrad 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 2001 Component based business plug and play London Springer ISBN 1 85233 361 8 Clemens Szyperski Dominik Gruntz Stephan Murer 2002 Component Software Beyond Object Oriented Programming 2nd ed ACM Press Pearson Educational London 2002 ISBN 0 201 74572 0External links EditWhy 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 of Component Systems on SourceForge Brief Introduction to Real COP Component Oriented Programming by Using a small GUI application as an example Retrieved from https en wikipedia org w index php title Component based software engineering amp oldid 1139705815 Software component, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.