Scaling step-wise refinement

Step-wise refinement is a powerful paradigm for developing a complex program from a simple program by adding features incrementally. We present the AHEAD (algebraic hierarchical equations for application design) model that shows how step-wise refinement scales to synthesize multiple programs and multiple noncode representations. AHEAD shows that software can have an elegant, hierarchical mathematical structure that is expressible as nested sets of equations. We review a tool set that supports AHEAD. As a demonstration of its viability, we have bootstrapped AHEAD tools from equational specifications, refining Java and nonJava artifacts automatically; a task that was accomplished only by ad hoc means previously.

[1]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[2]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[3]  W. Wulf,et al.  Fundamental Structures of Computer Science , 1980 .

[4]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[5]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1: Equations and Initial Semantics , 1985 .

[6]  Robert Balzer,et al.  A 15 Year Perspective on Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[7]  The logic of propagation in the inscape environment , 1989, TAV3.

[8]  R. Balzer A fifteen-year perspective on automatic programming , 1989 .

[9]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

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

[11]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 2: Module Specifications and Constraints , 1990 .

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

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

[14]  David Notkin,et al.  Reconciling environment integration and software evolution , 1992, TSEM.

[15]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[16]  David Notkin,et al.  Using role components in implement collaboration-based designs , 1996, OOPSLA '96.

[17]  Using Role Components to Implement Collaboration-Based Designs , 1996, OOPSLA.

[18]  Don S. Batory,et al.  Composition Validation and Subjectivity in GenVoca Generators , 1997, IEEE Trans. Software Eng..

[19]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[20]  Ira R. Forman Putting Metaclasses To Work , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[21]  Michael Jackson,et al.  Distributed Feature Composition: A Virtual Architecture for Telecommunications Services , 1998, IEEE Trans. Software Eng..

[22]  Adaptive Plug-and-Play Components for Evolutionary Software Development , 1998, OOPSLA.

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

[24]  Arie van Deursen,et al.  REPORT RAPPORT , 1997 .

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

[26]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[27]  Ira R. Forman,et al.  Putting metaclasses to work: a new dimension in object-oriented programming , 1999 .

[28]  Philip A. Bernstein,et al.  Microsoft Repository Version 2 and the Open Information Model , 1999, Inf. Syst..

[29]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .

[30]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[31]  Donald Sannella Algebraic Specification and Program Development by Stepwise Refinement , 1999, LOPSTR.

[32]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[33]  Gang Chen,et al.  Design Wizards and Visual Programming Environments for GenVoca Generators , 2000, IEEE Trans. Software Eng..

[34]  Martin L. Griss Implementing Product-line features by composing aspects , 2000, SPLC.

[35]  Mukund Raghavachari,et al.  Mapping UML designs to Java , 2000, OOPSLA '00.

[36]  Martin L. Griss Implementing Product-Line Features By Composing Component Aspects , 2000 .

[37]  Gary T. Leavens,et al.  MultiJava: modular open classes and symmetric multiple dispatch for Java , 2000, OOPSLA '00.

[38]  Andreas Hein,et al.  Applying feature models in industrial settings , 2000, SPLC.

[39]  Jeffrey G. Gray,et al.  Handling crosscutting constraints in domain-specific modeling , 2001, CACM.

[40]  Jiazzi: New-Age Components for Old-Fashioned Java , 2001, OOPSLA.

[41]  Roberto Erick Lopez-Herrejon,et al.  A Standard Problem for Evaluating Product-Line Methodologies , 2001, GCSE.

[42]  Matthew Flatt,et al.  Jiazzi: new-age components for old-fasioned Java , 2001, OOPSLA '01.

[43]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[44]  Christian Prehofer,et al.  Feature‐oriented programming: A new way of object composition , 2001, Concurr. Comput. Pract. Exp..

[45]  SridharanManu,et al.  A micromodularity mechanism , 2001 .

[46]  Harold Ossher,et al.  Using multidimensional separation of concerns to (re)shape evolving software , 2001, CACM.

[47]  Manu Sridharan,et al.  A micromodularity mechanism , 2001, ESEC/FSE-9.

[48]  Calvin Lin,et al.  Comparing frameworks and layered refinement , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[49]  Roberto Erick Lopez-Herrejon,et al.  Generating product-lines of product-families , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[50]  Kathi Fisler,et al.  Interfaces for modular feature verification , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

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

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

[53]  Don S. Batory,et al.  Achieving extensibility through product-lines and domain-specific languages: a case study , 2000, TSEM.

[54]  Tony Clark,et al.  Model-driven development - Guest editor's introduction , 2003 .

[55]  Gerard J. Holzmann,et al.  The SPIN Model Checker - primer and reference manual , 2003 .

[56]  Jia Liu,et al.  Refinements and multi-dimensional separation of concerns , 2003, ESEC/FSE-11.

[57]  Pamela Zave,et al.  An experiment in feature engineering , 2003 .

[58]  Peter D. Mosses,et al.  CASL User Manual: Introduction to Using the Common Algebraic Specification Language , 2004 .

[59]  Jia Liu,et al.  Automatic Remodularization and Optimized Synthesis of Product-Families , 2004, GPCE.

[60]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[61]  David M. Weiss,et al.  Software Product Line Engineering , 2005, SEKE.