Elsevier

Science of Computer Programming

Volume 98, Part 4, 1 February 2015, Pages 617-644
Science of Computer Programming

Reusing metadata across components, applications, and languages

https://doi.org/10.1016/j.scico.2014.09.002Get rights and content
Under an Elsevier user license
open archive

Highlights

  • 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++.

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.

Keywords

Software reuse
Metadata
Non-functional concerns
Annotations
XML
Domain-specific language

Cited by (0)