Component-based software engineering

Component-based software engineering, or component-based software development is an idea from computer science. It says that complex systems should be made of smaller pieces, called components. Each component has a given functionality, and an interface that can be used to communicate with it. Well-designed components can be re-used. An application can then be made by combining and extending different compoents. These components will then use each other's interfaces to communicate.