A Modeling Language for Program Design and Synthesis

Software engineers define structures called programs and use tools to manipulate, transform, and analyze them. A modeling language is needed to express program design and synthesis as a computation, and elementary algebra fits the bill. I review recent results in automated software design, testing, and maintenance and use the language of elementary mathematics to explain and relate them. Doing so outlines a general and simple way to express and under stand the relationships between different topics in program synthesis.

[1]  Benjamin C. Pierce,et al.  Basic category theory for computer scientists , 1991, Foundations of computing.

[2]  Mike Bond,et al.  Modeling Partial Attacks with Alloy , 2007, Security Protocols Workshop.

[3]  Gabor Karsai,et al.  Generative programming for embedded systems , 2002, PPDP '02.

[4]  Debra J. Richardson,et al.  Structural specification-based testing: automated support and experimental evaluation , 1999, ESEC/FSE-7.

[5]  Mana Taghdiri,et al.  Inferring specifications to detect errors in code , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[6]  Sarfraz Khurshid,et al.  TestEra: a novel framework for automated testing of Java programs , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[7]  Volker Gruhn,et al.  Model-Driven Software Development , 2005 .

[8]  Egon Börger,et al.  Modularizing Theorems for Software Product Lines: The Jbook Case Study , 2008, J. Univers. Comput. Sci..

[9]  Patricia G. Selinger,et al.  Access path selection in a relational database management system , 1979, SIGMOD '79.

[10]  Sarfraz Khurshid,et al.  A specification-based approach to testing software product lines , 2007, ESEC-FSE '07.

[11]  Emina Torlak,et al.  Kodkod: A Relational Model Finder , 2007, TACAS.

[12]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

[13]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[14]  Don S. Batory Program Refactoring, Program Synthesis, and Model-Driven Development , 2007, CC.

[15]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[16]  Andrew P. Black,et al.  Removing duplication from java.io: a case study using traits , 2005, OOPSLA '05.

[17]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

[18]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[19]  Sarfraz Khurshid,et al.  Testing Software Product Lines Using Incremental Test Generation , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[20]  Kathi Fisler,et al.  Modular verification of collaboration-based software designs , 2001, ESEC/FSE-9.

[21]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[22]  Oscar Díaz,et al.  Generative metaprogramming , 2007, GPCE '07.

[23]  A. U.S.,et al.  Finite Map Spaces and Quarks : Algebras of Program Structure , 2007 .

[24]  Sarfraz Khurshid,et al.  Constraint Prioritization for Efficient Analysis of Declarative Models , 2008, FM.

[25]  Sarfraz Khurshid,et al.  Generating structurally complex tests from declarative constraints , 2004 .

[26]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[27]  Oscar Díaz,et al.  Feature Oriented Model Driven Development: A Case Study for Portlets , 2007, 29th International Conference on Software Engineering (ICSE'07).

[28]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[29]  Kathi Fisler,et al.  Verifying aspect advice modularly , 2004, SIGSOFT '04/FSE-12.

[30]  Markus Völter,et al.  Model-Driven Software Development: Technology, Engineering, Management , 2006 .

[31]  Don S. Batory,et al.  On the modularity of feature interactions , 2008, GPCE '08.

[32]  Daniel Jackson,et al.  Alcoa: the Alloy constraint analyzer , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[33]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[34]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[35]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[36]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[37]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[38]  John B. Goodenough,et al.  Correction to "toward a theory of test data selection" , 1975, IEEE Transactions on Software Engineering.

[39]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[40]  Dusko Pavlovic,et al.  Software Development by Refinement , 2002, 10th Anniversary Colloquium of UNU/IIST.

[41]  M. Ehrgott Multiobjective Optimization , 2008, AI Mag..

[42]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[43]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.