Skip to main content

A Pattern Language for Extensible Program Representation

  • Chapter
  • 515 Accesses

Part of the book series: Lecture Notes in Computer Science ((TPLOP,volume 5770))

Abstract

For the last 15 years, implementors of multiple view programming environments have sought a single code model that would form a suitable basis for all of the program analyses and tools that might be applied to the code. They have been unsuccessful. The consequences are a tendency to build monolithic, single-purpose tools, each of which implements its own specialized analyses and optimized representation. This restricts the availability of the analyses, and also limits the reusability of the representation by other tools. Unintegrated tools also produce inconsistent views, which reduce the value of multiple views.

This article describes a set of architectural patterns that allow a single, minimal representation of program code to be extended as required to support new tools and program analyses, while still maintaining a simple and uniform interface to program properties. The patterns address efficiency, correctness and the integration of multiple analyses and tools in a modular fashion.

A preliminary version of this article was workshopped at Pattern Languages of Programming (PLoP) 21st–23rd October 2006, Portland, OR, USA.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Auer, K., Beck, K.: Lazy optimization: patterns for efficient smalltalk programming. In: Pattern languages of program design, vol. 2, pp. 19–42. Addison-Wesley Longman Publishing Co., Inc., Boston (1996)

    Google Scholar 

  2. Beck, K.: Simple Smalltalk testing: With patterns, http://www.xprogramming.com/testfram.htm

  3. Beck, K.: Smalltalk Best Practice Patterns. Prentice-Hall, Englewood Cliffs (1997)

    Google Scholar 

  4. Binkley, D.W., Gallagher, K.B.: Program slicing. In: Zelkowitz, M. (ed.) Advances of Computing, vol. 43, pp. 1–50. Academic Press, London (1996)

    Google Scholar 

  5. Black, A.P., Jones, M.P.: The case for multiple views. In: Workshop on Directions in Software Engineering Environments, ICSE 2004, May 2004, pp. 96–103 (2004)

    Google Scholar 

  6. Black, A.P., Schärli, N.: Traits: Tools and methodology. In: Proceedings ICSE 2004, May 2004, pp. 676–686 (2004)

    Google Scholar 

  7. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-Oriented Software Architecture — A System of Patterns. John Wiley & Sons, Inc., New York (1996)

    Google Scholar 

  8. Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: OOPSLA 2000 Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 130–145 (2000)

    Google Scholar 

  9. Clifton, C., Millstein, T., Leavens, G.T., Chambers, C.: Multijava: Design rationale, compiler implementation, and applications. ACM Trans. Program. Lang. Syst. 28(3), 517–575 (2006)

    Article  Google Scholar 

  10. Ducasse, S., Lanza, M.: Towards a methodology for the understanding of object-oriented systems. Technique et science informatiques 20(4), 539–566 (2001)

    Google Scholar 

  11. Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.: Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems 28(2), 331–388 (2006)

    Article  Google Scholar 

  12. Eclipse Foundation. JavaDoc page for Interface ITypeHierarchy, http://help.eclipse.org/help32/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/ITypeHierarchy.html

  13. Gabriel, R.P.: Lisp: Good news, bad news, how to win big. In: First European Conference on the Practical Applications of Lisp. Cambridge University, Cambridge (1990)

    Google Scholar 

  14. Gabriel, R.P., Bourbaki, N., Devin, M., Dussud, P., Gray, D.N., Sexton, H.B.: Foundations for a C++ programming environment. In: Proceeding of C++ at Work (September 1990)

    Google Scholar 

  15. Gamma, E.: Extension object. In: Pattern languages of program design, vol. 3, pp. 79–88. Addison-Wesley Longman Publishing Co., Inc., Boston (1997)

    Google Scholar 

  16. Gamma, E., Beck, K.: Contributing to Eclipse. Addison-Wesley, Reading (2003)

    Google Scholar 

  17. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)

    Google Scholar 

  18. Gamma, E., Helm, R., Vlissides, J., Johnson, R.E.: Design patterns: Abstraction and reuse of object-oriented design. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 406–431. Springer, Heidelberg (1993)

    Chapter  Google Scholar 

  19. Garlan, D.: Views for tools in integrated environments. In: Proceedings of an International Workshop on Advanced Programming Environments, pp. 314–343. Springer, London (1986)

    Google Scholar 

  20. Garlan, D.B.: Views for Tools in Integrated Environments. PhD thesis, Carnegie Mellon University, Pittsburgh, PA (January 1988)

    Google Scholar 

  21. Goldberg, A., Robson, D.: Smalltalk 80: the Language and its Implementation. Addison Wesley, Reading (1983)

    MATH  Google Scholar 

  22. Hanna, J.: The RAII programming idiom, http://www.hackcraft.net/raii/ (accessed January 2007)

  23. Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., Kay, A.: Back to the future: The story of Squeak, A practical Smalltalk written in itself. In: Proceedings OOPSLA 1997, November 1997. ACM SIGPLAN Notices, pp. 318–326. ACM Press, New York (1997)

    Chapter  Google Scholar 

  24. Jeffries, R., Anderson, A., Hendrickson, C.: Extreme Programming Installed. Addison-Wesley, Reading (2001)

    Google Scholar 

  25. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of aspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  26. Kircher, M., Jain, P.: Pattern-Oriented Software Architecture – Patterns for Resource Management, vol. 3. John Wiley and Sons, Chichester (2004)

    Google Scholar 

  27. Marlin, C.: Multiple views based on unparsing canonical representations — the MultiView architecture. In: Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints 1996), pp. 222–226. ACM Press, New York (1996)

    Chapter  Google Scholar 

  28. Meyers, S.: Difficulties in integrating multiview development systems. IEEE Softw. 8(1), 49–57 (1991)

    Article  MathSciNet  Google Scholar 

  29. Meyers, S.: More Effective C++: 35 New Ways to Improve Your Programs and Designs. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)

    Google Scholar 

  30. Meyers, S., Reiss, S.P.: A system for multiparadigm development of software systems. In: IWSSD 1991: Proceedings of the 6th international workshop on Software specification and design, pp. 202–209. IEEE Computer Society Press, Los Alamitos (1991)

    Google Scholar 

  31. Meyers, S., Reiss, S.P.: An empirical study of multiple-view software development. In: SDE 5: Proceedings of the fifth ACM SIGSOFT symposium on Software development environments, pp. 47–57. ACM Press, New York (1992)

    Chapter  Google Scholar 

  32. Murphy-Hill, E.: Improving refactoring with alternate program views. Technical Report TR-06-05, Portland State University (May 2006), http://multiview.cs.pdx.edu/publications/rpe.pdf

  33. Murray, R.B.: C++ strategies and tactics. Addison Wesley Longman Publishing Co., Inc., Redwood City (1993)

    Google Scholar 

  34. Eclipse platform technical overview. Object Technology International, Inc. (2003) (White paper)

    Google Scholar 

  35. Riehle, D., Züllighoven, H.: A pattern language for tool construction and integration based on the tools and materials metaphor. In: Pattern languages of program design, vol. 1, pp. 9–42. ACM Press/Addison-Wesley Publishing Co, New York (1995)

    Google Scholar 

  36. Rising, L. (ed.): Design Patterns in Communications Software. Cambridge University Press, Cambridge (2001)

    MATH  Google Scholar 

  37. Schärli, N.: Traits — Composing Classes from Behavioral Building Blocks. PhD thesis, University of Berne (February 2005)

    Google Scholar 

  38. Schärli, N., Black, A.P.: A browser for incremental programming. Technical Report CSE-03-008, OGI School of Science & Engineering, Beaverton, Oregon, USA (April 2003)

    Google Scholar 

  39. Schärli, N., Black, A.P.: A browser for incremental programming. Computer Languages, Systems and Structures 30, 79–95 (2004)

    Article  MATH  Google Scholar 

  40. Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)

    Google Scholar 

  41. Teitelbaum, T., Reps, T.: The Cornell program synthesizer: a syntax-directed programming environment. Commun. ACM 24(9), 563–573 (1981)

    Article  Google Scholar 

  42. Vainsencher, D.: Mudpie: layers in the ball of mud. Computer Languages, Systems & Structures 30(1-2), 5–19 (2004)

    Article  MATH  Google Scholar 

  43. Van De Vanter, M.L.: The documentary structure of source code. Information and Software Technology 44(13), 767–782 (2002)

    Article  Google Scholar 

  44. Wuyts, R.: Star Browser, http://homepages.ulb.ac.be/~rowuyts/StarBrowser/index.html (accessed May 2007)

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Vainsencher, D., Black, A.P. (2009). A Pattern Language for Extensible Program Representation . In: Noble, J., Johnson, R. (eds) Transactions on Pattern Languages of Programming I. Lecture Notes in Computer Science, vol 5770. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-10832-7_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-10832-7_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-10831-0

  • Online ISBN: 978-3-642-10832-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics