Where academic tradition
meets the exciting future

Programming by Construction

Mauno Rönkkö, Markus Stocker, Mats Neovius, Mikko Kolehmainen, Luigia Petre, Programming by Construction. TUCS Technical Reports 1092, TUCS, 2013.

Abstract:

Modern cloud services use standard interfacing technologies, such as SOAP and REST. What is common to all these technologies is that they separate the service implementation and internal data structure from the service invocation and parameter structure. To support interoperability, the service invocation is often described by using XML and it is made available to the client. Because of this, the same concepts are expressed in at least three different contexts. For instance, the parameter structure that is expressed with XML has to be replicated and represented with a programming language, such as Java, that is used to implement the service. The client is then free to choose the language for calling the service. Needless to say, this means that there is an inherent synchronization issue; the XML description, the service implementation, and the client implementation must speak of the same concepts. There are obviously tools that translate one representation to another, such as JAXB for Java and XML. In this way, however, the translation processes not only the concepts of interest, but also other semantic artifacts found in the source representation. Consequently, there is a significant semantical distance between the concepts, their source representation, and their target representation. This distance is a major source of errors in the development process. Here, we approach this problem from a novel viewpoint. In short, we separate the concept from its semantic context, whereby we can express the concept directly in any given semantic context. In this way, there is no translation as described above. To achieve this, and as the main contribution, we formalize here this approach of programming by construction. The basis of the formalization is a grammar for a simple language that describes the definition of concepts and contexts. We then define the interpretation for the language, including the actual construction, which is formalized as a term rewriting process. We also provide here an open-source implementation of an interpreter for the language in Java. The interpreter is called Mill, and we illustrate its use with a simple case study involving design patterns and Java.

Files:

Full publication in PDF-format

BibTeX entry:

@TECHREPORT{tRxStNeKoPe13a,
  title = {Programming by Construction},
  author = {Rönkkö, Mauno and Stocker, Markus and Neovius, Mats and Kolehmainen, Mikko and Petre, Luigia},
  number = {1092},
  series = {TUCS Technical Reports},
  publisher = {TUCS},
  year = {2013},
  keywords = {Formal language, Service oriented programming, Cloud services, Design patterns},
  ISBN = {978-952-12-2978-7},
}

Belongs to TUCS Research Unit(s): Distributed Systems Laboratory (DS Lab)

Edit publication