Skip to main content
Log in

Inductive specification recovery: Understanding software by learning from example behaviors

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

We describe a technique for extracting specifications from software using machine learning techniques. In our proposed technique, instrumented code is run on a number of representative test cases, generating examples of its behavior. Inductive learning techniques are then used to generalize these examples, forming a general description of some aspect of the system's behavior. A case study is presented in which this “inductive specification recovery” method is used to find Datalog specifications forC code that implements database views, in the context of a large real-world software system. It is demonstrated that off-the-shelf inductive logic programming methods can be successfully used for specification recovery in this domain, but that these methods can be substantially improved by adapting them more closely to the task at hand.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Bell, S. and Weber, S. 1993. On the close logical relationship between foil and the frameworks of Helft and Weber. InProceedings of the Third International Workshop on Inductive Logic Programming, Bled, Slovenia.

  • Biggerstaff, T.J. 1989. Design recovery for maintenance and reuse.IEEE Computer, 36–49.

  • Bratko, I. and Grobelnik, M. 1993. Inductive learning applied to program construction and verification. InProceedings of the Third International Workshop on Inductive Logic Programming, Bled, Slovenia.

  • Breuer, P.T. and Lano, K. 1991. Creating specifications from code: Reverse engineering techniques.Journal of Software Maintenance: Research and Practice, 3:145–162.

    Google Scholar 

  • Cohen, W.W. 1992. Compiling knowledge into an explicit bias. InProceedings of the Ninth International Conference on Machine Learning, Aberdeen, Scotland, Morgan Kaufmann.

    Google Scholar 

  • Cohen, W.W. 1993. Cryptographic limitations on learning one-clause logic programs. InProceedings of the Tenth National Conference on Artificial Intelligence, Washington, D.C.

  • Cohen, W.W. 1993. Learnability of restricted logic programs. InProceedings of the Third International Workshop on Inductive Logic Programming, Bled, Slovenia.

  • Cohen, W.W. 1993. Rapid prototyping of ILP systems using explicit bias. InProceedings of the 1993 IJCAI Workshop on Inductive Logic Programming, Chambery, France.

  • Cohen, W.W. 1994. Grammatically biased learning: learning logic programs using an explicit antecedent description language.Artificial Intelligence, 303–366.

  • Cohen, W.W. 1994. Pac-learning nondeterminate clauses. InProceedings of the Eleventh National Conference on Artificial Intelligence, Seattle, WA.

  • Corbi, T.A. 1989. Program understanding: challenge for the 1990s.IBM Systems Journal, 28(2):294–306.

    Google Scholar 

  • Griffin, T. and Trickey, H. 1994. Integrity maintenance in a telecommunications switch.IEEE Data Engineering Bulletin, 17(2).

  • Kietz, J.-U. and Wrobel, S. 1992. Controlling the complexity of learning in logic through syntactic and taskoriented models. InInductive Logic Programming. Academic Press.

  • Kietz, J.-U. 1993. Some computational lower bounds for the computational complexity of inductive logic programming. InProceedings of the 1993 European Conference on Machine Learning, Vienna, Austria.

  • Kozaczynski, W. and Ning, J. 1990. SRE: A knowledge based environment for large scale software re-engineering activities. InProceedings of the 11th International Conference on Software Engineering.

  • Mooney, R.J. 1993. Induction over the unexplained: Using overly-general domain theories to aid concept learning.Machine Learning, 10(1).

  • Muggleton, S. and Feng, C. 1992. Efficient induction of logic programs. InInductive Logic Programming. Academic Press.

  • Parikh, G. and Zvegintzov, N. (eds.) 1983.Tutorial on Software Maintenance. IEEE Computer Society Press.

  • Pazzani, M. and Kibler, D. 1992. The utility of knowledge in inductive learning.Machine Learning, 9(1).

  • Quinlan, J.R. and Cameron-Jones, R.M. 1993. FOIL: A midterm report. In P.B. Brazdil, editor,Machine Learning: ECML-93, Vienna, Austria. Springer-Verlag. Lecture notes in Computer Science # 667.

  • Quinlan, J.R. 1990. Learning logical definitions from relations.Machine Learning, 5(3).

  • Rich, C. and Willis, L. 1990. Recognizing a program's design: A graph-parsing approach.IEEE Software, 82–89.

  • Riddle, P. and ad Oren Etzioni, R.S. 1994. Representation design and brute-force induction in a Boeing manufacturing domain.Applied Artificial Intelligence, 8:125–147.

    Google Scholar 

  • Russell, S. 1989.The Use of Knowledge in Analogy and Induction. Morgan Kaufmann.

  • Schlimmer, J.C. 1992. Efficiently inducing determinations: a complete and systematic search algorithm that uses optimal pruning. InProceedings of the Tenth International Conference on Machine Learning, Amherst, Massachusetts. Morgan Kaufmann.

  • Sterling, L. and Shapiro, E. 1986.The Art of Prolog: Advanced Programming Techniques. MIT Press.

  • Weiss, S. and Kulkowski, C. 1990.Computer Systems that Learn. Morgan Kaufmann.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Cohen, W.W. Inductive specification recovery: Understanding software by learning from example behaviors. Autom Software Eng 2, 107–129 (1995). https://doi.org/10.1007/BF00871824

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF00871824

Keywords

Navigation