Component technologies and their impact upon software development
Software development is beset with problems relating to development productivity, resulting in projects delivered late and over budget. While the term software engineering was first introduced in the late sixties, its current state reflects no other engineering discipline. Component-orientation has been proposed as a technique to address the problems of development productivity and much industrial literature extols the benefits of a component-oriented approach to software development. This research programme assesses the use of component technologies within industrial software development. From this assessment, consideration is given to how organisations can best adopt such techniques. Initial work focuses upon the nature of component-orientation, drawing from the considerable body of industrial literature in the area. Conventional wisdom regarding componentorientation is identified from the review. Academic literature relevant to the research programme focuses upon knowledge regarding the assessment of software technologies and models for the adoption of emergent technologies. The method pays particular attention to literature concerning practitioner focussed research, in particular case studies. The application of the case study method is demonstrated. The study of two industrial software development projects enables an examination of specific propositions related to the effect of using component technologies. Each case study is presented, and the impact of component-orientation is each case is demonstrated. Theories regarding the impact of component technologies upon software development are drawn from case study results. These theories are validated through a survey of practitioners. This enabled further examination of experience in component-based development and also understanding how developers learn about the techniques. A strategy for the transfer of research findings into organisational knowledge focuses upon the packaging of previous experience in the use of component-orientation in such a way that it was usable by other developers. This strategy returns to adoption theories in light of the research findings and identifies a pattern-based approach as the most suitable for the research aims. A pattern language, placed in the context of the research programme, is developed from this strategy. Research demonstrates that component-orientation undoubtedly does affect the development process, and it is necessary to challenge conventional wisdom regarding their use. While component-orientation provides the mechanisms for increased productivity in software development, these benefits cannot be exploited without a sound knowledge base around the domain.