Article

Empirical Software Engineering

, Volume 19, Issue 5, pp 1335-1382

First online:

An empirical study on the impact of static typing on software maintainability

  • Stefan HanenbergAffiliated withDepartment for Computer Science and BIS, University of Duisburg-Essen Email author 
  • , Sebastian KleinschmagerAffiliated withDepartment for Computer Science and BIS, University of Duisburg-Essen
  • , Romain RobbesAffiliated withPLEIAD Laboratory, Computer Science Department (DCC), University of Chile
  • , Éric TanterAffiliated withPLEIAD Laboratory, Computer Science Department (DCC), University of Chile
  • , Andreas StefikAffiliated withDepartment of Computer Science, University of Nevada

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access

Abstract

Static type systems play an essential role in contemporary programming languages. Despite their importance, whether static type systems impact human software development capabilities remains open. One frequently mentioned argument in favor of static type systems is that they improve the maintainability of software systems—an often-used claim for which there is little empirical evidence. This paper describes an experiment that tests whether static type systems improve the maintainability of software systems, in terms of understanding undocumented code, fixing type errors, and fixing semantic errors. The results show rigorous empirical evidence that static types are indeed beneficial to these activities, except when fixing semantic errors. We further conduct an exploratory analysis of the data in order to understand possible reasons for the effect of type systems on the three kinds of tasks used in this experiment. From the exploratory analysis, we conclude that developers using a dynamic type system tend to look at different files more frequently when doing programming tasks—which is a potential reason for the observed differences in time.

Keywords

Type systems Programming languages Empirical studies Software engineering