Machine Learning Applications In Software Engineering

In this chapter, ML methods are utilized to acquire requirements specifications for new software development or for understanding and transformation of legacy software. Legacy systems are old systems that are critical to the operation of an organization which uses them and that must still be maintained. Most legacy systems were developed before software engineering techniques were widely used. Thus they may be poorly structured and their documentation may be either out-of-date or non-existent. In order to bring to bear the legacy system maintenance, the first task is to recover the design or specification of a legacy system from its source or executable code, hence, the term of reverse engineering, or program comprehension and understanding. It has been estimated that more than half of the time spent on maintenance of large software systems is on program understanding. ML applications include derivation of specifications from training cases or scenarios, extraction of specifications from software, and specification refinement. Table 27 summarizes the current state-of-the-practice in this application area.
| NN | IBL CBR | DT | GA | GP | ILP | EBL | CL | BL | AL | IAL | RL | EL | SVM | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Derivation of Specifications | ? | |||||||||||||
| Extract Specifications from Software | ? | |||||||||||||
| Specification Refinement | ? | ? | ||||||||||||
| Acquire Specification from Scenarios |