Please enable JavaScript.
Coggle requires JavaScript to display documents.
Métodos Ágeis de Desenvolvimento de Software - Coggle Diagram
Métodos Ágeis de Desenvolvimento de Software
Scrum
Framework ágil que auxlia no gerenciamento de projetos complexos e no desenvolvimento de produtos.
Caracteristicas gerais do Scrum
Equipes pequenas e multidisciplinares que trabalham de forma integrada em um ambiente aberto para produzir versões incrementais do software em iterações curtas (Sprints)
Cada Sprint tem duração de até um mês e consistem em 4 etapas
Desenvolvimento com a Scrum Diária
Diariamente, a equipe se reúne por, no máximo
15 minutos
Cada membro da equipe deve responder às
perguntas: O que eu fiz desde a última Scrum diária? O que pretendo fazer até a próxima Scrum diária?Existe algo me impedindo de concluir alguma tarefa?
Revisão da Sprint
Onde é feita a demonstração do que
foi produzido ao longo da Sprint e Product Owner valida ou não o que as entregas da Sprint
Reunião de Planejamento
Ao final da Reunião de Planejamento da Sprint, um novo
Backlog da Sprint é criado
O Backlog da Sprint é o conjunto de itens selecionados para serem implementados durante a Sprint, mais o plano para transformá-los em um Incremento do Produto
Reunião divida em 2 partes
Na primeira parte, responde-se o que será entregue no incremento resultante da Sprint.
Na segunda parte, responde-se como será feito para a entregar o incremento da Sprint.
Retrospectiva da Sprint
É o último evento da Sprint, onde o foco é o aprimoramento do processo.
Backlog do Produto é reorganizado
O Backlog do Produto é uma
lista ordenada criada pela Equipe Scrum, onde o formato mais utilizado para a descrição dos itens é o de histórias de Usuário (User Stories)
Permite feedbacks constantes do Product Owner
A comunicação e cooperação entre as equipes se
intensificam ao longo do desenvolvimento das funcionalidades do produto
O trabalho em equipe é facilitado pelo ScrumMaster, que
remove impedimentos e reforça os pontos centrais do Scrum
Equipes que se auto-organizam para planejar e desenvolver o trabalho das Sprints
O trabalho é organizado a partir do Backlog do Produto
Papéis do Scrum
Scrum Master
Trabalha com a Equipe de Desenvolvimento para que cada um seja o mais eficiente possível, sempre de acordo com os Scrum e os valores e princípios ágeis
Equipe de Desenvolvimento
Responsavel por desenvolver incrementos do produto, entregando-os no final de cada iteração, estimativa do tamanho dos itens do Backlog do Produto e define como vai fazer o trabalho
Product Owner (PO)
Responsável por gerenciar o produto de forma a assegurar o valor do trabalho executado pela Equipe de Desenvolvimento.
Manifesto Ágil
Possuí 4 valores principais
Software funcionando mais que documentação abrangente
Prioriza a entrega de software funcional que atenda às necessidades do cliente sobre a documentação extensiva.
Colaboração com o cliente mais que negociação de contratos
Destaca a importância da colaboração ativa com o cliente para compreender e atender às suas necessidades, em vez de se basear estritamente em contratos formais.
Indivíduos e interações mais que processos e ferramentas
Enfatiza a importância das pessoas e suas interações na equipe de desenvolvimento, em vez de depender apenas de processos e ferramentas.
Responder a mudanças mais que seguir um plano
Promove a capacidade de adaptação e flexibilidade para responder a mudanças durante o desenvolvimento do software, em vez de aderir rigidamente a um plano inicial.
Escrito em 2001 por um conjunto composto por 17 desenvolvedores.
Processo de Software
Conjunto de atividades relacionadas que levam à produção de um produto de software
Atividades do processo de software
Projeto e implementação do software
Processo de conversão de uma especificação do sistema
em um sistema executável
Envolve processos de projeto e programação de software
4 atividdes principais do projeto
e implementação do software
Projeto de interface entre componentes
Projeto de componente
Projeto da arquitetura
Projeto de banco de dados
Validação do software
Processo que tem a intenção de mostrar que um
software se adequa a suas especificações ao mesmo
tempo que satisfaz as especificações do cliente do sistema
3 principais testes
Teste de sistema (integração)
Teste de aceitação (validação)
Teste de desenvolvimento (unidade)
Especificação do software
Processo de compreensão e definição dos serviços requisitados do sistema e identificação de restrições relativas à operação e ao desenvolvimento do sistema
4 atividades principais da especificação do software
Elicitação e análise dos requisitos
Especificação dos requisitos
Estudo de viabilidade
Validação dos requisitos
Evolução do software
Processo para manter o software atualizado em relação a requisitos e tecnologias
Modelos Tradicionais de Processo de Software
Modelo de Prototipação
Permite que o cliente perceba o software que está
sendo gerado antes da finalização
Atividades do modelo
Construção
de um protótipo
Avaliação do protótipo
Definição de requisitos
O modelo tem natureza iterativa, ou seja, as atividades se repetem até que o software fique pronto
Problemas do modelo
Uso de práticas de codificação não ideais para construir o protótipo
Cliente percebe o protótipo como funcional, ignorando mudanças necessárias para torná-lo um software completo e de qualidade
Modelo Linear Sequencial (cascata)
Sugere uma abordagem sequencial para o
desenvolvimento de software
Etapas do Modelo Linear Sequencial
Engenharia do sistema/informação
Definição dos elementos do sistema e do
software, análise e projeto superficiais
Análise
Intensificação do levantamento de requisitos, focado no software.
Define o domínio de informação, funcionalidade, comportamento, performance e interface
Codificação
Tradução do projeto em uma linguagem de programação
Projeto (design)
Traduz os requerimentos para uma representação técnica
Teste
Teste do programa codificado (lógica interna ou focado nas funcionalidades externas)
Suporte
Corrige e adapta o software gerado. Reaplica as fases precedentes no programa existente
Problemas do modelo
Difícil para os usuários definirem todos os requisitos
explicitamente.
Uma versão “visível” do programa
estará disponível somente no fim do projeto
Modelo Incremental
Combina elementos do modelo linear sequencial com a filosofia iterativa da prototipação. Cada sequência linear produz um incremento entregável do software
O processo de desenvolvimento consiste em incrementos sucessivos, nos quais os usuários podem utilizar o produto gerado ou realizar revisões detalhadas. Cada novo incremento incorpora solicitações dos usuários e funcionalidades planejadas. Esse ciclo se repete até a entrega do produto completo.
Modelo Espiral
Acopla a natureza iterativa da prototipação com os aspectos sistemáticos e controlados do modelo linear sequencial.
O software é desenvolvido em versões evolucionárias, começando com modelos em papel ou protótipos nas primeiras iterações e progredindo para versões cada vez mais completas nas iterações posteriores.
Processo Unificado
É baseado na definição de artefatos da UML (Unified Modeling Language) que são gerados durante o processo de desenvolvimento de software. Ele é organizado em disciplinas (workflows) e fases para orientar o desenvolvimento de maneira estruturada.
Fases do processo
Elaboração
É feito o processo de engenharia para especificar uma arquitetura robusta e confiável para o sistema.
Construção
É dedicada à construção do sistema, gerenciando recursos e otimizando tempo, custos e qualidade.
Concepção
Tem o foco é alcançar um acordo com os stakeholders sobre a visão do sistema e os objetivos.
Transição
Visa transferir o produto para a comunidade de usuários, podendo ser uma release do produto, não necessariamente o produto final.
Kanban
Se apoia nos conceitos de valor e fluxo para projetar um mapa visual que represente o modelo de trabalho da forma como é na realidade.
É um instrumento visual onde o “valor” e “fluxo” passam a ser visíveis a todos e gargalos que interferem no fluxo de valor ficam evidentes.
Atividades principais envolvidas na implementação do Kanban
Tornar o trabalho visível
Quadro visual que mostra todas as tarefas em diferentes estágios do processo.
Permite que todos na equipe vejam o que está sendo feito e o que precisa ser feito.
Limitar o trabalho em progresso
Restringe o número de tarefas que podem estar em andamento em cada estágio do processo.
Fazer o trabalho fluir
Garante que as tarefas fluam pelo processo, sem interrupções ou gargalos.
Extreme Programming (XP)
É um método de desenvolvimento de software que define a codificação como a principal atividade no projeto de software.
Valores e da Extreme Programming
Comunicação
Diálogo constante entre todas as partes interessadas para garantir clareza e entendimento mútuo.
Simplicidade
Priorizar a solução mais simples que atenda aos requisitos do cliente.
Feedback
Obter e integrar feedback regularmente para melhorar continuamente o produto.
Coragem
Ter coragem para enfrentar desafios e tomar decisões difíceis.
Atividades da Extreme Programming
Testar
Ouvir
Codificar
Projetar
Principios da Extreme Programming
Alguns dos principios da XP são:
Mudanças incrementais
Fazer mudanças pequenas e frequentes para evoluir o sistema ao longo do tempo.
Aceitação de mudanças
Adotar mudanças de requisitos do cliente, mesmo em estágios avançados de desenvolvimento.
Simplicidade presumida
Priorizar soluções simples para resolver os problemas do momento.
Alta qualidade
Buscar a excelência técnica em todas as etapas do desenvolvimento.
Feedback rápido
Obter feedback frequentemente para validar e aprimorar o produto.
Lean Software Development
A aplicação do pensamento Lean no desenvolvimento de software foi traduzida em 7 princípios
Adiar compromentimentos
Adiar decisões importantes até que haja informações suficientes para tomar uma escolha informada. Isso permite que as equipes mantenham suas opções abertas por mais tempo, reduzindo o risco de tomar decisões precipitadas ou baseadas em suposições.
Entregar rápido
Priorizar a entrega de valor ao cliente o mais rápido possível, mesmo que isso signifique entregar funcionalidades de forma incremental e iterativa. Isso permite obter feedback mais cedo e reduzir o tempo de espera do cliente.
Criar conhecimento
Promover uma cultura de aprendizado contínuo, onde equipes buscam constantemente novos conhecimentos e aprendem com suas experiências. Isso envolve experimentação, feedback rápido e adaptação às mudanças.
Respeitar as pessoas
Promove que as equipes tenham os recursos e a autoridade necessários para que possam realizar seu trabalho de maneira eficaz e eficiente.
Integrar qualidade
Promover a qualidade em todos os aspectos do desenvolvimento de software, desde o código até os processos e relacionamentos. Isso inclui a aplicação de boas práticas de engenharia de software, como design limpo, testes automatizados e integração contínua.
Otimizar o todo
Pensar no sistema como um todo e otimizar o fluxo de valor em toda a cadeia de valor. Isso envolve identificar e eliminar gargalos, reduzir o trabalho em progresso e melhorar continuamente os processos de ponta a ponta.
Eliminar desperdício
Identificar e eliminar atividades que não agregam valor ao cliente.
Entrega Contínua de Software
É uma estratégia para evitar riscos envolvidos no processo de deploy do software.
Torna cada parte do processo de compilação, implantação, teste e entrega de versão visível a todos os envolvidos, promovendo a colaboração.
Melhora o feedback do processo, de modo que os problemas são identificados e resolvidos o mais cedo possível.
Permite que equipes entreguem e implantem qualquer versão de seu software para qualquer ambiente.
É baseada em um pipeline de implantação com a implementação automatizada de 4 processos
implanta-la em qualquer ambiente.
testar a aplicação.
compilar todas as partes de uma aplicação.
efetuar a entrega final.
Princípios Ágeis
Comunicação Face a Face
A comunicação eficaz é melhor feita pessoalmente.
Software Funcional
Entregar software funcional é a principal medida de progresso.
Motivação dos Indivíduos
Construir projetos em torno de indivíduos motivados. Fornecer o ambiente e o suporte necessários e confiar neles para realizar o trabalho.
Ritmo Sustentável
Manter um ritmo constante e sustentável de trabalho.
Colaboração com o Cliente
Trabalhar em conjunto com o cliente para desenvolver soluções.
Excelência Técnica
Contínua atenção à excelência técnica e bom design aumenta a agilidade.
Entrega Contínua
Entregar software funcionando frequentemente, com preferência para intervalos mais curtos.
Simplicidade
Maximizar a quantidade de trabalho não realizado é essencial.
Mudanças Bem-Vindas
Adaptar-se a mudanças nos requisitos, mesmo em estágios avançados do desenvolvimento.
Auto-organização das Equipes
As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizadas.
Satisfação do Cliente
Entregar continuamente software que satisfaça as necessidades do cliente.
Reflexão e Ajuste
Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e ajusta seu comportamento de acordo.