Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução:
• Introdução
• O Manifesto Ágil – 12 Princípios
• Modelos de Processos- Conceitos e Definições
• Princípios da Abordagem de Métodos Ágeis
• Algumas dificuldades para atender os
Princípios de Métodos Ágeis
• Processos orientados a Planos
• Metodologias e Frameworks Ágeis
• Vídeo
• Estudo de Caso
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Introdução:
Ambiente de negócios de acirrada competitividade global.
Qualidade, produtividade e repostas rápidas são premissas
mandatórias.
Extrema dependência do Software para as transações de
negócio é fato.
Requisitos iniciais em constantes mudanças
Insistência no uso de modelos clássicos tradicionais geram
produtos de software desatualizados, estresse e custos
ascendentes .
A necessidade de desenvolvimento ágil é uma expectativa já
há algum tempo (Stapleton, 1997; Schwaber e
BEEDELE,2001; BECK 1999, 2000).
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Introdução:
A filosofia da Abordagem de Métodos Ágeis no Desenvolvimento propõe...
De Para
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Introdução:
A definição de metodologias ágeis de desenvolvimento de
software foi criada durante os anos 90 como reação contra os
métodos de desenvolvimento "pesados", tipificados pelo
modelo em cascata. Estes métodos eram então vistos como
burocráticos e lentos e criavam uma contradição em relação
à ideia que o trabalho dos engenheiros de software é eficaz.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Introdução:
Manifesto Ágil.
Métodos Ágeis
utilizam uma
Proposição de abordagem
diversos métodos incremental para a
Ágeis. Focalização especificação,
das equipes no desenvolvimento e a
Formalização, desenvolvimento, entrega do software
Planejamento Menor ênfase em
rigorosos e uso de concepção e
Ferramentas Case documentação
Sistemas grandes,
Equipes dispersas,
demora...
80 90 2000
Anos
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
O Manifesto Ágil
Este Manifesto foi criado com o intuito de fazer a união entre as Por meio de um processo baseado
diferentes metodologias ágeiságil. na experiência e na observação,
com ciclos constantes de
inspeção e adaptação, a equipe
trabalha sempre num ambiente de
Enfatiza a comunicação, melhoria contínua.
colaboração com o cliente e
atividades que trazem valor
imediato na produção de
software com qualidade.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
6.O método mais eficiente e eficaz de transmitir informações para
Os 12 princípios do Manifesto Ágil e entre uma equipe de desenvolvimento é através de conversa
1.Nossa maior prioridade é satisfazer o cliente face a face.
através da entrega contínua e adiantada de software 7.Software funcionando é a medida primária de progresso.
com valor agregado.
8.Os processos ágeis promovem desenvolvimento sustentável.
2.Mudanças nos requisitos são bem-vindas, mesmo
tardiamente no desenvolvimento. Processos ágeis Os patrocinadores, desenvolvedores e usuários devem ser
tiram vantagem das capazes de manter um ritmo constante indefinidamente.
mudanças visando vantagem competitiva para o 9.Contínua atenção à excelência técnica e bom design aumenta a
cliente. agilidade.
3.Entregar frequentemente software funcionando, 10.Simplicidade--a arte de maximizar a quantidade de trabalho
de poucas semanas a poucos meses, com não realizado--é essencial.
preferência à menor escala de tempo.
4.Pessoas de negócio e desenvolvedores devem
11.As melhores arquiteturas, requisitos e designs emergem de
trabalhar diariamente em conjunto por todo o equipes autoorganizáveis.
projeto. 12.Em intervalos regulares, a equipe reflete sobre como se tornar
5.Construa projetos em torno de indivíduos mais eficaz e então refina e ajusta seu comportamento de acordo.
motivados. Dê a eles o ambiente e o suporte
necessário e confie neles para fazer o trabalho.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Modelos de Processos Ágeis
Conceitos e Definições
Ágil é uma nova forma de gestão e
desenvolvimento de Software que usa uma
abordagem de planejamento e execução
iterativa e incremental voltado para
processos empíricos (complexos, caóticos
ou com muita incerteza, tem mudança ao
longo do processo, não são repetitivos e são
imprevisíveis).
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Envolvimento do Cliente
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Entrega Incremental
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Focalização em Pessoas
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
O Manifesto Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Envolvimento do Cliente
“Omisso” “Sustentável”
Contribuição
Domínio /
Métodos ágeis têm sido muito
bem-sucedidos para alguns tipos
de desenvolvimento de
sistemas, no entanto, na prática,
alguns princípios básicos dos
métodos ágeis são, por vezes, “Ausente” “Expectador ”
são difíceis de se realizar:
Intensidade de
Participação
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Conhecimentos
Membros individuais da equipe
Domínio /
podem não ter personalidade
orientada para o cooperação e
envolvimento; qualquer seja o
motivo tais contextos criam
dificuldades para o
compartilhamento de soluções. “Caos” “Bando ”
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Capacidade de Solução
“Priorizar as mudanças pode ser
extremamente difícil,
(Equipe)
especialmente em sistemas nos
quais existem muitos
stakeholders. Normalmente,
cada stakeholder dá prioridades
diferentes para mudanças “Caos” “Amontoado ”
diferentes...”
Diversidade de Prioridades
(Stakeholders)
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Manter a simplicidade
“Estagnação” “Sustentável”
Capacidade de Solução
“Manter a simplicidade exige um
trabalho extra. Sob a pressão de
cronogramas de entrega, os
membros da
equipe podem não ter tempo
para fazer as simplificações
desejáveis....” “Caos” “Loteria ”
Nível de Simplicidade
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Liderança
empresas, que passaram anos
mudando sua cultura para que os
processos fossem definidos e
seguidos. Resistem em mudar de
um modelo de trabalho em que
“Caos” “à Deriva ”
os processos são informais e
definidos pelas equipes de
desenvolvimento interagem Nível de Mudança
livremente
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Metodologias e Frameworks Ágeis
“Desenvolvimento ágil" é o termo utilizado por diferentes Metodologias e Frameworks que
desenvolvem software de forma iterativa e incremental. As metodologias ágeis mais comuns :
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Processos Ágeis – Extreme Programming
Extreme Programming (XP) . O nome foi dado por Beck
(2000), pois a abordagem foi desenvolvida para
impulsionar práticas reconhecidamente boas, como o
desenvolvimento iterativo, a níveis extremos'.
Em XP, várias novas versões de um sistema podem ser
desenvolvidas, integradas e testadas em um único dia
por programadores diferentes.
Em Extreme Programming, os requisitos são expressos
como cenários (chamados de histórias do usuário), que
são implementados diretamente como uma série de
tarefas.
Os programadores trabalham em pares e desenvolvem
testes para cada tarefa antes de escreverem o código.
Quando o novo código é integrado ao sistema, todos os
testes devem ser executados com sucesso. Há um curto
intervalo entre os releases do sistema.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Processos Ágeis – Extreme Programming
1. O desenvolvimento incrementai é sustentado por
meio de pequenos e frequentes releases do sistema. Os
requisitos são baseados em cenários ou em simples
histórias de clientes, usadas como base para decidir a
funcionalidade que deve ser incluída em um incremento
do sistema.
2. O envolvimento do cliente é sustentado por meio do
engajamento contínuo do cliente com a equipe de
desenvolvimento. O representante do cliente participa
do desenvolvimento e é responsável por definir os
testes de aceitação para o sistema.
3. Pessoas — não processos — são sustentadas por meio
de programação em pares, propriedade coletiva do
código do sistema e um processo de desenvolvimento
sustentável que não envolve horas de trabalho
excessivamente longas.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Processos Ágeis – Extreme Programming
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
XP Extreme Programming
As boas Práticas de XP incluem:
•The Customer is Always Available (O cliente sempre
disponível).
Metodologia baseada em
comportamentos e atitudes com foco •Metaphor (Uso de metáforas no projeto),
em agilidade de equipes e qualidade •Planning Game (mento do jogo) ,
de projetos, apoiada em valores como •Small Releases (Pequenas versões)
simplicidade, comunicação, feedback •Acceptance Tests (Testes de Aceitação)
e coragem que nos submetem ao •Test First Design (Primeiro os testes)
reconhecimento. •Continuous Integration (Integração Contínua)
•Simple Design (Simplicidade de Projeto)
Propicia que o projeto seja executado •Refactoring (Refatoração - melhoria constante do
dentro do prazo e do orçamento, código)
fazendo então com que o cliente fique •Pair Programming (Programação em dupla)
satisfeito e a equipe de •Move People Around (Rodízio de pessoas)
desenvolvimento não estresse com o •Collective Code Ownership (Propriedade coletiva - O
projeto. código é de todos da equipe)
•Coding Standards (Padronização do código)
•40 Hour Week (Otimizando as jornadas de trabalho)
•Etc.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Lean Development
Lean é uma metodologia originalmente desenvolvida pela Toyota As boas Práticas de LD incluem:
para guiar processos industriais de linha de montagem, atuando
fortemente na eliminação de desperdícios, aumento da •Elimine Desperdícios
velocidade de processos e excelência em qualidade. Lean
•2. Inclua a Qualidade no Processo
Software Development trás os conceitos de Lean para o universo
do desenvolvimento de software, para que através da aplicação •3. Crie Conhecimento
dos mesmos princípios seja possível eliminar desperdícios e •4. Não postergue tomada de
alcançar melhores resultados. decisão e comprometimentos
•5. Entregue-se o quanto antes
A aplicação de Lean Software Development pode ajudar equipes
•6. Respeite as Pessoas e “dê
de desenvolvimento de software a atingirem maior nível de
maturidade em termos de qualidade e velocidade, entendendo e autonomia à equipe
estudando seu processo atual, e trabalhando constantemente na •7. Otimize o Todo
identificação e eliminação de desperdícios. O pensamento Lean
vai além, e oferece também ferramentas para que a equipe crie
um ambiente de trabalho mais produtivo, onde as pessoas se
respeitem e vejam a melhoria contínua como parte fundamental
de seu processo.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
• Utilização de quadros físicos com cartões como ferramentas para tornar o processo visual
e transparente, embora nem todo quadro físico com cartões utilizado em métodos ágeis
pode ser chamado de um sistema Kanban.
•Muitas vezes estes quadros podem ser apenas controles visuais que permitem ao time
acompanhar a evolução de seu trabalho.
•Se não houver limite de trabalho em progresso e sinal para puxar mais trabalho, não é um
sistema Kanban.
•entregue.
•Além disso, é aplicável a equipes de variados tamanhos, muito embora, seja recomendável
formar equipes menores, devido à eficiência da comunicação e diversos outros benefícios
destacados pelos métodos ágeis, como Extreme Programming e Scrum.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
RUP
O IBM Rational Unified Process (RUP) é um framework de processo
de engenharia de software que fornece um conjunto de práticas
testadas na indústria para desenvolvimento de software e gerência de
projetos (Shuja, 2007).
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
RUP
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Fases da RUP
Fluxos de Processo Críticos
Inicialização Elaboração Construção Implantação
Modelagem de Negócio
Requisitos
Análise e Projeto
Implementação
Testes
Implantação
Fluxos de Suportes Críticos
Gerência de Configuração e Mudanças
Gerência de Projeto
Monitoramento do Ambiente Const. 1..2..n
Início Elab. 1..2..n Implant. 1..2..n
Interações
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Processos Ágeis – SCRUM
As principais características desse processo são:
1. Sprints são de comprimento fixo, normalmente
duas a quatro semanas. Eles correspondem ao
desenvolvimento
de um release do sistema em XP
2. O ponto de partida para o planejamento é o
backlog do produto, que é a lista do trabalho a ser
feito no
projeto.
3 - Durante a fase de avaliação do sprint, este é
revisto, e as prioridades e os riscos são identificados.
4 – O cliente está intimamente envolvido nesse
processo e, no início de cada Sprint, pode introduzir
novos requisitos
ou tarefas.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Ao final de um Sprint, a
equipe apresenta as
A cada dia de uma Sprint, a equipe faz funcionalidades
uma breve reunião (normalmente de implementadas em uma
manhã), chamada Daily Scrum. O sessão de “Sprint Review
objetivo é disseminar conhecimento Meeting”.
sobre o que foi feito no dia anterior, Faz-se uma Sprint
identificar impedimentos e priorizar o retrospectiva e a equipe
trabalho do dia que se inicia. parte para o planejamento
do próximo Sprint. Assim
reinicia-se o ciclo.
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Conclusões:
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Conclusões:
Vantagens (Cliente)
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Conclusões:
Vantagens da Organização Provedora (Gestor
e Times) do software
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Conclusões:
luther.fernandes@gmail.com AFs
Teoria de Engenharia de Software
Processos Descritivos de Ciclo de Vida de Software – Desenvolvimento Ágil
Estudo de Caso
luther.fernandes@gmail.com AFs