SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Modelos de Engenharia de
Software
Nathalia Sautchuk Patrício
Engenharia de Software

"A engenharia de software é a aplicação
de uma abordagem sistemática,
disciplinada e quantificável para o
desenvolvimento, operação e manutenção
de software, e o estudo dessas
abordagens, ou seja, a aplicação da
engenharia ao software" (SWEBOK,
2011)
Engenharia de Software

Há diversas metodologias de engenharia
de software

Pode-se dividi-los em duas classes:
– Tradicionais
– Ágeis
Modelos Tradicionais

Os três principais modelos tradicionais de
engenharia de software são:
– Cascata
– Espiral
– Processo unificado
Cascata

O modelo cascata sugere uma
abordagem sistemática e sequencial para
o desenvolvimento de software
Cascata
Cascata

Vantagens:
– Documentação produzida em cada fase
– Aderência a outros modelos de processo
de engenharia
Cascata

Desvantagens:
– Projetos reais raramente seguem o fluxo
sequencial
– Dificuldade do cliente em estabelecer
todos os requisitos explicitamente
– Paciência do cliente em esperar o
programa ficar pronto, o que ocorre
apenas no fim do projeto
Espiral

Tem duas características principais:
– abordagem cíclica: permite que o grau de
definição e implementação de um
software seja aumentado
incrementalmente enquanto seu grau de
risco é diminuído.
– marcos de ancoragem: são uma
combinação de produtos de trabalho e
condições obtidas ao longo do caminho
da espiral.
Espiral
Espiral

Vantagem:
– Abordagem realista

Desvantagem:
– adoção difícil no processo de
desenvolvimento de software de grande
porte, uma vez que o custo e o
cronograma vão sendo alterados ao
longo do projeto
Processo Unificado

Um modelo de processo para engenharia
de software orientada a objetos usando a
linguagem UML

É considerado um processo iterativo e há
duas formas de iteração presentes:
– Cada fase pode ser realizada de forma
iterativa
– O conjunto total de fases pode também ser
realizado incrementalmente
Processo Unificado
Modelos Tradicionais

Principal problema dos modelos
tradicionais é a dificuldade em lidar com
mudanças:
– de requisitos
– de escopo
– de tecnologia
Modelos ágeis

Modelos de desenvolvimento com uma
etapa de especificação inicial de software
menos detalhada

Existem diversos modelos ágeis de
engenharia de software
Modelos ágeis

Manifesto Ágil
– Indivíduos e interações são mais
importantes do que processos e
ferramentas;
– Software funcionando é mais importante
do que documentação completa;
Modelos ágeis

Manifesto Ágil
– Colaboração com o cliente é mais
importante do que negociação de
contratos e
– Adaptação a mudanças é mais importante
do que seguir plano inicial.
Modelos ágeis

Três modelos ágeis de engenharia de
software são:
– Crystal
– Scrum
– Programação Extrema
Crystal

Crystal é o nome de uma família de
modelos

Possui elementos centrais comuns a todos
os modelos, mas também há elementos
específicos de cada modelo, como, por
exemplo, os papéis desempenhados
dentro da equipe, padrões de processos,
produtos de trabalho e práticas
Crystal

Cada um dos modelos é representado por
uma cor:
– quanto mais escura a cor do modelo,
maior é o nível de formalismo a ser
usado no projeto, maior o tamanho da
equipe de projeto e maior a criticalidade.
Crystal

É necessário classificar o projeto usando
duas características:
– criticalidade
– tamanho da equipe

Quanto mais pessoas envolvidas, mais
artefatos e formalismos são necessários
para possibilitar a comunicação.
Crystal
Crystal
Crystal

Três premissas que devem ser seguidas
durante o desenvolvimento são:
– entregas frequentes
– comunicação intensa
– melhora por reflexão
Crystal

Cinco estratégias são sugeridas para
atingir premissas:
– Exploração de 360 graus
– Vitória antecipada
– Esqueleto que anda
– Rearquitetura incremental
– Radiadores de informação
Crystal

As práticas propostas são nove, porém
apenas uma é obrigatória, o reflection
workshop:
– reunião periódica focada em três questões
principais:
• “o que deve ser mantido?”
• “onde estamos tendo problemas?”
• “o que vamos tentar na próxima iteração?”
Scrum

É um modelo ágil para gerência de projetos
de software

Não determina como a equipe executará as
tarefas de programação, permitindo a
integração com outros modelos ágeis
específicos para práticas de programação,
como a programação extrema
Scrum

Para seguir as práticas do scrum são
usados cartões de funcionalidades e
gráficos de acompanhamento

Esses cartões são agrupados em
backlogs
Scrum

Um projeto é dividido em três fases:
– planejamento
– sprint
– avaliação
Scrum
Scrum

Durante o sprint, a equipe faz diariamente
uma breve reunião, chamada de daily
scrum
– O que você fez desde a última reunião de
equipe?
– Que obstáculos você está encontrando?
– O que você planeja realizar até a próxima
reunião de equipe?
Scrum

É liderada pelo Scrum Master:
– Não é um líder de equipe no sentido
convencional da palavra
– atua como uma barreira entre a equipe e
possíveis influências externas que
possam distraí-la das tarefas definidas
para um determinado sprint
– também garante que o processo scrum
está sendo usado como pretendido
Scrum

Terminado um sprint, faz-se uma reunião
de retrospectiva:
– quais práticas funcionaram bem
– o que poderia ser melhorado no próximo
sprint
Programação extrema

É um método leve de desenvolvimento de
software usado quando os requisitos são
vagos ou mudam constantemente e é
adequado a equipes pequenas ou médias
Programação extrema

A documentação da programação
extrema é minimalista, sendo que, em um
cenário ideal, apenas o código e os testes
a compõem

Além do código, apenas cartões de
história e radiadores de informação são
recomendados
Programação extrema

Assume a presença constante das
mudanças

Propõe uma série de práticas para lidar
com elas
Programação extrema

Discorda do princípio “projetar para a
mudança” alegando que é, geralmente,
um esforço inútil

As mudanças antecipadas, muitas vezes,
não ocorrem e as solicitações de
mudança realizadas são completamente
diferentes
Programação extrema

Defende que a equipe de
desenvolvimento deve procurar
constantemente por possíveis melhorias
no software, implementando-as
imediatamente, o que é conhecido como
refatoração
Programação extrema
Programação extrema

O processo da programação extrema
possui três etapas:
– Exploração
– Planejamento
– Implementação
Desenvolvimento de Software

Conclusão

Desenvolver software não envolve só o
conhecimento de uma linguagem de
programação

Existem diversas formas de desenvolver
software

Processos, métodos, paradigmas de
programação, linguagens de
programação...
Obrigada!
Nathalia Sautchuk Patrício
Nathalia.sautchuk@gmail.com
http://nathalia.patricio.pro.br

Mais conteúdo relacionado

Mais procurados

Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageCloves da Rocha
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasDiego Marek
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de SoftwareMarcelo Yamaguti
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 

Mais procurados (20)

Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
UML
UMLUML
UML
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Aula 7 - Modelagem de Software
Aula 7 - Modelagem de SoftwareAula 7 - Modelagem de Software
Aula 7 - Modelagem de Software
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling Language
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemas
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Modelagem de Sistemas de Informação 10 Diagrama de Sequência
Modelagem de Sistemas de Informação 10 Diagrama de SequênciaModelagem de Sistemas de Informação 10 Diagrama de Sequência
Modelagem de Sistemas de Informação 10 Diagrama de Sequência
 

Destaque

Metodologia Crystal Clear (Crystal Clear Methodologies)
Metodologia Crystal Clear (Crystal Clear Methodologies)Metodologia Crystal Clear (Crystal Clear Methodologies)
Metodologia Crystal Clear (Crystal Clear Methodologies)Thiago Sinésio
 
Crystal - Engenharia de Software
Crystal - Engenharia de SoftwareCrystal - Engenharia de Software
Crystal - Engenharia de SoftwareFelipe Bastos
 
Modelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoModelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoFernando Palma
 
Exemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De ProjetoExemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De Projetolhencar
 

Destaque (6)

Metodologia Crystal Clear (Crystal Clear Methodologies)
Metodologia Crystal Clear (Crystal Clear Methodologies)Metodologia Crystal Clear (Crystal Clear Methodologies)
Metodologia Crystal Clear (Crystal Clear Methodologies)
 
Crystal - Engenharia de Software
Crystal - Engenharia de SoftwareCrystal - Engenharia de Software
Crystal - Engenharia de Software
 
Crystal
CrystalCrystal
Crystal
 
Gestão de Projetos - Prof. João Frederico Gonzales
Gestão de Projetos - Prof. João Frederico GonzalesGestão de Projetos - Prof. João Frederico Gonzales
Gestão de Projetos - Prof. João Frederico Gonzales
 
Modelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoModelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projeto
 
Exemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De ProjetoExemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De Projeto
 

Semelhante a Modelos de Engenharia de Software

Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptHurgelNeto
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascatawilsonguns
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Scrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimentoScrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimentoRalph Rassweiler
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
Scrum experience bo tutorial scrum v15
Scrum experience bo tutorial scrum v15Scrum experience bo tutorial scrum v15
Scrum experience bo tutorial scrum v15claudioluciodovallopes
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPs4nx
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCPFrank Coelho
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
Processos de Software - 101
Processos  de Software - 101Processos  de Software - 101
Processos de Software - 101Lucas Amaral
 
Scrum uma metodologia ágil paragestão e planejamento de projetos de software
Scrum uma metodologia ágil paragestão e planejamento de projetos de softwareScrum uma metodologia ágil paragestão e planejamento de projetos de software
Scrum uma metodologia ágil paragestão e planejamento de projetos de softwareThiago Reis da Silva
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMLucas Vinícius
 
Processo de software individual
Processo de software individualProcesso de software individual
Processo de software individualAdivaldo_badinho
 

Semelhante a Modelos de Engenharia de Software (20)

ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
 
Aula 3
Aula 3Aula 3
Aula 3
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascata
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
Scrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimentoScrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimento
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Scrum experience bo tutorial scrum v15
Scrum experience bo tutorial scrum v15Scrum experience bo tutorial scrum v15
Scrum experience bo tutorial scrum v15
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XP
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
Processos de Software - 101
Processos  de Software - 101Processos  de Software - 101
Processos de Software - 101
 
Scrum uma metodologia ágil paragestão e planejamento de projetos de software
Scrum uma metodologia ágil paragestão e planejamento de projetos de softwareScrum uma metodologia ágil paragestão e planejamento de projetos de software
Scrum uma metodologia ágil paragestão e planejamento de projetos de software
 
Processos de software
Processos de softwareProcessos de software
Processos de software
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUM
 
Do Zero à Produção
Do Zero à ProduçãoDo Zero à Produção
Do Zero à Produção
 
Processo de software individual
Processo de software individualProcesso de software individual
Processo de software individual
 

Mais de Nathalia Sautchuk Patricio

Conceptos fundamentales sobre el funcionamiento y la utilidad del cifrado
Conceptos fundamentales sobre el funcionamiento y la utilidad del cifradoConceptos fundamentales sobre el funcionamiento y la utilidad del cifrado
Conceptos fundamentales sobre el funcionamiento y la utilidad del cifradoNathalia Sautchuk Patricio
 
Algoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasAlgoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasNathalia Sautchuk Patricio
 
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...Nathalia Sautchuk Patricio
 
Requisitos de Interface com o usuário em Software Educacional
Requisitos de Interface com o usuário em Software EducacionalRequisitos de Interface com o usuário em Software Educacional
Requisitos de Interface com o usuário em Software EducacionalNathalia Sautchuk Patricio
 
Políticas Educacionais do Ensino a Distância no Brasil
Políticas Educacionais do Ensino a Distância no BrasilPolíticas Educacionais do Ensino a Distância no Brasil
Políticas Educacionais do Ensino a Distância no BrasilNathalia Sautchuk Patricio
 
Como funciona a Internet - Camada de Aplicação
Como funciona a Internet - Camada de AplicaçãoComo funciona a Internet - Camada de Aplicação
Como funciona a Internet - Camada de AplicaçãoNathalia Sautchuk Patricio
 
Engenharia de Requisitos em Software para E-learning
Engenharia de Requisitos em Software para E-learningEngenharia de Requisitos em Software para E-learning
Engenharia de Requisitos em Software para E-learningNathalia Sautchuk Patricio
 
Desenvolvimento de ambientes 3D para Web usando Three JS
Desenvolvimento de ambientes 3D para Web usando Three JSDesenvolvimento de ambientes 3D para Web usando Three JS
Desenvolvimento de ambientes 3D para Web usando Three JSNathalia Sautchuk Patricio
 

Mais de Nathalia Sautchuk Patricio (16)

Conceptos fundamentales sobre el funcionamiento y la utilidad del cifrado
Conceptos fundamentales sobre el funcionamiento y la utilidad del cifradoConceptos fundamentales sobre el funcionamiento y la utilidad del cifrado
Conceptos fundamentales sobre el funcionamiento y la utilidad del cifrado
 
Algoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasAlgoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas Públicas
 
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...
Internet Engineering Task Force (IETF): Visão sobre a Participação Brasileira...
 
Franquia de dados na Internet
Franquia de dados na InternetFranquia de dados na Internet
Franquia de dados na Internet
 
Requisitos de Interface com o usuário em Software Educacional
Requisitos de Interface com o usuário em Software EducacionalRequisitos de Interface com o usuário em Software Educacional
Requisitos de Interface com o usuário em Software Educacional
 
Políticas Educacionais do Ensino a Distância no Brasil
Políticas Educacionais do Ensino a Distância no BrasilPolíticas Educacionais do Ensino a Distância no Brasil
Políticas Educacionais do Ensino a Distância no Brasil
 
Essay: Multistakeholder Model
Essay: Multistakeholder ModelEssay: Multistakeholder Model
Essay: Multistakeholder Model
 
Essay: Brazilian Transition to IPv6
Essay: Brazilian Transition to IPv6Essay: Brazilian Transition to IPv6
Essay: Brazilian Transition to IPv6
 
Protocolos de Rede para Internet das Coisas
Protocolos de Rede para Internet das CoisasProtocolos de Rede para Internet das Coisas
Protocolos de Rede para Internet das Coisas
 
Como funciona a Internet - Camada de Aplicação
Como funciona a Internet - Camada de AplicaçãoComo funciona a Internet - Camada de Aplicação
Como funciona a Internet - Camada de Aplicação
 
Software Livre na Educação
Software Livre na EducaçãoSoftware Livre na Educação
Software Livre na Educação
 
O uso das TICs na educação
O uso das TICs na educaçãoO uso das TICs na educação
O uso das TICs na educação
 
Engenharia de Requisitos em Software para E-learning
Engenharia de Requisitos em Software para E-learningEngenharia de Requisitos em Software para E-learning
Engenharia de Requisitos em Software para E-learning
 
Mulheres na computação
Mulheres na computaçãoMulheres na computação
Mulheres na computação
 
Mulheres na computação
Mulheres na computaçãoMulheres na computação
Mulheres na computação
 
Desenvolvimento de ambientes 3D para Web usando Three JS
Desenvolvimento de ambientes 3D para Web usando Three JSDesenvolvimento de ambientes 3D para Web usando Three JS
Desenvolvimento de ambientes 3D para Web usando Three JS
 

Modelos de Engenharia de Software

  • 1. Modelos de Engenharia de Software Nathalia Sautchuk Patrício
  • 2. Engenharia de Software  "A engenharia de software é a aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software, e o estudo dessas abordagens, ou seja, a aplicação da engenharia ao software" (SWEBOK, 2011)
  • 3. Engenharia de Software  Há diversas metodologias de engenharia de software  Pode-se dividi-los em duas classes: – Tradicionais – Ágeis
  • 4. Modelos Tradicionais  Os três principais modelos tradicionais de engenharia de software são: – Cascata – Espiral – Processo unificado
  • 5. Cascata  O modelo cascata sugere uma abordagem sistemática e sequencial para o desenvolvimento de software
  • 7. Cascata  Vantagens: – Documentação produzida em cada fase – Aderência a outros modelos de processo de engenharia
  • 8. Cascata  Desvantagens: – Projetos reais raramente seguem o fluxo sequencial – Dificuldade do cliente em estabelecer todos os requisitos explicitamente – Paciência do cliente em esperar o programa ficar pronto, o que ocorre apenas no fim do projeto
  • 9. Espiral  Tem duas características principais: – abordagem cíclica: permite que o grau de definição e implementação de um software seja aumentado incrementalmente enquanto seu grau de risco é diminuído. – marcos de ancoragem: são uma combinação de produtos de trabalho e condições obtidas ao longo do caminho da espiral.
  • 11. Espiral  Vantagem: – Abordagem realista  Desvantagem: – adoção difícil no processo de desenvolvimento de software de grande porte, uma vez que o custo e o cronograma vão sendo alterados ao longo do projeto
  • 12. Processo Unificado  Um modelo de processo para engenharia de software orientada a objetos usando a linguagem UML  É considerado um processo iterativo e há duas formas de iteração presentes: – Cada fase pode ser realizada de forma iterativa – O conjunto total de fases pode também ser realizado incrementalmente
  • 14. Modelos Tradicionais  Principal problema dos modelos tradicionais é a dificuldade em lidar com mudanças: – de requisitos – de escopo – de tecnologia
  • 15. Modelos ágeis  Modelos de desenvolvimento com uma etapa de especificação inicial de software menos detalhada  Existem diversos modelos ágeis de engenharia de software
  • 16. Modelos ágeis  Manifesto Ágil – Indivíduos e interações são mais importantes do que processos e ferramentas; – Software funcionando é mais importante do que documentação completa;
  • 17. Modelos ágeis  Manifesto Ágil – Colaboração com o cliente é mais importante do que negociação de contratos e – Adaptação a mudanças é mais importante do que seguir plano inicial.
  • 18. Modelos ágeis  Três modelos ágeis de engenharia de software são: – Crystal – Scrum – Programação Extrema
  • 19. Crystal  Crystal é o nome de uma família de modelos  Possui elementos centrais comuns a todos os modelos, mas também há elementos específicos de cada modelo, como, por exemplo, os papéis desempenhados dentro da equipe, padrões de processos, produtos de trabalho e práticas
  • 20. Crystal  Cada um dos modelos é representado por uma cor: – quanto mais escura a cor do modelo, maior é o nível de formalismo a ser usado no projeto, maior o tamanho da equipe de projeto e maior a criticalidade.
  • 21. Crystal  É necessário classificar o projeto usando duas características: – criticalidade – tamanho da equipe  Quanto mais pessoas envolvidas, mais artefatos e formalismos são necessários para possibilitar a comunicação.
  • 24. Crystal  Três premissas que devem ser seguidas durante o desenvolvimento são: – entregas frequentes – comunicação intensa – melhora por reflexão
  • 25. Crystal  Cinco estratégias são sugeridas para atingir premissas: – Exploração de 360 graus – Vitória antecipada – Esqueleto que anda – Rearquitetura incremental – Radiadores de informação
  • 26. Crystal  As práticas propostas são nove, porém apenas uma é obrigatória, o reflection workshop: – reunião periódica focada em três questões principais: • “o que deve ser mantido?” • “onde estamos tendo problemas?” • “o que vamos tentar na próxima iteração?”
  • 27. Scrum  É um modelo ágil para gerência de projetos de software  Não determina como a equipe executará as tarefas de programação, permitindo a integração com outros modelos ágeis específicos para práticas de programação, como a programação extrema
  • 28. Scrum  Para seguir as práticas do scrum são usados cartões de funcionalidades e gráficos de acompanhamento  Esses cartões são agrupados em backlogs
  • 29. Scrum  Um projeto é dividido em três fases: – planejamento – sprint – avaliação
  • 30. Scrum
  • 31. Scrum  Durante o sprint, a equipe faz diariamente uma breve reunião, chamada de daily scrum – O que você fez desde a última reunião de equipe? – Que obstáculos você está encontrando? – O que você planeja realizar até a próxima reunião de equipe?
  • 32. Scrum  É liderada pelo Scrum Master: – Não é um líder de equipe no sentido convencional da palavra – atua como uma barreira entre a equipe e possíveis influências externas que possam distraí-la das tarefas definidas para um determinado sprint – também garante que o processo scrum está sendo usado como pretendido
  • 33. Scrum  Terminado um sprint, faz-se uma reunião de retrospectiva: – quais práticas funcionaram bem – o que poderia ser melhorado no próximo sprint
  • 34. Programação extrema  É um método leve de desenvolvimento de software usado quando os requisitos são vagos ou mudam constantemente e é adequado a equipes pequenas ou médias
  • 35. Programação extrema  A documentação da programação extrema é minimalista, sendo que, em um cenário ideal, apenas o código e os testes a compõem  Além do código, apenas cartões de história e radiadores de informação são recomendados
  • 36. Programação extrema  Assume a presença constante das mudanças  Propõe uma série de práticas para lidar com elas
  • 37. Programação extrema  Discorda do princípio “projetar para a mudança” alegando que é, geralmente, um esforço inútil  As mudanças antecipadas, muitas vezes, não ocorrem e as solicitações de mudança realizadas são completamente diferentes
  • 38. Programação extrema  Defende que a equipe de desenvolvimento deve procurar constantemente por possíveis melhorias no software, implementando-as imediatamente, o que é conhecido como refatoração
  • 40. Programação extrema  O processo da programação extrema possui três etapas: – Exploração – Planejamento – Implementação
  • 41. Desenvolvimento de Software  Conclusão  Desenvolver software não envolve só o conhecimento de uma linguagem de programação  Existem diversas formas de desenvolver software  Processos, métodos, paradigmas de programação, linguagens de programação...