3 de setembro de 2014 André Luis Celestino Desenvolvimento de Software, Engenharia de Software, Opinião
O objetivo do artigo de hoje é discutir um assunto que a maioria dos desenvolvedores já conhece: o desenvolvimento gradual de software. A ideia é apresentar uma analogia que pode nos fazer refletir sobre o crescimento de um software com o passar do tempo, bem como os cuidados que devemos tomar para que este crescimento não fuja do nosso controle.
Quem já me conhece, sabe que sou do interior de São Paulo mas atualmente moro em Florianópolis. A cidade em si, as praias, os restaurantes, os pubs e as avenidas são bem bonitos, porém, Florianópolis infelizmente apresenta um grande problema: a mobilidade.
O trânsito aqui é bastante intenso, principalmente em altas temporadas. Alguns estudos até afirmaram que a cidade tem a pior mobilidade urbana do Brasil. Em alguns dias, já demorei quase 3 horas para atravessar a Avenida Beira Mar e chegar ao continente.
Aqui deixo uma observação. No desenvolvimento de software há dois tipos de "reformas": a expansão e a refatoração. Muitas vezes, elas caminham de mãos dadas – ou ao menos deveriam. Quando expandimos o nosso software, acrescentando novas funcionalidades, estamos aumentando a nossa avenida, enquanto a refatoração seria como "recapeá-las". Observe que a adição de novas funcionalidades é uma necessidade advinda do cliente (ou da população), isto é, algo que deve ser feito para que o negócio do cliente continue funcional, ou, no caso da avenida, para que a mobilidade continue acessível.
Sei que a analogia não é das melhores, mas a ideia foi transmitida!
Gregory Falavigna setembro 4, 2014 às 4:58 pm
Ohh ixtepô! Taix tolo neh? rsrs
Floripa é um ótimo parâmetro para se fazer uma analogia! Isso me faz pensar na questão cultural das "cidades e empresas", muitas vezes o mal planejamento tanto do crescimento "populacional quanto dos usuários" e a falta de medição dos impactos podem vir a trazer resultados negativos.
O crescimento foi planejado para "100 mil habitantes e/ou 100 mil usuários ", porém o crescimento fugiu do controle! E agora o que fazer?
André Luis Celestino setembro 5, 2014 às 10:33 pm
Obrigado pelo comentário, Gregory!
Concordo com você. Na verdade, essa similaridade que existe entre o planejamento urbano e o planejamento de software é o que motivou a elaboração deste artigo.
O crescimento descontrolado da dimensão de um software é um dos fatores que resultam em código legado, dependência magnética, quebra de métricas, alto acoplamento e problemas arquiteturais.
Ao meu ver, uma das soluções seria a adaptação (ou expansão) da arquitetura do software durante o processo de evolução. Dessa forma, o crescimento não causaria impactos impeditivos.