Skip to main content

Pattern Language for the Internal Structure of Metadata-Based Frameworks

  • Conference paper
Transactions on Pattern Languages of Programming III

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

Abstract

Metadata-based frameworks are those that process their logic based on the metadata of classes whose instances they are working with. Many recent frameworks use this approach to get a higher reuse level and to be more suitably adapted to the application needs. However, there is not yet a complete best practices documentation or reference architecture for the development of metadata-based frameworks. This paper presents a pattern language that focuses on recurring solutions used in the internal structure of metadata-based frameworks addressing the main problems faced in this kind of development. Based on the pattern language, a reference architecture which identifies a base structure and the main hotspots for metadata-based frameworks is defined.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 54.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 72.00
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

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alur, D., Malks, D., Crupi, J.: Core J2EE patterns: best practices and design strategies, 2nd edn. Prentice Hall, Upper Saddle River (2003)

    Google Scholar 

  2. Bauer, C., King, G.: Hibernate in Action. Manning Publications (2004)

    Google Scholar 

  3. Buschmann, F., et al.: Pattern-oriented software architecture - A system of patterns. Wiley (1996)

    Google Scholar 

  4. Chen, N.: Convention over configuration, http://softwareengineering.vazexqi.com/files/pattern.html (accessed on December 2010)

  5. Costa, B., Figueredo, L.: Uma Arquitetura Baseada em Metadados para Integração entre Aplicações Web e Plataformas Móveis. Technical Report, Aeronautical Institute of Technology (2009)

    Google Scholar 

  6. Damyanov, I., Holmes, N.: Metadata driven code generation using .NET framework. In: International Conference on Computer Systems and Technologies, pp. 1–6 (2004)

    Google Scholar 

  7. Doucet, F., Shukla, S., Gupta, R.: Introspection in system-level language frameworks: meta-level vs. Integrated. In: Source Design, Automation and Test in Europe, pp. 382–387 (2003)

    Google Scholar 

  8. Ernst, M.: Type annotations specification (JSR 308), http://types.cs.washington.edu/jsr308/specification/java-annotation-design.pdf

  9. Esfinge Framework, http://esfinge.sourceforge.net/ (accessed on July 2011)

  10. Fayad, M., Schmidt, D., Johnson, R.: Application frameworks. In: Fayad, M., Schmidt, D., Johnson, R. (eds.) Building Application Frameworks: Object-oriented Foundations of Frameworks Design, ch. 1, pp. 3–27. Wiley, New York (1999)

    Google Scholar 

  11. Ferreira, H.: Adaptive Object-Modeling Patterns, Tools and Applications. PhD Thesis, University of Porto, Faculty of Engineering (2010)

    Google Scholar 

  12. Foote, B., Yoder, J.: Evolution, architecture, and metamorphosis. In: Pattern Languages of Program Design 2, ch. 13, pp. 295–314. Addison-Wesley Longman, Boston (1996)

    Google Scholar 

  13. Forman, I., Forman, N.: Java reflection in action. Manning Publ., Greenwich (2005)

    Google Scholar 

  14. Fowler, M.: Inversion of Control Containers and the Dependency Injection Pattern (2004), http://www.martinfowler.com/articles/injection.html (accessed on December 2010)

  15. Fowler, M.: Patterns of enterprise application architecture. Addison-Wesley Professional, Boston (2002)

    Google Scholar 

  16. Fowler, M.: Using metadata. IEEE Software 19(6), 13–17 (2002)

    Article  Google Scholar 

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

    Google Scholar 

  18. Guerra, E., Cardoso, M., Silva, J., Fernandes, C.: Idioms for Code Annotations in Java Language. In: Proceedings of 8a Latin American Conference on Pattern Languages of Programming, SugarLoafPLoP 2010, Salvador (2010)

    Google Scholar 

  19. Guerra, E., Fernandes, C., Silveira, F.: Architectural Patterns for Metadata-based Frameworks Usage. In: Conference on Patterns Languages of Programs, Reno, vol. 17 (2010)

    Google Scholar 

  20. Guerra, E., Fernandes, C.: A Metadata-Based Components Model. In: Proceedings of Doctoral Symposium at 22nd European Conference on Object Oriented Programming, ECOOP 2008, Paphos (2008)

    Google Scholar 

  21. Guerra, E., Parente, J., Fernandes, C.: Mapeando Objetos para Entidades de uma Ontologia Utilizando Metadados. In: Proceedings of SIGE - Defense Operational Applications Symposium, São José dos Campos (2008)

    Google Scholar 

  22. Guerra, E., Pavão, F., Fernandes, C.: Padrões de Projeto para Frameworks e Componentes Baseados em Metadados. In: Proceedings of 7a Latin American Conference on Pattern Languages of Programming, SugarLoafPLoP 2008, Fortaleza (2008)

    Google Scholar 

  23. Guerra, E., Silva, J., Silveira, F., Fernandes, C.: Using Metadata in Aspect-Oriented Frameworks. In: Proceedings of 2nd Workshop on Assessment of Contemporary Modularization Techniques, AcoM 2008, Nashville (2008)

    Google Scholar 

  24. Hibernate Validator, http://www.hibernate.org/412.html (accessed on July 2011)

  25. Hispagnol, G.: Modelo multidimensional unificado: integrando domínios OLAP e OLTP. Technical Report, Aeronautical Institute of Technology (2009)

    Google Scholar 

  26. Hot Comments (2011), http://c2.com/cgi/wiki?HotComments (accessed on July 2011)

  27. Hunt, A., Thomas, D., Hargett, M.: Pragmatic Unit Testing in C# with NUnit, 2nd edn. Pragmatic Bookshelf (2007)

    Google Scholar 

  28. JavaBeans(TM) specification 1.01 Final release, http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html (accessed on December 2010)

  29. JAX-RS: The JavaTM API for RESTful Web Services, http://www.jcp.org/en/jsr/detail?id=311 (accessed on July 2011)

  30. JBoss Application Server, http://www.jboss.org/jbossas/ (accessed on December 2010)

  31. JColtrane – Better than SAX Alone, http://jcoltrane.sf.net (accessed on December 2010)

  32. Johnson, R., Foote, B.: Designing reusable classes. Journal Of Object-Oriented Programming 1(2), 22–35 (1988)

    Google Scholar 

  33. JSR 175: A Metadata Facility for the Java Programming Language, http://www.jcp.org/en/jsr/detail?id=175 (accessed on December 2010)

  34. JSR 220: Enterprise JavaBeans 3.0, http://www.jcp.org/en/jsr/detail?id=220

  35. JSR 222: Java Architecture for XML Binding (JAXB), http://jcp.org/en/jsr/detail?id=222 (accessed on December 2010)

  36. JSR 299: Contexts and Dependency Injection for the JavaTM EE platform, http://jcp.org/en/jsr/summary?id=299 (accessed on July 2011)

  37. JSR 303: Bean Validation, http://jcp.org/en/jsr/detail?id=303 (accessed on December 2010)

  38. JSR 314: JavaServerTM Faces 2.0, http://www.jcp.org/en/jsr/detail?id=314 (accessed on July 2011)

  39. Kuaté, P., Bauer, C., King, G., Harris, T.: NHibernate in Action. Manning Publications (2009)

    Google Scholar 

  40. Massol, V., Husted, T.: JUnit in action. Manning Publ., Greenwich (2003)

    Google Scholar 

  41. Miller, J.: Common Language Infrastructure Annotated Standard. Addison-Wesley, Boston (2003)

    Google Scholar 

  42. Nardon, F., Silva, E.: Implementing Java EE applications, using enterprise javabeans (EJB) 3 technology: real-world tips, tricks, and new design patterns, Session TS-4721 (2007), http://developers.sun.com/learning/javaoneonline/2007/pdf/TS-4721.pdf (accessed on December 2009)

  43. Newkirk, J., Vorontsov, A.A.: How .NET’s Custom Attributes Affect Design. IEEE Software 19, 18–20 (2002)

    Google Scholar 

  44. Noble, J.: Classifying Relationships between Object-Oriented Design Patterns. In: Proceedings of the Australian Software Engineering Conference 1998, ASWEC 1998, Adelaide, Australia, pp. 98–109 (1998)

    Google Scholar 

  45. Nock, C.: Data Access Patterns: Database Interactions in Object-Oriented Applications. Addison-Wesley Professional (2003)

    Google Scholar 

  46. Pree, W.: Hot-spot-driven development. In: Fayad, M., Schmidt, D., Johnson, R. (eds.) Building Application Frameworks: Object-oriented Foundations of Frameworks Design, ch. 16, pp. 379–393. Wiley, New York (1999)

    Google Scholar 

  47. Project Lombok, http://projectlombok.org/ (accessed on July 2011)

  48. Quinonez, J., Tschantz, M.S., Ernst, M.D.: Inference of reference immutability. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 616–641. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  49. Ruby, S., et al.: Agile Web Development with Rails. Pragmatic Bookshelf (2009)

    Google Scholar 

  50. SAX Project, http://www.saxproject.org/ (accessed on December 2010)

  51. Schwarz, D.: Peeking inside the box: attribute-oriented programming with Java 1.5, http://missingmanuals.com/pub/a/onjava/2004/06/30/insidebox1.html (accessed on December 2010)

  52. Silva, J., Okura, R.: Um Modelo para Compartilhamento de Metadados entre Frameworks. Technical Report, Aeronautical Institute of Technology (2009)

    Google Scholar 

  53. SwingBean, http://swingbean.sourceforge.net/ (accessed on December 2010)

  54. Tansey, W., Tilevich, E.: Annotation Refactoring: Inferring Upgrade Transformations for Legacy Applications. In: The International Conference on Object Oriented Programming, Systems, Languages and Applications, OOPSLA 2008, Nashville (2008)

    Google Scholar 

  55. Wada, H., Suzuki, J.: Modeling Turnpike Frontend System: a Model-Driven Development Framework Leveraging UML Metamodeling and Attribute-Oriented Programming. In: Proceedings of the 8th ACM/IEEE International Conference on Model Driven Engineering Languages and Sytems, MoDELS/UML (2005)

    Google Scholar 

  56. Walls, C., Richards, N., Oberg, R.: XDoclet in Action. Manning Publications (2003)

    Google Scholar 

  57. Welicki, L., Yoder, J., Wirfs-Brock, R., Johnson, R.: Towards a Pattern Language for Adaptive Object-Models. In: Companion of the 22st ACM SIGPLAN Object Oriented Programming Systems, Languages, and Applications, OOPSLA 2007, Montreal (2007)

    Google Scholar 

  58. Wellhausen, T., Wagner, M., Müller, G.: Handling Application Properties - Simplify Application Customization in Different. In: 14th European Conference on Pattern Languages of Programs, EuroPLoP 2009, Bavaria (2009)

    Google Scholar 

  59. Wirfs-Brock, R., Johnson, R.: Surveying current research in object-oriented design. Communications Of The ACM 33(9), 104–124 (1990)

    Article  Google Scholar 

  60. XapMap - Cross Application Mapping Framework, http://xapmap.sf.net (accessed on December 2010)

  61. Yoder, J., Foote, B.: Metadata and Active Object-Models. In: Fifth Conference on Patterns Languages of Programs, PLoP 1998, Monticello (1998)

    Google Scholar 

  62. Yoder, J., Johnson, R.: The Adaptive Object-Model Architectural Style. In: IEEE/IFIP Conference on Software Architecture: System Design, Development and Maintenance, vol. 3, pp. 3–27 (2002)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Guerra, E., de Souza, J., Fernandes, C. (2013). Pattern Language for the Internal Structure of Metadata-Based Frameworks. In: Noble, J., Johnson, R., Zdun, U., Wallingford, E. (eds) Transactions on Pattern Languages of Programming III. Lecture Notes in Computer Science, vol 7840. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38676-3_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-38676-3_3

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-38675-6

  • Online ISBN: 978-3-642-38676-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics