Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
An empirical study on the impact of static typing on software maintainability
Hanenberg S., Kleinschmager S., Robbes R., Tanter É., Stefik A. Empirical Software Engineering19 (5):1335-1382,2014.Type:Article
Date Reviewed: May 21 2015

Traditionally, science and engineering involve a fair amount of empirical work; it is, after all, one of the foundations of the scientific method. Until recently, there was rather a dearth of empirical work in both computer science (CS) and software engineering (SE). Even rather simple questions, such as what effect (if any) static types have on basic activities such as software maintenance, were unanswered. Oh, there is no lack of opinion on the matter! But even opinions of highly learned professionals are no replacement for empirical studies.

Sadly, the vast majority of software professionals, whether in industry or in academia, are not well-versed in experimental protocols. While the paper at hand is not a survey or tutorial, it goes to great lengths to expand on all the details involved in running proper experiments (such verbosity would never be tolerated in empirical domains like psychology). For CS and SE, this becomes a strength of this long paper.

The experiments presented here try to ascertain if there are software maintainability tasks where static typing helps (or hinders). Various experiments were very carefully designed, with all choices fully explained, to determine this. For example, the choice of using Java and Groovy is fully laid out, as well as why other valid choices were rejected. The results are then painstakingly analyzed, including a rather thorough analysis of the threats to validity and of limitations of the conclusions.

Roughly speaking, the results are as expected: if the types encode useful information for understanding a particular piece of code, then maintaining that code is easier with types than without. For tasks where the type system “does not help,” then there is no (statistical) difference, which of course begs the question of how much more useful types can be in practice for programs written in languages such as Haskell and Scala than in Java. And it is important to note that these conclusions all regard maintenance tasks, leaving the debate about exploratory programming (the writing of new code for a new application never done before) and type systems fully open.

Anyone curious about empirical methods in CS or SE could benefit from reading this paper: the thoroughness is exemplary. Anyone wishing to understand the authors’ results will find the paper exceedingly long, and might wish for an executive summary instead.

Reviewer:  Jacques Carette Review #: CR143461 (1508-0706)
Bookmark and Share
  Featured Reviewer  
 
Software Engineering (D.2 )
 
 
Programming Languages (D.3 )
 
Would you recommend this review?
yes
no
Other reviews under "Software Engineering": Date
Perspectives of system informatics: a comparative presentation of object-oriented programming with C++ and Java
Broy M. (ed), Zamulin A. (ed), Bjorner D., Springer-Verlag New York, Inc., Secaucus, NJ, 2002.  561, Type: Book (9783540430759)
Jul 3 2003
Relationship quality: the undervalued dimension of software quality
Russell B., Chatterjee S. Communications of the ACM 46(8): 85-89, 2003. Type: Article
Oct 14 2003
Executable JVM model for analytical reasoning: a study
Liu H., Moore J.  Interpreters, Virtual Machines and Emulators (Proceedings of the 2003 workshop, San Diego, California, Jun 12, 2003)15-23, 2003. Type: Proceedings
Sep 24 2003
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy