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