Desenvolvimento Bloco 1 Sérgio Eduardo Nunes Objetivos
• Compreender os métodos ágeis de desenvolvimento de software.
• Diferenciar o desenvolvimento ágil de um desenvolvimento dirigido a planos. • Conhecer as práticas do extreme programming. • Conhecer o método SCRUM para desenvolvimento do software. Conceitos Básicos
Segundo Sommerville (2011), os métodos ágeis são baseados em uma abordagem
incremental. Sua principal aplicação é em desenvolvimentos com mudanças rápidas durante o projeto de desenvolvimento do software. Em aspectos gerais, qualquer metodologia ágil deve possuir os princípios: • Cliente: o envolvimento do cliente deve acontecer durante todo o projeto. • Entrega: devem ser incrementais, de acordo com as necessidades e especificações de requisitos. • Pessoas: as habilidades individuais dos integrantes da equipe devem ser exploradas, dando liberdade ao processo criativo, sem preocupação com os processos. • Mudanças: a escolha dos métodos ágeis, tem como premissa aqueles projetos com mudanças de requisitos, por isso seu planejamento deve ter tais previsões. • Simplicidade: eliminar as complexidades e partir para o mais simples, tanto na busca de soluções, quantos nos processos, mesmo que individuais. Métodos Ágeis – Pontos de atenção
Stephens e Rosenberg (2003) apontam algumas deficiências nos métodos ágeis de
desenvolvimento de software, entre eles: • Manter o cliente envolvido no projeto é algo muito difícil de ocorrer em termos práticos. O cliente entende que se tem alguém cuidando do projeto de desenvolvimento, não há mais nenhum trabalho a ser feito. • Como uma das premissas não é focar na documentação, boa parte das soluções e implementações estão sob domínio da equipe de desenvolvimento. • Na fase de evolução do software deve haver um planejamento cuidadoso nas entregas, a fim de que não comprometa as atividades do cliente.
Fonte: Imagens Online – Office 2016
Desenvolvimento Dirigido a Planos
Segundo Sommerville (2011), no
desenvolvimento dirigido a planos, existe uma iteração entre as atividades e os documentos formais. Isso permite que as saídas de um processo sejam utilizadas como base de planejamento para as atividades do processo posterior.
Fonte: Imagens Online – Office 2016
Dirigido a Planos X Métodos Ágeis
Fonte: elaborado pelo autor.
Arquitetura de Software Tema 03 – Métodos Ágeis Bloco 2 Sérgio Eduardo Nunes Extreme Programming (XP)
Segundo Beck (2000), essa metodologia de desenvolvimento visa impulsionar as boas
práticas, permitindo um desenvolvimento iterativo, elevados a níveis extremos, daí o nome Programação ao extremo. • Os requisitos são colocados como cenários e conhecidos como história do usuário. • A equipe é disposta em pares, onde são efetuados testes em cada tarefa desenvolvida. • Quando uma nova funcionalidade vai ser integrada ao software, os testes já foram previamente executados. • Todas as características inerentes aos métodos ágeis, também são utilizadas no XP. Como o desenvolvimento incremental, o envolvimento com o cliente, a valorização pessoal, e a rapidez de respostas as mudanças ocorridas no projeto. Extreme Programming (XP) - Características
• O cliente e a equipe de desenvolvimento devem definir os requisitos, onde é
possível elaborar o cartão com a história do usuário. • Após o desenvolvido do cartão de história, é possível transformar esses requisitos em tarefas. • Com isso, é possível que aconteçam as fases, bem como distribuir as tarefas para a equipe de desenvolvimento. • Dado a fase de desenvolvimento, como esse processo é desenvolvido em pares, os testes de cada funcionalidade são feitos até que tudo esteja dentro do acordado no levantamento de requisitos. • O software, ou a funcionalidade, é implementado, e o usuário pode começar a interagir com o sistema. • Por meio da interação com o usuário são geradas saídas, que podem fazer com que surjam novos cartões de história do usuário. Extreme Programming (XP) - Práticas
• Fases pequenas, o que possibilita entregas constantes.
• Design simples, a fim de partir para resolução dos problemas. • Teste de aceitação para que uma funcionalidade só seja agregada ao sistema quando tudo estiver em perfeito funcionamento. • Semana de 40 horas de desenvolvimento, o que possibilita boa carga de trabalho, sem que ocorra desgaste dos integrantes da equipe. • Programação pareada, como uma característica da metodologia. • Desenvolvimento orientado a testes, possibilitando menor número de retrabalho. Otimizando o tempo de desenvolvimento (40 horas semanais). • Padronização do código, pois o trabalho é segmentado com os pares da equipe. • Integração contínua, sendo necessário para que o cliente forneça novos cartões de história do usuário. SCRUM
Fonte: Imagens Online – Office 2016
SCRUM
• Inicialmente, o SCRUM foi utilizado em processos de manufatura, onde o
objetivo era acelerar o processo de desenvolvimento de novos produtos. • O termo foi exposto para a comunidade científica em 1986, pelo professor Hirota Takeuchi, na Universidade de Harvard. • Entretanto, sua utilização associado ao desenvolvimento ágil tem registro em 1993, na empresa Easel Corporation, pelo desenvolvedor de software Ken Schwaber e Sutherland. • No ano de 1995, a metodologia denominada como SCRUM, foi apresentada na conferência de programação orientada a objetos, sistemas, linguagens e aplicações, no Texas (EUA). SCRUM - Aplicação
Fonte: Imagens Online – Office 2016
SCRUM - Vantagens
• Entregas frequentes: as entregas devem ocorrer desde o início do projeto, com
apenas as funcionalidades básicas. • Qualidade no produto: a verificação da qualidade deve ser validada tanto pela equipe, quanto pelo cliente. É possível que isso ocorra em pequenos ciclos, pois as entregas são constantes. • Adaptação às mudanças bruscas: o SCRUM deve permitir que ao trocar a prioridade dentro de um projeto, ou ainda, ter uma mudança de necessidade no desenvolvimento, exista a possibilidade de que planejamento e equipe recebam os direcionamentos necessários para as entregas do projeto. • Aumento da produtividade: as entregas e validações ocorrendo em espaços curtos de tempo, possibilitam o aumento das entregas. • Redução dos riscos: os processos colaborativos, entre a equipe de desenvolvimento e os clientes, possibilitam que os riscos sejam reduzidos ao longo das diversas tarefas ligadas ao desenvolvimento de software. Referências
Wesley Professional, 2001. • MASSARI, V. Gerenciamento Ágil de Projetos. Rio de Janeiro: Brasport, 2014. • MATT, Stephens; Rosenberg, Doug. Extreme Programming Refactored: The case Agnist XP. 1ª Ed. Berkeley: Apress, 2003. • SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson, 2011. • TELES, V. M. Extreme Programming. 1. ed. São Paulo: Novatec, 2014.