Types and modularity for implicit invocation with implicit announcement

  • Authors:
  • Friedrich Steimann;Thomas Pawlitzki;Sven Apel;Christian Kästner

  • Affiliations:
  • Fernuniversität in Hagen, Hagen, Germany;Fernuniversität in Hagen, Hagen, Germany;University of Passau, Passau, Germany;University of Magdeburg, Magdeburg, Germany

  • Venue:
  • ACM Transactions on Software Engineering and Methodology (TOSEM)
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Through implicit invocation, procedures are called without explicitly referencing them. Implicit announcement adds to this implicitness by not only keeping implicit which procedures are called, but also where or when—under implicit invocation with implicit announcement, the call site contains no signs of that, or what it calls. Recently, aspect-oriented programming has popularized implicit invocation with implicit announcement as a possibility to separate concerns that lead to interwoven code if conventional programming techniques are used. However, as has been noted elsewhere, as currently implemented it establishes strong implicit dependencies between components, hampering independent software development and evolution. To address this problem, we present a type-based modularization of implicit invocation with implicit announcement that is inspired by how interfaces and exceptions are realized in Java. By extending an existing compiler and by rewriting several programs to make use of our proposed language constructs, we found that the imposed declaration clutter tends to be moderate; in particular, we found that, for general applications of implicit invocation with implicit announcement, fears that programs utilizing our form of modularization become unreasonably verbose are unjustified.