Com intuito de esclarecer sobre como surgiu o manifesto ágil e discutir as metodologias ágeis mais utilizadas. Esse material é parte de um conjunto de materiais sobre Engenharia de Software
Software Engineering - Agil Development.
2. Objetivos da Aula
Apresentar o desenvolvimento ágil e os principais modelos conhecidos.
3. Desenvolvimento Ágil
Breve Histórico
2001 - Kent Beck e outros dezesseis desenvolvedores e consultores se reunem e formam a “ Agile
Alliance “ - “ Aliança dos Ágeis”, e assinam o manifesto ágil. E decidiram valorizar no
desenvolvimento, ver o link para o Manifesto Ágil:
1.Indivíduos e interação entre eles mais que processos e
ferramentas
2.Software em funcionamento mais que documentação
abrangente
3.Colaboração com o cliente mais que negociação de contratos
4.Responder a mudanças mais que seguir um plano
4. Desenvolvimento Ágil
Os 12 princípios do manifesto ágil:
1. Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de
software de valor.
2. Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se
adequam a mudanças, para que o cliente possa tirar vantagens competitivas.
3. Entregar software funcionando com freqüencia, na escala de semanas até meses, com
preferência aos períodos mais curtos.
4. Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e
diáriamente, durante todo o curso do projeto.
5. Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte
necessário, e confiar que farão seu trabalho.
5. Desenvolvimento Ágil
Os 12 princípios do manifesto ágil:
6. O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de
desenvolvimento, é através de uma conversa cara a cara.
7. Software funcional é a medida primária de progresso.
8. Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e
usuários, devem ser capazes de manter indefinidamente, passos constantes.
9. Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
10. Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
11. As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.
12. Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam
seu comportamento de acordo.
6. Desenvolvimento Ágil
Com base nesses princípios e valores algumas metodologias ágeis de
desenvolvimento foram surgindo. Entre elas podemos destacar: XP e Scrum.
7. Desenvolvimento Ágil - XP
“Extreme Programming (XP) é uma metodologia de desenvolvimento de
software, nascida nos Estados Unidos ao final da década de 90. Vem
fazendo sucesso em diversos países, por ajudar a criar sistemas de melhor
qualidade, que são produzidos em menos tempo e de forma mais econômica
que o habitual. Tais objetivos são alcançados através de um pequeno
conjunto de valores, princípios e práticas, que diferem substancialmente da
forma tradicional de se desenvolver software. “ (Extreme Programming)
8. Desenvolvimento Ágil - XP
Foi definido um conjunto de 5 valores que estabelecem as bases para todo
trabalho utilizando XP:
● Comunicação;
● Simplicidade;
● Feedback;
● Coragem (Disciplina) e
● Respeito.
9. Desenvolvimento Ágil - XP
Para estabelecer comunicação efetiva entre engenheiros de software e
demais envolvidos no sistema, a XP enfatiza a colaboração estreita, embora
muitas vezes informal ( de forma verbal), entre clientes e desenvolvedores, o
estabelecimento de metáforas eficazes para comunicar conceitos importantes,
feedback contínuo e evitar documentação volumosa como meio de
comunicação.
10. Desenvolvimento Ágil - XP
Para alcançar a simplicidade, a XP restringe os desenvolvedores a projetar
apenas para as necessidades imediatas, em vez de considerarem as
necessidades futuras. O intuito é criar um projeto simples que possa ser
facilmente implementado em código. Caso precise melhorar, isso poderá ser
facilmente feito posteriormente.
11. Desenvolvimento Ágil - XP
O feedback provém de três fontes: do próprio software implementado, do
cliente e dos outros membros da equipe de software. Através de uma
estratégia para elaboração eficazes dos testes, eles podem fornecer um
feedback para a equipe ágil.
O XP valoriza os testes unitários, a medida que as classes são
implementadas os testes unitários são feitos para cada operação , de acordo
com a funcionalidade especificada. A medida que, um incremento é entregue a
um cliente, as histórias de usuários ou casos de uso implementados pelo
incremento são usados como base para testes de aceitação.
12. Desenvolvimento Ágil - XP
A XP foca no desenvolvimento para o software hoje, sem se preocupara com o
que pode vir a ocorrer com o software no futuro para isso é preciso coragem,
ou disciplina, para atenter as necessidades atuais do projeto. Por este motivo
muitas equipes que utilizam métodos ágeis sucubem, pois é um engano querer
projetar o “futuro do sistema” já que as mudanças são bem aceitas, logo se a
equipe ao inves de preocupar-se com o problema atual preocupa-se com
problemas futuros podem ter realmente perdas significativas de trabalho já que
o amanhã do sistema pode sofrer grandes mudanças.
13. Desenvolvimento Ágil - XP
A XP foca no desenvolvimento para o software hoje, sem se preocupara com o
que pode vir a ocorrer com o software no futuro para isso é preciso coragem,
ou disciplina, para atenter as necessidades atuais do projeto. Por este motivo
muitas equipes que utilizam métodos ágeis sucubem, pois é um engano querer
projetar o “futuro do sistema” já que as mudanças são bem aceitas, logo se a
equipe ao inves de preocupar-se com o problema atual preocupa-se com
problemas futuros podem ter realmente perdas significativas de trabalho já que
o amanhã do sistema pode sofrer grandes mudanças.
14. Desenvolvimento Ágil - XP
Por fim o respeito, respeitar os membros envolvidos no processo e outros
envolvidos , de forma direta ou indireta.
15. Desenvolvimento Ágil - XP
O processo XP
utiliza-se de 4 atividades metodológicas:
● Planejamento;
● Projeto;
● Codificação e
● Testes.
16. Desenvolvimento Ágil - XP
O processo XP: Planejamento
ouvir - Levantamento de requisitos ( ouvir as partes interessadas )
histórias - semelhante aos casos de uso,
entender o ambiente de negócios do software - permite uma percepção ampla
dos resultados solicitados e esperados para o sistema.
“ouvir “ conduz à criação de um conjunto de “histórias” que descrevem os
resultados, caracteristicas e funcionalidades esperadas pelo usuário.
17. Desenvolvimento Ágil - XP
O processo XP: Projeto
● Segue o lema KIS (Keep It Simple), mantenha simples.
● Quando aparece um requisito problemático ou confuso, é recomendado a
criação de um protótipo.
● Projeto é algo transitório, deve ser continuamente alterado conforme a
construção prossegue.
● Essa fase ocorre tanto antes quanto depois da codificação.
18. Desenvolvimento Ágil - XP
O processo XP: Codificação
Conceito chave é a programação em duplas ( duas pessoas em um única
máquina codificando para criar o código de uma história) ;
Conforme a dupla termina uma história, o código gerado é integrado ao
software.
19. Desenvolvimento Ágil - XP
O processo XP: Codificação
Conceito chave é a programação em duplas ( duas pessoas em um única
máquina codificando para criar o código de uma história) ;
Conforme a dupla termina uma história, o código gerado é integrado ao
software.
20. Desenvolvimento Ágil - Scrum
De acordo com Pressman [PRESSMAN, 2011], o nome Scrum vem de uma
atividade do rugby.
Desenvolvido no início de 1990 e foi concebido por Jeff Sutherland e sua
equipe de desenvolvimento.
As atividades estruturais do Scrum são: Requisitos, Analise, projeto, evolução
e Entrega.
21. Desenvolvimento Ágil - Scrum
“No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados
de Sprints. O Sprint representa um Time Box dentro do qual um conjunto de
atividades deve ser executado. Metodologias ágeis de desenvolvimento de
software são iterativas, ou seja, o trabalho é dividido em iterações, que são
chamadas de Sprints no caso do Scrum.” [SCRUM]
22. Desenvolvimento Ágil - Scrum
“As funcionalidades a serem implementadas em um projeto são mantidas em
uma lista que é conhecida como Product Backlog. No início de cada Sprint,
faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na
qual o Product Owner prioriza os itens do Product Backlog e a equipe
seleciona as atividades que ela será capaz de implementar durante o Sprint
que se inicia. As tarefas alocadas em um Sprint são transferidas do Product
Backlog para o Sprint Backlog.” [SCRUM]
23. Desenvolvimento Ágil - Scrum
“A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de
manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento sobre o
que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do
dia que se inicia. Ao final de um Sprint, a equipe apresenta as funcionalidades
implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint
Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim
reinicia-se o ciclo. Veja a ilustração abaixo:
” [SCRUM]
25. Exercícios
1 - Escreva uma história de usuário XP que descreva o recurso “ sitea favoritos
“ disponível em grande parte dos navegadores;
2 - Leia o Manifesto Ágil (http://manifestoagil.com.br/) e comente sobre os “valores”
que poderiam levar a quipes a terem problemas.
3 - Pesquise e responda: Qual o papel do Scrum Master e do Product Owner e
quem assume essas responsabilidades em um projeto?
26. Referência Bibliográfica
PRESSMAN, Roger S. Engenharia de Software: Uma abordagem Profissional / Roger S. Pressman;
tradução Ariovaldo Griesi, Mario Moro Fecchio; revisão técnica Reginaldo Arakaki, Julio Arakaki,
Renato Mazan de Andrade. - 7. ed. - Porto Alegre :AMGH, 2011.
SOMMERVILLE, Ian. Engenharia de Software, 8º edição / Ian Sommerville; tradução: Selma Shin
Shimizu Melnikoff, Reginaldo Arakaki, Edílson de Andrade Barbosa; revisão técnica: Kechi Kirama. --
8 º ed. -- São Paulo: Pearson Addison - Wesley, 2007.
Manifesto Ágil. Disponível em <http://manifestoagil.com.br/>. Acessado em 19 de agosto de 2014.
Extreme Programming. Disponível em <http://desenvolvimentoagil.com.br/xp/> . Acessado em 19 de
agosto de 2014.
Scrum. Disponhttp://desenvolvimentoagil.com.br/scrum/ível em < http://desenvolvimentoagil.com.
br/scrum/ > . Acessado em 19 de agosto de 2014.