Pipa: A Behavioral Interface Specification Language for Aspect

  • Jianjun Zhao
  • Martin Rinard
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2621)


Pipa is a behavioral interface specification language (BISL) tailored to AspectJ, an aspect-oriented programming language. Pipa is a simple and practical extension to the Java Modeling Language (JML), a BISL for Java. Pipa uses the same basic approach as JML to specify AspectJ classes and interfaces, and extends JML, with just a few new constructs, to specify AspectJ aspects. Pipa also supports aspect specification inheritance and crosscutting. This paper discusses the goals and overall approach of Pipa. It also provides several examples of Pipa specifications and discusses how to transform an AspectJ program together with its Pipa specification into a corresponding Java program and JML specification. The goal is to facilitate the use of existing JML-based tools to verify AspectJ programs.


Target Object Java Program Java Modeling Language Behavioral Interface Aspect Invariant 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    The AspectJ Team. The AspectJ Programming Guide. 2001. AspectJ home page:
  2. 2.
    L. Bergmans and M. Aksits. Composing crosscutting Concerns Using Composition Filters. Communications of the ACM, Vol.44, No.10, pp.51–57, October 2001.CrossRefGoogle Scholar
  3. 3.
    D. Bertetzko, C. Fischer, M. Moller, and H. Wehrheim. Jass-Java with Assertions. In K. Havelund and G. Rosu, editors, ENTCS, Vol. 55, Elsevier Publishing, 2001.Google Scholar
  4. 4.
    Y. Cheon and G. T. Leavens. A Quick Overview of Larch/C++. Journal of Object-Oriented Programming, Vol.7, No.6, pp.39–49, October 1994.Google Scholar
  5. 5.
    C. Clifton and G. T. Leavens. Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning. Technical Report TR#02-04, Department of Computer Science, Iowa State University, March 2002.Google Scholar
  6. 6.
    C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended Static Checking for Java. Proc. ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation, pp.234–245, June 2002.Google Scholar
  7. 7.
    J. Gosling, B. Joy, and G. Steele. The Java Language Specification. The Java Series, Addison-Wesley, Reading, MA, 1996.Google Scholar
  8. 8.
    J. V. Guttag, J. J. Horning, S. J. Garland, K. D. Jones, A Modet, and J. M. Wing. Larch: Languages and Tools for Formal Specification. Springer-Verlag, New York, N. Y., 1993.CrossRefzbMATHGoogle Scholar
  9. 9.
    D. Jackson. Alloy: A Lightweight Object Modeling Notation. ACM Transaction on Software Engineering and Methodology, Vol.11, No.2, pp.256–290, April 2002.CrossRefGoogle Scholar
  10. 10.
    B. Jacobs, J. van den Berg, M. Huisman, M. van Berkum, U. Hensel, and H. Tews. Reasoning About Java Classes (Preliminary Report). Proc. ACM SIGPLAN 1998 Conference on Object-Oriented Programming Systems, Languages and Applications, pp.329–340, October 1998.Google Scholar
  11. 11.
    C. B. Jones. Systematic Software Development Using VDM. Prentice-Hall, Englewood Cliffs, N.J., second edition, 1990.zbMATHGoogle Scholar
  12. 12.
    S. Khurshid, D. Marinov, and D. Jackson. An Analyzable Annotation Language. Proc. ACM SIGPLAN 2002 Conference on Object-Oriented Programming Systems, Languages and Applications, October 2002.Google Scholar
  13. 13.
    G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. M. Loingtier, and J. Irwin. Aspect-Oriented Programming. Proc. 11th European Conference on Object-Oriented Programming, pp.220–242, LNCS, Vol.1241, Springer-Verlag, June 1997.Google Scholar
  14. 14.
    G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and G. Griswold. An Overview of AspectJ. Proc. 15th European Conference on Object-Oriented Programming, pp.327–352, LNCS, Vol.2072, Springer-Verlag, June 2001.Google Scholar
  15. 15.
    R. Kramer. iContract-the Java Design by Contract Tool. Proc. Technology of Object-Oriented Language and Systems (TOOLS-USA), 1998.Google Scholar
  16. 16.
    G. T. Leavens, A. L. Baker, and C. Ruby. Preliminary Design of JML: a Behavioralb Interface Specification Language for Java. Technical Report TR98-06, Department of Computer Science, Iowa State University, 1998 (Last version: June 2002).Google Scholar
  17. 17.
    K. Lieberher, D. Orleans, and J. Ovlinger. Aspect-Oriented Programming withAdaptive Methods. Communications of the ACM, Vol.44, No.10, pp.39–41, October 2001.CrossRefGoogle Scholar
  18. 18.
    B. Meyer. Object-Oriented Software Construction. Prentice Hall, New York, N.Y., Second Edition, 1997.zbMATHGoogle Scholar
  19. 19.
    H. Ossher and P. Tarr. Multi-Dimensional Separation of Concerns and the Hyperspace Approach. Proc. Symposium on Software Architectures and Component Technology: The State of the Art in Software Development, Kluwer, 2001.Google Scholar
  20. 20.
    S. Owre, J. M. Rushby, N. Shankar, and F. von Henke. Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS. IEEE Transactions on Software Engineering, Vol.21, No.2, pp.107–125, February 1995.CrossRefGoogle Scholar
  21. 21.
    J. M. Spivey. The Z Notation: A Reference Manual. Prentice-Hall, New York, N.J., Second edition, 1992.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Jianjun Zhao
    • 1
  • Martin Rinard
    • 2
  1. 1.Department of Computer ScienceFukuoka Institute of TechnologyFukuokaJapan
  2. 2.Laboratory for Computer ScienceMassachusetts Institute of TechnologyCambridgeUSA

Personalised recommendations