Interfaces are widely used in object-oriented design for modular programming to increase software stability and to facilitate their maintenance. These mechanisms allow hiding implementation details that vary and are potentially unstable in the evolution of systems. Clients only know about abstraction defined by the interface to minimize the impact caused by changes in the implementations. However, dependencies on implementations are deemed harmful and imply that clients can be affected by changes.
We propose an empirical study for which the main objective is to understand real-world use of structures favoring protected variations in software design. Our study is based on a theoretical model for stable interfaces, and for which certain software classes using such interfaces can be identified statically as either stable clients or unstable clients. We investigate empirically various measures of these clients, including their change- and fault-proneness using data from several open-source software projects.
The goal of our study is to assess whether stable clients have a higher likelihood than unstable clients to be involved in changes and bug fixes.
We show that in almost all releases of the systems studied, clients that have dependencies on implementations are more change- and fault-prone than clients that only depend on interfaces.
| Date | 11 Aug 2016 |
|---|
| Original language | French |
|---|
| Awarding Institution | - École de technologie supérieure
|
|---|
| Supervisor | Christopher Fuhrman (Supervisor) & Latifa Guerrouj (Co-supervisor) |
|---|
Lahmar, M. E. (Author),
Fuhrman (Supervisor) & Guerrouj (Co-supervisor),
11 Aug 2016Student thesis: Master's thesis › Master in Engineering: Engineering