Abstract
We examine the adaptation of classical machine learning selection criteria to ensure or improve the predictiveness of specifications. Moreover, inspired in incremental learning, software construction is also seen as an incremental process which must generate and revise the specification with the main goal of being predictive to requirements evolution. The new goal is not necessarily to achieve the highest accuracy at the end of a first prototype or version, but to maximise the cumulative benefits obtained throughout the entire software life-cycle. This suggests a new software life-cycle, whose main characteristic is to move modifications earlier, by using more eager inductive techniques, and reducing overall modification probability. This new predictive software life-cycle is particularised for the case of (functional) logic programming, placing the deductive/inductive techniques necessary for each stage of the life-cycle. The maturity of each stage and the practical possibilities for a (semi-)automation of the cycle based on declarative techniques are also discussed.
Similar content being viewed by others
References
Abe, N. 1997. Towards realistic theories of learning. New Generation Computing, 15:3–25.
Aha, D.W. 1997. Lazy learning. Editorial. Special issue about “Lazy Learning” of Artificial Intelligence Review, 11:1–5.
Alferes, J.J., Leite, J.A., Pereira, L.M., Przymusinska, H., and Przymusinski, T.C. 1998. Dynamic logic programming, In Proc. Joint Conf. of Declarative Prog., Freire et al. (Eds.) pp. 393–408.
Angluin, D. 1987. Learning regular sets from queries and counterexamples. Information and Computation, 75:87–106.
Angluin, D. 1988. Queries and concept learning. Machine Learning, 2(4):319–342.
Balzer, R. 1985. A 15 year perspective on automatic programming, IEEE Transactions on Software Engineering, 11(11):1257–1268.
Barker, S.F. 1957. Induction and Hypothesis. Ithaca: Cornell University Press.
Barron, A., Rissanen, J., and Yu, B. 1998. The minimum description length principle in coding and modeling. IEEE Transactions on Information Theory, 44(6):2743–2760.
Bergadano, F. and Gunetti, D. 1995. Inductive Logic Programming. Cambridge, MA: The MIT Press.
Berry, D.M. and Lawrence, B. 1998. Requirements Engineering. IEEE Software, 15(2):26–29.
Boehm, B.W. 1981. Software Engineering Economics. Englewood Cliffs, N.J.: Prentice Hall.
van den Bosch, A. 1994. Simplicity and prediction. Masters Thesis, Department of Science, Logic & Epistemology of the Faculty of Philosophy at the University of Groningen.
Bratko, I. and Dzeroski, S. 1995. Engineering Applications of ILP. New Generation Computing, 13:313–333.
Cendrowska, J. 1987. PRIS: An algorithm for inducing modular rules. International Journal of Man–Machines Studies, 27:349–370.
Cox, B. 1987. Object Oriented Programming. An Evolutionary Approach. Reading, MA: Addison Wesley.
Cuena, J. (Ed.) 1993. Knowledge–Oriented Software Design. Amsterdam, North Holland.
Dershowitz, N. and Reddy, U.S. 1993. Deductive and inductive synthesis of equational programs. Journal of Symbolic Computation, 15:467–494.
Ernis, R. 1968. Enumerative induction and best explanation, The Journal of Philosophy, 65(18):523–529.
Ferri–Ramírez, C., Hernández–Orallo, J., and Ramírez–Quintana, M.J. 2000. FLIP: User's Manual, Dpto. de Sistemas Informáticos y Computación, Valencia, TR: (II–DSIC–24/00).
Flach, P.A. and Kakas, A.C. (Eds.) 2000. Abduction and Induction: Essays on their Relation and Integration. Dordrecht: Kluwer Academic Publishers.
Flener, P. and Yilmaz, S. 1999. Inductive synthesis of recursive logic programs: Achievements and prospects. The Journal of Logic Programming, 41:141–195.
Gold, E.M. 1967. Language Identification in the Limit. Inform and Control, 10:447–474.
Goldberg, D.E. 1994. Genetic and evolutionary algorithms come of age. Comm. of the ACM, 37(3):113–119.
Guida, G. and Tasso, C. 1994. Design and development of knowledge–based systems. New York: John Wiley & Sons.
Harman, G. 1965. The inference to the best explanation. Philosophical Review, 74:88–95.
Hempel, C.G. 1965. Aspects of Scientific Explanation. New York, N.Y.: The Free Press.
Hernández–Orallo, J. 2000. Constructive reinforcement learning, International Journal of Intelligent Systems, 15(3):241–264.
Hernández–Orallo, J. and Ramírez–Quintana, M.J. 1998. Induction of functional logic programs. In JICSLP'98 CompulogNet Area Meeting on Computational Logic and Machine Learning, Lloyd, editor, pp. 49–55.
Hernández–Orallo, J. and Ramírez–Quintana, M.J. 1999. A strong complete schema for inductive functional logic programming. In Inductive Logic Programming'99 (ILP'99), P. Flach and S. Dzeroski, editors. in V. 1634 of the LNAI series, pp. 116–127, Springer–Verlag, Berlin.
Hernández–Orallo, J. and Ramírez–Quintana, M.J. 2000. Software as learning. Quality factors and life–cycle revised, Foundational Approaches to Software Engineering, Berlin (FASE'2000 / ETAPS'2000) appeared in T. Maibaum, editor, Fundamental Approaches to Software Engineering, vol. 1783, pp. 147–162, of the Lecture Notes in Computer Science (LNCS) series, Springer–Verlag, Berlin.
Humphrey, W.S. 1990. Managing the Software Process. London: Addison–Wesley.
Jones, N.D., Gomard, C.K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Englewood Cliffs, N.J.: Prentice Hall.
Kaelbling, L., Littman, M., and Moore, A. 1996. Reinforcement earning: A survey. Journal of Artificial Intelligence Research, 4:237–285.
Kakas, A.C., Kowalski, R.A., and Toni, F. 1992. Abductive logic programming. J. of Logic and Computation, 2(6):719–770.
Katsuno, H. and Mendelzon, A. 1991. On the difference between updating a knowledge base and revising it. In J. Allen, R. Fikes, and E. Sandewall, editors, Principles of Knowledge Representation and Reasoning, Proceedings of the Second International Conference (KR91), pp. 230–237.
Kuhn, T.S. 1970. The Structure of Scientific Revolutions. Chicago: University of Chicago.
Kuvaja, P. 1994. Software Process Assessment and Improvement: The Bootstrap Approach. Blackwell. Cambridge, MA.
Lavrac, N. 1998. ILP. The next years. In JICSLP '98 CompulogNet Meeting on Computational Logic and Machine Learning, Lloyd, editor.
Lavrac, N. and Dzeroski, S. 1994. Inductive Logic Programming: Techniques and Applications. Chichester: Ellis Horwood.
Li, M. and Vitányi, P. 1997. An Introduction to Kolmogorov Complexity and its Applications. 2nd ed. New York: Springer.
Lieberherr, K.J. 1996. Adaptive Object–Oriented Software: The Demeter Method with Propagation Patterns, Boston: PWS Publishing Company.
Lieberman, H. (Guest editor) 2000. Programming by example. Special Issue. Comm. of the ACM, 43(3):73–114.
López de Mántaras, R. and Armengol, E. 1998. Machine learning from examples: Inductive and lazy methods. Data & Knowledge Engineering, 25:99–123.
Mitchell, T.M. 1997. Machine Learning. Singapore: McGraw–Hill International Editions.
Mooney, R.J. 1997. Integrating abduction and induction in machine learning. In Proceedings of the IJCAI'97 Workshop on Abduction and Induction in AI, P. Flach and A. Kakas, editors.
Muggleton, S. 1991. Inductive logic programming. New Generation Computing, 8(4):295–318.
Muggleton, S. and De Raedt, L. 1994. Inductive logic programming—theory and methods. Journal of Logic Programming, 19–20:629–679.
Muggleton, S. and Michie, D. 1996. Machine intelligibiity and the duality principle. British Telecom Technology Journal http://www.cs.york.ac.uk/mlg/. 14(4):15–23.
Muggleton, S. and Page, C.D. 1999. A learnability model for universal representations. Technical Report PRG–TR–3–99, Oxford University Computing. Lab. http://www.cs.york.ac.uk/mlg/, submitted.
Natarajan, B.K. 1991. Machine Learning: A Theoretical Approach. Morgan Kaufmann.
Nishida, F., Takamatsu, S., Fujita, Y., and Tani, T. 1991. Semi–automatic program construction from specifications using library modules. IEEE Trans. on Software Eng, 17(9):853–871.
Olson, R. 1995. Inductive functional programming using incremental program transformation. Artificial Intelligence, 74(1):55–81.
Partridge, D. 1997. The case for inductive programming. IEEE Computer, 30(1):36–41.
Pettorossi, A. and Proietti, M. 1996a. Rules and strategies for transforming functional and logic programs. ACM Computing Surveys, 28(2):360–414.
Pettorossi, A. and Proietti, M., 1996b. Developing correct and efficient logic programs by transformation. Knowledge Engineering Review, 11(4):347–360.
Popper, K.R. 1968. Conjectures and Refutations: The Growth of Scientific Knowledge. New York: Basic Books.
Pressman, R.S. 1997. Software Engineering: A Practitioner's Approach. New York: McGraw–Hill.
Proietti, M. and Pettorossi, A. 1990. Synthesis of eureka predicates for developing logic programs. In Proceedings of ESOP '90, Copenhagen, Lecture Notes in Computer Science 432, Springer Verlag, Berlin, pp. 306–325.
Rich, C. and Shrobe, H. 1978. Initial report on a lisp programmer's apprentice. IEEE Transactions on Software Engineering, SE–4(6):41–49.
Richards, B.L. and Mooney, R.J. 1995. Automated refinement of first–order horn–clause domain theories. Machine Learning, 19(2):95–131.
Rissanen, J. 1978. Modelling by the shortest data description. Automatica–J.IFAC, 14:465–471.
Robertson, D. and Agusti, J. 1998. Software Blueprints. Lightweight Uses of Logic in Conceptual Modelling. Addison Wesley, Reading, MA: vol. 7,no. 5, pp. 8–12.
Rumbaugh, J. 1994. Getting started: Using use cases to capture requirements. J. Object–Oriented Programming.
Sannella, D.T. and Wallen, L.A. 1992. A calculus for the construction of modular prolog programs. Journal of Logic Programming, 12:147–177.
Scacchi, W. 1991. Understanding software productivity: Toward a knowledge–based approach. Int. J. Software Eng. and Knowledge Eng., 1:293–320.
Shoham, Y. 1993. Agent–oriented Programming. Artificial Intelligence, 60(1):51–92.
Shrager, J. and Langley, P. 1990. Computational Models of Scientific Discovery and Theory Formation. San Francisco: Morgan Kaufman.
Solomonoff, R.J. 1964. A formal theory of inductive inference. Inf. Control, 7(1–22):224–254.
Sutton, R.S. 1992. Special issue on reinforcement learning. Machine Learning, 8(3–4) May.
Tessem, B., Bjørnestad, S., Tornes, K.M., and Steine–Eriksen, G. 1994. ROSA = Reuse of Object–Oriented Specifications Though Analogy: A Project Framework. Report no. 16.
Thagard, P. 1989. Explanatory coherence, The Behavioural and Brain Sciences, 12(3):435–502.
Valiant, L. 1984. A theory of the learnable. Communication of the ACM, 27(11):1134–1142.
Wegner, P. 1998. Interactive Foundations of Computer. Theoretical Computer Science, 192(2):315–351.
Whewell, W. 1847. The Philosophy of the Inductive Sciences. New York: Johnson Reprint Corp.
Wrobel, S. 1996. First order theory refinement. In Advances in Inductive Logic Programming, L. De Raedt, editor, Amsterdam: IOS Press, pp. 14–33.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Hernández-Orallo, J., José Ramírez-Quintana, M. Predictive Software. Automated Software Engineering 8, 139–166 (2001). https://doi.org/10.1023/A:1008789422954
Issue Date:
DOI: https://doi.org/10.1023/A:1008789422954