Optimix: A Tool for Rewriting and Optimizing programs Draft article (version 2) on stratified exhaustive graph rewrite systems How to uniformly specify program optimization with graph rewrite systems (CC 96, Linkoeping) Parallel EARS (MPPM 95, Berlin) Thesis Generation of program optimizations with graph rewrite systems (in German) Edge addition rewrite systems (EARS) (GraGra 94) The CoSy compiler framework: Cosy phase embedding with the CoSy compiler system (CC 94, Edinburgh) Interprocedural Heap Analysis for Parallelizing Imperative Programs (MPPM 93, Berlin)
The component model of COMPOST, boxes, hooks, composers - Slides in powerpoint.
Architecture of COMPOST - Slides in powerpoint.
However, up to now, AOP does not have a formal background.
This paper introduces GRS-based AOP which explains a large subclass
of weavers as graph rewrite
systems (GRS). Hence it has a formal background, inheriting
all features of graph rewrite systems such as criteria for termination,
confluence, and unique
normal forms. In particular, it it shown that different
kinds of rewrite rules form different weaver classes. At least two of them
(EARS and XGRS weavers)
have simple semantics since they always yield unique
weaving results.
@InProceedings{assmann.99-aop-as-graph-rewriting,
title = "{Aspect Weaving by Graph Rewriting}",
author = "A{\ss}mann, Uwe and Ludwig,
Andreas",
booktitle = "Generative Component-based
Software Engineering (GCSE) ",
editor = "Eisenecker, U. W. and Czarnecki,
K.",
address = "Erfurt",
country = "Germany",
year = 1999,
month = oct
}
@InProceedings{assmann.99-coordination,
author = "A{\ss}mann, Uwe and Ludwig, Andreas",
title = "{Introducing Connections into Classes
with Static Metaprogramming}",
booktitle = {3rd Int. Conf. on Coordination},
year = 1999,
editor = {Ciancarini, Paolo and Wolf, Alexander},
address = hd,
month = apr,
series = lncs,
number = 1594,
publisher = "Springer"
}
Here is an alpha version of the paper
@Misc{assmann.99-wicsa,
author = {A{\ss}mann, Uwe and Ludwig, Andreas and
Pfeifer, Daniel},
title = {Programming Connectors In an Open Language},
howpublished = {In Web-Published Proceedings of Position
Papers, WICSA 1, Working IFIP Conference on
Software Architecture, IFIP WG 2.9},
month = feb,
year = 1999
}
Component-based frameworks such as Java Beans (Enterprise) or ActiveX/DCOM support the cooperation of components in distributed and heterogeneous environments. In component-based frameworks, applications are built as composite applications, containing components linked viaconnectors. Component-based frameworks also provide numerous technologies for the integrationof legacy systems. Therefore, component-based frameworks help to build wfms that are better suited to heterogeneous and distributed environments. However, component-based frameworks do not solve the fundamental architectural problems of wfms, their centralized architecture,which causes their limited scalability and reliability.
Therefore the new wfms-architecture CompFlow has been developed. It offers a new, fully distributed architecture for wfms based on composite applications and connectors and avoids the bottlenecks and single failure points of present architectures. Because CompFlow uses component-based frameworks, it can also take advantage of their support for heterogeneous and distributed environments.
@InProceedings{assmann.schmidt-edbt,
author = {Schmidt, Rainer and A{\ss}mann, Uwe},
title = {CompFlow: A Component-based and Aspect-separated
Architecture for Workflow Support},
booktitle = {EDBT Workshop on Workflow Management
Systems},
year = 1998
}
@InProceedings{assmann.98-sac,
author = "Schmidt, Reiner and A{\ss}mann, Uwe",
title = {Component- and connector-based workflow
systems},
booktitle = {ACM SAC 98 - Special track on coordination
languages},
year = 1998,
address = {Atlanta, Georgia},
month = feb
}
However, developing a weaver tool may be as complicated as developing a compiler and methods to automize weaver construction are urgently ooked for. In this paper, we show for an object-oriented setting, how the aspects can be weaved into components by applying graph rewrite rules. Such rules provide powerful graph transformations that modify components in order to introduce aspects of computations, and to combine several aspects of a component into a single representation. With this method, either users can apply rewrite operations interactively, or graph rewrite systems can automize the weaving process.
@TechReport{ assmann.97-aop,
author = "A{\ss}mann, Uwe",
title = "{AOP with design patterns as meta-programming
operators}",
institution = "Universit{\"a}t Karlsruhe",
number = 28,
year = 1997,
month = oct
}
@InProceedings{assmann.97*5,
author = "Assmann, Uwe and
Schmidt, Reiner",
title = {Towards Composed
Extensible Components},
booktitle = {FOCBS 97 - Foundations of component
systems, Workshop at ESEC 97},
year = 1997,
editor = {Gary Leavens},
address = {Z{\"u}rich},
month = sep
}
Revised version accepted at FoCBS workshop of ESEC 97, Zürich.
Software Cocktail Bars - A Model For Extensible Software (compressed postscript)
Composers will be based on two important elements. First, they will express coupling by graph-based operators which transform parts of the class-graph (coupling design patterns). Second, during these transformations, elementary meta-operators will be used to transform data and code, rearranging slots and methods of parameter-components. Thus during their reuse, components are queried by introspection and transformed by meta-programming.
Composers that use meta-programming generalize connectors in architectural languages. Hence they encapsulate context-dependent aspects of a system, and make components independent of their embedding context. Since meta-programming composers may change behavior of components transparently, meta-programming composers will lead to a nice form of grey-box reuse, which supports embedding of components (and classes) into application contexts in a new and flexible way.
@InProceedings{assmann.97-sysimp,
author = "Assmann, Uwe",
title = {Meta-programming
Composers In Second-Generation Component Systems},
booktitle = {Systems Implementation 2000 - Working
Conference IFIP WG 2.4},
year = 1998,
editor = {Bishop, J. and Horspool,
N.},
address = {Berlin},
month = feb,
publisher = "Chapman and Hall"
}
Accepted at Systems Implementation 2000 (pre-version in compressed postscript)
Full
technical report with more stuff
@InProceedings{goos.assmann.98-konstruktion,
author = "Goos, Gerhard and A{\ss}mann, Uwe",
title = "{Systematic Software Construction}",
booktitle = {Workshop Universal Design Theory,
Karlsruhe, Germany},
year = 1998,
month = may,
editor = "Grabowski, Hans and Rude, Stefan and Grein, Gunther",
address = "Aachen" ,
publisher = "Shaker-Verlag",
month = jun
}
@inproceedings{assmann.95c,
author = "Assmann, Uwe",
title = "{On Edge Addition Rewrite Systems and Their
Relevance to Program Analysis}",
editor = "Cuny, J.",
booktitle = "5th Workshop on Graph Grammars and Their Application
To Computer Science",
series = "Lecture Notes in Computer Science",
volume = 1073,
month = "November 1994",
address = "Williamsburg, Virginia",
publisher = "Springer",
year = "1995"
}
@inproceedings{assmann.95d,
author = "Assmann, Uwe",
title = "{Parallel EARS}",
year = 1995,
booktitle = {Massively Parallel Programming Models (MPPM)},
editor = {Giloi, W. K. and J\"ahnichen, S. and Shriver, B. D.},
publisher = {IEEE Press},
month = "October",
pages = "198--204",
address = "Berlin"
}
With our specification method the process of writing an optimizer is divided into four phases. First a data model for the graphs --- intermediate code as well as analysis information --- has to be developed. Secondly, program analysis has to be specified by graph rewrite systems. For this we supply a special variant of graph rewrite systems, edge addition rewrite systems (EARS). EARS are very simple graph rewrite systems because they only allow the addition of edges to graphs and do not remove any existing parts. Thirdly, program transformations can be specified by more general graph rewrite systems which allow deletion of edges, and insertion and deletion of nodes. Finally, after having described the optimization abstractly, the representations of the graph classes can be changed in order to speed up the generated algorithms. The user also can feed the generator with assertions so that the generator can apply index structures (dictionaries). We will show that this is an essential part to achieve effiently executing optimizer parts.
To demonstrate the validity of the specification method the optimizer generator Optimix and several optimizer parts have been developed within the compiler framework CoSy. All generated components work on the 'common COMPARE medium intermediate representation', the intermediate language CCMIR. The CCMIR serves as common platform for frontends in C, Fortran-90, Modula-2, Modula-P, and soon C++ (http://www.ace.nl).
@inproceedings{assmann.96a,
author = "Assmann, Uwe",
title = "{How To Uniformly Specify Program Analysis and Transformation}",
publisher = "Springer",
year = 1996,
booktitle = {Compiler Construction (CC)},
editor = {P. Fritzson},
annote = {ua.}
}
compressed
postscript
@InProceedings{ assmann.94b,
author = {Alt, M. and A{\ss}mann, U. and van~Someren, H.},
title = "{Cosy Compiler Phase Embedding with the CoSy
Compiler
Model}",
booktitle = {Compiler Construction (CC)},
series = "Lecture Notes in Computer Science" ,
volume = 786,
year = {1994},
editor = {Fritzson, P. A.},
pages = {278--293},
publisher = "Springer" ,
address = "Heidelberg" ,
month = {April},
annote = {ua.}
}
@PhDThesis{ assmann.95b,
author = {Assmann, Uwe},
title = "{Generierung von Programmoptimierungen mit
Graphersetzungssystemen}",
school = {Universit\"at Karlsruhe},
publisher = "Oldenbourg Verlag, M{\"u}nchen",
series = "GMD-Berichte",
number = 262,
year = {1995},
month = jul
}
OPTIMIX generates routines in plain C which can be embedded in optimizers. The tool has been developed in the Esprit project COMPARE (No.\ 5399). It can be used together with the CoSy compiler framework, the GMD toolbox Cocktail, or with plain C.
For a non-commercial licence, contact the author.
@TechReport{ assmann.95a,
author = {Assmann, Uwe},
title = "{Optimix Language Report}",
institution = "Universit{\"a}t Karlsruhe",
number = 31,
year = "1995"
}
Optimix
language report (compressed postscript)
@Unpublished{ assmann.98-ccposter,
author = "Assmann, Uwe",
title = "{OPTIMIXing}",
year = 1996,
month = oct,
note = "Poster session, International conference on Compiler
Construction (CC)"
}
@InBook{ assmann.98-gragra,
author = "A{\ss}mann, Uwe",
title = "{OPTIMIX, A Tool for Rewriting and Optimizing
Programs}",
year = 1998,
booktitle = "{Graph Grammar Handbook}"
year = "1998",
publisher = "Chapman-Hall",
abstract = "Introduction to the OPTMIX generator.
"
}
@InProceedings{ assmann.93e,
author = {A{\ss}mann, Uwe and Weinhardt, Markus},
title = "{Interprocedural Heap Analysis For Parallelizing
Imperative Programs}",
booktitle = {Massively Parallel Programming Models (MPPM)},
year = {1993},
editor = {Giloi, W. K. and J{\"a}hnichen, S. and Shriver, B. D.},
pages = {74--82},
publisher = {IEEE Press},
month = {September}
}