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