Building a tool for software code analysis a machine learning approach
This article presents the application of a machine learning technique to a software code analysis tool. This tool builds a base of elementary and relevant program structures, acquired from the analysis of a primitive set of programs of good programming style. These program structures are compared to new programs to determine the quality of the latter. In this paper we stress the framework of the tool and discuss the critical details of its modules.
The learning technique has been developed to use intensively a specific knowledge base in order to acquire the base of relevant program structures. We present problems that arise due to the necessity of using knowledge which is non-monotonic in nature.
Particular issues will be highlighted by the analysis of requests written in the SQL language.
Unable to display preview. Download preview PDF.
- 1.Bailin, S.C. & Gattis, R.H. & Truszkowski, W. 1991. A learning software engineering environment. 6th knowledge-based software engineering conference. pp 251–263.Google Scholar
- 2.Dershowitz, N. 1986. Programming by analogy. Machine learning 2: an artificial intelligence approach. Michalski R.S., Carbonel J.G., Mitchell T.M., Morgan Kaufmann eds, pp 395–423.Google Scholar
- 3.Geldrez, C. & Matwin, S. & Morin, J. & Probert, R.L. 1990. An application of EBL to protocol conformance testing. IEEE Expert. October 1990. pp 45–60.Google Scholar
- 4.Halstead, M. 1978. Elements of software engineering. Elsevier eds. Google Scholar
- 5.Harandi, M.T. & Lee, H. 1991. Acquiring software design schemas: a machine learning perspective. 6th knowledge-based software engineering conference, pp 239–250.Google Scholar
- 6.Kodratoff, Y. & Ganascia, J.G. 1986. Improving the generalization step in learning. Machine learning 2: an artificial intelligence approach. Michalski R.S., Carbonel J.G., Mitchell T.M., Morgan Kaufmann eds, pp 215–244.Google Scholar
- 7.Laurent, J.P. & Fouet, J.M. 1982. Outillage de manipulation de programmes fondé sur une représentation arborescente. Premier colloque de génie logiciel. pp 105–118.Google Scholar
- 8.Maarek, Y.S. & Berry, D.M. & Kaiser, G.E. 1991. An Information Retrieval Approach For Automatically Constructing Software Libraries. IEEE Transactions on Software Engineering. Vol 17, N 8. pp 800–813.Google Scholar
- 9.Michalski, R.S. 1983. A theory and methodology of inductive learning. Machine learning 1: an artificial intelligence approach. Michalski R.S., Carbonel J.G., Mitchell T.M., Morgan Kaufmann eds, pp 1–19.Google Scholar
- 10.Ning, J. & Harandi, M.J. 1989. An experiment in automatic program analysis. Proc AAAI symp artificial intelligence and software engineering. AAAI Press eds. pp 51–55.Google Scholar
- 11.Prieto-Diaz, R. 1991. Implementing Faceted Classification for Software Reuse. Communication of the ACM. Vol 34, N 5. pp 88–97.Google Scholar
- 12.Saporta, G. 1990. Probabilités, analyse des données et statistiques. Editions technip.Google Scholar
- 13.Utgoff, P.E. 1986. Shift of bias of inductive concept learning. Machine learning 2: an artificial intelligence approach. Michalski R.S., Carbonel J.G., Mitchell T.M., Morgan Kaufmann eds, pp 107–148.Google Scholar
- 14.Vrain, C. 1990. OGUST: a system that learns using domain properties expressed as theorems. Machine learning 3, an artificial intelligence approach. Kodratoff, Y. & Michalski, R.S. Morgan Kaufmann eds. pp 360–382.Google Scholar
- 15.Webb, J. 1988. Static analysis: an introduction and example. Journées Internationales: le génie logiciel et ses applications. pp 523–539.Google Scholar
- 16.Wills, L.M. 1990. Automated program recognition: a feasibility demonstration. Artificial intelligence N∘45. pp 113–171.Google Scholar