Implementing Tag-Driven Transformers with Tango

  • Vasian Cepa
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3107)


Using explicit tags at the programming language level has been attracting a lot of attention recently with technologies like xDoclet [41] which automates EJB [30] related tasks, and .NET attributes [21] which are a vital part of the .NET framework [34]. However there are currently no systematic ways for adding and transforming tag-driven product line specific constructs. This results often in implementations which are not very modular and hence that are difficult to reuse.

In this paper we introduce Tango a specialized language for implementing source to source tag-driven transformers for object-based languages in a systematic way using several layers of abstraction. Tango operates on a fixed, language independent, object-based metamodel and divides the transformation strategy in several well-defined layers which makes it also possible to reuse lower level parts. Tango uses the so-called inner tags to communicate semantics between different transformer modules in a uniform way.


Program Transformation Transformation Strategy Code Snippet Model Drive Architecture Method Body 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    De Volder, K., Murphy, G.C., Bryant, A., Catton, A.: Explicit Programming. In: Proc. of AOSD 2002, pp. 10–18. ACM Press, New York (2002)Google Scholar
  2. 2.
    Gudgin, M., Skonnard, A.: Essential XML Quick Reference. Addison-Wesley, Reading (2001)Google Scholar
  3. 3.
    Aßmann, U.: Invasive Software Composition. Springer, Heidelberg (2003)zbMATHCrossRefGoogle Scholar
  4. 4.
    Batory, D., Cardone, R., Smaragdakis, Y.: Object-Oriented Frameworks and Product Lines. In: Donohoe, P. (ed.) Proceedings of the First Software Product Line Conference, pp. 227–247 (2000)Google Scholar
  5. 5.
    Biggerstaff, T.J.: A New Control Structure for Transformation-Based Generators. In: Proc. of 6th International Conerence on Software Reuse (2000)Google Scholar
  6. 6.
    Bloch, C., Wagner, A.: MIDP 2.0 Style Guide for the Java 2 Platform.Micro edn. Addison-Wesley, Reading (2003)Google Scholar
  7. 7.
    Frankel, D.S.: Model Driven Architecture - Applying MDA to Enterprise Computing. Wiley, Chichester (2003)Google Scholar
  8. 8.
    Laurent, S.S., Tidwell, D.: XSLT. O’Relly (2001)Google Scholar
  9. 9.
    DSCT, IBM, CBOP. MOF Query / Views / Transformations. Initial Submition, OMG Document (2003)Google Scholar
  10. 10.
    Visser, E.: Stratego: A Language for Program Transformations Based on Rewriting Strategies. In: Middeldorp, A. (ed.) RTA 2001. LNCS, vol. 2051, pp. 357–361. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  11. 11.
    Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  12. 12.
    Austermann, M., Kniesel, G., Costanza, P.: JMangler - A Powerful Back-End for Aspect-Oriented Programming. In: Filman, R., Elrad, T., Clarke, S., Aksit, M. (eds.) Aspect-oriented Software Development, Prentice Hall, Englewood Cliffs (2004)Google Scholar
  13. 13.
    Baxter, D., Pidgeon, C., Mehlich, M.: DMS: Program Transformations For Practical Scalable Software Evolution. In: Proc. of International Workshop on Principles of Software Evolution (2002)Google Scholar
  14. 14.
    Zderadicka ,I.: CS CODEDOM Parser. csparser.html (2002),
  15. 15.
    Ichisugi, Y.: Extensible Type System Framework for a Java Pre-Processor: EPP. (2000)Google Scholar
  16. 16.
    Playford, K., Bachrach, J.: The Java Syntactic Extender: JSE. In: Proc. of OOPSLA 2001. ACM SIGPLAN Notices, vol.36(11), pp. 31–42 (2001)Google Scholar
  17. 17.
    Kim, W., Banerjee, J.: Semantics and Implementation of Schema Evolution in Object-Oriented Databases.In: Proc. of ACM SIGMOD International Conference on Management of Data (1987)Google Scholar
  18. 18.
    Bosch, J.: Design and Use of Software Architectures, Adopting and Evolving a Product-Line Approach. Addison-Wesley, Reading (2002)Google Scholar
  19. 19.
    Cordy, J.: TXL - A Language for Programming Language Tools and Applications.In: Proc. of 4th Workshop on Language Descriptions, Tools and Applications, LDTA (2004)Google Scholar
  20. 20.
    Cole, J., Gradecki, J.D.: Mastering Apache Velocity. John Wiley & Sons, Chichester (2003)Google Scholar
  21. 21.
    Newkirk, J., Vorontsov, A.: How.NET’s Custom Attributes Affect Design. IEEE SOFTWARE 19(5), 18–20 (2002)CrossRefGoogle Scholar
  22. 22.
    van Wijngaarden, J., Visser, E.: Program Transformation Mechanics. A Classification of Mechanisms for Program Transformation with a Survey of Existing Transformation Systems. Technical Report UU-CS-2003-048. Institute of Information and Computing Sciences, Utrecht University (2003)Google Scholar
  23. 23.
    Helsen, S., Czarnecki, K.: Classification of Model Transformation Approaches.In: Proc. of 2nd OOPSLA Workshop Generative Techniques in the context of MDA (2003)Google Scholar
  24. 24.
    Abadi, M., Cardelli, L., Matthes, F.: Extensible Syntax with Lexical Scoping. Technical Report 121, Digital Equipment (1994)Google Scholar
  25. 25.
    van der Brand, M.G.J., Heering, J., Klint, P., Oliver, P.A.: Compiling Language Definitions: The ASF+SDF Compiler. ACM Transactions on Programming Languages and Systems 24(4), 334–368 (2002)CrossRefGoogle Scholar
  26. 26.
    Franczyk, B., Majkut, M.: Generation of Implementations for the Model Driven Architecture with Syntactic Unit Trees.In: Proc. of 2nd OOPSLA Workshop Generative Techniques in the context of MDA (2003)Google Scholar
  27. 27.
    Voelter, M.: A collection of Patterns for Program Generation.In: Proc. EuroPLoP (2003)Google Scholar
  28. 28.
    Mens, T.: A Formal Foundation for Object-Oriented Software Evolution. Ph.D Disseration / Vrije University Brussel (1999)Google Scholar
  29. 29.
  30. 30.
    Monson-Haefel, R.: Enterprise JavaBeans. Addison-Wesley, Reading (2000)Google Scholar
  31. 31.
    Harrison, N.: Using the CodeDOM. O’Reilly Network http:// (2003),
  32. 32.
    Calnan, P.W.: EXTRACT: Extensible Transformation and Compiler Technology. Master of Science Thesis, Worcester Polytechnic Institute Available (April 2003), http://www.wpi.du/Pubs/ETD/etd-0429103-152947
  33. 33.
    Pollack, M.: Code Generation using Javadoc. JavaWorld, http:// html (August. 2000),
  34. 34.
    Prosise, J.: Programming Microsoft.NET. Microsoft Press (2002)Google Scholar
  35. 35.
    Suedholt, M., Douence, R., Fradet, P.: Detection and Resolution of Aspect Interactions. In: ACM SIGPLAN/SIGSOFT Proc. of GPCE (2002)Google Scholar
  36. 36.
  37. 37.
    Cepa, V., Mezini, M.: Language Support for Model-Driven Software Development.To Appear in Aksit, M. (ed.) Special Issue Science of Computer Programming (Elsevier) on MDA: Foundations and Applications Model Driven Architecture (2004)Google Scholar
  38. 38.
    NET Attribute Dependency Checker Tool Homepage (2003),
  39. 39.
    Taha, W., Sheard, T.: Multi-stage Programming. ACM SIGPLAN Notices 32(8) (1997)Google Scholar
  40. 40.
    JSR 175: A Metadata Facility for the Java Programming Language. http: // (2003),
  41. 41.
    xDoxclet Code Generation Engine (2003),
  42. 42.
    XML Path Language (XPath) (1999),

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Vasian Cepa
    • 1
  1. 1.Software Technology Group, Department of Computer ScienceDarmstadt University of TechnologyGermany

Personalised recommendations