ABSTRACT
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 non-code 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 solely from equational specifications, generating Java and non-Java artifacts automatically, a task that was accomplished only by ad hoc means previously.
- R. Balzer, "A Fifteen-Year Perspective on Automatic Programming", in Software Reusability II, T.J. Biggerstaff and A.J. Perlis, Eds., Addison-Wesley, 1989. Google ScholarDigital Library
- D. Batory and S. O'Malley, "The Design and Implementation of Hierarchical Software Systems with Reusable Components", ACM TOSEM, October 1992. Google ScholarDigital Library
- D. Batory and B.J. Geraci, "Composition Validation and Subjectivity in GenVoca Generators", IEEE Transactions on Software Engineering, Feb. 1997, 67--82. Google ScholarDigital Library
- D. Batory, B. Lofaso, and Y. Smaragdakis, "JTS: Tools for Implementing Domain-Specific Languages", 5th Int. Conf. on Software Reuse, Victoria, Canada, June 1998. Google ScholarDigital Library
- D. Batory, et al., "Design Wizards and Visual Programming Environments for GenVoca Generators", IEEE Trans. Software Engineering, May 2000, 441--452. Google ScholarDigital Library
- D. Batory, et al., "Achieving Extensibility Through Product-Lines and Domain-Specific Languages: A Case Study", ACM TOSEM, April 2002. Google ScholarDigital Library
- D. Batory, R.E. Lopez-Herrejon, J-P. Martin, "Generating Product-Lines of Product-Families", Automated Software Engineering, September 2002. Google ScholarDigital Library
- I. Baxter, "Design Maintenance Systems", CACM, April 1992. Google ScholarDigital Library
- E.W. Dijkstra, A Discipline of Programming. Prentice-Hall, 1976. Google ScholarDigital Library
- I. Forman and S. Danforth, Putting Metaclasses to Work, Addison-Wesley, 1999. Google ScholarDigital Library
- M. Flatt, S. Krishnamurthi, and M. Felleisen, "Classes and Mixins". ACM Principles of Programming Languages, San Diego, California, 1998, 171--183. Google ScholarDigital Library
- J. Gray, et al. "Handling Crosscutting Constraints in Domain-Specific Modeling", CACM October 2001. Google ScholarDigital Library
- M. Griss, "Implementing Product-Line Features by Composing Component Aspects", First International Software Product-Line Conference, Denver, August 2000. Google ScholarDigital Library
- W. Harrison and H. Ossher, "Subject-Oriented Programming (A Critique of Pure Objects)", OOPSLA 1993, 411--427. Google ScholarDigital Library
- W. Harrison, C. Barton, M. Raghavachari, "Mapping UML Designs to Java", OOPSLA 2000. Google ScholarDigital Library
- A. Hein, M. Schlick, R. Vinga-Martins, "Applying Feature Models in Industrial Settings", Software Product Line Conference (SPLC1), August 2000. Google ScholarDigital Library
- K.C. Kang, et al., Feature-Oriented Domain Analysis Feasibility Study, SEI 1990.Google Scholar
- G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin, "Aspect-Oriented Programming", ECOOP 97, 220--242.Google Scholar
- H. Li, S. Krishnamurthi, and K. Fisler, "Interfaces for Modular Feature Verification", Conf. Automated Software Engineering, 2002. Google ScholarDigital Library
- M. Mezini and K. Lieberherr, "Adaptive Plug-and-Play Components for Evolutionary Software Development", OOPSILA 1998, 97--116. Google ScholarDigital Library
- S. McDirmid, M. Flatt, and W.C. Hsieh, "Jiazzi: new-Age Components for Old-Fashioned Java", OOPSLA 2001. Google ScholarDigital Library
- H. Ossher and P. Tarr. "Using Multi-Dimensional Separation of Concerns to (Re)Shape Evolving Software." CACM 44(10): 43--50, October 2001. Google ScholarDigital Library
- T. Reenskaug, et al., "OORASS: Seamless Support for the Creation and Maintenance of Object-Oriented Systems", Jour. OO Programming, 5(6): October 1992, 27--41.Google Scholar
- Y. Smaragdakis and D. Batory, "Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs", to appear ACM TOSEM. Google ScholarDigital Library
- J. Sztipanovits and G Karsai, "Generative Programming for Embedded Systems", Generative Programming and Component-Based Engineering (GPCE), Pittsburgh, October 2002. Google ScholarDigital Library
- K.J. Sullivan, and D. Notkin, "Reconciling Environment Integration and Software Evolution", ACM TOSEM. 1, 3, July, 1992, 229--268. Google ScholarDigital Library
- P. Tarr, H. Ossher, W. Harrison, and S.M. Sutton, Jr., "N Degrees of Separation: Multi-Dimensional Separation of Concerns", ICSE 1999. Google ScholarDigital Library
- University of Texas Center for Agile Technology, "AHEAD Tool Documentation", 2002.Google Scholar
- M. Van Hilst and D. Notkin, "Using Role Components to Implement Collaboration-Based Designs", OOPSLA 1996, 359--369. Google ScholarDigital Library
- A.van Deursen and P. Klint, "Little Languages: Little Maintenance?", SIGPLAN Workshop on Domain-Spec. Lang., 1997.Google Scholar
- D. Weiss and C.T.R. Lai, Software Product-Line Engineering. Addison-Wesley, 1999. Google ScholarDigital Library
Index Terms
- Scaling step-wise refinement
Recommendations
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 ...
Refinement and state machine abstraction
Precise module interface specifications are essential in modular software development. The role of state in these specifications has been the issue of some debate and is central to the notion of data refinement. In previous work, Hoffman and Strooper ...
Testing for refinement in Circus
Circus combines constructs to define complex data operations and interactions; it integrates Z and CSP, and, distinctively, it is a language for refinement that can describe programs as well as specification and design models. The semantics is based on ...
Comments