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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Alur, D., Malks, D., Crupi, J.: Core J2EE patterns: best practices and design strategies, 2nd edn. Prentice Hall, Upper Saddle River (2003)
Bauer, C., King, G.: Hibernate in Action. Manning Publications (2004)
Buschmann, F., et al.: Pattern-oriented software architecture - A system of patterns. Wiley (1996)
Chen, N.: Convention over configuration, http://softwareengineering.vazexqi.com/files/pattern.html (accessed on December 2010)
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)
Damyanov, I., Holmes, N.: Metadata driven code generation using .NET framework. In: International Conference on Computer Systems and Technologies, pp. 1–6 (2004)
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)
Ernst, M.: Type annotations specification (JSR 308), http://types.cs.washington.edu/jsr308/specification/java-annotation-design.pdf
Esfinge Framework, http://esfinge.sourceforge.net/ (accessed on July 2011)
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)
Ferreira, H.: Adaptive Object-Modeling Patterns, Tools and Applications. PhD Thesis, University of Porto, Faculty of Engineering (2010)
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)
Forman, I., Forman, N.: Java reflection in action. Manning Publ., Greenwich (2005)
Fowler, M.: Inversion of Control Containers and the Dependency Injection Pattern (2004), http://www.martinfowler.com/articles/injection.html (accessed on December 2010)
Fowler, M.: Patterns of enterprise application architecture. Addison-Wesley Professional, Boston (2002)
Fowler, M.: Using metadata. IEEE Software 19(6), 13–17 (2002)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1994)
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)
Guerra, E., Fernandes, C., Silveira, F.: Architectural Patterns for Metadata-based Frameworks Usage. In: Conference on Patterns Languages of Programs, Reno, vol. 17 (2010)
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)
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)
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)
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)
Hibernate Validator, http://www.hibernate.org/412.html (accessed on July 2011)
Hispagnol, G.: Modelo multidimensional unificado: integrando domínios OLAP e OLTP. Technical Report, Aeronautical Institute of Technology (2009)
Hot Comments (2011), http://c2.com/cgi/wiki?HotComments (accessed on July 2011)
Hunt, A., Thomas, D., Hargett, M.: Pragmatic Unit Testing in C# with NUnit, 2nd edn. Pragmatic Bookshelf (2007)
JavaBeans(TM) specification 1.01 Final release, http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html (accessed on December 2010)
JAX-RS: The JavaTM API for RESTful Web Services, http://www.jcp.org/en/jsr/detail?id=311 (accessed on July 2011)
JBoss Application Server, http://www.jboss.org/jbossas/ (accessed on December 2010)
JColtrane – Better than SAX Alone, http://jcoltrane.sf.net (accessed on December 2010)
Johnson, R., Foote, B.: Designing reusable classes. Journal Of Object-Oriented Programming 1(2), 22–35 (1988)
JSR 175: A Metadata Facility for the Java Programming Language, http://www.jcp.org/en/jsr/detail?id=175 (accessed on December 2010)
JSR 220: Enterprise JavaBeans 3.0, http://www.jcp.org/en/jsr/detail?id=220
JSR 222: Java Architecture for XML Binding (JAXB), http://jcp.org/en/jsr/detail?id=222 (accessed on December 2010)
JSR 299: Contexts and Dependency Injection for the JavaTM EE platform, http://jcp.org/en/jsr/summary?id=299 (accessed on July 2011)
JSR 303: Bean Validation, http://jcp.org/en/jsr/detail?id=303 (accessed on December 2010)
JSR 314: JavaServerTM Faces 2.0, http://www.jcp.org/en/jsr/detail?id=314 (accessed on July 2011)
Kuaté, P., Bauer, C., King, G., Harris, T.: NHibernate in Action. Manning Publications (2009)
Massol, V., Husted, T.: JUnit in action. Manning Publ., Greenwich (2003)
Miller, J.: Common Language Infrastructure Annotated Standard. Addison-Wesley, Boston (2003)
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)
Newkirk, J., Vorontsov, A.A.: How .NET’s Custom Attributes Affect Design. IEEE Software 19, 18–20 (2002)
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)
Nock, C.: Data Access Patterns: Database Interactions in Object-Oriented Applications. Addison-Wesley Professional (2003)
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)
Project Lombok, http://projectlombok.org/ (accessed on July 2011)
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)
Ruby, S., et al.: Agile Web Development with Rails. Pragmatic Bookshelf (2009)
SAX Project, http://www.saxproject.org/ (accessed on December 2010)
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)
Silva, J., Okura, R.: Um Modelo para Compartilhamento de Metadados entre Frameworks. Technical Report, Aeronautical Institute of Technology (2009)
SwingBean, http://swingbean.sourceforge.net/ (accessed on December 2010)
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)
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)
Walls, C., Richards, N., Oberg, R.: XDoclet in Action. Manning Publications (2003)
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)
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)
Wirfs-Brock, R., Johnson, R.: Surveying current research in object-oriented design. Communications Of The ACM 33(9), 104–124 (1990)
XapMap - Cross Application Mapping Framework, http://xapmap.sf.net (accessed on December 2010)
Yoder, J., Foote, B.: Metadata and Active Object-Models. In: Fifth Conference on Patterns Languages of Programs, PLoP 1998, Monticello (1998)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)