Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Reusing metadata across components, applications, and languages

Published: 01 February 2015 Publication History
  • Get Citation Alerts
  • Abstract

    Among the well-known means to increase programmer productivity and decrease development effort is systematic software reuse. Although large scale reuse remains an elusive goal, programmers have been successfully reusing individual software artifacts, including components, libraries, and specifications. One software artifact that is not amenable to reuse is metadata, which has become an essential part of modern software development. Specifically, mainstream metadata formats, including XML and Java 5 annotations, are not amenable to systematic reuse. As a result, software that uses metadata cannot fully reap the benefits traditionally associated with systematic reuse. To address this lack of metadata reusability, this article presents Pattern-Based Structural Expressions (PBSE), a new metadata format that is not only reusable, but also offers conciseness and maintainability advantages. PBSE can be reused both across individual program components and across entire applications. In addition, PBSE make it possible to reuse metadata-expressed functionality across languages. In particular, we show how implementations of non-functional concerns (commonly expressed through metadata) in existing languages can be reused in emerging languages via automated metadata translation. Because metadata constitutes an intrinsic part of modern software applications, the ability to systematically reuse metadata is essential for improving programmer productivity and decreasing development effort. We discuss the advantages and shortcomings of mainstream metadata formats.We present a metadata format that is reusable across applications and languages.We present an approach to reuse non-functional concerns during cross-compilation.We present a DSL for declaratively expressing differences between metadata formats.We enable the X10 language to reuse persistence and unit testing in Java and C++.

    References

    [1]
    W.B. Frakes, K. Kang, Software reuse research: status and future, IEEE Trans. Softw. Eng. (2005) 529-536.
    [2]
    K. Schmid, A comprehensive product line scoping approach and its validation, in: Proceedings of the International Conference on Software Engineering, 2002, pp. 593-603.
    [3]
    G. Caldiera, V.R. Basili, Identifying and qualifying reusable software components, IEEE Computer (1991) 61-70.
    [4]
    T. Ravichandran, M.A. Rothenberger, Software reuse strategies and component markets, Commun. ACM (2003) 109-114.
    [5]
    J.S. Poulin, J.M. Caruso, D.R. Hancock, The business case for software reuse, IBM Syst. J. (1993) 567-594.
    [6]
    T. Ravichandran, Special issue on component-based software development, SIGMIS Database (2003) 45-46.
    [7]
    D. Batory, S. O'Malley, The design and implementation of hierarchical software systems with reusable components, ACM Trans. Softw. Eng. Methodol. (1992) 355-398.
    [8]
    B. Burton, R. Aragon, S. Bailey, K. Koehler, L. Mayes, The reusable software library, IEEE Softw. (1987) 25-33.
    [9]
    M.L. Griss, Software reuse: from library to factory, IBM Syst. J. (1993) 548-566.
    [10]
    S. Haefliger, G. von Krogh, S. Spaeth, Code reuse in open source software, Manag. Sci. (2008) 180-193.
    [11]
    J. White, J. Hill, J. Gray, S. Tambe, A. Gokhale, D. Schmidt, Improving domain-specific language reuse with software product line techniques, IEEE Softw. (2009) 47-53.
    [12]
    D. Duggan, A mixin-based, semantics-based approach to reusing domain-specific programming languages, in: Proceedings of the European Conference on Object-Oriented Programming, 2000, pp. 179-200.
    [13]
    T. Cleenewerck, K. Czarnecki, J. Striegnitz, M. Völter, Evolution and reuse of language specifications for DSLs, in: Proceedings of the European Conference on Object-Oriented Programming, ECOOP Workshops, Springer, 2004.
    [14]
    Oracle, Java platform. http://www.oracle.com/technetwork/java/javaee/documentation/
    [15]
    M. Bravenboer, E. Visser, Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions, in: Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2004, pp. 365-383.
    [16]
    K. Fisher, R. Gruber, PADS: a domain-specific language for processing ad hoc data, in: Proceedings of the Conference on Programming Language Design and Implementation, 2005, pp. 295-304.
    [17]
    L. DeMichiel, JSR 153: enterprise JavaBeans 2.1. http://www.jcp.org/en/jsr/detail?id=153
    [18]
    M. Vatkina, JSR 318: enterprise JavaBeans 3.1. http://jcp.org/en/jsr/detail?id=318
    [19]
    S. Roock, A. Havenstein, Refactoring tags for automatic refactoring of framework dependent applications, in: Proceedings of the International Conference eXtreme Programming and Flexible Processes in Software Engineering, 2002.
    [20]
    T. Tourwé, T. Mens, Automated support for framework-based software evolution, in: Proceedings of the International Conference on Software Maintenance, 2003.
    [21]
    J.H. Perkins, Automatically generating refactorings to support API evolution, in: Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, 2005, pp. 111-114.
    [22]
    The Hibernate Team, Hibernate - relational persistence for idiomatic Java. http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/
    [23]
    V. Cepa, M. Mezini, Declaring and enforcing dependencies between .NET custom attributes, in: Proceedings of the International Conference on Generative Programming and Component Engineering, 2004, pp. 319-331.
    [24]
    C. Noguera, A. Kellens, C.D. Roover, V. Jonckers, Refactoring in the presence of annotations, in: Proceedings of the International Conference on Software Maintenance, 2012, pp. 337-346.
    [25]
    M. Song, E. Tilevich, Metadata invariants: checking and inferring metadata coding conventions, in: Proceedings of the International Conference on Software Engineering, 2012, pp. 694-704.
    [26]
    Microsoft Inc., Java language conversion assistant (JLCA). http://msdn.microsoft.com/en-us/magazine/cc163422.aspx
    [27]
    J.W. Anderson, P. Lawson, M. Renschler, M. Lange, csUnit: the unit testing framework for the Microsoft .NET framework. http://www.csunit.org/about.html
    [28]
    V. Massol, T. Husted, JUnit in action, 2004.
    [29]
    C. Beust, H. Suleiman, Next generation Java testing: TestNG and advanced concepts, 2007.
    [30]
    W. Brown, R. Malveau, H. McCormick III, T. Mowbray, AntiPatterns: refactoring software, architectures, and projects in crisis, 1998.
    [31]
    The Maven Project Team, Security annotation framework. http://safr.sourceforge.net/
    [32]
    The Spring Project Team, Java web service. http://static.springsource.org/spring-ws/docs/
    [33]
    M. Odersky, P. Altherr, V. Cremet, B. Emir, S. Maneth, S. Micheloud, N. Mihaylov, M. Schinz, E. Stenman, M. Zenger, An overview of the Scala programming language, LAMP-EPFL, 2004.
    [34]
    O.B. Charles Nutter, Thomas Enebo, N. Sieger, JRuby: the ruby programming on the JVM. http://www.jruby.org/
    [35]
    The Jython Project Team, Jython: Python for the Java platform. http://www.jython.org/
    [36]
    V. Saraswat, B. Bloom, I. Peshansky, O. Tardieu, D. Grove, X10 language specification version 2.1, IBM Research, 2011.
    [37]
    J. Milthorpe, V. Ganesh, A.P. Rendell, D. Grove, X10 as a parallel language for scientific computation: practice and experience, in: Proceedings of the International Parallel & Distributed Processing Symposium, 2011.
    [38]
    The Oracle JDO Team, Java Data Objects (JDO). http://www.oracle.com/technetwork/java/index-jsp-135919.html
    [39]
    Code Synthesis Tools CC Inc., ODB: C++ object-relational mapping. http://www.codesynthesis.com/products/odb/
    [40]
    G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, W.G. Griswold, An overview of AspectJ, in: Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP), Springer-Verlag, London, UK, 2001, pp. 327-353.
    [41]
    The JUnit Team, JUnit. https://github.com/junit-team/junit/
    [42]
    The CppUnit Team, CppUnit. http://sourceforge.net/projects/cppunit/
    [43]
    The X10 Team, IBM Research, Numerical integration implementation for Gaussian quadrature. http://x10.svn.sourceforge.net/viewvc/x10/benchmarks/trunk/microbenchmarks/Integrate/
    [44]
    P. Hamill, Unit Test Frameworks, O'Reilly, 2004.
    [45]
    C.A. White, M. Head-Gordon, Derivation and efficient implementation of the fast multipole method, J. Chem. Phys. (1994) 6593-6605.
    [46]
    I. Lashuk, A. Chandramowlishwaran, H. Langston, T.-A. Nguyen, R. Sampath, A. Shringarpure, R. Vuduc, L. Ying, D. Zorin, G. Biros, A massively parallel adaptive fast-multipole method on heterogeneous architectures, in: Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis, 2009, pp. 58:1-58:12.
    [47]
    The X10 Team, IBM Research, Smith-Waterman algorithm implementation. http://x10.svn.sourceforge.net/viewvc/x10/benchmarks/trunk/SSCA1/
    [48]
    T.F. Smith, M.S. Waterman, Identification of common molecular subsequences, J. Mol. Biol. (1981) 195-197.
    [49]
    L. Dagum, R. Menon, OpenMP: an industry standard API for shared-memory programming, IEEE Comput. Sci. Eng., 5 (1998) 46-55.
    [50]
    J. Sousa, J.L. Sobral, Jppal: Java parallel programming annotation library, in: Proceedings of the 2010 AOSD Workshop on Domain-Specific Aspect Languages, vol. 3, 2010.
    [51]
    B. Fluri, M. Wursch, M. Pinzger, H.C. Gall, Change distilling: tree differencing for fine-grained source code change extraction, IEEE Trans. Softw. Eng., 33 (2007) 725-743.
    [52]
    C. Koppen, M. Stoerzer, PCDiff: attacking the fragile pointcut problem, in: European Interactive Workshop on Aspects in Software, 2004.
    [53]
    M. Stoerzer, J. Graf, Using pointcut delta analysis to support evolution of aspect-oriented software, in: Proceedings of the 21st IEEE International Conference on Software Maintenance, 2005, pp. 653-656.
    [54]
    R. Khatchadourian, P. Greenwood, A. Rashid, G. Xu, Pointcut rejuvenation: recovering pointcut expressions in evolving aspect-oriented software, in: International Conference on Automated Software Engineering, 2009.
    [55]
    A. Abdelmeged, T. Skotiniotis, K.J. Lieberherr, Controlled evolution of adaptive programs, in: Proceedings of the Joint International and Annual ERCIM Workshops on Principles of Software Evolution and Software Evolution Workshops, 2009, pp. 89-98.
    [56]
    R. Douence, O. Motelet, M. Südholt, A formal definition of crosscuts, in: Proceedings of the International Conference on Metalevel Architectures and Separation of Crosscutting Concerns, 2001, pp. 170-186.
    [57]
    A. Sujeeth, H. Lee, K. Brown, T. Rompf, H. Chafi, M. Wu, A. Atreya, M. Odersky, K. Olukotun, OptiML: an implicitly parallel domain-specific language for machine learning, in: Proceedings of the 28th International Conference on Machine Learning (ICML-11), 2011, pp. 609-616.
    [58]
    J.-M. Lin, Cross-platform software reuse by functional integration approach, in: Computer Software and Applications Conference, Proceedings, The Twenty-First Annual International, IEEE, 1997, pp. 402-408.
    [59]
    E. Miller, An introduction to the resource description framework, J. Libr. Adm., 34 (2001) 245-255.
    [60]
    O. Liechti, M. Sifer, T. Ichikawa, Structured graph format: XML metadata for describing Web site structure, Comput. Netw. ISDN Syst., 30 (1998) 11-21.
    [61]
    C. Mastroianni, D. Talia, P. Trunfio, Managing heterogeneous resources in data mining applications on grids using XML-based metadata, in: Parallel and Distributed Processing Symposium, Proceedings International, 2003, pp. 11.
    [62]
    A. Orso, M. Harrold, D. Rosenblum, Component metadata for software engineering tasks, in: 2nd Int. Workshop on Engineering Distributed Objects (EDO 2000), Springer, 2000.
    [63]
    A. Masmoudi, G. Paquette, R. Champagne, Metadata-driven software components aggregation process with reuse, Int. J. Adv. Media. Commun., 2 (2008) 35-58.
    [64]
    S. Boag, D. Chamberlin, M.F. Fernández, D. Florescu, J. Robie, J. Siméon, W3C, XQuery 1.0: an XML query language, 2007.
    [65]
    V. Benzaken, G. Castagna, A. Frisch, CDuce: an XML-centric general-purpose language, in: Proceedings of the ACM SIGPLAN International Conference on Functional Programming, 2003, pp. 51-63.
    [66]
    H. Hosoya, B. Pierce, Regular expression pattern matching for XML, in: Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2001, pp. 67-80.
    [67]
    H. Hosoya, B.C. Pierce, XDuce: a statically typed XML processing language, ACM Trans. Internet Technol. (2003) 117-148.
    [68]
    M. Fähndrich, M. Carbin, J.R. Larus, Reflective program generation with patterns, in: Proceedings of the International Conference on Generative Programming and Component Engineering, 2006, pp. 275-284.
    [69]
    S.S. Huang, D. Zook, Y. Smaragdakis, Morphing: safely shaping a class in the image of others, in: Proceedings of the European Conference on Object-Oriented Programming, 2007, pp. 399-424.
    [70]
    S.S. Huang, Y. Smaragdakis, Class morphing: expressive and safe static reflection, in: Proceedings of Conference on Programming Language Design and Implementation, 2008, pp. 79-89.
    [71]
    T. Millstein, C. Frost, J. Ryder, A. Warth, Expressive and modular predicate dispatch for Java, ACM Trans. Program. Lang. Syst., 31 (2009) 7:1-7:54.
    [72]
    K. Lee, A. LaMarca, C. Chambers, Hydroj: object-oriented pattern matching for evolvable distributed systems, in: Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, 2003, pp. 205-223.
    [73]
    J. Liu, A.C. Myers, JMatch: iterable abstract pattern matching for Java, in: Proceedings of the International Symposium on Practical Aspects of Declarative Languages, 2003, pp. 110-127.
    [74]
    M. Eichberg, T. Schäfer, M. Mezini, Using annotations to check structural properties of classes, in: Proceedings of the International Conference on Fundamental Approaches to Software Engineering, 2005, pp. 237-252.
    [75]
    C. Noguera, L. Duchien, Annotation framework validation using domain models, in: Lecture Notes in Computer Science, vol. 5095, 2008, pp. 48-62.
    [76]
    C.J. Godby, D. Smith, E. Childress, Two paths to interoperable metadata, in: Proceedings of the International Conference on Dublin Core and Metadata Applications, 2003, pp. 1-9.
    [77]
    K. Morik, M. Scholz, The miningmart approach to knowledge discovery in databases, in: Intelligent Technologies for Information Analysis, 2003, pp. 47-65.
    [78]
    T. Ruotsalo, E. Hyvönen, An event-based approach for semantic metadata interoperability, in: Proceedings of the International Conference of Semantic Web, 2007, pp. 409-422.
    [79]
    M.A. Hernández, P. Papotti, W.-C. Tan, Data exchange with data-metadata translations, Proc. VLDB Endow. (2008) 260-273.
    [80]
    L. Popa, Y. Velegrakis, M.A. Hernández, R.J. Miller, R. Fagin, Translating web data, in: Proceedings of the International Conference on Very Large Data Bases, 2002, pp. 598-609.
    [81]
    G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.M. Loingtier, J. Irwing, Aspect-oriented programming, in: Proceedings of the European Conference on Object-Oriented Programming, 1997.
    [82]
    J. Kienzle, R. Guerraoui, AOP: does it make sense? The case of concurrency and failures, in: Proceedings of the European Conference on Object-Oriented Programming, 2002, pp. 37-61.
    [83]
    The AspectJ Project Team, The AspectJ 5 development kit developer's notebook. http://eclipse.org/aspectj/doc/released/adk15notebook/index.html
    [84]
    The JBoss Project Team, JBoss AOP: Java aspect oriented framework. http://www.jboss.org/jbossaop/
    [85]
    B. Milosavljević, M. Vidaković, Z. Konjović, Automatic code generation for database-oriented web applications, in: Proceedings of the Workshop on Intermediate Representation Engineering for Virtual Machines, 2002, pp. 59-64.
    [86]
    P. Godefroid, N. Klarlund, K. Sen, DART: directed automated random testing, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2005, pp. 213-223.
    [87]
    C. Csallner, Y. Smaragdakis, JCrasher: an automatic robustness tester for Java, Softw. Pract. Exp. (2004) 1025-1050.
    [88]
    T. Devadithya, K. Chiu, W. Lu, C++ reflection for high performance problem solving environments, in: Proceedings of the Spring Simulation MultiConference, 2007, pp. 435-440.
    [89]
    E. Tilevich, X10 innovation awards: automatic adaptation of Java frameworks for X10 to improve programmer productivity. http://x10.codehaus.org/X10+Innovation+Awards

    Cited By

    View all
    • (2023)On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress)Proceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622983(2-11)Online publication date: 19-Oct-2023

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Science of Computer Programming
    Science of Computer Programming  Volume 98, Issue P4
    February 2015
    347 pages

    Publisher

    Elsevier North-Holland, Inc.

    United States

    Publication History

    Published: 01 February 2015

    Author Tags

    1. Annotations
    2. Domain-specific language
    3. Metadata
    4. Non-functional concerns
    5. Software reuse
    6. XML

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 12 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress)Proceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622983(2-11)Online publication date: 19-Oct-2023

    View Options

    View options

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media