Information Links
Related Work
-
http://www.bayfronttechnologies.com/
Bayfront Technologies is among several sites that demonstrate generation used commercially. The CAPE translator has been used to generate ROM code for various protocols (e.g., Digital Subscriber Line and fiber optic protocols), business applications for process models, general communications protocols (e.g., ethernet), etc. This is one of the best, most mature and most practical generation efforts. It is rumored that CAPE was used to bring a DSL chip to market in a stunningly short time, before any of the chip competitors could.
CAPE is based on the DRACO generation system (originally Dr. Neighbor's PhD work). The site includes copious documentation, a demonstration of CAPE, and commercial information on the product. This is a good example of what can be done with generation.
-
http://www.semdesigns.com
Semantic Designs, Inc. is not focused on generation of software from scratch per se but rather on the related task of managing, evolving, re-hosting and re-engineering existing industrial scale applications (e.g., millions of lines of code in multiple languages, in thousands of source files and often hosted on multiple machines). The largest system they have worked on is 35 MLOC. They have industrial strength parsers for 20 plus languages including C, C++, C#, COBOL, Java, JCL, and many others.
This work shows the power of reusing generative knowledge in the form of source-to-source program transformations and metaprograms across a broad spectrum of software engineering. The foundation of the work is a commercial, scalable program transformation system called the DMS Software Reengineering Toolkit. The scaling is along a number of axes, including compound notational systems operating at multiple levels of abstraction ("the Draco paradigm"), procedural escapes, highly tuned infrastructure (cache-aligned nodes) and parallel implementation on SMP systems using an in-house language, PARLANSETM, enabling the handling of million-line applications.
Commercial applications of DMS include code analysis (clone detection, test coverage tools and detection of dead code), code generation (mapping a factory control DSL into "Ladder Logic" using a strong propositional code optimizer), modification (preprocessor simplification) and with Northrop Grumman, the large-scale porting of flight management software for the B-2 Spirit Bomber from JOVIAL to C. Interestingly, the B-2 port had to be done without Semantic Designs ever seeing the actual Jovial input code or the C output code! Future applications are intended to include problem-domain oriented reverse engineering by abstraction with human guidance. An interesting property of DMS is that much of it is constructed using itself and the various methods listed above.
- http://scicomp.com/
Scicomp Inc. tools generate code from systems of equations using finite difference, Monte Carlo, and similar methods. This technology is related to DSLGenTM in several ways. First via the DSLs. SciComp's equation-based DSL and DSLGenTM's Image Algebra both share the benefits of domain specific mathematical equation languages. Specifically, the equations can be easily manipulated (e.g., for the purpose of optimization) without the difficulties introduced by operational constructs such as programming control structures. Secondly, both systems generate optimized control structures -- DSLGenTM by algorithmically developing a logical architecture (LA) that guides the customization, assembling and merging the control elements introduced by individual DSL operators and operands, SciComp's system by merging equations into a network of algorithm templates (chosen from alternative algorithms appropriate to the domain) and then custom designing data structures and applying optimizing operator and control structure transformations.
SciComp's system has applicability to a rich set of problem domains (such as various types of wave modeling). A commercial version of the system, SciFinanceTM, is used by investment banks to automatically generate a wide variety of codes for pricing derivative securities.