sexta-feira, 15 de janeiro de 2016

Desenvolvimento Iterativo e Incremental

Você alguma vez já ouviu falar sobre desenvolvimento iterativo e incremental? Esse tipo de desenvolvimento remete as metodologias ágeis como Scrum e XP, e também metodologias mais tradicionais como o RUP.
Muitos conhecem o modelo de desenvolvimento waterfall (cascata) por terem estudado durante a faculdade ou por trabalharem numa empresa que ainda o utilize. Outros, trabalham com metodologias ágeis, e logo associam a agilidade devido a falta de documentação e não conhecem o modelo de desenvolvimento por trás dela: iterativo e incremental.
Hoje em dia o waterfall é considerado ultrapassado já que nele o software passa completo de etapa em etapa. Desta forma, seguindo um modelo básico de desenvolvimento que seria: requisitos, desenvolvimento, testes e implantação, em cada uma dessas etapas o sistema é planejado por completo: na fase de requisitos todas as funcionalidades devem ser levantadas, no desenvolvimento implementadas para depois então seguir para testes e implantação. O grande problema nisso é a que se uma falha acontece numa fase inicial, ela é replicada e ampliada em todas as outras. 
Além disso, numa startup por exemplo, a aplicação desenvolvida só estaria pronta para ser liberada para o cliente validar ao final do desenvolvimento. Ou seja, depois de muito tempo de trabalho somente no final é possível verificar se o que foi produzido realmente atende as necessidades do cliente. E, caso não atenda, todo o trabalho desenvolvido e tempo gasto serão “jogados fora”. 
Modelo-cascata-startup-sorocaba
Diferente do waterfall, no desenvolvimento iterativo e incremental o software é dividido em iterações que incrementam o software a cada nova rodada. Este modelo consiste na repetição do processo básico: “requisitos – desenvolvimento – testes – implantação” várias vezes com entregas pequenas do software. Além disso, o importante é saber que cada iteração deve entregar uma parte funcional do software para que ele possa passar por todas as etapas desde a elaboração dos requerimentos até implantação.
Iterativo-Incremental-startup
Esta forma de desenvolvimento é muito eficiente para uma Startup já que a cada incremento é possível gerar uma versão funcional do software para o cliente, obtendo feedbacks constantes e mais rápidos.  Além dessa vantagem, outra consiste em evitar o gargalo final na hora da realização dos testes e a sua maior flexibilidade em relação mudanças. As alterações que podem ocorrer num projeto se tornam mais fáceis de lidar já que muitas vezes são necessárias somente pequenas alterações no planejamento, ou então mudanças pontuais que não afetarão o produto inteiro. Isso tudo te força a pensar durante o planejamento nos pontos mais importantes que deverão ser validados primeiro com o cliente (durante o MVP, por exemplo),  priorizando-os para obter um feedback antecipado do seu produto. 
Se você não sabe nem por onde começar a desenvolver desta forma, abaixo estão 5 passos para te ajudar:

1- Levante as principais funcionalidades do produto, sem detalhá-las

É importante saber tudo o que será desenvolvido para que seja feito um planejamento do todo dividindo cada etapa em iterações. Muitas vezes com o feedback dos clientes o planejamento pode se modificar por completo, ou então, apenas alguns detalhes. Porém não se esqueça de ter essa visão sobre onde quer chegar e planejar. Este planejamento te ajudará a estabelecer melhor o caminho a seguir e,  principalmente, a definir o MVP. 

2- Quebre as funcionalidades em grupos de entrega

Após identificá-las é necessário entender o que deve ser desenvolvido primeiro (MVP) para testar a sua hipótese inicial e as etapas seguintes. Lembre-se sempre que cada iteração deve fornecer um produto executável. Nesta etapa é possível também levar em consideração a arquitetura e lógica de funcionamento do software, para facilitar o desenvolvimento em cada etapa diminuindo as chances de retrabalho.

3- Identifique a prioridade e Complexidade

Este passo é opcional, mas pode ajudar na hora do planejamento, principalmente quando inserir novos items para serem desenvolvidos. Para cada requisito determine sua prioridade (de acordo com o feedback do cliente) para ser desenvolvido e a complexidade para desenvolvê-lo. Itens com prioridade baixa e complexidade alta devem ser descartados do planejamento já que consumirão grande parte do seu tempo e não trarão benefícios aos seus clientes. 

4- Monte um planejamento de entregas

Com base nos passos anteriores monte um planejamento de entrega de cada iteração, mas não se esqueça de incluir um período para integração dos produtos liberados em cada iteração. Já que algumas vezes podem ser necessários o desenvolvimento de interfaces de comunicação entre eles. 
Neste passo também é importante linkar as alterações com as versões do software. Isso garante que se após uma alteração ocorrer algum problema grava com o software, seja possível mapear o que foi alterado de uma versão para a outra, além de poder resgatar o que estava funcionando anteriormente. Lembrando sempre que gerenciamento de versão é algo fundamental para quem está desenvolvendo softwares comerciais.

5- Siga o seu fluxo de desenvolvimento para cada iteração

Lembre-se sempre que não é porque o desenvolvimento é ágil que ele precisa ser bagunçado. Por isso tente sempre seguir o fluxo básico: requisitos > desenvolvimento > testes > implantação para não se perder no meio do caminho durante o desenvolvimento. Com o tempo e feedbacks de clientes aparecerão novos requisitos e saber como lidar com eles: qual deve ser desenvolvido primeiro ou descartado pode ajudar muito no sucesso da sua startup.
Redigido por Nathália Novaes

Nenhum comentário:

Postar um comentário