1) O documento discute como princípios do Lean Software Development e práticas como desenvolvimento guiado por testes, refatoração e uso de ferramentas podem ajudar a produzir código de melhor qualidade e mais fácil de manter.
2) É proposto um exercício prático para ilustrar essas técnicas.
3) Várias ferramentas que apoiam essas práticas são apresentadas.
1. Coding By Example: Tornando-se um desenvolvedor
profissional
Guilherme Lacerda1
, Daniel Wildt2
1
UniRitter/Facensa/Wildtech/TJ-RS
2
uMov.me/Wildtech
guilhermeslacerda@gmail.com, dwildt@gmail.com
Resumo. Este tutorial procura discutir o perfil de um desenvolvedor profissio-
nal, a importˆancia de manter um c´odigo limpo al´em de pr´aticas e ferramentas
podem apoiar neste sentido. Para tanto, ´e proposto um exerc´ıcio focando em
desenvolvimento dirigido por testes, refatorac¸˜ao e baby steps, visando expor de
forma pr´atica os benef´ıcios dessa forma de trabalho.
1. Informac¸˜oes Gerais
Neste tutorial, ser´a apresentado como os princ´ıpios do Lean Software Development fa-
zem sentido na hora de desenvolver software. A partir destes princ´ıpios, ser´a apre-
sentado como a adoc¸˜ao de pr´aticas como refatorac¸˜ao [Fowler et al. 1999], padr˜oes
[Kerievsky 2004], integrac¸˜ao cont´ınua e testes [Beck 2002] podem ajudar a entregar
software com mais qualidade, principalmente atrav´es da escrita de um c´odigo mais
simples, limpo e, consequentemente, mais f´acil de manter [Hunt and Thomas 1999],
[Martin and Martin 2007], [Martin 2008]. Al´em disso, ser˜ao usados exemplos pr´aticos
de c´odigos sujos e como estes princ´ıpios e pr´aticas, com o apoio de algumas ferramentas,
ajudaram a limpar o c´odigo e deix´a-lo mais simples.
Este tutorial ´e direcionado para desenvolvedores, analistas, projetistas, gerentes
de neg´ocios, gerentes de projetos, l´ıderes de equipe. ´E necess´ario ter conhecimento em
pr´aticas ´ageis. Destina-se a participantes do CBSoft, mais especificamente dos eventos
SBES e SBLP. Os interessados em participar do tutorial dever˜ao levar seus laptops com
suas ferramentas de programac¸˜ao de sua preferˆencia (IDEs, linguagens, ferramentas de
teste de unidade) devidamente configuradas.
2. Estrutura e Mecˆanica
A base do Lean Software Development ´e o trabalho padronizado e o kaizen, que s˜ao
um dos primeiros passos para se chegar na padronizac¸˜ao e entender os valores do 5S
[Poppendieck and Poppendieck 2003]. A partir do momento que se compreende estes
valores, fica muito claro como aplicar estes conceitos em qualquer contexto, inclusive
no desenvolvimento de software. Para esta aplicac¸˜ao, as pr´aticas do Extreme Program-
ming (XP) como refatorac¸˜ao, desenvolvimento dirigido por testes, integrac¸˜ao continua e
padronizac¸˜ao de c´odigo s˜ao os nossos melhores aliados para a melhoria cont´ınua.
Mais importante do que usar e conhecer pr´aticas e ferramentas, ´e necess´aria uma
reflex˜ao sobre a necessidade do mercado atual e qual o perfil (competˆencias e habilidades)
necess´ario para ser um desenvolvedor profissional [Martin 2011]. Al´em desta exposic¸˜ao,
ser˜ao apresentados exemplos reais e pr´aticos de c´odigo sujo e como eles foram limpos,
2. apoiado tamb´em por uso de ferramentas. Ser´a proposto tamb´em um exerc´ıcio pr´atico
de programac¸˜ao, para elucidar o conte´udo apresentado. Os exemplos apresentados ser˜ao
focados em tecnologia Java, por´em ser˜ao comentadas as pr´aticas e ferramentas de apoio
em outras linguagens.
Mecˆanica
1) Proposic¸˜ao de um exerc´ıcio de programac¸˜ao, desenvolvido em pares
2) Apresentac¸˜ao de: princ´ıpios do Lean Software Development e seu alinhamento
com as pr´aticas do XP; exposic¸˜ao de exemplos pr´aticos de c´odigos sujos; um epis´odio de
TDD/refatorac¸˜ao, com discuss˜ao de t´ecnicas e heur´ısticas de limpeza para tornar o c´odigo
limpo e de mais f´acil manutenc¸˜ao
3) Troca dos pares para a segunda parte do exerc´ıcio, onde a dupla alterar´a o
c´odigo desenvolvido por outra, aplicando as t´ecnicas discutidas
4) Discuss˜ao em grande grupo da dinˆamica
5) Apresentac¸˜ao de v´arias ferramentas que ajudam a manter a sa´ude e bem estar
do c´odigo (JUnit, Byke, PMD, Checkstyle, JaCoCo, Sonar e Jenkins)
3. Considerac¸˜oes Finais
Como benef´ıcios esperados deste tutorial, busca-se entender como as pr´aticas do XP po-
dem auxiliar no processo de melhoria da qualidade do c´odigo, como posso ser um desen-
volvedor melhor, adotando algumas ferramentas que apoiam estes princ´ıpios e pr´aticas
para as principais linguagens de programac¸˜ao utilizadas no mercado atualmente. Este
tutorial foi apresentado nos eventos AgileBrazil 2012 1
e Agiles 2012 2
.
Referˆencias
Beck, K. (2002). Test-Driven Development by Example. Addison-Wesley.
Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. (1999). Refactoring: Im-
proving the Design of Existing Code. Addison-Wesley.
Hunt, A. and Thomas, D. (1999). The Pragmatic Programmer: From Journeyman to
Master. Addison-Wesley.
Kerievsky, J. (2004). Refactoring to Patterns. Addison-Wesley.
Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Pren-
tice Hall.
Martin, R. C. (2011). The Clean Coder: A code of conduct for Professional Programmers.
Prentice Hall.
Martin, R. C. and Martin, M. (2007). Agile Principles, Patterns, and Practices in C#.
Prentice Hall.
Poppendieck, M. and Poppendieck, T. (2003). Lean Software Development: An Agile
Toolkit. Addison-Wesley.
1
Conferˆencia Brasileira de M´etodos ´Ageis, S˜ao Paulo, Brasil
2
Conferˆencia Latinoamericana de Metodologias ´Ageis, C´ordoba, Argentina