6 research outputs found
La refactorización de software basada en valor : Revisión sistemática de la literatura
El mantenimiento del producto software es una de las fases que más costos tiene a lo largo de la vida de una aplicación software. La refactorización del código fuente es una de las técnicas utilizadas para intentar mejorar la mantenibilidad. Actualmente la refactorización se basa en un enfoque de “valor neutro”, siendo difícil priorizar la gran cantidad de opciones de refactorización que puede tener un producto software. Para cubrir estas carencias, una nueva rama de la ingeniería está emergiendo, la Ingeniería del Software Basada en Valor, estableciendo que las funcionalidades de un sistema tienen diferente grado de importancia, y que algunas de ellas aportan más “valor” que otras. Este artículo presenta una revisión sistemática de la literatura sobre la refactorización basada en valor.
Se identificaron 15 artículos primarios de un total de 2300. Los trabajos analizados muestran el uso de diferentes técnicas para abordar el problema de la refactorización y el valor que pueden aportar al software que será refactorizado, existiendo opiniones opuestas sobre cómo afecta las refactorizaciones a la mantenibilidad. Como conclusión de la revisión se tiene que: ningún artículo habla directamente del valor ni se cuantifica el valor que puede aportar una refactorización al software sobre el que va a ser aplicada.Sociedad Argentina de Informática e Investigación Operativa (SADIO
La refactorización de software basada en valor : Revisión sistemática de la literatura
El mantenimiento del producto software es una de las fases que más costos tiene a lo largo de la vida de una aplicación software. La refactorización del código fuente es una de las técnicas utilizadas para intentar mejorar la mantenibilidad. Actualmente la refactorización se basa en un enfoque de “valor neutro”, siendo difícil priorizar la gran cantidad de opciones de refactorización que puede tener un producto software. Para cubrir estas carencias, una nueva rama de la ingeniería está emergiendo, la Ingeniería del Software Basada en Valor, estableciendo que las funcionalidades de un sistema tienen diferente grado de importancia, y que algunas de ellas aportan más “valor” que otras. Este artículo presenta una revisión sistemática de la literatura sobre la refactorización basada en valor.
Se identificaron 15 artículos primarios de un total de 2300. Los trabajos analizados muestran el uso de diferentes técnicas para abordar el problema de la refactorización y el valor que pueden aportar al software que será refactorizado, existiendo opiniones opuestas sobre cómo afecta las refactorizaciones a la mantenibilidad. Como conclusión de la revisión se tiene que: ningún artículo habla directamente del valor ni se cuantifica el valor que puede aportar una refactorización al software sobre el que va a ser aplicada.Sociedad Argentina de Informática e Investigación Operativa (SADIO
Estimating Refactoring Efforts for Architecture Technical Debt
Paying-off the Architectural Technical Debt by refactoring the flawed code is important to control the debt and to keep it as low as possible. Project Managers tend to delay paying off this debt because they face difficulties in comparing the cost of the refactoring against the benefits they gain. For these managers to decide whether to refactor or to postpone, they need to estimate the cost and the efforts required to conduct these refactoring activities as well as to decide which flaws have higher priority to be refactored among others.
Our research is based on a dataset used by other researchers in the technical debt field. It includes more than 18,000 refactoring operations performed on 33 apache java projects. To estimate the refactoring efforts done, we applied the COCOMO II:2000 model to calculate the refactoring cost in person-months units per release. Furthermore, we investigated the correlation between the refactoring efforts and two static code metrics of the refactored code, mainly, the LOC and the complexity. The research revealed a moderate correlation between the refactoring efforts and each one of the size of the project and code complexity. Finally, we applied the DesigniteJava tool and machine learning practices to verify our research results. From the analysis we found a significant correlation between the ranking of the architecture smells and the ranking of refactoring efforts for each package.
Using machine learning practices, we took the architecture smells level and the code metrics of each release as an input to predict the levels of the refactoring effort of the next release. We calculated the results using our model and found that we can predict the higher refactoring cost levels with 93\% accuracy
Recommended from our members
An empirical investigation into contributory factors of change and fault propensity in large-scale commercial object-oriented software
This thesis was submitted for the degree of Doctor of Philosophy and was awarded by Brunel UniversityObject-Oriented design and development dominates both commercial and open source software projects. One of the principal goals of object-oriented design is to aid reuse, and hence, reduce future maintenance efforts of software systems. However, the on-going maintenance of large-scale software systems (both changes and faults) continues to be a significant proportion of the lifecycle of the system and the total investment cost. Understanding and thus being able to predict - or even reduce - the impact of the contributing factors of future maintenance efforts of a software system is thus highly beneficial to software practitioners. In this Thesis we empirically study a large, commercial software system with the principal aim to determine the contributing factors to the change and fault propensity over a three-year period. We consider the object-oriented design context of the software, specifically its inheritance characteristics, coupling and cohesion properties, object-oriented design pattern participation, and size. We also explore the effect of refactoring and test classes in the software. Our results show that several aspects of the design context of a class have an impact to the change and fault-proneness of the software. Specifically, we show that classes with high afferent or efferent coupling are more change and fault-prone; we also identify a number of design patterns whose participants tend to have a higher change and fault propensity than non-participants and we identify a range of inheritance characteristics (in terms of depth of inheritance and number of children) that result in an increase to change and fault-proneness. Furthermore we show that refactoring is a commonly occurring maintenance activity, although it is largely limited to simpler types of refactorings. Finally, we provide some insight into the co-evolution of production and test code during refactoring