Muitos profissionais falam sobre método ágil de desenvolvimento, mas, o que isso significa?

 

O método ágil de desenvolvimento de software, que na realidade pode ser aplicado em vários outros processos e não somente na área de tecnologia da informação, é um conjunto de métodos e processos que facilitam a interação entre clientes e desenvolvedores, possibilitando uma maior eficiência e ganho de produtividade.

O método ágil tem por princípios, garantir a satisfação do cliente, entregando de forma eficiente e contínua, produtos funcionais, antecipando prazos e estimulando a cooperação diária entre o cliente, o desenvolvedor e outros colaboradores (stakeholders).

Os projetos criados no processo ágil, valorizam as interações, ou seja, a cooperação entre os indivíduos, mais do que as ferramentas, ou mesmo, os processos utilizados. Nesta metodologia de trabalho, um produto funcional e que atenda aos requisitos do cliente se sobrepõe as necessidades de documentação. O produto é entregue em etapas e cada etapa acompanhada de perto pelo cliente.O design do produto preza pela qualidade e excelência técnica, que visam responder às mudanças de forma rápida, sempre em colaboração com o cliente.

puzzle_pieces_house_teamwork_1600_clr

Startup Sorocaba: Você sabe o que é desenvolvimento ágil?

 

Para um processo de desenvolvimento ágil, é importante que a empresa tenha uma cultura que apoie o processo, fazendo com que os colaboradores se sintam motivados e confiantes. É importante ainda, manter uma equipe pequena, porém, competente, com facilidade de comunicação entre seus membros. A cultura empresarial pode ser uma das principais barreiras para a implantação do processo ágil, porém uma vez superadas, as vantagens do desenvolvimento ágil em relação ao modelo de desenvolvimento em cascata (baseado no planejamento) farão as mudanças culturais valerem a pena.

É importante ressaltar que o método ágil de desenvolvimento, se não for bem gerenciado, pode acabar gerando uma indisciplina no desenvolvimento, já que visa atender todos os requisitos do cliente, criando códigos funcionais, porém, desorganizados e lentos.

Uma das metodologias mais usuais é conhecida como “Scrum”, que, apesar do nome assustador, Scrum não é uma linguagem de programação, nem um novo seriado de TV. É um processo de planejamento e desenvolvimento de software, ou produto de forma ágil.  É um conceito recente aplicado à criação e projeto com foco na solução e nos resultados.

Quando comecei a programar, na década de 80, fazíamos os fluxogramas que eram, na verdade, diagramas de blocos representativos da programação estruturada onde cada comando era equivalente a um símbolo bastante específico.

Depois, aprendi a usar o UML e seus diagramas de caso de uso, de classes, diagrama de sequência, de objetos, de instalação e outros. Estes diagramas ajudavam a projetar um programa orientado a objetos.

A programação orientada a objetos revolucionou a forma de desenvolver código e para quem veio da programação estruturada, era uma forma muito mais simples de realizar o projeto de um software. Mas seus diagramas e excesso de planejamento tornam o desenvolvimento lento e muitas vezes o cliente não tem ou não compreende este fator.

Existem vários processos de criação iterativa e incremental para desenvolvimento de software ágil, como a prototipagem (onde são criados protótipos do código para o cliente e após definir as especificações, cria-se o produto real), processo em espiral (onde se agregam funções ao projeto e as especificações são implementadas).

O Scrum é o nome dado a um processo ágil onde o mais importante são os resultados e funcionalidade e não manuais complexos. E a participação de todos, desenvolvedores e clientes (product owner) é fundamental.

Muitas vezes, o cliente pode alterar a necessidade ou especificações do produto. Cabe ao Scrum Master manter a equipe direcionada da forma correta e assegurar as práticas do Scrum.

O desenvolvimento Scrum, começa ouvindo o cliente através de “histórias dos processos” que o sistema realizará. Isso irá gerar o product backlog (funcionalidades do sistema). Os processos do sistema são divididos em sprints, que são unidades básicas daquilo que será criado.

Cada sprint começa com uma reunião (Sprint Planning) que irá definir as tarefas daquela unidade, sempre seguido por reuniões de revisão ou retrospectiva. Em cada sprint a equipe (Scrum team) cria algo funcional e perceptível pelo product owner, dentro de um prazo estabelecido e gera um “feedback”.

Muitas empresas de desenvolvimento de software estão adotando o processo Scrum, pois seus resultados têm se mostrados mais vantajosos que os processos similares.  Se você leitor é um desenvolvedor e esta é a primeira vez que ouve sobre o assunto, segue abaixo alguns links para mais informações:

 

Manifesto ágil

 

Using na Agile Software Process with OffShore Development

 

O guia do Scrum: Um PDF sobre método Scrum

 

O site do Scrum (em Inglês).

 

Vídeos da Universidade Scrum

 


E você, o que pensa sobre o assunto? Gostou do artigo? Compartilhe conosco sua opinião. Não gostou? Acha que podemos melhorar? Então nos ajude a aprimorar nosso trabalho.

Siga o Startup Sorocaba no Facebook e cadastre-se para receber nossa newsletter e para ser informado sobre todas as novidades.

Compartilhe:

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.


E você, o que pensa sobre o assunto? Gostou do artigo? Compartilhe conosco sua opinião. Não gostou? Acha que podemos melhorar? Então nos ajude a aprimorar nosso trabalho.

Siga o Startup Sorocaba no Facebook e cadastre-se para receber nossa newsletter e para ser informado sobre todas as novidades.
Compartilhe: