Machine Learning Applications In Software Engineering

Given a software system, ML methods can be used to identify or discover certain properties of the system. Such discoveries of properties can be indispensable in many SE tasks: to facilitate various development and maintenance activities, to understand the relationships among software components for program understanding, to identify reusable components for reuse repository construction, and to re-engineer the existing system into one that has desirable properties, to name a few. Table 23 summarizes the status of the ML methods being utilized in this application category.
| NN | IBL CBR | DT | GA | GP | ILP | EBL | CL | BL | AL | IAL | RL | EL | SVM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Program Invariants | ? | |||||||||||||
| Object Identifying | ? | |||||||||||||
| Operation Boundary | ? | |||||||||||||
| Mutants | ? | |||||||||||||
| Process Models | ? | ? |
In this chapter, we include two papers, one dealing with using NN to identify objects in procedural programs, and the other tackling the issue of detecting equivalent mutants in mutation testing using BL.
The paper by Abd-El-Hafiz [1] describes a general approach to identifying objects in procedural programs using clustering NN. Currently, there are three main approaches to the identification of objects...