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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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)
Beck, K.: Simple Smalltalk testing: With patterns, http://www.xprogramming.com/testfram.htm
Beck, K.: Smalltalk Best Practice Patterns. Prentice-Hall, Englewood Cliffs (1997)
Binkley, D.W., Gallagher, K.B.: Program slicing. In: Zelkowitz, M. (ed.) Advances of Computing, vol. 43, pp. 1–50. Academic Press, London (1996)
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)
Black, A.P., Schärli, N.: Traits: Tools and methodology. In: Proceedings ICSE 2004, May 2004, pp. 676–686 (2004)
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)
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)
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)
Ducasse, S., Lanza, M.: Towards a methodology for the understanding of object-oriented systems. Technique et science informatiques 20(4), 539–566 (2001)
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)
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
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)
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)
Gamma, E.: Extension object. In: Pattern languages of program design, vol. 3, pp. 79–88. Addison-Wesley Longman Publishing Co., Inc., Boston (1997)
Gamma, E., Beck, K.: Contributing to Eclipse. Addison-Wesley, Reading (2003)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
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)
Garlan, D.: Views for tools in integrated environments. In: Proceedings of an International Workshop on Advanced Programming Environments, pp. 314–343. Springer, London (1986)
Garlan, D.B.: Views for Tools in Integrated Environments. PhD thesis, Carnegie Mellon University, Pittsburgh, PA (January 1988)
Goldberg, A., Robson, D.: Smalltalk 80: the Language and its Implementation. Addison Wesley, Reading (1983)
Hanna, J.: The RAII programming idiom, http://www.hackcraft.net/raii/ (accessed January 2007)
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)
Jeffries, R., Anderson, A., Hendrickson, C.: Extreme Programming Installed. Addison-Wesley, Reading (2001)
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)
Kircher, M., Jain, P.: Pattern-Oriented Software Architecture – Patterns for Resource Management, vol. 3. John Wiley and Sons, Chichester (2004)
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)
Meyers, S.: Difficulties in integrating multiview development systems. IEEE Softw. 8(1), 49–57 (1991)
Meyers, S.: More Effective C++: 35 New Ways to Improve Your Programs and Designs. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)
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)
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)
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
Murray, R.B.: C++ strategies and tactics. Addison Wesley Longman Publishing Co., Inc., Redwood City (1993)
Eclipse platform technical overview. Object Technology International, Inc. (2003) (White paper)
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)
Rising, L. (ed.): Design Patterns in Communications Software. Cambridge University Press, Cambridge (2001)
Schärli, N.: Traits — Composing Classes from Behavioral Building Blocks. PhD thesis, University of Berne (February 2005)
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)
Schärli, N., Black, A.P.: A browser for incremental programming. Computer Languages, Systems and Structures 30, 79–95 (2004)
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)
Teitelbaum, T., Reps, T.: The Cornell program synthesizer: a syntax-directed programming environment. Commun. ACM 24(9), 563–573 (1981)
Vainsencher, D.: Mudpie: layers in the ball of mud. Computer Languages, Systems & Structures 30(1-2), 5–19 (2004)
Van De Vanter, M.L.: The documentary structure of source code. Information and Software Technology 44(13), 767–782 (2002)
Wuyts, R.: Star Browser, http://homepages.ulb.ac.be/~rowuyts/StarBrowser/index.html (accessed May 2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)