Machine Learning Applications In Software Engineering

As the cost of software development becomes the bulk of any computer based solution, it makes a great economic sense to systematically reuse existing solutions, which can take place at many different levels: specifications, domain knowledge, designs, development processes, systems, subsystems, and components. There are a number of technical and managerial benefits of reuse: reduced development time and risk, increased reliability and productivity, and improved standardization. The ML applications in this chapter pertain to reuse. Issues that have been considered in this area of applications include: how to compute the similarity in a reuse library, tools for browsing software libraries, how to model the cost of rework for reusable components, how to locate and adopt software components to given specifications, how to generalize program abstractions so as to increase their chance for reuse, and how to organize reusable components such that efficient retrievals can be accommodated. The ML methods utilized in this area of applications consist of IBL/CBR, DT, GA and EBL, as shown in Table 26.
| NN | IBL CBR | DT | GA | GP | ILP | EBL | CL | BL | AL | IAL | RL | EL | SVM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Similarity Computing | ? | |||||||||||||
| Active Browsing | ? | |||||||||||||
| Cost of Rework | ? | |||||||||||||
| Knowledge Representation | ? |