Permanent link

Issue date

Metadata

Collections

Abstract

High-quality software, delivered on time and budget, constitutes a critical part of most products and services in modern society. Our ability to develop and maintain such software is still inadequate. However, software reuse and Component-Based Software Engineering (CBSE) seem to be the potential technologies to reduce time-to-market, and achieve better software quality.

Development for reuse refers to the deliberate development of software components that can be reused. Development with reuse refers to the inclusion of these reusable components in new software. Since the 1970s work has been ongoing to study the issues related to software reuse, maintenance and evolution. The focus has been on how to develop for/with reuse, technical/managerial/organizational aspects, assessing the effect of reuse in terms of defect density and change density, and reporting the success and failure of reuse practices.

The research in this thesis is based on several empirical studies performed in a large Norwegian oil and gas company (StatoilHydro ASA in Stavanger/Trondheim, Norway), and in the context of the SEVO (Software Evolution in Component-Based-Software Engineering) project, financed in part by the Research Council of Norway. Data have been collected for all releases of a reused class framework, called Java Enterprise Framework (JEF), as well as from two applications reusing the framework "as-is", namely Digital Cargo Files (DCF) and Shipment and Allocation (S&A). The main focus has been to investigate the relation between software changes and software reuse, and propose reuse guidelines based on these insights. The research has followed a combined quantitative and qualitative design approach. Quantitative data were collected from the company's data repositories for three releases of a reused class framework, and for the two applications. The qualitative data were collected by interviewing senior developers, and reading numerous documents, web pages and other studies.

The following research questions have been identified in this thesis:

RQ1: What is the relation between software changes and software reuse, by

comparing the reused framework vs. software reusing it?

RQ2: How do the reused framework and software reusing it evolve over time?

RQ3: What improvements can be made towards the actual reuse practice at

StatoilHydro ASA?

&nbsp;The main contributions are:

C1: Identification of differences/similarities of the change profile for the reused framework vs. software reusing it.

C2: Identification of differences/similarities of the defect profile for the reused framework vs. software reusing it.

C3: Description of the software change lifecycle for the reused framework vs.