Machine Learning Applications In Software Engineering

One of the essential challenges in SE, as eloquently explicated by Brooks, is the changeability: "The software product is embedded in a cultural matrix of applications, users, laws, and machine vehicles. These all change continually, and their changes inexorably force change upon the software product." Changes can be made to a software system through transformations. A transformation to a software product is a mapping from one model to another that aims at improving certain aspect of the transformed software product (e.g., improved modularity, desirable parallelism, improved run-time performance) while preserving all of its other properties (e.g., its functionality) [23]. A transformation is usually localized, affects a small number of classes, attributes, and operations, and is carried out in a series of small steps. In this chapter, we focus on ML applications in software product transformation. Table 24 offers a state-of-the-practice in this area.
| NN | IBL CBR | DT | GA | GP | ILP | EBL | CL | BL | AL | IAL | RL | EL | SVM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Parallel Programs | ? | |||||||||||||
| Modularity | ? | ? | ? | |||||||||||
| Object-oriented Applications | ? |
In this chapter, we include one paper by Schwanke and Hanson [128]. The paper deals with the issue of transforming software systems for better modularity using nearest-neighbor clustering and a special-purpose NN. The proposed approach treats...