The complexity of modern software systems is continually increasing. At the same time, development times keep getting shorter, and software requirements keep changing more frequently. The lecture looks at Component-Based Software Engineering (CBSE) as one major technologies to cope with these challenges. By building applications from individual, independent building blocks (components), CBSE provides two major directions which help to cope with complexity, short time-to-market, and increased demand for flexibility:
- Components can be pre-fabricated and traded independently of specific applications. This fosters reuse and thus can decrease development cost and time-to-market, while increasing the quality of the resulting software.
- Component-structured applications can more easily be adapted to new requirements, because individual components can be exchanged largely independently of the rest of the system.
It can be said that CBSE is the successor technology of object-oriented programming. However, components appear in many different forms (component models). The course presents two major classes of component models:
- Black-box component models provide design-time components that are also available at run time.
- Grey-box component models merge design-time components. Therefore, tightly integrated systems can be built with them.