Software modernization consists of transforming legacy applications into modern technologies, mainly to minimize maintenance costs. This transformation often produces a new application that is a poor copy of the legacy due to the degradation of quality attributes, for example. This project presents a white-box transformation approach that changes the application architecture and the technological stack without losing business value and quality attributes. This approach obtains a technology agnostic model from the original sources, such a model facilitates the architecture configuration before performing the actual transformation of the application into the new technology. The architecture for the new application can be configured considering aspects such as data access, quality attributes, and process. We evaluate our approach through an industrial case study, the gist of which is the transformation of Oracle Forms applications—where the presentation layer is highly coupled to the data access layer—to multitiered applications.
Agile Development values working software over documentation. Therefore, in maintenance stages of existing software, the source code is the sole software artifact that developers have for analyzing the viability and impact of a new user story. Since functionality is often spread in hundreds of lines of code, it is hard for the developer to understand the system, which may lead to under-/overestimation of the new feature cost and rework/delays in the subsequent phases of development. In a previous work, we proposed a Model-Driven Reverse Engineering approach for obtaining software visualizations from source code. Two case studies of comprehension of applications written in statically typed languages have shown the applicability of this approach. A recent experience with an industrial partner, where the systems are developed on dynamically typed languages, has motivated us to adapt the previous proposal to take as input not only the source code but also the application data schema to complete the information that is missing in the code, and then automatically generate more meaningful diagrams that help developers in maintenance tasks. In this project, we present the adaptation of the general approach to support data schema as an additional input and its instrumentation in an industrial case study where the technology is Ruby on Rails.
Nowadays, software development teams face the challenge of maintenance and evolution of large applications. This is known as modernization and comprises a process of understanding the existing application, and a process of transforming from the as-is state to the to-be state. In this project, we present an approach to modernize legacy applications into microservices. We propose a model-centered process to analyze and visualize the current structure and dependencies between the business layer and the data layer. Furthermore, we propose a modularization into clusters and microservices using four different diagrams. To validate our approach we have analyzed a JEE application with over 74566 LoC. The results show that the understanding is greatly improved through the diagrams proposed, and the modularization proposed constitutes the first step towards the automated modernization of the application.
Bad smells affect maintainability and performance of model-to-model transformations. There are studies that define a set of transformation bad smells, and some of them propose techniques to recognize and–according to their complexity–fix them in a (semi)automated way. In academia it is necessary to make students aware of this subject and provide them with guidelines to improve the quality of their transformations. This project presents the most common bad smells made by master students from Universidad de los Andes, and compares them with those from publicly available repositories of Epsilon transformation language transformations, with the purpose of knowing whether programming style affects the incidence of smells.