Date[ 11:31:04 ] Recordnr[ ] Stored[ Papers Composition Who[ J.R.Callahan, J.M Purtilo, University of Maryland Title[ A Packaging System for Heterogeneous Execution Environments Published[ IEEE Transactions on Software Engineering, vol.17, 1991, pp.626-635 Keywords[ MIL, Polygen, Polylith Comment[ more for small, on-one-site components, strenth is partitioning and automatic reasoning about possible configurations, yet automatic generation is limitied to certain environments Summary[ Polylith: TCP/IP-based communication systems for various languages. Polygen: Composotion and reasoning tool. What it is about: - generation of custom interface software for heterogeneous configurations. - in contrast to other approaches, not only stub generation, but inserting configuration methods needed to integrate an application (e.g. main, wrappers/dispachter program for LISP-procedures, byteswap functions for adjusting integers to various representations, rendezvous functions) - polygen changes source code and adds necessary lines and stubs so they can work over network - all is automatic, user just has to specify desired geometry - logical design is separated from the geometry Composition process: Starting point: several source files (C, Ada, Pascal, Lisp) that contain modules(procedure calls) to be composed. In the extraction phase, module specs are gained from the source files, or these module specs already exist. Module specs: are written in Polylith MIL (module interconnection language). It contains the interfaces a module offers and uses and the parameters of these procedure calls. In the composition phase, the user adds the design and annotated design (with geometric data) to the specs. The design says which modules are to be used, which communication system, where the modules are. Then in the generatin phase POLYGEN makes a package based on the configuration rules it has. Configuration rules are added by the Polygen system maintainer and say what kind of modules can be connected how. A package (valid configuration represented in an executable makefile and generated stubs and interfaces) is gained by an interference mechanism that uses partitioning. Module assertions are converted to prolog statements. Based on configuration rules, partitions are created.... Finally in the construction phase an executable is generated by running the makefile that polygen has created in the generation phase. Partitioning: Partitions are sets of compatible components. They can be represented by directed, acyclic graphs,whose internal nodes represent integration methods and temrinal nodes represent source components. Valid partitioning: has only a single root. Weaknesses: - source code must be changed and recompiled - right now only for Polylith-TCP/IP - data-conversion relies on underlying communication tool - good for putting together inhouse modules - rather targeted at smaller modules - no optimization, scheduling etc...