How Can We Help?
You are here:
< Back
Content deleted Content added
Pmffl (talk | contribs)
→‎History: revise a bit
Pmffl (talk | contribs)
→‎Development: moved to CBSE article
Line 2: Line 2:
{{Anchor|Software component}}
{{Anchor|Software component}}
A '''software component''' is an identifiable part of a [[software system]] that provides a clear [[interface (computing)|interface]] with other parts. In practice, this notion is broad, spanning a range of [[Abstraction (computer science)|abstraction]] levels from individual [[Function (computer programming)|functions]] to a large [[subsystem]], such as a [[software engine]] or a [[web service]].
A '''software component''' is an identifiable part of a [[software system]] that provides a clear [[interface (computing)|interface]] with other parts. In practice, this notion is broad, spanning a range of [[Abstraction (computer science)|abstraction]] levels from individual [[Function (computer programming)|functions]] to a large [[subsystem]], such as a [[software engine]] or a [[web service]].

==Development==
[[File:Component-based Software Engineering (CBSE) - example 1.svg|thumb|180px|An example of two components in [[Unified Modeling Language|UML]]: Checkout processes a customer's order, which requires the other one to bill the credit card.]]

[[Component-based software engineering]] aims to build software out of loosely-[[Coupling (computer programming)|coupled]] [[Modular programming|modules]]. [[Third-party software component|Third-party components]] are often utilized in large systems.

The system can be designed visually with the [[Unified Modeling Language]] (UML). Each component is shown as a rectangle, and an interface is shown as a lollipop to indicate a provided interface and as a socket to indicate consumption of an interface.

A component framework can be used to build components.<ref name="crnkovic2011tse">{{cite journal | last1 = Crnkovic | first1 = I. | last2 = Sentilles | first2 = S. | last3 = Vulgarakis | first3 = A. | last4 = Chaudron | first4 = M. R. V. | year = 2011| title = A Classification Framework for Software Component Models | journal = IEEE Transactions on Software Engineering | volume = 37 | issue = 5| pages = 593–615 | doi = 10.1109/TSE.2010.83 | s2cid = 15449138 }} </ref><ref>{{Cite journal|last1=Lau|first1=Kung-Kiu|last2=Wang|first2=Zheng|date=2007|title=Software Component Models|journal=IEEE Transactions on Software Engineering|volume=33|issue=10|pages=709–724|doi=10.1109/TSE.2007.70726|issn=0098-5589}}</ref> Notable examples are [[Enterprise JavaBeans]], the [[Component Object Model]], the [[.NET Framework]], and [[Common Object Request Broker Architecture|CORBA]].

[[Component-based usability testing]] is for components that interact with the [[end user]].


==History==
==History==

Revision as of 23:59, 13 May 2024

A software component is an identifiable part of a software system that provides a clear interface with other parts. In practice, this notion is broad, spanning a range of abstraction levels from individual functions to a large subsystem, such as a software engine or a web service.

History

The idea that software should be componentized, built from reusable 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.[1] 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 refined the concept of a software component in the 1980s.[2] He attempted to create an infrastructure and market for reusable third-party components by inventing the Objective-C programming language.[3]

References

  1. ^ 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.
  2. ^ Rainer Niekamp. "Software Component Architecture" (PDF). Gestión de Congresos - CIMNE/Institute for Scientific Computing, TU Braunschweig. p. 4. Archived from the original (PDF) on 2012-03-28. Retrieved 2011-07-29. The modern concept of a software component largely defined by Brad Cox of Stepstone, => Objective-C programming language
  3. ^ Brad Cox (1991). Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
Categories
Table of Contents