Desenvolvimento Ágil

Scrum e XP

Professor: Gabriel Soares Baptista

Introdução: O Contexto da Agilidade

  • Ambiente Global: Mudanças rápidas e imprevisíveis exigem respostas imediatas.
  • Pressão sobre Software: O software é parte indissociável dos negócios; a entrega rápida é requisito de sobrevivência.
  • Falha do Modelo Tradicional (Waterfall): Assume estabilidade de requisitos que não existe mais no cenário dinâmico atual.
  • Objetivo Ágil: Desenvolvimento incremental e entrega rápida de software funcional.

Características dos Processos Ágeis

  • Intercalação de Etapas: Especificação, projeto e implementação acontecem simultaneamente ou em ciclos curtos de feedback.
  • Desenvolvimento Incremental: O sistema é entregue em versões usáveis a cada ciclo.
  • Suporte de Ferramentas: Uso extensivo de IDEs modernas para automatizar tarefas e manter o ritmo.
  • Envolvimento dos Stakeholders: Usuários finais validam cada versão, garantindo que o produto atenda às necessidades atuais.

O Manifesto Ágil (2001)

  • Mudança de Foco: Prioriza a entrega rápida e a colaboração em vez de processos rígidos e documentação extensiva.
Valoriza-se mais... Do que...
Indivíduos e interações Processos e ferramentas
Software em funcionamento Documentação abrangente
Colaboração com o cliente Negociação de contratos
Responder a mudanças Seguir um plano

Princípios dos Métodos Ágeis

Princípio Descrição
Envolvimento do cliente Clientes priorizam requisitos e avaliam iterações continuamente.
Entrega incremental O cliente especifica os requisitos para cada ciclo de software.
Pessoas, não processos Equipe tem autonomia para desenvolver sua própria maneira de trabalhar.
Aceitar as mudanças O sistema é projetado de forma flexível para acomodar alterações.
Manter a simplicidade Foco em eliminar complexidade desnecessária no software e no processo.

Questões de fixação - 1 / 3

  1. Explique por que, para as empresas que operam em mercados globais dinâmicos, a entrega rápida e a implantação contínua de novos sistemas frequentemente são consideradas mais críticas para a sobrevivência do que a funcionalidade detalhada desses sistemas.
  2. Explique como os princípios básicos do Manifesto Ágil (como entrega incremental e aceitação de mudanças) levam ao desenvolvimento e implantação de software acelerados, contrastando com a rigidez dos modelos dirigidos a planos.
  3. Com base na tabela de fatores técnicos, humanos e organizacionais apresentada no texto, cite três cenários ou características de projeto onde você não recomendaria o uso de um método ágil, preferindo uma abordagem dirigida a planos.

Comparativo: Ágil vs. Dirigido a Planos

  • Dirigido a Planos: Estágios distintos com saídas documentais formais.

  • Ágil: Requisitos e projeto são iterados conjuntamente.

  • Decisão Híbrida: A maioria dos projetos utiliza práticas de ambas as abordagens.

  • Foco Principal: Adquirir um sistema executável que atenda às necessidades do comprador.

Fatores para Escolha de Metodologia

Fator Indicação para Dirigido a Planos Indicação para Ágil
Tamanho Sistemas grandes/equipes distribuídas Equipes pequenas e colocalizadas
Tipo Sistemas críticos ou de tempo real Sistemas corporativos dinâmicos
Vida Útil Vida longa (exige documentação) Entrega rápida para feedback
Equipe Nível de habilidade variado Alta habilidade e colaboração
Cultura Engenharia tradicional e burocrática Cultura de autonomia e informalidade
Regulação Exige auditoria e aprovação formal Menor rigor regulatório externo

Extreme Programming (XP)

  • Conceito: Eleva práticas reconhecidas a níveis "extremos" de disciplina.
  • Ritmo: Integração e testes ocorrem várias vezes ao dia.
  • Design: Descarta o "projeto para a mudança"; assume que o futuro é incerto.

Práticas Essenciais do XP

Prática Descrição
Pequenos Releases Conjunto mínimo de funcionalidades que gera valor imediato.
Projeto Simples Design atende apenas às necessidades atuais (YAGNI).
Desenvolvimento Test-First Testes automatizados escritos antes da funcionalidade.
Refatoração Melhoria contínua da estrutura sem alterar o comportamento.
Propriedade Coletiva Qualquer desenvolvedor pode alterar qualquer parte do código.
Ritmo Sustentável Evita fadiga para manter a qualidade do código.

Planejamento em XP: Estórias de Usuário

Quadro 3.1: Estória de Usuário - Prescrição de Medicamentos
Cenário: Médica deseja prescrever medicamentos. O sistema oferece: 'medicação atual', 'nova medicação' ou 'formulário'.

  • Regra Crítica: O sistema verifica se a dose está na faixa permitida. Caso contrário, solicita alteração.

Decomposição em Tarefas Técnicas (Quadro 3.2):

  • Tarefa 1: Alterar dose de medicamentos prescritos.
  • Tarefa 2: Seleção de formulário (Interface e Busca).
  • Tarefa 3: Verificação de dose (Lógica de erro/confirmação).

Testes em XP: A Abordagem Test-First

  • Vantagens: Define interface e comportamento antes da codificação, reduzindo ambiguidades.
  • Automação: Testes são componentes executáveis (ex: JUnit) que detectam regressões rapidamente.
  • Papel do Cliente: Ajuda a desenvolver testes de aceitação baseados em dados reais.

Limitações dos Testes em XP Descrição
Atalhos na Escrita Testes incompletos apenas para cumprir tarefas.
Complexidade de UI Difícil testar interfaces de usuário de forma unitária.
Cobertura Falsa sensação de segurança se partes essenciais não forem revisadas.

Programação em Pares

  • Dinâmica: Duplas dinâmicas trabalham na mesma estação de trabalho.
  • Benefícios:
  • Propriedade Coletiva: Responsabilidade compartilhada pelo software.
  • Revisão Informal: Cada linha é observada por duas pessoas continuamente.
  • Suporte à Refatoração: O benefício da melhoria do código é imediato e compartilhado.
Gestão de Risco

O compartilhamento de conhecimento reduz riscos caso um membro saia da equipe, agindo como um ativo valioso para o projeto.

Questões de fixação - 2 / 3

  1. O Extreme Programming (XP) expressa os requisitos dos usuários como "estórias" em cartões, em vez de documentos de especificação detalhados. Discuta as vantagens dessa abordagem para o planejamento incremental e as desvantagens potenciais para a manutenção de longo prazo e contratos de escopo fechado.
  2. Explique por que o desenvolvimento test-first (testes antes do código) ajuda o programador a desenvolver um melhor entendimento dos requisitos do sistema e a evitar ambiguidades. Quais são as limitações dessa abordagem em relação à completude da validação e interfaces complexas?
  3. Embora intuitivamente pareça que dois programadores trabalham o dobro se estiverem separados, sugira razões baseadas no texto (como revisão informal e refatoração) pelas quais a programação em pares pode ser considerada eficiente e benéfica para a qualidade do código e gestão de risco da equipe.

Gerenciamento Ágil com Scrum

  • Foco: Gerenciamento do desenvolvimento iterativo, sem prescrever práticas técnicas fixas.
  • Fases do Scrum:
  1. Planejamento Geral: Objetivos e arquitetura inicial.
  2. Ciclos de Sprint: Desenvolvimento incremental (2 a 4 semanas).
  3. Encerramento: Conclusão da documentação e lições aprendidas.

O Ciclo do Sprint

  • Backlog: Lista de requisitos priorizados com o cliente.
  • Seleção: A equipe escolhe o que será desenvolvido no ciclo atual.
  • Reuniões Diárias (Stand-ups): Replanejamento rápido e análise de progresso.
O Scrum Master

Atua como um facilitador, não como chefe. Protege a equipe de distrações externas, organiza reuniões e controla o backlog.

Vantagens: Resiliência a requisitos instáveis, visibilidade total para a equipe e feedback contínuo do cliente.

Escalamento: Scaling Up (Sistemas Grandes)

Adaptar o ágil para sistemas de grande escala exige lidar com complexidades que equipes pequenas não enfrentam.

Desafio Adaptação Necessária
Sistemas Brownfield Integração com sistemas legados rígidos exige negociação política.
Arquitetura Necessidade de um projeto de arquitetura prévio para coordenar múltiplas equipes.
Comunicação Canais formais (videoconferências, wikis) para alinhar times distribuídos.
Regulações Produção obrigatória de documentação detalhada para auditoria.

Escalamento: Scaling Out (Grandes Organizações)

A introdução de métodos ágeis em culturas corporativas estabelecidas enfrenta barreiras significativas.

  • Aversão ao Risco: Gerentes relutam em abandonar planos tradicionais por medo da imprevisibilidade.
  • Padrões Burocráticos: Ferramentas e procedimentos de qualidade rígidos conflitam com a fluidez ágil.
  • Disparidade de Habilidades: Ágil exige alta competência; profissionais juniores podem ter dificuldade em times autogerenciáveis.
  • Choque Cultural: Resistência ao fim do modelo de "Comando e Controle" e das equipes de teste externas.

Questões de fixação - 3 / 3

  1. Compare a abordagem Scrum para o gerenciamento de projetos com abordagens convencionais dirigidas a planos. Foque sua comparação na forma como cada uma lida com a incerteza dos requisitos, o planejamento das atividades (Sprints vs. Fases Longas) e o papel do gerente (Scrum Master vs. Gerente de Projeto tradicional).
  2. Você é um gerente de software em uma empresa responsável pelo desenvolvimento de um sistema crítico de controle para aeronaves, sujeito a rigorosas regulamentações de segurança e auditoria. Analise a viabilidade de utilizar uma abordagem puramente ágil (como XP) versus uma abordagem dirigida a planos para este projeto, considerando os fatores de "Regulamentação" e "Tipo de Sistema" discutidos no texto.
  3. O texto menciona que um dos desafios dos métodos ágeis é a necessidade de um cliente disponível em tempo integral ("Cliente no Local"). Discuta as dificuldades práticas de implementar esse princípio em grandes organizações e como a falta de consenso entre diferentes stakeholders pode afetar o progresso da equipe ágil.
  4. Discuta os desafios de comunicação e coordenação que a mudança para o trabalho remoto impõe às práticas ágeis (como Scrum e programação em pares) e mencione adaptações necessárias para o "Scaling Out" ou trabalho distribuído.

Próximos Passos

  • Revisão para primeira avaliação!