This report presents a systematic comparison of the principles of agile software development and the fundaments of component-based software development with COTS (Commercial Off-the-Shelf) components. The fundamental assumptions and inherent characteristics of the two fields are compared, and any theoretical incompatibilities are reported. The study is limited to include only development activities, which are [31]: requirements, design, development, verification and validation, and integration. We do not consider activities such as project management, configuration management, maintenance and evolution, and documentation. Furthermore, the study concerns development with COTS components, not other types of component-based development, such as [15]: product-line development (where components are built in-house) or architecture-driven development (i.e. top-down design decomposition resulting in components to be developed in-house).
This theoretical study should be seen as a first phase, laying the foundation for further empirical studies in an industrial setting. These two steps are well-defined parts of the research agenda of the established PROGRESS Centre for Predictable Embedded Software Systems and also the ITEA2 FLEXI project of which we are part.
Component-based software engineering has had great impact in the desktop and server domain and is spreading to other domains as well, such as embedded systems. Agile software development is another approach which has gained much attention in recent years, mainly for smaller-scale production of less critical systems. Both of them promise to increase system quality, development speed and flexibility, but so far little has been published on the combination of the two approaches. This paper presents a comprehensive analysis of the applicability of the agile approach in the development processes of 1) COTS components and 2) COTS-based systems. The study method is a systematic theoretical examination and comparison of the fundamental concepts and characteristics of these approaches. The contributions are: first, an enumeration of identified contradictions between the approaches, and suggestions how to bridge these incompatibilities to some extent. Second, the paper provides some more general comments, considerations, and application guidelines concerning the introduction of agile principles into the development of COTS components or COTS-based systems. This study thus forms a framework which will guide further empirical studies.