Introdução ao Desenvolvimento Ágil de Software

A partir de hoje começo uma série de artigos sobre desenvolvimento ágil de software, o objetivo é ajudar vocês leitores do meu blog a conhecer, aprender e saber como aplicar algumas das métodologias ágeis no seu dia-a-dia utilizando Rally como sua ferramenta de apoio, tudo isso de uma forma fácil e leve. Vamos começar entendendo os conceitos, valores, as metodologias SCRUM e Kanban, e aplicar tudo isso no Rally a primeira, melhor e mais completa ferramenta ALM Agile.

Introdução

Desenvolvimento ágil de software (em inglês Agile software development) ou Método ágil é um conjunto de metodologias para desenvolvimento de software, que pode e é aplicado a diversos projetos não relacionados a software. O desenvolvimento ágil traz uma estrutura conceitual para guiar projetos de engenharia de software, assim como outras metodologias de software também o fazem. Em 2001, membros proeminentes da comunidade publicaram o Manifesto ágil, documento que reúne os princípios e práticas desta metodologia de desenvolvimento.

O manifesto contém quatro valores fundamentais:

  • Os indivíduos e suas interações acima de procedimentos e ferramentas;
  • O funcionamento do software acima de documentação abrangente;
  • A colaboração dos clientes acima da negociação de contratos;
  • A capacidade de resposta à mudanças acima de um plano pré-estabelecido;
O manifesto veio para estabelecer uma escala de valores, onde a flexibilidade e a colaboração são mais relevantes do que a rigidez de processos e planejamento clássicos.

Os princípios do desenvolvimento ágil valorizam:

  • Garantir a satisfação do consumidor entregando rapidamente e continuamente softwares funcionais;
  • Softwares funcionais são entregues frequentemente (semanas, ao invés de meses);
  • Softwares funcionais são a principal medida de progresso do projecto;
  • Até mesmo mudanças tardias de escopo no projecto são bem-vindas.
  • Cooperação constante entre pessoas que entendem do ‘negócio’ e desenvolvedores;
  • Projetos surgem através de indivíduos motivados, entre os quais existe relação de confiança.
  • Design do software deve prezar pela excelência técnica;
  • Simplicidade;
  • Rápida adaptação às mudanças;
  • Indivíduos e interações mais do que processos e ferramentas;
  • Software funcional mais do que documentação extensa;
  • Colaboração com clientes mais do que negociação de contratos;
  • Responder a mudanças mais do que seguir um plano.
Métodos ágeis enfatizam a comunicação constante, de preferência frente à frente e não através de documentos, e-mails, SMS, etc. Enfatizar a iteração entre as pessoas certamente traz um impacto ao trabalho em equipe, algo fundamental e um dos pilares em métodos ágeis. Outro aspecto importante e mal interpretado em métodos ágeis é a o tema documentação, onde muitas erroneamente pensam que Ágil não requer documentação, e não é bem assim, Ágil recomenda a documentação do que realmente será útil, definir o que será útil é cabe a cada time.

O quão diferente é o desenvolvimento ágil de outras metodologias?

Em projetos ágeis software são desenvolvidos de forma incremental, geralmente em ciclos (iteração/iteration) curtos de 1 à 4 semanas que nos ajuda a manter o desenvolvimento alinhado com as necessidades do negócio. Bem diferente dos tradicionais métodos onde definimos um único ciclo que dura em torno de 6 à 18 meses e de cara levantamos todos os requisitos e riscos antecipadamente, a figura abaixo demonstra os métodos tradicionais. Ágil se adapta ao feedback constante permitindo a entrega dos trabalhos planejados a partir de código implementado e testado a cada iteração (1 à 4 semanas), conforme a figura abaixo. Resumindo em métodos ágeis ao final de cada iteração teremos um parte do nosso software que potencialmente poderá ou não ser entregue, diferente dos tradicionais métodos onde investimos meses para entregar algo.

Vou ficando por aqui, até o próximo artigo que virá em breve.

11 respostas
  1. Levy Pereira
    Levy Pereira says:

    Perfeito Andreano. Fato é, especialmente hoje, que o desenvolvimento necessita de agilidade e versatilidade. A prática, desde os tempos aureos do Clipper, vem sendo esta e é o que por certo gera a diferenciação do mercado.
    A oferta de produtos ‘prontos’ é um facilitador para os clientes, sem que eles saibam que não lhes suprirá a necessidade de forma ampla. Desenvolver profissional e eficazmente é a chave do sucesso.
    Grande abraço!

    Responder
  2. Rafael Budag
    Rafael Budag says:

    Bom Artigo. Descobri agora que voce não faz mais parte da Embarcadero, Fico muito triste com isso e penso no futuro do nosso querido Delphi, espero que eles tenham competência para tocar.

    Era muito diferente ir em um delphi meeting, ou qualquer evento, onde você estava. Você sabia responder as perguntas, estava por dentro, percebia muito bem o seu alto conhecimento. Uma vez fui em um delphi meeting que você não estava, e foi um fracasso.

    Sucesso para você e boa sorte.!!!!

    Responder
  3. Celso Henrique
    Celso Henrique says:

    Olá Andreano,

    Faz tempo que não visito o seu blog e fiquei triste com a sua saída da Embarcadero, mas espero que tenha sido melhor pra você. Sobre este artigo, gostaria de comentar uma coisa que ouço há muito tempo e que ninguém corrige.

    Você disse que métodos Ágeis se adaptam ao feedback do usuário, que são incrementais e que dentro de um período curto nós já teremos parte do software implementado. Me desculpe, mas isto não é exclusividade dos métodos Ágeis, isto é um ganho dos Métodos Iterativos. RUP, por exemplo, não tem nada de Ágil, mas também é iterativo, aliás, apenas o processo de desenvolvimento em cascata não é iterativo, todos os outros são e possuem essas mesmas facilidades. Apenas nos métodos em cascata levanta-se todos os requisitos antes do desenvolvimento, e até mesmo nos métodos ágeis é necessário definir o escopo do produto antes do início do seu desenvolvimento.

    No mais, te desejo muita sorte e estarei acompanhando o seu trabalho.

    Abraço!

    Responder
    • Andreano Lanusse
      Andreano Lanusse says:

      Oi Carlos,

      Pois é rumos novos, estou na Rally Software e me divertindo bastante.

      Com relação ao seu comentário, você tem o feedback em métodos iterativos, mas quando comparado com ágil efetuamos as mudanças necessárias numa velocidade maior do que tradicionais métodos. Eu pessoalmente discordo de que todos tem as mesmas facilidades, especialmente quando cada método tem meios bem diferentes para chegar ao seu objetivo.

      Tenho mais para escrever sobre o tema, vamos trocando ideias.

      Abraços

      Responder
  4. Maurício
    Maurício says:

    Só uma dúvida, Adreano.
    Eu possuo uma story chamada Fazendas.
    Nela eu tenho 5 tarefas: CRUD User Interface, CRUD Server Side, DataBase e por último webservice.
    Pergunta: A story só é finalizada e os pontos “computados” quando o PO aprova a estória por completo ou quando o Scrum Master valida?

    Responder

Trackbacks & Pingbacks

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.