Criado por Raphael Luiz Fonseca
mais de 9 anos atrás
|
||
- Preocupada com todos os aspectos sobre a produção de software
- Racionalizam o desenvolvimento de Software
- Conhecimento técnico
- "Como" fazer
- Suporte automatizado para processos e métodos
- É algo maior
- Preocupa-se com todos os aspectos de sistemas baseados em computador
- Software
- Hardware
-Processos
- Pessoas
- Outros sistemas
- São uma representação abstrata e simplificada do processo de desenvolvimento software, apresentada a partir de uma perspectiva específica
- Contém: Esqueleto, Ordem, Produtos gerados
- Modelo Clássico
- Estrutura composta por várias etapas que são executadas de forma sistemática e sequencial
- Entregas bem definidas
- Atrasa a redução de riscos
- Esboçar escopo e requisitos
- Fazer estimativas razoáveis sobre recursos, custos e prazos
- Refinar os requisitos e escopo
- Entender o domínio do problema, com comportamento e funcionalidades esperados
- Incorporar requisitos tecnológicos aos requisitos essenciais do sistema
- Projetar a arquitetura do sistema
- Traduzir o projeto em uma forma passível de execução pela máquina
- Codificação
- Realizar diversos tipos de testes afim de verificar o software
- Colocar o software em produção
- Treinar Pessoas
- Manter o software
- Gerenciar serviços
- Pequenas versões são entregues aos clientes.
- Trabalhar junto aos clientes
- Entregar resultados o mais rápido possível
- Começar com os requisitos mais bem compreendidos
- Novas funcionalidades são adicionadas à medida que os clientes as propõem
- Pequenas versões prototípicas são disponibilizadas aos clientes para avaliação
- Serve para entender e clarificar os requisitos
- Deve-se começar com os requisitos MAIS difíceis e menos compreendidos.
- Modelo baseado em técnicas matemáticas para especificar, desenvolver e verificar software
- Têm sido aplicados apenas ao desenvolvimento de sistemas críticos
Ex: Sistemas de avião, tráfego aéreo, etc
- Desenvolver e entregar software em incrementos, com cada incremento contendo parte da funcionalidade requerida
- Requisitos são definidor antes do incremento, sendo os mais críticos priorizados
- Mini projeto cascata para cada funcionalidade
- Cada volta no espiral representa uma fase no processo
- Não há fases fixas
- Análise de Riscos
- Indivíduos e Interações
- Software funcionando
- Colaboração com o cliente
- Adaptação e mudanças
- Metodologia Ágil para equipes pequenas e médias desenvolvendo software com requisitos VAGOS e em mudança constante
- Uma história que todos podem contar a cerca de como funciona o sistema
- Facilita a comunicação dos interessados
- O código está, a qualquer momento, na forma mais simples que passe em todos os testes
- As entregas são feitas através de pequenos releases de software FUNCIONANDO
- Dá confiança ao cliente sobre o progresso geral
- O código deve ser constantemente melhorado, tornando-o mais simples e mais genérico, removendo redundâncias e duplicidade
- Os programadores trabalham em pares, checando mutuamente o trabalho feito
- Mesma máquina, mesmo mouse, mesmo monitor
- Todos são responsáveis por todo os código e qualquer pessoa está autorizada a fazer mudanças nele
- Todo código é desenvolvido de acordo com um estilo e formato consistente.
- Cada programador trabalha 40 horas por semana, no máximo
- Reuniões rápidas e diárias com a equipe para discutir somente o essencial
- O cliente, com conhecimento do negócio, deve estar disponível em tempo integral para a equipe
- Uma estrutura de teste unitários automatizada é criada e os testes são escritos antes mesmo das funcionalidades serem implementadas
- Os diversos módulos de software são integrados o mais cedo possível, para evitar evitar problemas de integração no futuro
- Requisitos são incrementados com estórias dos usuários e priorizados para serem incluídos em uma determinada iteração
- Comunicação
- Simplicidade
- Feedback
- Coragem
- Respeito
- Metodologia Ágil
- Equipes se auto-organizam
- Produto evolui em uma série de "Sprints"
- Os requisitos são listados em um "Product Backlog"
- É um processo gerencial
- Uma lista ordenada de tudo que é necessário no produto
- Cada item tem sua prioridade dentro dessa lista
- É replanejado (repriorizado) no início de cada Sprint
- Uma lista de tarefas que a equipe se compromete a completar dentro de uma determinada sprint
- Os itens são derivados a partir do Product Backlog
- São considerados: prioridade de itens e tempo/esforço
- Define as funcionalidades do produto
- Decide as datas de lançamento e conteúdo
- Prioriza as funcionalidades de acordo com o valor para empresa
- Aceita o rejeita resultados das sprints
- Contém tipicamente entre 5 a 9 pessoas
- Equipe Multi-Funcional
- Dedicação Integral ao produto
- Auto-Organizável
- Trocas só na mudanças de Sprints
- Responsável pela aplicação dos valores e práticas Scrum
- Remove obstáculos, facilita resultados
- Garante a plena funcionalidade e produtividade da equipe
- Escudo para interferências externas
- Selecionam-se itens do Product Backlog, e as tarefas são identificadas e estimadas
- De forma colaborativa, não apenas feito pelo Scrum Master
- Apenas os membros da equipe, todos os dias, de pé, durante 15 minutos
- Apresentação dos dados obtidos
- Todo o time participa, informalmente
- 2 horas de preparação no máximo
- Sem slides
- Ocorre antes da revisão da sprint e antes da próxima reunião de planejamento
- Inspeciona a última sprint em termos de: Pessoas e Relações / Processos e Ferramentas
- Enquanto a revisão da sprint analisa o PRODUTO, a retrospectiva analisa o PROCESSO
- É focada na entrega regular de funcionalidade valiosas para o cliente
- As equipes podem variar de 10 a 250 programadores
- Não necessita de tanta documentação, não é tão detalhado.
- O líder administrativo do projeto
- Planeja orçamento, elabora relatórios e protege a equipe de distrações externas.
- Responsável pelo projeto geral do sistema
- Tem a palavra técnica final sobre o software e sua arquitetura
- Lidera as atividades diárias do desenvolvimento
- Lidera a equipe de desenvolvimento através de desafios técnicos
- Desenvolvedores experientes
- Lideram pequenas equipes de desenvolvedores individuais.
- São os desenvolvedores individuais
- Projetam, codificam, testam e documentam as funcionalidades
- Usuários, clientes, patrocinadores
- A base de conhecimento para os desenvolvedores
- São ferramentas que auxiliam o engenheiro de SW em cada atividade associada ao desenvolvimento de SW
- Não substituem uma metodologia de desenvolvimento de software sólida
- São utilizadas durante todo o processo de desenvolvimento do SW
- São específicas para uma disciplina do SW
- Apóiam as etapas iniciais da criação do sistema:
- Fases de planejamento
- Análise
- Projeto de Aplicação
- Dão apoio à parte física, código, testes e manutenção
- Cobrem todo o ciclo de vida, do início ao fim
- Modelode de processo de software incremental que enfatiza um ciclo de desenvolvimento curto.
- É uma adaptação "de alta velocidade" do modelo em cascata, no qual o desenvolvimento rápido é conseguido com o uso de uma abordagem de construção baseada em componentes.