This Article 
 Bibliographic References 
 Add to: 
EVA: A Flexible Programming Method for Evolving Systems
May 1997 (vol. 23 no. 5)
pp. 296-313

Abstract—Our goal is to establish a flexible programming support for evolving systems that will enable us to modify programs using less labor, while maintaining good quality during service life. EVA (EVolution mechanism for flexible Agent) was developed to allow a flexible programming support system to be constructed based on our programming method for evolving systems. We consider that programming methods for evolving systems need to satisfy the following essential conditions. First, they need to make it easy to specify changes in a system in terms of new requirements. Second, they need to have a procedure for transmitting the new requirements to a program. Third, they need to be able to guarantee that the resultant program will meet the new requirements. Finally, because of the repetitive nature of much evolving systems work, they need to provide for the reuse of similar modifications during programming.

In order to overcome limitations in program modification techniques which have only considered programming products, programming processes have been introduced into our method. To achieve our goal, we have formulated programming products and programming processes using such formal techniques as functional programming, type theory, modules, parameterized programming and natural deduction, and have constructed a mechanism of reusing these formal programming processes. This paper explains a case study which shows how to develop an evolving system using EVA and it discusses how we can use EVA's mechanism effectively.

[1] K. Brockschmidt, Inside OLE, second edition, Microsoft Press, 1995.
[2] R. Balzer, "A 15 Year Perspective on Automatic Programming," T.J. Biggerstaff et al., eds., Software Reusability, vol. I, Concepts and Models. Addison-Wesley, 1989.
[3] R. Bird and P. Wadler, Introduction to Functional Programming. Prentice Hall, 1988.
[4] L. Cardelli and P. Wegner, "On Understanding Types, Data Abstraction, and Polymorphism," ACM Computing Surveys, vol. 17, no. 4, pp. 471-522, 1985.
[5] J.G. Carbonell, "Derivational Analogy, A Theory of Reconstructive Problem Solving and Expertise Acquisition," R.S. Michalski et al., eds., Machine Learning II, An Artificial Intelligence Approach. Morgan Kaufmann, 1986.
[6] N. Dershowitz, "Program by Analogy," R.S. Michalski et al., eds., Machine Learning II, An Artificial Intelligence Approach. Morgan Kaufmann, 1986.
[7] M.S. Feather, "Constructing Specifications by Combining Parallel Elaboration," IEEE Trans. Software Eng., vol. 15, no. 2, pp. 198-208, 1989.
[8] K. Futatsugi, J. Goguen, J. Meseguer, and K. Okada, "Parameterized Programming in OBJ2," Proc. Ninth Int'l Conf. Software Eng., pp. 51-60, 1987.
[9] J. Goguen, "Principles of Parameterized Programming," Software Reusability, Volume I: Concepts and Models, T. Biggerstaff and A. Perlis, eds., Addison-Wesley, New York, 1989, pp. 159-225.
[10] J.A. Goguen, "Parameterized Programming," Trans. Software Eng., vol. 10, no. 5, pp. 528-543, 1984.
[11] A. Goldberg, "Reusing Software Developments," Proc. Fourth ACM SIGSOFT Symp. Software Development Environment, vol. 15, pp. 107-119, 1990.
[12] D. Gries, The Science of Programming.New York, Heidelberg, Berlin: Springer-Verlag, 1981.
[13] W.L. Johnson and M. Feather, "Building An Evolution Transformation Library," Proc. 12th Int'l Conf. Software Eng., pp. 238-248, Nice, France, IEEE CS Press, Mar. 1990.
[14] S. Kahrs, D. Sannella, and A. Tarlecki, "The Definition of Extended ML," Report ECS-LFCS-94-300, Univ. of Edinburgh, 1994.
[15] J. Kolodner and C. Riesbeck, "Case-Based Reasoning, IJCAI-89 Tutorial-MA2, 1989.
[16] C. Krueger, “Software Reuse,” ACM Computing Surveys, June 1992, pp. 131‐183.
[17] J. Lu and J. Xu, "Analogical Program Derivation Based on Type Theory, Theoretical Computer Science, vol. 113, pp. 259-272, 1993.
[18] S. Matsuura and S. Honiden, "Knowledge Acquisition and Integration on Specification Change—A Method for Systematic Reuse—, APSEC '95 Asia Pacific Software Eng. Conf., pp. 364-373, 1995.
[19] R. Milner, M. Tofte, and R. Harper, The Definition of Standard ML. MIT Press, 1990.
[20] J. Mostow, "Design by Derivational Analogy," Issues in the Automated Replay of Design Plans, Machine Learning, MIT Press, pp. 119-184, 1990.
[21] L.C. Paulson, ML for the Working Programmer. Cambridge Univ. Press, 1991.
[22] H. Partsch and R. Steinbruggen, "Program Transformation Systems," ACM Computing Survey, vol. 15, no. 3, pp. 199-236, Sept. 1983.
[23] C. Rich, H.E. Shrobe, and R.C. Waters, "Overview of the Programmer's Apprentice," IEEE Trans Software Eng., vol. 4, no. 6, 1979.
[24] D.T. Sannella and A. Tarlecki, "Toward Formal Development of ML "Program: Foundations and Methodology," J. Diaz and F. Orejas eds., Proc. TAPS OFT '89, vol. 2, pp. 375-389, Lecture Notes in Computer Science 352, Springer-Verlag, 1989.
[25] D.R. Smith, KIDS: A Semiautomatic Program Development System IEEE Trans. Software Eng., vol. 16, no. 9, pp. 1024-1043, 1990.
[26] D.R. Smith, "Toward a Classification Approach to Design, Proc. Fifth Int'l Conf. Algebraic Methodology and Software Technology, AMAST'96, LNCS, Springer-Verlag, 1996.
[27] David W. Wile, "Program Developments: Formal Explanations of Implementations," Comm. ACM, vol. 26, p. 903, Nov. 1983.

Index Terms:
Programming support system, reuse, programming process, formal programming techniques.
Saeko Matsuura, Hironobu Kuruma, Shinichi Honiden, "EVA: A Flexible Programming Method for Evolving Systems," IEEE Transactions on Software Engineering, vol. 23, no. 5, pp. 296-313, May 1997, doi:10.1109/32.588522
Usage of this product signifies your acceptance of the Terms of Use.