knowt logo

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:

    1. Pessoas frente aos processos — Este tópico objetiva favorecer relacionamentos no ato da construção do software.

    2. Funcionamento versus documentação — Este tópico objetiva favorecer a funcionalidade da criação de software, e não somente o design.

    3. 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.

    4. 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:

      1. fase do pré-projeto

      2. fase do ciclo de vida

      3. 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

LE

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:

    1. Pessoas frente aos processos — Este tópico objetiva favorecer relacionamentos no ato da construção do software.

    2. Funcionamento versus documentação — Este tópico objetiva favorecer a funcionalidade da criação de software, e não somente o design.

    3. 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.

    4. 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:

      1. fase do pré-projeto

      2. fase do ciclo de vida

      3. 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