In Software Engineering, component-based development (CBD) aims at reducing production cost and time-to-market by reusing pre-existing components from a repository. CBD represents a paradigm shift in software development: from building monolithic, single-platform, purpose-built-from-scratch systems to constructing assemblies of ready-made components that are platform-independent and supplied by third-parties.
With software becoming increasingly ubiquitous, and applications becoming increasingly complex, e.g. driverless cars and the Internet of Things, scale and complexity have become unavoidable challenges, particularly for mission and safety-critical applications. CBD is well-placed to tackle these challenges through the use of compositional techniques which construct and validate systems in a hierarchical manner.