Marco Zanoni

Learn More
It is well known that software maintenance and evolution are expensive activities, both in terms of invested time and money. Reverse engineering activities support the obtainment of abstractions and views from a target system that should help the engineers to maintain, evolve and eventually re-engineer it. Two important tasks pursued by reverse engineering(More)
Legacy systems maintenance involves different decisions, often very complex and sometimes requiring high costs and time. Hence studying and applying the right system modernization technique becomes very important for systems evolution. One of the solutions often adopted to modernize a system is the possibility to migrate it towards a SOA architecture. A lot(More)
Several code smells detection tools have been developed providing different results, because smells can be subjectively interpreted and hence detected in different ways. Usually the detection techniques are based on the computation of different kinds of metrics, and other aspects related to the domain of the system under analysis, its size and other design(More)
Several code smell detection tools have been developed providing different results, because smells can be subjectively interpreted, and hence detected, in different ways. In this paper, we perform the largest experiment of applying machine learning algorithms to code smells to the best of our knowledge. We experiment 16 different machine-learning algorithms(More)
Several studies have been proposed in the literature on software clones, from different points of view and covering many correlated features and areas, which are particularly relevant for software maintenance and evolution. In this paper we describe our experience on clone detection through three different tools, and our investigation on the impact of clone(More)
—Design patterns detection is a useful activity in reverse engineering to gain knowledge on the design issues of an existing system, on its software architecture and design quality, improving in this way the comprehension of the system and hence its maintainability and evolution. Several tools have been developed, but they usually provide different results(More)
Code smells are characteristics of the software that may indicate a code or design problem that can make software hard to evolve and maintain. Detecting and removing code smells, when necessary, improves the quality and maintainability of a system. Code smells have been defined in [5], and different detection tools have been developed, each one(More)