Curbing Dependencies in Software Evolution of Object-Oriented Systems

Relationships between classes and objects in object-oriented software are necessary in order for the parts of the systems to provide dynamic behavior. These inherent relationships also create dependencies which can give rise to problems for software evolution of object-oriented software systems. Dep...

Full description

Bibliographic Details
Main Author: Skoglund, Mats
Format: Doctoral Thesis
Language:English
Published: Stockholms universitet, Institutionen för data- och systemvetenskap 2006
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:su:diva-1049
http://nbn-resolving.de/urn:isbn:91-7155-271-5
Description
Summary:Relationships between classes and objects in object-oriented software are necessary in order for the parts of the systems to provide dynamic behavior. These inherent relationships also create dependencies which can give rise to problems for software evolution of object-oriented software systems. Dependencies in software make systems difficult to understand, reuse, change and verify. This thesis presents analytical and empirical investigations of dependency-related problems in software evolution of object-oriented software and on how such problems can be handled with dependency focused techniques, methods and processes. The research presented in this thesis includes: Development of a programming language construct for controlling dependencies; formal experiments on code inspection techniques; exploring change strategies' effects on test suites; an industrial case study of regression test selection techniques for object-oriented software; proving the efficiency and defect detection capabilities of a novel regression test selection technique. The thesis contributes to increased knowledge on the role of dependencies in software evolution of object-oriented software. Specific contributions are a programming language construct that can control access to dependencies in software. Other main contributions are insights on the efficiency of dependency focused code inspection techniques and contribution to the knowledge on dependency-based regression test selection techniques for large scale software. Another contribution is a novel change-based regression test selection technique.