Software Components
Component-based software engineering (CBSE) has rapidly gained currency over recent years. Software developed as components and as assemblies of components has realised the reuse slogan originally associated with object-oriented design. In this chapter we define what software components are along with their different characteristics and classifications. We also cover the widely debated definitions of software components to emphasise the fact that components possess different properties that can mean different things to different people. We discuss the impact of using components on the software development lifecycle and review a number of different approaches developed to procure and integrate components in software systems. Finally, the risks associated with using software components are discussed in detail with along with a trust model. Trends in CBSE research are discussed towards the end to explore some potential areas of future research.