Skip to main content

2013 | Buch

Meta-Programming and Model-Driven Meta-Program Development

Principles, Processes and Techniques

insite
SUCHEN

Über dieses Buch

Meta-Programming and Model-Driven Meta-Program Development: Principles, Processes and Techniques presents an overall analysis of meta-programming, focusing on insights of meta-programming techniques, heterogeneous meta-program development processes in the context of model-driven, feature-based and transformative approaches.

The fundamental concepts of meta-programming are still not thoroughly understood, in this well organized book divided into three parts the authors help to address this. Chapters include: Taxonomy of fundamental concepts of meta-programming; Concept of structural heterogeneous meta-programming based on the original meta-language; Model-driven concept and feature-based modeling to the development process of meta-programs; Equivalent meta-program transformations and metrics to evaluate complexity of feature-based models and meta-programs; Variety of academic research case studies within different application domains to experimentally verify the soundness of the investigated approaches.

Both authors are professors at Kaunas University of Technology with 15 years research and teaching experience in the field. Meta-Programming and Model-Driven Meta-Program Development: Principles, Processes and Techniques is aimed at post-graduates in computer science and software engineering and researchers and program system developers wishing to extend their knowledge in this rapidly evolving sector of science and technology.

Inhaltsverzeichnis

Frontmatter

Part I

Frontmatter
Chapter 1. Introduction
Abstract
At the very beginning, our aim is to describe a scheme for the initial understanding of meta-programming in order to introduce the knowledge required for the thorough studies in the field later. We start from the statement which gives a very general definition and formulates the primary objectives of the field as follows:
Vytautas Štuikys, Robertas Damaševičius
Chapter 2. Taxonomy of Fundamental Concepts of Meta-Programming
Abstract
Taxonomy is the science of classification according to a predetermined system. The Webster Online Dictionary defines taxonomy as:
Vytautas Štuikys, Robertas Damaševičius
Chapter 3. A Background of Meta-Programming Techniques
Abstract
In Chap. 2, we discussed the fundamental concepts of programming and meta-programming. Knowing the meaning of the concepts through their definitions is important but not enough. It is just the first step to acquire knowledge in the field. The aim of this chapter is to extend that knowledge and to reconsider some software design principles as a background of meta-programming techniques. Here, by principles, we mean the known software construction principles as they are to be applied to meta-programming domain. We refer to them as preliminary principles, when we discuss the way on how to start acquiring knowledge in the field. We refer to them as fundamental principles, when we consider the background of meta-programming based on information hiding. We refer to the implementation techniques or mechanism, when we consider the conceptual description of how some principles are realized in order to implement the meta-programming paradigm.
Vytautas Štuikys, Robertas Damaševičius
Chapter 4. Homogeneous Meta-Programming Techniques with Case Study
Abstract
There are two kinds of meta-programming: homogeneous and heterogeneous. Here, we focus on homogeneous meta-programming only.
Vytautas Štuikys, Robertas Damaševičius
Chapter 5. Structural Heterogeneous Meta-Programming
Abstract
In Chap. 3, we have analysed backgrounds of meta-programming in general. In Chap. 4, we discussed homogeneous meta-programming, meaning the specification of some generalization aspects (e.g. computations) within one programming environment. Here, we focus on heterogeneous meta-programming, meaning the specification of some generalization aspects within heterogeneous programming environments. The term heterogeneous means that a meta-program (aka executable meta-specification) and a target program are written in different (at least two) languages and has to be interpreted in different environments. The first language is a meta-language (see Chap. 6). The second one is a domain (aka target or object) language. We call the paradigm structural heterogeneous meta-programming here. The name structural comes from structural programming because we apply its basic principles in our approach. Further, for simplicity reasons, where it is appropriate, we use the term meta-programming only omitting the words structural and heterogeneous.
Vytautas Štuikys, Robertas Damaševičius
Chapter 6. Open PROMOL: A Meta-Language for Heterogeneous Meta-Programming
Abstract
Though other authors (see a review in [DKV00]) have suggested many interesting ideas, models and solutions, nevertheless, it was difficult to find a language at the time that would suit best for expressing explicitly the composition, modification and generalization simultaneously. As a consequence, we have designed the language Open PROMOL aiming at the development of generic specifications, which specify the wide range modifications of target language (also domain language) programs to support the design of generic components and generators. Our approach has some similarities and differences in the model as well as in the implemented concepts to Bassett’s frame commands [Bas97].
Vytautas Štuikys, Robertas Damaševičius

Part II

Frontmatter
Chapter 7. A Framework to Deal with Heterogeneous Meta-Programming in Large: Meta-Program Lifecycle
Abstract
The aim of Part II is to extend the knowledge about heterogeneous meta-programming considered so far. This part starts with Chap. 7 entitled ‘A Framework to Deal with Heterogeneous Meta-Programming in Large: Meta-Program Lifecycle’. The concept ‘meta-programming in large’ entails the following meaning: (1) to transfer technical aspects of the topic wider at the higher level of abstraction than they were discussed in Part I and (2) to extend the view to meta-programming by analysing also non-technical aspects of the topic. To do so, we first introduce a framework (Chap. 7) that outlines the most general vision to heterogeneous meta-programming. This vision combines the meta-program lifecycle with non-technical aspects of meta-programming such as reuse and role of actors involved in the meta-program development, usage and evolution. The framework also identifies the links of meta-programming with the meta-design paradigm.
Vytautas Štuikys, Robertas Damaševičius
Chapter 8. A Model-Driven View to Meta-Program Development Process
Abstract
The development of modern complex software systems or their parts is impossible without representation of domain concepts at multiple levels of abstraction, wide-range reuse and automatic program generation. Note that this vision for the meta-program development is supported by the framework introduced in Chap. 7.
Vytautas Štuikys, Robertas Damaševičius
Chapter 9. Cognitive Insights into Feature Diagram Notation and Beyond
Abstract
Variability is the ability of a software system or artefact to be extended, changed, customized or configured for the use in a particular context [GBS01]. Implementation of variability allows delaying design decisions concerning a supported functionality to later stages of the software development process. Rather than deciding on specific features, a product will have, at early design stages, software architecture and set of components which are defined to allow the configuration of features to match user requirements, at a late design stage.
Vytautas Štuikys, Robertas Damaševičius
Chapter 10. Meta-Programming Task Specification Using Feature-Based Patterns and Domain Program Scenarios
Abstract
The development of a meta-program includes two interrelated stages: (1) task specification resulting in creating of a specification model and (2) transformation of the model into a meta-program representation. In Chap. 10, we focus on the specification task. In general, the needed data to consider the task comes from three sources: requirements for generalization, domain model and domain program that is to be generalized. We accept that the domain model is obtained through domain analysis and the domain is represented by Feature Diagram(s). As Feature Diagrams may be general enough (e.g. they may represent the entire domain to be implemented as a software system), we need to analyse the model and extract some model patterns that are relevant to construct domain generators.
Vytautas Štuikys, Robertas Damaševičius
Chapter 11. Meta-Program Development as a Model Transformation Process
Abstract
We formulate the development and use of the meta-program as the model and program transformation tasks. Such a vision is based on the previous discussions (see Chaps. 8, 9, 10). Meta-programs as the development artefact can be obtained, for example, through forward engineering, when meta-programs are developed in a top-down approach from high-level models such as feature models. Another way is to use a bottom-up approach and develop a meta-program from lower-level domain program instances. In this case, to develop a meta-program we need (1) a domain program model, (2) a set of domain program instances (in many cases, one instance is enough) and requirements/constraints for them and (3) a meta-program model. Furthermore, in this chapter, we introduce the concept of meta-meta-programming and consider the k-stage meta-program development as a transformation task. We detail the latter development process in the following sections.
Vytautas Štuikys, Robertas Damaševičius
Chapter 12. Complexity Evaluation of Feature Models and Meta-Programs
Abstract
Complexity is the inherent property of systems to be designed. The need for managing the complexity issues is constantly growing since systems per se are becoming more and more complex mainly due to technological advances, increasing user requirements and market pressure. Complexity management can help to increase quality and understandability of developed products, decrease the number of design errors [TZ81] and shorten their development time. Managing complexity means, firstly, knowing how to measure it. Complexity measures allow reasoning about system structure, understanding the system behaviour, comparing and evaluating systems or foreseeing their evolution.
Vytautas Štuikys, Robertas Damaševičius

Part III

Frontmatter
Chapter 13. A Framework: How Can Heterogeneous Meta-Programs Be Further Generalized?
Abstract
As it was learned before, a meta-program is a specific computer program that can be seen as a generalized entity because it generates other programs or program parts [Ort07]. We share the view to meta-programming as a program generalization/generation technique with Veldhuizen [Vel06] and many other researchers. On the other hand, meta-programming is not a homogeneous field as it was outlined in Chap. 2. In a wider context, currently meta-programming is understood and dealt with from slightly different perspectives (e.g. as frame-based programming [CJ99], aspect-oriented programming [KLM+97], generative programming [CE01], generic programming [RJ05a], feature-oriented programming [TBD07]). What is common for the approaches is that they seek for the same aim: to achieve higher productivity and quality of the process to develop a program. The approaches, however, differ in concepts, formalisms and applied techniques. That is why various generalization forms in the field are possible. Our approach to meta-programming, which we considered basically in Chaps. 3, 4, and 5, is based on the extension of the preprocessing concept using two languages at once in the structural programming manner.
Vytautas Štuikys, Robertas Damaševičius
Chapter 14. Meta-Meta-Programming and Equivalent Transformations of Heterogeneous Meta-Programs
Abstract
In this chapter, we consider a transformation-based approach which transforms the given (correct) meta-program within the same meta-parameter space into a meta-meta-program. The aim is threefold: (1) to formalize the transformation processes, (2) to approve under some conditions the equivalence of the high-level transformations and (3) to extend the results of Chap. 11.
Vytautas Štuikys, Robertas Damaševičius
Chapter 15. Multi-Linguistic Aspects of Heterogeneous Meta-Programming in Web Applications
Abstract
In this chapter, we will discuss the multi-linguistic aspects of generalization in designing meta-specifications using heterogeneous meta-programming. Multi-linguistic aspects were outlined abstractly in the framework for generalization presented in Chap. 13. The aim of this chapter is to extend the discussion by presenting more details. As it was stated in the framework, there are domains which require using more than two domain languages to present domain functionality. The best example of such a domain is web-based applications. Thus, we will illustrate the approach using web-based components.
Vytautas Štuikys, Robertas Damaševičius
Chapter 16. Applications of Meta-Programming Methodology
Abstract
This chapter summarizes the analysed methodology from the use and applicability perspective. Though our methodology within a particular chapter was illustrated by numerous illustrative examples related to various application domains, we found the necessity to motivate the methodology at a broader context dealing with the real-world tasks. As our research is purely academic, the tasks which we implemented as case studies are components of larger systems only, but those components are taken from the real world.
Vytautas Štuikys, Robertas Damaševičius
Backmatter
Metadaten
Titel
Meta-Programming and Model-Driven Meta-Program Development
verfasst von
Vytautas Štuikys
Robertas Damaševičius
Copyright-Jahr
2013
Verlag
Springer London
Electronic ISBN
978-1-4471-4126-6
Print ISBN
978-1-4471-4125-9
DOI
https://doi.org/10.1007/978-1-4471-4126-6

Premium Partner