Component-Based Software Engineering: Modern Trends, Evolution and Perceived Architectural Risks
MetadataVis full innførsel
Motivation: Component-Based Software Engineering (CBSE) is an approach to software reuse where software assets or artifacts from multiple sources are reused to develop systems faster and cheaper. The main benefit of software reuse in CBSE is the enabling of systematic improvement in terms of quality, effort, time-to-market, common software platform/architecture, and standards compliance. A key aim of these improvements is to enable proper management of CBSE-driven software evolution, i.e. helping software engineers become more cost-effective in developing and incorporating high-quality, reusable components and other assets. Knowing the relevant risks and effective handling strategies in software evolution is paramount to achieving improvements in quality, effort and time-to-market. Moreover, the architecture of a software system constitutes its fundamental building blocks. Continued suitability of the architecture over time is therefore crucial to the continued success of the system. Prior investigations on risks and risk management strategies have commonly focused on project-level risks and strategies. Similarly, studies on software architecture have mainly investigated its design, implementation and maintenance. Little prior effort has been made towards studying risks and risk management strategies of architectural evolution. Approach: This thesis investigates the state of practices and issues of modern CBSE, with multi-origin reusable components (in-house software, Commercial Off- The-Shelf software (COTS), and Open Source Software (OSS)), in the development process, based on quantitative and qualitative empirical studies of industrial systems. It also explores software evolution impact, elicited through defect and change reports over time. Test Driven Development (TDD) as a strategy to handle these impacts is also investigated. Finally, surveys are performed on risks and risk management strategies in industrial software projects. The aims (research questions) in this thesis are: RQ1: What is the state of practices and issues with respect to software process improvement in CBSE for COTS/OSS and in-house reusable software? This is answered by two industrial surveys. RQ2: How does software evolution impact individual reusable components, in terms of defect and change densities? This is answered by an industrial case study. RQ3: What are the impacts of Test Driven Development versus test-last development on reusable components? This is answered by an industrial case study. RQ4: What are the perceived architectural risks of CBSE-driven software evolution, and how can these risks be mitigated? This is answered by two industrial surveys. Correspondingly, the contributions of this thesis are (elaborated in articles P1-P6): C1. Improved knowledge of modern trends in CBSE and their impacts on software development processes C2. Improved understanding of evolution impact on individual reusable components in terms of defect and change densities (RQ2, article P3). C3. Improved understanding of the impact and effectiveness of TDD (RQ3, article P4) C4a. Identification of perceived risks and related mitigation strategies specifically for the evolution of software architecture (RQ4, articles P5, P6). C4b. An adapted operational matrix as a tool to support risk management in software architecture evolution (RQ4, article P6).