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

Modelos de Engenharia de Software

  • 1.
    Modelos de Engenhariade Software Nathalia Sautchuk Patrício
  • 2.
    Engenharia de Software  "Aengenharia 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êsprincipais modelos tradicionais de engenharia de software são: – Cascata – Espiral – Processo unificado
  • 5.
    Cascata  O modelo cascatasugere uma abordagem sistemática e sequencial para o desenvolvimento de software
  • 6.
  • 7.
    Cascata  Vantagens: – Documentação produzidaem cada fase – Aderência a outros modelos de processo de engenharia
  • 8.
    Cascata  Desvantagens: – Projetos reaisraramente 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ísticasprincipais: – 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.
  • 10.
  • 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 modelode 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
  • 13.
  • 14.
    Modelos Tradicionais  Principal problemados modelos tradicionais é a dificuldade em lidar com mudanças: – de requisitos – de escopo – de tecnologia
  • 15.
    Modelos ágeis  Modelos dedesenvolvimento 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 é onome 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 dosmodelos é 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 classificaro 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.
  • 22.
  • 23.
  • 24.
    Crystal  Três premissas quedevem ser seguidas durante o desenvolvimento são: – entregas frequentes – comunicação intensa – melhora por reflexão
  • 25.
    Crystal  Cinco estratégias sãosugeridas 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 propostassã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 asprá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.
  • 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 peloScrum 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  É ummé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çãoda 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 apresença constante das mudanças  Propõe uma série de práticas para lidar com elas
  • 37.
    Programação extrema  Discorda doprincí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 quea equipe de desenvolvimento deve procurar constantemente por possíveis melhorias no software, implementando-as imediatamente, o que é conhecido como refatoração
  • 39.
  • 40.
    Programação extrema  O processoda programação extrema possui três etapas: – Exploração – Planejamento – Implementação
  • 41.
    Desenvolvimento de Software  Conclusão  Desenvolversoftware 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...
  • 42.