• DocumentCode
    555316
  • Title

    Always-available static and dynamic feedback

  • Author

    Bayne, Michael ; Cook, Richard ; Ernst, Michael D.

  • Author_Institution
    Univ. of Washington, Seattle, WA, USA
  • fYear
    2011
  • fDate
    21-28 May 2011
  • Firstpage
    521
  • Lastpage
    530
  • Abstract
    Developers who write code in a statically typed language are denied the ability to obtain dynamic feedback by executing their code during periods when it fails the static type checker. They are further confined to the static typing discipline during times in the development process where it does not yield the highest productivity. If they opt instead to use a dynamic language, they forgo the many benefits of static typing, including machine-checked documentation, improved correctness and reliability, tool support (such as for refactoring), and better runtime performance. We present a novel approach to giving developers the benefits of both static and dynamic typing, throughout the development process, and without the burden of manually separating their program into statically and dynamically-typed parts. Our approach, which is intended for temporary use during the development process, relaxes the static type system and provides a semantics for many type-incorrect programs. It defers type errors to run time, or suppresses them if they do not affect runtime semantics. We implemented our approach in a publicly available tool, DuctileJ, for the Java language. In case studies, DuctileJ conferred benefits both during prototyping and during the evolution of existing code.
  • Keywords
    Java; data flow analysis; programming language semantics; software development management; software reliability; DuctileJ; Java language; always-available static feedback; code execution; development process; dynamic feedback; dynamic language; dynamic typing; machine-checked documentation; many type-incorrect program semantics; runtime semantics; software reliability; static type checker; static typing discipline; statically typed language; tool support; Java; Libraries; Prototypes; Runtime; Semantics; Software; Testing; dynamic typing; gradual typing; hybrid typing; productivity; prototyping; refactoring; static typing; type error;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Engineering (ICSE), 2011 33rd International Conference on
  • Conference_Location
    Honolulu, HI
  • ISSN
    0270-5257
  • Print_ISBN
    978-1-4503-0445-0
  • Electronic_ISBN
    0270-5257
  • Type

    conf

  • DOI
    10.1145/1985793.1985864
  • Filename
    6032491