Abstract
This software reuse system helps a user build programs by reusing modules stored in an existing library. The system, dubbed caesar (Case-basEd SoftwAre Reuse), is conceived in the case-based reasoning framework, where cases consist of program specifications and the corresponding C language code. The case base is initially seeded by decomposing relevant programs into functional slices using algorithms from dataflow analysis. caesar retrieves stored specifications from this base and specializes and/or generalizes them to match the user specification. Testing techniques are applied to the construct assembled by caesar through sequential composition to generate test data which exhibits the behavior of the code. For efficiency, inductive logic programming techniques are used to capture combinations of functions that frequently occur together in specifications. Such combinations may be stored as new functional slices.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Aho, A.V., Sethi, R., and Ullman, J.D. (1986).Compiler Principles, Techniques, and Tools. New York: ACM Press.
Barletta, R., and Mark, W. (1988). Explanation-Based Indexing of Cases.Proc. Spring Symp. Series: Explanation Based-Learning, Stanford, CA, pp. 127–136.
Bassett, P.G. (1987). Frame-Based Software Engineering.IEEE Software.,4-4 9–16.
Biggerstaff, T.J., and Perlis, A.J. (1989). Introduction. In T.J. Biggerstaff, and A.J. Perlis (Eds.),Software Reusability, Vol. 1. New York: ACM Press, pp. xv-xxv.
Carbonell, J.G. (1986). Derivational Analogy: A Theory of Reconstructive Problem Solving and Expertise Acquisition. InMachine Learning 2: An Artificial Intelligence Approach. San Mateo, CA: Morgan Kaufmann, pp. 371–392.
Drummond, C., Ionescu, D., and Holte, R. (1992). Automatic Goal Extraction from User Actions When Browsing Software Libraries.Proc. Canadian Conf. Electrical and Computer Engineering, Toronto, Ont, pp. WA 6.31.1–WA 6.31.4.
Duchier, D. (1992). Reuse and Non-Monotonie Design of User Interfaces. TR-92-17, University of Ottawa Department of Computer Science, Ottawa, Ontario.
Fisher, D., and Yoo, J. (1991). Combining Evidence of Deep and Surface Similarity.Proc. 8th Int. Workshop Machine Learning, Evanston, IL, pp. 46–50.
Fouqué, G., and Matwin, S. (1993). Compositional Software Reuse with Case-Based Reasoning.Proc. 9th IEEE Conf. AI for Applications, Orlando, FL.
Fouqué, G., and Vrain, C. (1992). Building a Tool for Software Code Analysis: A Machine Learning Approach.Proc. 4th Conf. Advanced Information Systems Engineering, Manchester, UK.
Hammond, K.J. (1989). Case-Based Planning: Viewing Planning as a Memory Task. In K. Forbus, R.A. Brooks, and M. Wilensky (Eds.), San Diego: Academic Press.
Harandi, M.T., and Ning, J.Q. (1990). Knowledge-Based Program Analysis.IEEE Software, 7-1, 74–81.
Horwitz, S., Reps, T., and Binkley, D. (1990). Interprocedural Slicing Using Dependence Graphs.IEEE Trans. Software Eng. 12-1, 26–60.
Kass, A.M., and Leake, D.B. (1988). Case-Based Reasoning Applied to Constructing Explanations.Proc. Case-based Reasoning Workshop, Clearwater Beach, FL, pp. 190–208.
Kozaczynski, W., Ning, J., and Sarver, T. (1992). Program Concept Recognition.Proc. 7th Knowledge-Based Software Engineering Conf., McLean, VA, pp. 216–225.
Krueger, C.W. (1992). Software Reuse.ACM Computing Survey, 24-2, 131–183.
Lapointe, S., Ling, C., and Matwin, S. (1992), Constructive Inductive Logic Programming. To appear, Proc.IYCA193, Chambéry.
Mac Cabe, T. (1976). A Complexity Measure.IEEE Trans. Software Eng. 2-4, 308–320.
MacKeilar, B.K., and Maryanski. F. (1989) A Knowledge Base for Code Reuse by Similarity.Proc. Computer Software Applications Conf., pp. 634–641.
Minton, S. (1990).Learning Search Control Knowledge: An Explanation-Based Approach. Boston: Kluwer Academic.
Muggleton, S. (1987). Duce, An Oracle Based Approach to Constructive Induction.Proc. 10th Int. Joint Conf. Artif. Intell., Milan, Italy, pp. 287–292.
Muggleton, S., and Buntine, W. (1988). Machine Invention of First-Order Predicates by Inverting Resolution.Proc. 5th Int. Conf. Machine Learning, Ann Arbor, MI, pp. 339–352.
Muggleton, S., and Feng, C. (1990). Efficient Induction of Logic Programs. In S. Muggleton, (Ed.),Inductive Logic Programming. London: Academic Press, pp. 281–298.
Myers, G.J. (1979). The Art of Software Testing. In R.C. Canning and D.J. Couger (Eds.), New York: Wiley.
Neighbors, J.M. (1989). DRACO: A Method for Engineering Reusable Software Systems. In T.J. Biggerstaff, and A.J. Perlis (Eds.),Software Reusability, Vol. 1. New York: ACM Press, pp. 295–319.
Ould-Brahim, H., and Matwin, S. (1992). Reusing Database Queries in Analogical Domains.Proc. 7th Knowledge-Based Software Engineering Conf., McLean, VA, pp. 80–89.
Press, W.H., Flannery, B.P., Teukolsky, S.A., and Vetterling, W.T., (1988).Numerical Recipes in C. Cambridge: Cambridge University Press.
Prieto-diaz, R. (1987). Classification of Reusable Modules.IEEE Software, 4-1, 6–16.
Prieto-Diaz, R. (1991). Implementing Faceted Classification for Software Reuse.Comm. ACM, 34-5, 89–97.
Redmond, M. (1989). Combining Case-Based Reasoning, Explanation-Based Learning, and Learning from Instruction.Proc. 6th Int. Workshop Machine Learning, Ithaca, NY, pp. 20–22.
Riesbeck, C., and Schank, R. (1989).Inside Case-Based Reasoning. Hillsdale, NJ: Lawrence Erlbaum.
Rist, R.S. (1992). Plan Identification and Re-use in Programs.Proc. Spring Symp. Series: Computational Considerations in Supporting Incremental Modification and Reuse, Stanford, CA, pp. 67–72.
Silverstein, G., and Pazzani, MJ. (1991). Relational Clichés: Constraining Constructive induction during Relational Learning.Proc. 8th Int. Conf. Machine Learning, Evanston, IL, pp. 203–207.
Toda, I. (1992). How to Prevent the Coming Software Crisis.IEEE Software, 9-3, 14.
Weiser, M. (1984). Program Slicing.IEEE Trans. Software Eng., 10-4, 352–357.
Weyuker, E.J. (1990). The Cost of Data Flow Testing: An Empirical Study.IEEE Trans. Software Eng., 16-2, 121–128.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Fouqué, G., Matwin, S. A case-based approach to software reuse. J Intell Inf Syst 2, 165–197 (1993). https://doi.org/10.1007/BF00965876
Issue Date:
DOI: https://doi.org/10.1007/BF00965876