This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Scaling Step-Wise Refinement
June 2004 (vol. 30 no. 6)
pp. 355-371

AbstractStep-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 non-Java artifacts automatically; a task that was accomplished only by ad hoc means previously.

[1] R. Balzer, A Fifteen-Year Perspective on Automatic Programming Software Reusability II, T.J. Biggerstaff and A.J. Perlis, eds., Addison-Wesley, 1989.
[2] D. Batory and S. O'Malley, The Design and Implementation of Hierarchical Software Systems with Reusable Components ACM Trans. Software Eng. Methodology, Oct. 1992.
[3] D. Batory and B.J. Geraci, ”Composition Validation and Subjectivity in (GenVoca) Generators,” IEEE Trans. Software Eng., vol. 23, no. 2, pp. 67–82, Feb. 1997.
[4] D. Batory, B. Lofaso, and Y. Smaragdakis, JTS: Tools for Implementing Domain-Specific Languages Proc. Fifth Int'l Conf. Software Reuse, June 1998.
[5] D. Batory, G. Chen, E. Robertson, and T. Wang, Design Wizards and Visual Programming Environments for GenVoca Generators IEEE Trans. Software Eng., vol. 26, no. 5, pp. 441-452, May 2000.
[6] D. Batory et al., Achieving Extensibility through Product Lines and Domain-Specific Languages: A Case Study ACM Trans. Software Eng. and Methodology, Apr. 2002.
[7] D. Batory, R.E. Lopez-Herrejon, and J.-P. Martin, Generating Product lines of Product-Families Automated Software Eng., Sept. 2002.
[8] D. Batory, J. Liu, and J.N. Sarvela, Refinements and Multi-Dimensional Separation of Concerns Proc. ACM SIGSOFT Conf. (ESEC/FSE2003), 2003.
[9] I. Baxter, Design Maintenance Systems Comm. ACM, Apr. 1992.
[10] P.A. Bernstein, T. Bergstraesser, J. Carlson, S. Pal, P. Sanders, and D. Shutt, Microsoft Repository Version 2 and the Open Information Model Information Systems, vol. 24, no. 2, pp. 71-98, 1999.
[11] M. Bidoit and P.D. Mosses, Common Algebraic Specification Language User Manual Lecture Notes in Computer Science, IFIP Series, Springer-Verlag, 2003.
[12] Logic Programming Synthesis and Transformation Proc. Ninth Int'l Workshop Logic-Based Program Synthesis and Transformation (LOPSTR '99), A. Bossi, ed., Sept. 1999.
[13] G. Bracha and W. Cook, Mixin-Based Inheritance Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 303-311, 1990.
[14] R. Burstall and J. Goguen, Putting Theories Together to Make Specifications Proc. Fifth Int'l Joint Conf. Artificial Intelligence, pp. 1045-1058, 1977.
[15] R. Cardone and C. Lin, Comparing Frameworks and Layered Refinement Proc. Int'l Conf. Software Eng., pp. 285-294, 2001.
[16] C. Clifton, G.T. Leavens, C. Chambers, and T. Millstein, MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 130-145, 2000.
[17] E.W. Dijkstra, A Discipline of Programming. Prentice Hall, 1976.
[18] H. Ehrig and B. Mahr, Fundamentals of Algebraic Specification 1: Equations and Initial Semantics. Springer, 1985.
[19] H. Ehrig, B. Mahr, Fundamentals of Algebraic Specification 2: Module Specifications and Constraints. Springer, 1990.
[20] I. Forman and S. Danforth, Putting Metaclasses to Work. Addison-Wesley, 1999.
[21] M. Flatt, S. Krishnamurthi, and M. Felleisen, Classes and Mixins ACM Principles of Programming Languages, pp. 171-183, 1998.
[22] J. Gray, T. Bapty, S. Neema, and J. Tuck, Handling Crosscutting Constraints in Domain-Specific Modeling Comm. ACM, Oct. 2001.
[23] M. Griss, Implementing Product line Features by Composing Component Aspects Proc. First Int'l Software Product Line Conf., Aug. 2000.
[24] W. Harrison and H. Ossher, Subject-Oriented Programming (a Critique of Pure Objects) Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 411-427, 1993.
[25] W. Harrison, C. Barton, and M. Raghavachari, Mapping UML Designs to Java Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, 2000.
[26] A. Hein, M. Schlick, and R. Vinga-Martins, Applying Feature Models in Industrial Settings Proc. Software Product Line Conf. (SPLC1), Aug. 2000.
[27] G.J. Holzmann, The SPIN Model Checker: Primer and Reference Manual. Pearson Educational, Sept. 2003.
[28] D. Jackson, I. Shlyakhter, and M. Sridharan, A Micromodularity Mechanism ACM SIGSOFT Conf. (FSE/ESEC '01), Sept. 2001.
[29] M. Jackson and P. Zave, Distributed Feature Composition: A Virtual Architecture for Telecommunications Services IEEE Trans. Software Eng., vol. 24, no. 10, pp. 831-847, Oct. 1998.
[30] J. Liu and D. Batory, Automatic Remodularization and Optimized Synthesis of Product-Families to appear.
[31] R.E. Lopez-Herrejon and D. Batory, A Standard Problem for Evaluating Product line Methodologies Proc. 2001 Conf. Generative and Component-Based Software Eng., 2001.
[32] K.C. Kang, S. Cohen, J. Hess, W. Novak, and S. Peterson, Feature-Oriented Domain Analysis Feasibility Study Technical Report CMU/SEI-90-TR-21, Software Eng. Inst., Carnegie-Mellon Univ., 1990.
[33] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin, Aspect-Oriented Programming Proc. Ann. European Conf. Object-Oriented Programming, pp. 220-242, 1997.
[34] H. Li, S. Krishnamurthi, and K. Fisler, Interfaces for Modular Feature Verification Proc. Conf. Automated Software Eng., 2002.
[35] M. Mezini and K. Lieberherr, Adaptive Plug-and-Play Components for Evolutionary Software Development Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 97-116, 1998.
[36] S. McDirmid, M. Flatt, and W.C. Hsieh, Jiazzi: New-Age Components for Old-Fashioned Java Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, 2001.
[37] S.J. Mellor, A.N. Clark, and T. Futagami, Model-Driven Development IEEE Software, no. 5, pp. 14-18, Sept./Oct. 2003.
[38] M. Nenninger and F. Nickl, Implementing Data Structures by Composition of Reusable Components: A Formal Approach Proc. ICSE-17 Workshop Formal Methods Application in Software Eng. Practice, M. Wirsing, ed., Apr. 1995.
[39] H. Ossher and P. Tarr, Using Multi-Dimensional Separation of Concerns to (Re)Shape Evolving Software Comm. ACM, vol. 44, no. 10, pp. 43-50, Oct. 2001.
[40] D. Perry, The Logic of Propagation in the INSCAPE Environment Proc. ACM SIGSOFT Conf., 1989.
[41] C. Prehofer, Feature-Oriented Programming: A Fresh Look at Objects Proc. Ann. European Conf. Object-Oriented Programming, 1997.
[42] C. Prehofer, Feature-Oriented Programming: A New Way of Object Composition Concurrency and Computation, vol. 13, 2001.
[43] T. Reenskaug et al., OORASS: Seamless Support for the Creation and Maintenance of Object-Oriented Systems J. OO Programming, vol. 5, no. 6, pp. 27-41, Oct. 1992.
[44] D. Sannella, Algebraic Specification and Program Development by Stepwise Refinement Logic Program Synthesis and Transformation, pp. 1-9, 1999.
[45] Y. Smaragdakis and D. Batory, Mixin Layers: An Object-Oriented Implementation Technique for Refinements and CollaborationBased Designs ACM Trans. Software Eng. Methodology, Apr. 2002.
[46] J. Sztipanovits and G. Karsai, Generative Programming for Embedded Systems Proc. Conf. Generative Programming and Component-Based Eng. (GPCE), Oct. 2002.
[47] K.J. Sullivan and D. Notkin, Reconciling Environment Integration and Software Evolution ACM Trans. Software Eng. Methodology, vol. 1, no. 3, pp. 229-268, July 1992.
[48] P. Tarr, H. Ossher, W. Harrison, and S.M. Sutton Jr., N Degrees of Separation: Multi-Dimensional Separation of Concerns Proc. Int'l Conf. Software Eng., 1999.
[49] Univ. of Texas Center for Agile Tech nology, AHEAD Tool Documentation 2002.
[50] M. VanHilst and D. Notkin, Using Role Components to Implement CollaborationBased Designs Proc. Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 359-369, 1996.
[51] A. vanDeursen and P. Klint, Little Languages: Little Maintenance? Proc. SIGPLAN Workshop Domain-Specification Language, 1997.
[52] D. Weiss and C.T.R. Lai, Software Product Line Engineering. Addison-Wesley, 1999.
[53] M. Wirsing, Algebraic Specification Handbook of Theoretical Computer Science, pp. 676-788, 1990.
[54] W.A. Wolf, M. Shaw, P.N. Hilfinger, and L. Flon, Fundamental Structures of Computer Science. Addison-Wesley, 1981.
[55] P. Zave, An Experiment in Feature Engineering Programming Methodology, pp. 353-377, 2003.

Index Terms:
Specification, design notations and documentation, representation, design concepts, methodologies, data abstraction, extensible languages, program synthesis, feature-oriented programming, refinement.
Citation:
Don Batory, Jacob Neal Sarvela, Axel Rauschmayer, "Scaling Step-Wise Refinement," IEEE Transactions on Software Engineering, vol. 30, no. 6, pp. 355-371, June 2004, doi:10.1109/TSE.2004.23
Usage of this product signifies your acceptance of the Terms of Use.