Uwe Aßmann's papers

Last edited on $Date: 2000/03/28 09:50:46 $

Important notice

The documents made available by links from this publications list are provided by the author as a means to ensure timely dissemination of his work on a non-commercial basis. Copyright and all rights therein are maintained by the author, including co-author where appropriate, or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each copyright. These works may not be reposted without the explicit permission of the copyright holder.



Slides on component systems and software architecture

On component systems and software architecture

On compilers; on optimization with graph rewriting

  • 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)

  • Software Architecture and Software Composition

    Compost and its Architecture

    These are the slides of two talks IBM Hawthorne, March 00 on COMPOST and its architecture.

    The component model of COMPOST, boxes, hooks, composers - Slides in powerpoint.

    Architecture of COMPOST - Slides in powerpoint.


    Classes and Connectors

    These are the slides of a talk at the IPA 99, Dordrecht, Holland. The topic is how to integrate connectors into object-oriented systems smoothly with COMPOST.

    Slides in powerpoint.


    Aspect Weaving by Graph Rewriting

    AOP (aspect-oriented programming) allows to specify parts and behaviors of components using different views, i.e. with aspects. These aspects can be specified independently from each other and are combined to the final form by a weaver tool. This composition process yields software that is better readable (since specifications are modular) and better reusable (since aspects can be re-combined).

    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
    }
     

    postscript, gzipped

    Slides in powerpoint, gzipped


    A Conceptual Comparison of Component Systems

    Out in the market, out in research, a number of component systems have been designed and realized which differ vastly in technology, concepts, and quality. Since it is not easy to evaluate them nor to compare them against each other several concise criteria are defined under which some of them are evaluated. These criteria are modularity, component adaptation, extensibility, aspect-separation, and standardization. Component systems under evaluation are CORBA, DCOM, Java Beans, and Architectural Systems.
    As a result, it appears that current component systems, although they fulfill parts of the important requirements, are still far away from supporting users in full-fledged component and composition technology. On the other hand, the criteria reveal what components should be: module + adaptation + extension + aspect separation + standards.
    @InBook{assmann.99-comparison,
      author =  {A{\ss}mann, Uwe},
      title =   {A Conceptual Comparison of Current Component Systems},
      publisher =   {Springer},
      year =   1999,
      series =  {Software Best Practice OO},
      annote =  {to appear.}
    }
    postscript, gzipped

    How to Introduce Connections into Classes

    Connections can be inserted into classes transparently. Based on an open language with a static meta-object protocol, meta-operators can be constructed that work as connectors, mixing communication code into classes. Thereby, connectors become standard methods in the open language; connections are initiated by standard method calls, and connecting becomes a program transformation. This method paves the way for libraries of connectors which are easy to program, easy to understand, and easy to extend. Equipped with simple drivers, connectors become file-to-file transformation tools. Since connectors can be programmed in variants, architectures of large systems can be configured with the standard software production tooling.

    @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


    How to program connectors in an open language

    Connectors can be programmed flexibly using an open language with a static meta-object protocol. Illustrated with an example from OpenJava, it is presented how such connectors insert communication code into classes transparently. With this method, connectors become meta-programs in he open language; connecting becomes a program transformation. The method paves the way for connector libraries which are easy to  extend.

    @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
    }

    postscript, gzipped



     

    CompFlow - A Component-based and Aspect-separated Architecture for  Workflow Support

    Although workflow-management-systems (wfms) offer a highly suitable basis for business process reengineering, they are rarely used enterprise-wide. One reason are performance deficiencies due to limited scalability and unreliability, caused by an inappropriate, centralized architecture. The other reasons are the incapability of wfms to work in highly heterogeneousenvironments and their lack of interoperability with legacy applications.

    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
    }

    postscript, gzipped


    Component- and Connector-based Workflow Systems

    Workflow systems can be described with modern architectural languages, i.e. in a component-connector based approach. This helps to integrate legacy systems, to annotate event/condition/action rules to connectors, and to dynamically reconfigure the workflow by the exchange of connectors.

    @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
    }


    AOP with design patterns as meta-programming operators

    AOP (aspect-oriented programming) allows to specify parts and behaviors of components using different views, i.e. with aspects.  These aspects can be specified independently from each other and a weaver tool combines them to   the final form of the component.  This yields software that is better   readable (since specifications are modular) and better reusable (since aspects can be re-combined).

    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
    }

    postscript gzipped


    Software Cocktail Bars

    Currently software is difficult to extend. When the definition of an item is changed, often all its uses have to be adapted. In this paper we collect several requirements to avoid this effect and propose a new model for extensible software, software cocktail bars. In essence, the new model combines views and operator-based composition . We argue that uses of defined entities must have an abstract view of an entity. Subentities should only be accessed by name, and the access mapping function should be compiler-calculated . To this end software should be composed using definition composition operators . We propose a classification of composition operators and demonstrate that several important language concepts can be regarded as particular case of our model, while others cannot. Hence the new model provides a basis to assess software description languages in terms of extensibility.

    @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)


    Meta-programming Composers In Second-Generation Component Systems

    Future component systems will require that components can be composed flexibly.  In contrast to current systems which only support a fixed set of composition mechanisms, the component system should provide a composition language in which users can define their own specific composers.  It is argued for an object-oriented setting that this will be possible by
    meta-programming the class-graph.

    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



     

    Software Engineering

    Systematic Software Construction

    In a interdiciplinary workshop on Universal Design Theory, we presented our view how design in software engineering and design in other disciplines are related.  The paper states 5 fundamental design principles: decomposition, architectural styles, frameworks, design patterns, specifications.

    @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
    }


    Graph Rewriting for Program Optimization and Transformation

    On Edge Addition Rewrite Systems and their Relevance to Program Analysis

    In this paper we define a special class of graph rewrite systems for program analysis: edge addition rewrite systems (EARS). EARS can be applied to independent (bitparallel) data-flow frameworks, finite distributive data-flow frameworks, as well as many other program analysis problems. We also present some techniques for optimized evaluation of EARS. They show that EARS are very well suited for generating efficient program analyzers.
    @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"
    }
    Article on edge addition rewrite systems (GraGra 94)



    Parallel EARS

    In this paper we show how edge addition rewrite systems (EARS) can be evaluated in parallel. EARS are a special variant of graph rewrite systems, which only add edges to graphs. Because EARS are equivalent to a subset of Datalog, they can be used to specify many problems in a rule-based way. EARS terminate and are strongly confluent, which makes them perfectly apt for parallel execution. In this paper we present two parallel evaluation methods, order-domain partitioning and bottom-up evaluation on carrier-graphs. Because also efficient sequential evaluation techniques exist, EARS provide scalable parallelism.
    @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"
    }
    Parallel EARS (MPPM 95, Berlin)



    How to uniformly specify program optimization with graph rewrite systems

    This paper presents a uniform specification method for program analysis and transformation. It is based on graph rewrite systems, can be used for arbitrary intermediate languages (also abstract syntax trees), and leads to efficiently executing optimizer parts. The major idea behind it is the insight that the intermediate representations in optimizers are graphs which are constructed and manipulated by graph transformations. Thus it is quite natural to use graph rewrite systems to specify both problems of program analysis and transformation.

    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

    Cosy Compiler Phase Embedding with the CoSy Compiler Model

    CoSy, a new model for compilers, is a component model for repository architectures.  This paper describes basic ideas of CoSy: views on the repository, engines as components with interaction schemes, scalability, shadowing/versioning.

    @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.}
    }


    Graph rewrite systems for program optimization

    This (draft) paper demonstrates how graph rewrite systems can be used to specify and generate program optimizations. For termination of the systems we develop new rule-based criteria, defining exhaustive graph rewrite systems. We also define stratification of graph rewrite systems which selects unique normal forms for many non-complete systems. As example we specify parts of the lazy code motion optimization. For the resulting graph rewrite system classes a uniform evaluation algorithm is given. On the basis of this method the optimizer generator OPTIMIX has been developed. It is one of the first tools which is able to specify analysis and transformation uniformly. Some numbers of generated optimizer components are included in the paper. Submitted to TOPLAS.

    postscript compressed


    Generierung von Programmoptimierungen mit Graphersetzungssystemen 
    (Generation of program optimizations with graph rewrite systems, thesis in German)

    This is my PhD thesis. It has appeared as GMD-Bericht No 262 in Oldenbourg-Verlag, Munich. Please conform to copyrights.
    @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
    }
    postscript compressed



    Reports

    Optimix Language Manual

    This is the language manual for OPTIMIX, the optimizer generator. It can be used to generate program analyses and transformations. Its input language is based on Datalog and graph rewriting. Especially two new classes of graph rewrite systems are used: edge addition rewrite systems (EARS) and stratified graph rewrite systems (stratified GRS).

    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)


     

    Optimixing: How to write optimizers with Optimix

    OPTIMIX is a tool for generating optimization algorithms which construct and transform directed relational graphs.  OPTIMIX's specification language allows graph queries which localize information that is distributed and hidden in the intermediate representation, as well as graph rewrite systems which describe transformations. Hence OPTIMIX can be applied to three major problem classes of optimization: graph reachability problems, context-sensitive pattern-match problems, and mark/transform problems.

    @Unpublished{   assmann.98-ccposter,
      author = "Assmann, Uwe",
      title  = "{OPTIMIXing}",
      year  = 1996,
      month  = oct,
      note = "Poster session, International conference on Compiler Construction (CC)"
    }

    Optimixing


    OPTIMIX, A Tool for Rewriting and Optimizing Programs

    OPTIMIX is a tool for generating optimization algorithms which construct and transform directed relational graphs.  OPTIMIX's specification language allows graph queries which localize information that is distributed and hidden in the intermediate representation, as well as graph rewrite systems which describe transformations. Hence OPTIMIX can be applied to three major problem classes of optimization: graph reachability problems, context-sensitive pattern-match problems, and mark/transform problems.

    @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. "
    }
     
     
     
     



    Interprocedural Heap Analysis for Parallelizing Imperative Programs

    This paper presents the interprocedural implementation of the heap analysis algorithm of Chase/Wegman/Zadeck in a Modula-2 compiler. Encouraging practical results are given.
    
    @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}
    }
    
    
    postscript gzipped