PL/SQL programs are mainly composed of procedures that interact with a database. These procedures are grouped into packages at the architecture design level for increasing modularity and maintainability. However, the intended modular structure is subject to architectural drift especially for large scale programs that are maintained for a long duration. Existing reverse engineering and refactoring techniques cannot be directly applied for these programs. Unlike other programs, PL/SQL programs involve procedures that are in most cases indirectly coupled due to their database operations. In this paper, we provide an approach and a tool that support reverse engineering and refactoring of PL/SQL programs. We analyze dependencies among PL/SQL procedures based on the accessed database elements. We represent these dependencies in the form of a design structure matrix. Then, we cluster the procedures and propose a packaging structure to the designer. We performed an industrial case study from the telecommunications domain. We observed promising results in which several unexisted packages were proposed by our tool and the accuracy of the results were approved by domain experts.
['Metin Altιnιşιk', 'Hasan Sözer']
Automated procedure clustering for reverse engineering PL/SQL programs