Metodologias Ágeis de Desenvolvimento de Software

Metodologias Ágeis: Guia Completo

Informações do documento

Autor

Givanaldo Rocha De Souza

instructor Prof. Fábio Procópio
Escola

IFRN (Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte)

Curso Sistemas de Informação
Tipo de documento Apresentação/Material Didático
Idioma Portuguese
Formato | PDF
Tamanho 1.57 MB

Resumo

I.Metodologias Ágeis de Desenvolvimento de Software Uma Visão Geral

Este documento apresenta uma visão geral das principais metodologias ágeis de desenvolvimento de software, contrastando-as com abordagens tradicionais. A ênfase está na redução da documentação, focando no que é realmente útil, e na adaptação a projetos com requisitos mutáveis e equipes menores. A chave é a entrega rápida e contínua de software funcional, priorizando indivíduos e interações sobre processos e ferramentas, como preconizado pelo Manifesto Ágil.

1. Metodologias Ágeis vs. Abordagens Tradicionais

O texto introduz as metodologias ágeis como uma alternativa às abordagens tradicionais de desenvolvimento de software. Uma diferença crucial reside na produção de documentação: as metodologias ágeis geram pouca documentação, focando apenas no essencial. A escolha por metodologias ágeis é recomendada para projetos com alta taxa de mudanças nos requisitos, onde a recodificação não é dispendiosa e o tamanho da equipe é reduzido. A filosofia por trás dessa abordagem enfatiza a descoberta contínua de melhores métodos de desenvolvimento através da prática e colaboração, priorizando indivíduos e interações sobre processos e ferramentas rígidos. Essa mudança de paradigma reflete uma busca por maior flexibilidade e adaptação às necessidades do projeto, em vez de um apego estrito a processos predefinidos.

2. O Manifesto Ágil e seus Princípios

Em 2001, o Manifesto para o Desenvolvimento Ágil de Software foi assinado por Kent Beck e outros 16 especialistas. Este manifesto declara a priorização de software funcional sobre documentação abrangente, e a colaboração com o cliente sobre a negociação de contratos. Doze princípios orientam a filosofia ágil, incluindo a entrega frequente de software funcional (em semanas, não meses), a aceitação de mudanças de requisitos mesmo em estágios finais do desenvolvimento, e a colaboração contínua entre desenvolvedores e stakeholders. A simplicidade, a excelência técnica e o desenvolvimento sustentável são pilares fundamentais. Esses princípios ressaltam a importância da adaptação, flexibilidade e a satisfação do cliente como medidas de sucesso, contrastando com os métodos tradicionais mais rígidos e lineares.

3. Características e Aplicabilidade das Metodologias Ágeis

As metodologias ágeis são apresentadas como ideais para cenários específicos. A adaptabilidade a mudanças frequentes nos requisitos, o baixo custo associado à recodificação e a utilização de equipes enxutas são pontos-chave. O documento enfatiza a utilização da orientação a objetos (OO) como paradigma de desenvolvimento, integrando regras e práticas focadas em planejamento, projeto e testes. A prioridade é sempre manter a simplicidade e a entrega de valor ao cliente, com foco na funcionalidade e iterações rápidas. A colaboração contínua e a comunicação aberta entre a equipe de desenvolvimento e o cliente são indispensáveis para o sucesso da implementação de metodologias ágeis.

II.XP Extreme Programming Priorizando Simplicidade e Testes

O XP (Extreme Programming) é detalhado como uma metodologia ágil que utiliza histórias de usuários para definir requisitos, promovendo o desenvolvimento iterativo em curtos ciclos. A simplicidade (KIS - Keep It Simple), o uso de cartões CRC para modelagem de classes, e a implementação de testes unitários antes da codificação são elementos cruciais. A programação em pares também é enfatizada. O foco está na entrega de software funcional, iterativamente, com testes de aceitação realizados pelo cliente.

1. Planejamento em XP Histórias de Usuário e Priorização

O Extreme Programming (XP) utiliza 'histórias de usuário' para descrever as características e funcionalidades desejadas no software. Essas histórias devem ser concisas; se uma história demandar mais de três semanas de desenvolvimento, o cliente é orientado a dividi-la em histórias menores. Existem três abordagens para a implementação: implementar todas as histórias imediatamente (em poucas semanas), priorizar as histórias de maior valor para implementação inicial ou alguma outra combinação das duas. Esse processo iterativo e incremental garante que as funcionalidades mais importantes sejam entregues primeiro, maximizando o retorno do investimento e permitindo adaptações baseadas em feedback contínuo do cliente. A simplicidade e a clareza são priorizadas em todas as etapas do processo.

2. Projeto em XP Simplicidade e Cartões CRC

O princípio KIS (Keep It Simple) guia o projeto em XP. A metodologia estimula o uso de cartões CRC (Classe, Responsabilidade, Colaboração) para identificar e organizar as classes orientadas a objetos relevantes para cada incremento do software. Cada cartão descreve uma classe, suas responsabilidades e como ela colabora com outras classes. Os cartões CRC constituem o único produto de trabalho formal do projeto, promovendo a simplicidade e evitando documentação desnecessária. Em caso de dificuldades, a criação imediata de um protótipo operacional (Solução de Ponta) é recomendada para resolver o problema específico antes de prosseguir com o desenvolvimento completo. A ênfase contínua na simplicidade garante a facilidade de manutenção e compreensão do código.

3. Testes em XP Testes Unitários e de Aceitação

Os testes unitários são centrais na metodologia XP. Eles devem ser criados antes da implementação de cada história, guiando o desenvolvimento e garantindo a qualidade do código. Após a criação dos testes unitários, o desenvolvedor foca na implementação da funcionalidade, assegurando que o código atenda aos requisitos pré-definidos nos testes. A programação em pares, com dois desenvolvedores trabalhando juntos em um mesmo computador, é uma prática chave que auxilia na identificação de erros e na melhoria da qualidade do código. Além dos testes unitários, os testes de aceitação (ou testes do cliente) são essenciais, garantindo que o sistema como um todo atenda às expectativas do cliente, focando nas funcionalidades visíveis e revisáveis.

III.ASD Adaptive Software Development e DSDM Dynamic Systems Development Method Adaptação e Prototipagem

O documento descreve o ASD (Adaptive Software Development), que auxilia no desenvolvimento de sistemas complexos, identificando restrições e levantando requisitos básicos. Já o DSDM (Dynamic Systems Development Method) utiliza prototipagem incremental para construir e manter sistemas que atendem a prazos apertados, iterando em ciclos de desenvolvimento e obtendo feedback dos usuários. O ciclo de vida DSDM, incluindo estudo de viabilidade e iterações de projeto e construção, é apresentado.

1. ASD Adaptive Software Development Adaptação a Sistemas Complexos

O Adaptive Software Development (ASD), proposto por Highsmith, é uma metodologia ágil focada no desenvolvimento de sistemas e softwares complexos. Seu foco principal é a identificação das restrições do projeto desde o início, realizando um levantamento dos requisitos básicos. A metodologia enfatiza a adaptação contínua ao longo do processo de desenvolvimento, reconhecendo a natureza dinâmica dos projetos de software e a inevitabilidade de mudanças. A colaboração é um elemento-chave no ASD, buscando a integração de todas as partes interessadas para lidar eficazmente com a complexidade inerente a projetos de grande escala. O ASD se destaca pela sua capacidade de acomodar mudanças e incertezas, características comuns em projetos complexos, entregando valor de forma incremental e adaptativa.

2. DSDM Dynamic Systems Development Method Prototipagem Incremental e Feedback do Usuário

O Dynamic Systems Development Method (DSDM) é apresentado como um arcabouço para construir e manter sistemas que atendem a prazos apertados, utilizando prototipagem incremental em um ambiente de projeto controlado. O DSDM Consortium, um grupo mundial de empresas, define um ciclo de vida que inclui um estudo de viabilidade inicial, onde são definidos os requisitos básicos e as restrições do negócio, e uma avaliação da viabilidade de usar o DSDM. O ciclo de vida continua com iterações de projeto e construção, criando protótipos incrementais e coletando feedback dos usuários a cada iteração. Este feedback contínuo permite a adaptação do sistema às necessidades reais, assegurando que o produto final atenda às expectativas do cliente mesmo em condições de tempo limitado. A prototipagem incremental é a espinha dorsal do DSDM, permitindo um desenvolvimento ágil e adaptativo.

3. Ciclo de Vida DSDM Estudo de Viabilidade e Iterações

O ciclo de vida DSDM é composto por etapas bem definidas. O estudo de viabilidade define os requisitos básicos, as restrições do negócio e avalia a viabilidade do projeto utilizando a metodologia DSDM. A iteração de projeto e construção envolve a construção de protótipos incrementais, verificando se cada um passou por um processo de engenharia rigoroso antes da entrega. A implementação do sistema é feita de forma iterativa, com cada protótipo construído sendo testado e aprimorado com base no feedback dos usuários. O objetivo é obter requisitos adicionais e refinar o produto à medida que o usuário interage com os protótipos, garantindo que o resultado final seja um sistema que atenda às necessidades do cliente de forma eficiente e eficaz.

IV.Scrum Trabalho em Sprints e Gerenciamento Ágil

O Scrum é apresentado como uma metodologia ágil baseada em sprints (ciclos de 30 dias) para atingir objetivos bem definidos, listados no Product Backlog. Os papéis de Product Owner, Scrum Master, e Time são descritos, assim como o fluxo de processo, incluindo reuniões diárias e a atualização contínua do Product Backlog. A ênfase está na auto-organização da equipe e na colaboração contínua.

1. Scrum Princípios e Ciclo de Vida

Desenvolvido na década de 90 por Jeff Sutherland, o Scrum enfatiza padrões de processo de software ideais para projetos com prazos apertados e requisitos mutantes. Baseado em ciclos de 30 dias chamados Sprints, o Scrum busca alcançar objetivos bem definidos, representados no Product Backlog, uma lista priorizada de atividades. A equipe, geralmente composta de 5 a 9 pessoas, deve ser auto-gerenciável e multidisciplinar, comprometida em atingir a meta de cada Sprint. A qualidade do produto é prioridade, e a equipe deve ser cada vez mais independente e capaz de lidar com diferentes aspectos do desenvolvimento.

2. Papéis no Scrum Product Owner Scrum Master e Time

O Scrum define três papéis principais. O Product Owner atua como intermediário entre o cliente e a equipe de desenvolvimento, responsável por definir e priorizar o Product Backlog, refletindo as necessidades do cliente e as demandas do mercado. O Scrum Master atua como líder, mediador e facilitador, garantindo que a equipe siga as práticas do Scrum e removendo quaisquer obstáculos que impeçam o progresso. A equipe (Time) é um grupo pequeno e multidisciplinar, responsável pela implementação das tarefas do Product Backlog em cada Sprint, trabalhando colaborativamente para atingir os objetivos previamente estabelecidos. A responsabilidade pela atualização do Product Backlog também é da equipe.

3. Fluxo de Processo e Reuniões Scrum

O fluxo de processo Scrum inicia com a definição do Backlog, onde o Product Owner lista funcionalidades ou mudanças no produto. As unidades de trabalho são os Sprints (geralmente 30 dias), que visam atender os itens do Product Backlog. Reuniões diárias de aproximadamente 15 minutos são realizadas, onde a equipe responde a três perguntas: o que você fez ontem, o que você fará hoje e há algum impedimento? Esse processo iterativo e incremental permite ajustes constantes, assegurando que o projeto se mantenha alinhado com as necessidades do cliente e que os problemas sejam identificados e resolvidos rapidamente. A priorização das tarefas e o feedback contínuo são cruciais para o sucesso do processo Scrum.

V.Crystal e FDD Flexibilidade e Foco em Características

A família de metodologias Crystal, adaptadas ao tamanho da equipe, e o FDD (Feature-Driven Development) são mencionados. O FDD define características como funções valorizadas pelo cliente, implementáveis em duas semanas ou menos. O desenvolvimento é guiado por uma hierarquia de características, facilitando análise de projeto e código.

1. Crystal Metodologias Adaptáveis ao Tamanho da Equipe

Criada por Cockburn e Highsmith, a família de metodologias Crystal oferece diferentes abordagens, cada uma adaptada ao tamanho da equipe. Cada método Crystal é caracterizado por uma cor, indicando seu nível de formalidade e complexidade: Crystal Clear (1 a 8 pessoas, podendo chegar a 12 em casos especiais), Yellow (10 a 20 membros), Orange (20 a 50 membros), e Red (50 a 100 membros). Os graus de gerenciamento e comunicação são ajustados de acordo com o tamanho da equipe, priorizando a flexibilidade e a adaptação às necessidades específicas de cada projeto. A escolha do método Crystal mais apropriado depende do tamanho da equipe e das características do projeto, oferecendo uma abordagem mais personalizada e adaptativa.

2. FDD Feature Driven Development Foco em Características Valorizadas pelo Cliente

O Feature-Driven Development (FDD) define uma 'característica' como uma função valorizada pelo cliente que pode ser implementada em duas semanas ou menos. Utilizar essa filosofia traz benefícios como: facilidade de descrição por parte dos usuários, organização hierárquica das características, ciclos de desenvolvimento curtos (a cada duas semanas), e facilidade na análise de projeto e código. O projeto e o cronograma são guiados pela hierarquia das características, e não por um conjunto de tarefas de engenharia de software arbitrárias. Essa abordagem permite uma entrega incremental de valor, com foco nas funcionalidades mais importantes para o cliente, garantindo um desenvolvimento mais ágil e eficiente.

VI.TDD Test Driven Development Desenvolvimento Guiado por Testes

O documento introduz o TDD (Test-Driven Development), uma técnica que baseia o desenvolvimento em um ciclo curto de repetições, onde os testes automatizados são escritos antes do código, garantindo a qualidade e inspirando designs simples.

1. TDD Conceito e Ciclo de Desenvolvimento

Test-Driven Development (TDD) é uma técnica de desenvolvimento de software baseada em ciclos curtos e repetitivos. O processo começa com a escrita de um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Somente após a criação do teste, o desenvolvedor escreve o código necessário para que o teste seja aprovado. Este ciclo de teste-código-refatoração garante que o código produzido seja funcional e atenda aos requisitos definidos, contribuindo para um design mais limpo e fácil de manter. A abordagem iterativa permite a detecção precoce de erros e facilita a integração de novas funcionalidades de forma incremental.

2. Benefícios do TDD Código Simples e Confiança

Segundo Kent Beck, criador da técnica, o TDD encoraja designs de código simples e inspira confiança. Ao escrever os testes primeiro, o desenvolvedor foca na funcionalidade essencial, evitando a complexidade desnecessária. A abordagem iterativa permite refatoração contínua, melhorando a qualidade e a manutenabilidade do código. Os testes automatizados garantem a cobertura do código e facilitam a detecção de regressões, aumentando a confiança na qualidade do software. Essa abordagem contribui para um ciclo de desenvolvimento mais eficiente e menos propenso a erros, resultando em um produto final mais robusto e confiável.

Referência do documento

  • Desenvolvimento ágil de software (Wikipédia)
  • Manifesto ágil (Wikipédia)