Estudo preliminar sobre os impactos do desenvolvimento orientado a testes no processo de revisão de código
Resumo
Mesmo utilizando métodos e práticas ágeis como TDD e revisão de código, muitos problemas são encontrados durante a codificação. Revisão de código e TDD focam na qualidade do código fonte do software, mas a relação entre essas técnicas não é suficientemente compreendida. O objetivo desse estudo foi investigar problemas encontrados pelo processo de revisão de códigos em software desenvolvido com TDD. Foi realizado um survey com desenvolvedores e arquitetos de uma indústria de software nacional de médio porte, buscando a caracterização dos problemas encontrados por revis˜oes de códigos desenvolvidos com TDD. Os resultados identificaram e caracterizaram os principais problemas quanto à frequência, criticidade, tempo, esforc¸o e técnicas ou ferramentas que podem auxiliar no tratamento de tais problemas. Com a condução desse estudo foi possível elencar problemas importantes em códigos desenvolvidos com TDD, apresentando oportunidades para aprimoramento do TDD para evitar tais problemas e de técnicas de revisão de código para tratálos adequadamente.
Referências
Beck, K. (2001). Aim, fire. IEEE Software, 18(5):87–89.
Bernhart, M., Mauczka, A., e Grechenig, T. (2010). Adopting code reviews for agile software development. In: 2010 Agile Conference, p. 44–47. IEEE.
Card, D. N. (1990). Software quality engineering. Information and Software Technology, 32(1):3–10.
Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Addison- Wesley, Boston, MA, USA.
Fucci, D., Turhan, B., e Oivo, M. (2014). Impact of process conformance on the effects of test-driven development. In: 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, p. 10:1–10:10, New York, NY, USA. ACM.
Fucci, D., Turhan, B., e Oivo, M. (2015). On the effects of programming and testing skills on external quality and productivity in a test-driven development context. In: 19th International Conference on Evaluation and Assessment in Software Engineering, p. 25:1–25:6, New York, NY, USA. ACM.
George, B. e Williams, L. (2003). An initial investigation of test driven development in industry. In: 18th ACM Symposium on Applied Computing, p. 1135–1139, New York, NY, USA. ACM.
Hemmati, H. (2015). How effective are code coverage criteria? In: 2015 IEEE International Conference on Software Quality, Reliability and Security (QRS 2015), p. 151–156. IEEE.
ISO, IEC, e IEEE (2010). Iso/iec/ieee 24765:2010 – systems and software engineering – vocabulary.
Kalyan, A., Chiam, M., Sun, J., e Manoharan, S. (2016). A collaborative code review platform for GitHub. In: 2016 21st International Conference on Engineering of Complex Computer Systems (ICECCS), p. 191–196. IEEE.
Kollanus, S. (2011). Critical issues on test-driven development. In: 12th International Conference on Product-Focused Software Process Improvement, volume 6759 of Lecture Notes in Computer Science, p. 322–336.
Linaker, J., Sulaman, S. M., Maiani de Mello, R., e Martin, H. (2015). Guidelines for conducting surveys in software engineering. techreport, Lund University, Sweden.
Ma, L., Zhang, C., Yu, B., e Sato, H. (2015). An empirical study on effects of code visibility on code coverage of software testing. In: 10th International Workshop on Automation of Software Test (AST 2015), p. 80–84. IEEE.
McCabe, T. J. (1976). A complexity measure. Transactions on Software Engineering, 2(4):308–320.
McIntosh, S., Kamei, Y., Adams, B., e Hassan, A. E. (2014). The impact of code review coverage and code review participation on software quality: A case study of the Qt, VTK, and ITK projects. In: 11th Working Conference on Mining Software Repositories, p. 192–201, New York, NY, USA. ACM.
Mäntylä, M. V. e Lassenius, C. (2009). What types of defects are really discovered in code reviews? Transactions on Software Engineering, 35(3):430–448.
Pachulski Camara, B. H. e Graciotto Silva, M. A. (2016). A strategy to combine test-driven development and test criteria to improve learning of programming skills. In: 47th ACM Technical Symposium on Computing Science Education, p. 443–448, New York, NY, USA. ACM.
Rafique, Y. e Misic, V. B. (2013). The effects of test-driven development on external quality and productivity: A meta-analysis. Transactions on Software Engineering, 39(6):835–856.
Swamidurai, R., Dennis, B., e Kannan, U. (2014). Investigating the impact of peer code review and pair programming on test-driven development. In: IEEE SOUTHEASTCON 2014, p. 1–5. IEEE.
Tichy, W. F. e Padberg, F. (2007). Empirical methods in software engineering research. In: 29th International Conference on Software Engineering (ICSE’07 Companion), p. 163–164. IEEE.
Toomim, M., B. A. e Graham, S. L. (2004). Managing duplicated code with linked editing. In: 20th IEEE Symposium on Visual Languages and Human Centric Computing, p. 173–180. IEEE.
Tufano, M., Palomba, F., Bavota, G., Oliveto, R., Penta, M. D., Lucia, A. D., e Poshy- vanyk, D. (2015). When and why your code starts to smell bad. In: 37th International Conference on Software Engineering, volume 1, p. 403–414, Piscataway, NJ, USA.IEEE.