Components allow software development to assemble software with reliable parts rather than writing code for every aspect; allowing for implementation to be more like factory assembly than custom building.
Attributes
Desirable attributes of a component include but are not limited to:
Some components are built in-house by the same organization or team building the software system. Some are third-party, developed elsewhere and assembled into the software system.[2]
Component design is often modeled visually. In Unified Modeling Language (UML) 2.0 a 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.
Brad Cox refined the concept of a software component in the 1980s.[7] He attempted to create an infrastructure and market for reusable third-party components by inventing the Objective-C programming language.[8]
^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. S2CID15449138.
^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). 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
^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]