Synthesis of Code Anomalies: Revealing Design Problems in the Source Code
Resumo
Design problems affect most software projects and make their maintenance expensive and impeditive. Thus, the identification of potential design problems in the source code – which is very often the only available and upto-date artifact in a project – becomes essential in long-living software systems. This identification task is challenging as the reification of design problems in the source code tend to be scattered through several code elements. However, stateof-the-art techniques do not provide enough information to effectively help developers in this task. In this work, we address this challenge by proposing a new technique to support developers in revealing design problems. This technique synthesizes information about potential design problems, which are materialized in the implementation under the form of syntactic and semantic anomaly agglomerations. Our evaluation shows that the proposed synthesis technique helps to reveal more than 1200 design problems across 7 industry-strength systems, with a median precision of 71% and a median recall of 78%. The relevance of our work has been widely recognized by the software engineering community through 2 awards and 7 publications in international and national venues.
Referências
Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston.
Garcia, J., Popescu, D., Edwards, G., and Medvidovic, N. (2009). Identifying architectural bad smells. In 13th European Conf. on Software Maintenance and Reengineering.
Godfrey, M. and Lee, E. (2000). Secrets from the monster: Extracting Mozilla’s software architecture. In CoSET-00, pages 15–23.
Lanza, M. and Marinescu, R. (2006). Object-Oriented Metrics in Practice. Springer.
Mattmann, C. et al. (2006). A software architecture-based framework for highly distributed and data intensive scientific applications. In Proceedings of the 28th ICSE.
Oizumi,W. (2015). Synthesis of code anomalies: Revealing design problems in the source code. MSc dissertation. In Pontifical Catholic University, Informatics Department.
Oizumi, W. and Garcia, A. (2015). Organic. http://wnoizumi.github.io/organic/.
Oizumi,W., Garcia, A., Colanzi, T., Staa, A., and Ferreira, M. (2015). On the relationship of code-anomaly agglomerations and architectural problems. JSERD, Springer.
Oizumi, W., Garcia, A., et al. (2014a). When code-anomaly agglomerations represent architectural problems? An exploratory study. In SBES’14; Maceio, Brazil.
Oizumi, W., Garcia, A., et al. (2016). Code anomalies flock together: Exploring code anomaly agglomerations for locating design problems. In ICSE’16; Austin, USA.
Oizumi, W., Garcia, A., Sousa, L., Albuquerque, D., and Cedrim, D. (2014b). Towards the synthesis of architecturally-relevant code anomalies. In WMod’14 at CBSoft.
Schach, S. et al. (2002). Maintainability of the linux kernel. Software, IEE Proceedings.
Vidal, S., Guimaraes, E., Oizumi, W., et al. (2016). On the criteria for prioritizing code anomalies to identify architectural problems. In SAC’16; Pisa, Italy.
Vidal, S., Vazquez, H., Diaz-Pace, J. A., Marcos, C., Garcia, A., and Oizumi, W. (2015). Jspirit: a flexible tool for the analysis of code smells. In 34th SCCC.