Aula 7- Métodos ágeis
→ Apresentação
O modelo de desenvolvimento ágil garante entregas com qualidade, priorizando as funcionalidades que são consideradas mais importantes no escopo do projeto
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever o conceito de método ágil.
Identificar os princípios e os valores ágeis.
Enumerar os principais métodos ágeis existentes.
Conceito de método ágil
De acordo com Amaral et al. (2012, p. 21) o conceito de ágil pode ser visto como:
[...] é uma abordagem fundamentada em um conjunto de princípios, cujo objetivo é tornar o processo de gerenciamento de projetos mais simples, flexível e iterativo, de forma a obter melhores resultados em desempenho (tempo, custo e qualidade), menos esforço em gerenciamento e maiores níveis de inovação e agregação de valor para o cliente.
No método ágil
As equipes são pequenas com alto nível técnico
Feedbacks são constantes
Entregas são semanais
A funcionalidade do software é mais importante do que a documentação
Ferramentas eletrônicas de métodos ágeis
Trello
É uma ferramenta de gestão on-line para métodos ágeis que auxilia na organização de tarefas
Possui três versões
Jira:
É uma ferramenta on-line de gestão ágil muito usada em métodos ágeis
É mais complexa que o Trello e possui maior processamento e velocidade, seu suporte é muito completo, atende 24 horas por dia, e foi desenvolvido para projetos de software
Valores e princípios ágeis
O Manifesto Ágil, que possui quatro valores:
Pessoas frente aos processos — Este tópico objetiva favorecer relacionamentos no ato da construção do software.
Funcionamento versus documentação — Este tópico objetiva favorecer a funcionalidade da criação de software, e não somente o design.
Colaboração do cliente, a funcionalidade da criação de software — Este tópico objetiva favorecer a interação contínua com o cliente, a fim de compreender seus desejos e anseios com mais precisão.
Consertar problemas e se adaptar a mudanças — Este tópico objetiva favorecer uma construção dinâmica e não engessada, onde consertar problemas é mais importante que manter a burocracia
Principais métodos ágeis existentes
Desenvolvimento incremental: criado pela IBM em 1990, faz uso do modelo incremental, onde o um incremento é construído o cliente dá o feedbacks, e posteriormente os incrementos são unidos formando o sistema pronto
Metodologia de Desenvolvimento de Sistemas Dinâmicos: de acordo com Cruz (2018, p. 316) “[...] tem um conceito mais próximo a um framework do que um método propriamente dito, sua ênfase foca a criação de protótipos que posteriormente evoluem para o sistema, e para isso é utilizada muito fortemente a colaboração próxima com o cliente”
É composto por três fases:
fase do pré-projeto
fase do ciclo de vida
fase do pós-projeto
Recomendada para projetos urgentes ou quando os projetos são formados por uma nova tecnologia e precisam ser acompanhados de testes do usuário
Crystal Clear: foca na comunicação desenvolvedor/cliente e evita ferramentas complexas que não serão utilizadas, objetivando reduzir tempo e custo na entrega
Escala de cores:
Vermelho e amarelo: projetos mais complexo necessita de uma equipe maior
Branco e amarelo: projeto mais simples necessita de poucas pessoas
Letras:
C: confortável
D: Baixo custo
E: Alto custo
L: Risco de vida
Feature-driven development (FDD): fragmenta os projetos de gestão e de software em features
De acordo com Sommerville (2011) tem como características:
elaboração de lista de tarefas de funcionalidades, ou seja, cada passo tem foco em alguma funcionalidade do software
planejamento voltado ao método incremental por funcionalidade
design voltado à funcionalidade, ou seja, criar um design que simplifica a navegação e promove a experiência do usuário
teste de software orientado à funcionalidade, ou seja, testar cada função em detrimento de testar uma interface, por exemplo
XP (Extremming Programing): possui como princípios básicos: trabalho de qualidade, mudanças incrementais, feedback rápido e abraçar mudanças.
A metodologia possui algumas práticas:
Jogos de planejamento: no início da semana os clientes e developers se reúnem parar priorizar funcionalidades que serão entregues no final da semana
Propriedade coletiva: qualquer pessoa do time pode usar o código do programa sem precisar de permissão para alterar, assim todos têm a oportunidade de conhecer o código inteiro e se familiarizar com ele
Teste de usuário: em equipes pequenas são realizados testes do software por clientes e desenvolvedores da empresa para avaliar sua qualidade
Ritmo sustentável: as equipes devem trabalhar 40 horas, divididas em 8 horas por dia, sem sobrecarga.
Equipe inteira: as reuniões devem ser em pé e devem ser rápidas.
Programação em par: um desenvolvedor mais experiente fica com um novato, o novato codifica e o mais experiente programa. O benefício deste método é que ele é revisado por duas pessoas.
Padronizações de código: a equipe de dev determina regras de codificação de salvamento, bem como as boas práticas que devem ser seguidas.
Desenvolvimento orientado a teste: elaborar códigos de forma que sejam capazes de ser testados por software de teste como Imeter (um software que mede desempenho), Selenium (um software que mede erros de sites), etc.
Refatoração: é o processo de otimizar a estrutura do código sem alterar o seu comportamento externo para o usuário final.
Integração contínua: integrar alterações de forma contínua, sem esperar uma semana, por exemplo. Permite saber a real situação do software da programação
Entregas curtas: entregar pequenos pedaços para o cliente corrigir e avaliar, aumentando a probabilidade de acertar o todo.
Metáfora: entender a linguagem e as expressões do cliente.
Design simples: o código deve ter exatamente o que o cliente pediu
SCRUM:
Pessoas principais:
Product Owner: define o que comporá o Product Backlog (lista de ações do Sprint) e prioriza isso nas Sprint Planning Meetings
Scrum Master: (geralmente um gerente ou líder técnico), verifica se todos seguem as regras e também busca impedir trabalhos excessivos
Scrum Team: equipe de desenvolvimento
Sprints: etapas do projeto geralmente mensais, cada spring é um Time Box uma caixa do tempo com um conjunto de metas
Daily Scrum: reuniões diárias realizadas no início do expediente para revisar os itens do dia anterior e determinar as tarefas do dia
Product Backlog: é uma lista com todas as funcionalidades necessárias para um produto, feita pelo Product Owner
Sprint Planning Meeting: reunião com a equipe para definir os objetivos de um novo sprint
Release Burndown Chart: é uma análise de metas atingidas no final de cada Sprint
Aula 7- Métodos ágeis
→ Apresentação
O modelo de desenvolvimento ágil garante entregas com qualidade, priorizando as funcionalidades que são consideradas mais importantes no escopo do projeto
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever o conceito de método ágil.
Identificar os princípios e os valores ágeis.
Enumerar os principais métodos ágeis existentes.
Conceito de método ágil
De acordo com Amaral et al. (2012, p. 21) o conceito de ágil pode ser visto como:
[...] é uma abordagem fundamentada em um conjunto de princípios, cujo objetivo é tornar o processo de gerenciamento de projetos mais simples, flexível e iterativo, de forma a obter melhores resultados em desempenho (tempo, custo e qualidade), menos esforço em gerenciamento e maiores níveis de inovação e agregação de valor para o cliente.
No método ágil
As equipes são pequenas com alto nível técnico
Feedbacks são constantes
Entregas são semanais
A funcionalidade do software é mais importante do que a documentação
Ferramentas eletrônicas de métodos ágeis
Trello
É uma ferramenta de gestão on-line para métodos ágeis que auxilia na organização de tarefas
Possui três versões
Jira:
É uma ferramenta on-line de gestão ágil muito usada em métodos ágeis
É mais complexa que o Trello e possui maior processamento e velocidade, seu suporte é muito completo, atende 24 horas por dia, e foi desenvolvido para projetos de software
Valores e princípios ágeis
O Manifesto Ágil, que possui quatro valores:
Pessoas frente aos processos — Este tópico objetiva favorecer relacionamentos no ato da construção do software.
Funcionamento versus documentação — Este tópico objetiva favorecer a funcionalidade da criação de software, e não somente o design.
Colaboração do cliente, a funcionalidade da criação de software — Este tópico objetiva favorecer a interação contínua com o cliente, a fim de compreender seus desejos e anseios com mais precisão.
Consertar problemas e se adaptar a mudanças — Este tópico objetiva favorecer uma construção dinâmica e não engessada, onde consertar problemas é mais importante que manter a burocracia
Principais métodos ágeis existentes
Desenvolvimento incremental: criado pela IBM em 1990, faz uso do modelo incremental, onde o um incremento é construído o cliente dá o feedbacks, e posteriormente os incrementos são unidos formando o sistema pronto
Metodologia de Desenvolvimento de Sistemas Dinâmicos: de acordo com Cruz (2018, p. 316) “[...] tem um conceito mais próximo a um framework do que um método propriamente dito, sua ênfase foca a criação de protótipos que posteriormente evoluem para o sistema, e para isso é utilizada muito fortemente a colaboração próxima com o cliente”
É composto por três fases:
fase do pré-projeto
fase do ciclo de vida
fase do pós-projeto
Recomendada para projetos urgentes ou quando os projetos são formados por uma nova tecnologia e precisam ser acompanhados de testes do usuário
Crystal Clear: foca na comunicação desenvolvedor/cliente e evita ferramentas complexas que não serão utilizadas, objetivando reduzir tempo e custo na entrega
Escala de cores:
Vermelho e amarelo: projetos mais complexo necessita de uma equipe maior
Branco e amarelo: projeto mais simples necessita de poucas pessoas
Letras:
C: confortável
D: Baixo custo
E: Alto custo
L: Risco de vida
Feature-driven development (FDD): fragmenta os projetos de gestão e de software em features
De acordo com Sommerville (2011) tem como características:
elaboração de lista de tarefas de funcionalidades, ou seja, cada passo tem foco em alguma funcionalidade do software
planejamento voltado ao método incremental por funcionalidade
design voltado à funcionalidade, ou seja, criar um design que simplifica a navegação e promove a experiência do usuário
teste de software orientado à funcionalidade, ou seja, testar cada função em detrimento de testar uma interface, por exemplo
XP (Extremming Programing): possui como princípios básicos: trabalho de qualidade, mudanças incrementais, feedback rápido e abraçar mudanças.
A metodologia possui algumas práticas:
Jogos de planejamento: no início da semana os clientes e developers se reúnem parar priorizar funcionalidades que serão entregues no final da semana
Propriedade coletiva: qualquer pessoa do time pode usar o código do programa sem precisar de permissão para alterar, assim todos têm a oportunidade de conhecer o código inteiro e se familiarizar com ele
Teste de usuário: em equipes pequenas são realizados testes do software por clientes e desenvolvedores da empresa para avaliar sua qualidade
Ritmo sustentável: as equipes devem trabalhar 40 horas, divididas em 8 horas por dia, sem sobrecarga.
Equipe inteira: as reuniões devem ser em pé e devem ser rápidas.
Programação em par: um desenvolvedor mais experiente fica com um novato, o novato codifica e o mais experiente programa. O benefício deste método é que ele é revisado por duas pessoas.
Padronizações de código: a equipe de dev determina regras de codificação de salvamento, bem como as boas práticas que devem ser seguidas.
Desenvolvimento orientado a teste: elaborar códigos de forma que sejam capazes de ser testados por software de teste como Imeter (um software que mede desempenho), Selenium (um software que mede erros de sites), etc.
Refatoração: é o processo de otimizar a estrutura do código sem alterar o seu comportamento externo para o usuário final.
Integração contínua: integrar alterações de forma contínua, sem esperar uma semana, por exemplo. Permite saber a real situação do software da programação
Entregas curtas: entregar pequenos pedaços para o cliente corrigir e avaliar, aumentando a probabilidade de acertar o todo.
Metáfora: entender a linguagem e as expressões do cliente.
Design simples: o código deve ter exatamente o que o cliente pediu
SCRUM:
Pessoas principais:
Product Owner: define o que comporá o Product Backlog (lista de ações do Sprint) e prioriza isso nas Sprint Planning Meetings
Scrum Master: (geralmente um gerente ou líder técnico), verifica se todos seguem as regras e também busca impedir trabalhos excessivos
Scrum Team: equipe de desenvolvimento
Sprints: etapas do projeto geralmente mensais, cada spring é um Time Box uma caixa do tempo com um conjunto de metas
Daily Scrum: reuniões diárias realizadas no início do expediente para revisar os itens do dia anterior e determinar as tarefas do dia
Product Backlog: é uma lista com todas as funcionalidades necessárias para um produto, feita pelo Product Owner
Sprint Planning Meeting: reunião com a equipe para definir os objetivos de um novo sprint
Release Burndown Chart: é uma análise de metas atingidas no final de cada Sprint