Você está na página 1de 37

Modelos de Desenvolvimento de

Software

Luiz Fernando Batista Loja


Luiz Ricardo
Sumário

• Introdução
• Modelo de Processo
• Processo de software
• Importância do Gerenciamento de
Processos
• Classificação dos Processos
• Modelos de Desenvolvimento e
Gerenciamento de Software
• Processos de Desenvolvimento
Introdução

• Softwares são construídos por


processos
– Formal
– Empírico
• Qual processo adotar?
Introdução

• Processo Formal
– Processo bem definido e
padronizado
• boas práticas
• listas de verificação
• atividades pré-definidas

• Processo Empírico
– Dependente de experiência
– Habilidade dos integrantes da
equipe
Modelo de Processo

• Modelo de processo é uma


abstração de um processo
(Sommerville, 2013)
• Abordagens utilizadas para o
desenvolvimento de software
dentro de organizações
• Fundamentados pelos modelos de
processos vários processos de
desenvolvimento foram criados
• Objetivo
Processo de desenvolvimento de software

• Conjunto de atividades e
resultados associados que geram
um software (Sommerville, 2013)
• Envolvem aspectos técnicos
– Especificação
– Desenvolvimento
– Validação
– Evolução do Software
Modelos de desenvolvimento e Gerenciamento de software

• Abstrações das abordagens de


desenvolvimento utilizadas nas
organizações
• Afetam a forma como o projeto é
gerenciado
• Compreender
– Vantagens e Desvantagens
• Escolher o modelo
• Entender os processos
Modelos Incrementais
• Pequenos ciclos de desenvolvimento de
forma iterativa
• A cada ciclo novos incrementos são
adicionados ao software
• O software vai sendo construído como um
quebra cabeça
• Vantagens
– Melhor gestão de riscos
– Melhor adaptação a mudança de requisitos
– Pode haver um processo de gerenciamento
em cada iteração
• Problemas
– Dependência de funcionalidades
– Mudanças de requisitos em funcionalidades
Modelos Incrementais
Modelos evolucionários

• O software é ajustado e
melhorado
• Cada ciclo adiciona
funcionalidades diferentes
• É um processo incremental
• Difícil estimar a quantidade de
ciclos para finalizar o software
• Alterações em requisitos podem
ser abordadas em novas iterações
Modelos Ágeis

• Manifesto para o
Desenvolvimento Ágil de
Software
– 2001
• Princípios fundamentais
– Indivíduos e interações em vez de
processos e ferramentas
– softwares funcionando em vez de
documentação abrangente;
Modelos Ágeis

• Conjunto mínimo de organização e


disciplina
• Equipe tem o poder de decisão
• Prover um ambiente mais adequado
para o desenvolvimento
• Desvantagem
– Equipe experiente
– Indivíduos capacitados
– Motivação
– Baixa documentação
• Vantagem
– Desenvolvimento rápido
Prototipagem

• Pode ser usada em conjunto com


outros modelos
• Apresentar um software inicial
com requisitos de alto nível
– Testar a viabilidade
– Testar a satisfação do cliente
• Pode identificar requisitos
– Verificação antecipada do que
está sendo produzido.
Prototipagem

• Geralmente tudo que foi produzido


como protótipo é descartado
• Custo de corrigir o protótipo pode
superar a construção do software
• Desvantagem
– Cliente não entende que o protótipo
deve ser descartado
– Partes do sistema construídas
ineficientemente podem permanecer no
produto final
• Vantagem
– Aumenta a qualidade das estimativas em
relação ao produto final
Prototipagem
Processos de desenvolvimento

• Alguns processos de
desenvolvimento clássicos são:
– Modelo Cascata ou Waterfall
– Modelo Espiral
– Processo Unificado
– Extreme Programming
– Scrum
– Combinação de Scrum e Extreme
Programming
– Desenvolvimento orientado a teste
(Test Driven Development )
– Desenvolvimento orientado a
Modelo waterfall ou Cascata

• Precursor dos modelos atuais,


modelo top down
• Modelo sequencial de
desenvolvimento
• Segue as fases de desenvolvimento
em sequência
• Se todo o sistema fosse conhecido
seria o modelo perfeito
• Só avança para uma fase posterior
se o cliente aceitou a fase atual
• Pressupõem que o cliente participe
do desenvolvimento e saiba o que
Modelo waterfall ou Cascata
Modelo Espiral

• Orientado a risco
• Primeiras iterações com modelos
e protótipos de software
• Cada iteração são produzidos
versões com mais funcionalidades
• Cada iteração é realizado um
novo planejamento
• Permite absorver melhor as
mudanças de requisitos
Modelo Espiral
Processo unificado

• Abordagem iterativa centrada na


arquitetura e dirigida por casos
de uso
• Tentativa de combinar as
melhores características dos
modelos de desenvolvimento
• Enfatiza boas práticas de
desenvolvimento
• Identificar riscos arquiteturais
Processo unificado

• Framework para composição de


processos
• Grupo de processos
– Identificar os processos que são
mais adequados para serem
utilizados no desenvolvimento
• Atividades e produtos
– Variam de acordo com o projeto
• Ajuste do grau de burocracia
• Ajustável para pequenos e
Extreme Programming

• Desenvolvimento orientado a
objetos
• Processo iterativo e incremental
Extreme Programming

• Planejamento
– Conjunto de histórias escritas em
cartões
• Valor associado ao negócio
– Histórias são selecionadas para serem
desenvolvidas
• Projeto
– Criar representações simples das
histórias
• Desenvolvidas em cada interação
– Cada história deverá ter um teste de
aceitação pelo usuário
– Demonstrar que o comportamento
Extreme Programming

• Códificação
– Codifica-se os testes unitários para o
sistema
– Codificação em pares
– O código produzido pelos pares é
integrado ao código geral
• Integração contínua
– Incentiva a refatoração
• Aprimorar o código sem alterar a
funcionalidade
• Melhoria de desempenho
• Qualidade
• Manutenção
• Clareza
Extreme Programming

• Testes
– Realizar testes de aceitação com
os usuários
– Desenvolvimento do sistema é
medido por esses testes
Scrum

• Processo ágil
• Processo empírico
– Aplicado a qualquer tipo de
projeto que seja imprevisível
• Equipe deve possuir habilidades
para executar todas as fases do
projeto
Scrum

• Pilares
– Transparência
• Aspectos que afetam os resultados devem
ser visíveis
– Inspeção
• Aspectos devem ser inspecionados com
uma frequência considerável
– Adaptação
• Gerente deve poder adaptar o projeto a
mudanças
Scrum

• Papéis
– Srum Master
• Responsável por fazer o processo ser
compreendido e seguido
• Atualiza o projeto
• Estimativa e interação são importantes
para o projeto
– Product Owner
• Cliente
– Time
• Pessoas que executam a atividade
Scrum

• Produtos
– Product Backlog
• Requisitos do produto
– Burndown da Release
• Soma das estimativas de trabalhos
restantes
– Sprint Backlog
• Lista de tarefas que a equipe deve cumprir
para gerar o próximo incremento do
produto
– Burndown Script
• Gráfico com a quantidade de trabalho
Scrum
Desenvolvimento orientado a teste

• Processo de desenvolvimento
orientado a casos de Teste
• Identificam-se os cenários e
criam-se testes
• O código é criado para obter
sucesso nos testes
• O código é refatorado e testado
novamente
• Testes de aceitação são
utilizadas para verificar se o que
Desenvolvimento orientado a
características ou funcionalidades
• Processo iterativo e incremental
• Utiliza o paradigma de orientação a
objeto
• Funcionalidade
– Função do sistema que pode ser
implementada em duas semanas ou
menos
• A cada interação novas
características são estimadas
– Selecionadas e então desenvolvidas
• Implementar funcionalidades para
Classificação dos Modelos de Software

• Processos bem documentados


são mais lentos e mais fáceis de
serem mantidos
• Processo mal documentados são
mais rápidos, porém mais difíceis
de serem mantidos
• Quanto mais atividades de
extras, documentação e rigor
maior o fator de ajuste do
Classificação dos Modelos de Software
Fim

FIM
Perguntas

Perguntas

Você também pode gostar