Software component

[1] 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.[2] For large-scale systems, component-based development encourages a disciplined process to manage complexity.[6] (One goal of that conference was to resolve the so-called software crisis of the time.)In the 1970s, McIlroy put this idea into practice with the addition of the pipeline feature to the Unix operating system.[7] He attempted to create an infrastructure and market for reusable third-party components by inventing the Objective-C programming language.
An example of interdependent components modeling a reservation system in UML
modularsoftwareencapsulatesreusabilitymaintainabilitysoftware developmentimplementationCohesivefunctionalityReusableRobustDocumentedTestedsoftware systemthird-partycomponent-based developmentcomplexityEnterprise JavaBeans.NET FrameworkUnified Modeling LanguageDouglas McIlroyNATO Software Engineering Conferencesoftware crisispipelineoperating systemBrad CoxObjective-CSystem Object ModelMicrosoftComponent Object ModelDistributed Component Object ModelObject Linking and EmbeddingLinkedInDouglas C. Schmidt