Trading robustness for maintainability: an empirical study of evolving c# programs

Author(s): Nélio Cacho,Thiago César, Thomas Filipe, Eliezio Soares, Arthur Cassio, Rafael Souza, Israel Garcia, Eiji Adachi Barbosa, Alessandro Garcia
Venue: International Conference on Software Engineering
Date: 2014

Type of Experiement: Case Study
Sample Size: 16
Class/Experience Level: Professional
Participant Selection: 16 software projects covering several domains
Data Collection Method: Code Metric, Project Artifact(s)


Exception handling mechanisms are believed to support robust and maintainable implementation of exception handling in software systems. Many modern languages are often claimed to have more appropriated exception handling mechanisms. This paper conducts an empirical study aimed at understanding the relationship between changes in C# programs and their robustness. These C# programs were analyzed by applying a change impact analysis and a control flow analysis in 119 versions of 16 C# programs.

The results showed that most of the problems hindering software robustness in those programs are caused by changes in the normal code. Many potential faults were introduced even when improving exception handling in C# code. Lastly, faults are often facilitated by the maintenance- driven flexibility of the exception handling mechanism.

In conclusion this study suggests that C# programmers often unconsciously traded robustness for maintainability in a wide range of program categories. The use of exception handling management in C# was very fragile and often led to robustness decrease. Programmers often introduced bugs when performing subtle changes in try blocks. A high number of uncaught exception flows were also introduced when the catch blocks were changed. These findings seem to indicate that there is still much room for improving built-in exception handling management in programming languages.