modelos de engenharia de software
TRANSCRIPT
![Page 1: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/1.jpg)
Modelos de Engenharia de Software
Nathalia Sautchuk Patrício
![Page 2: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/2.jpg)
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)
![Page 3: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/3.jpg)
Engenharia de Software
Há diversas metodologias de engenharia de software
Pode-se dividi-los em duas classes:– Tradicionais– Ágeis
![Page 4: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/4.jpg)
Modelos Tradicionais
Os três principais modelos tradicionais de engenharia de software são:
– Cascata – Espiral– Processo unificado
![Page 5: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/5.jpg)
Cascata
O modelo cascata sugere uma abordagem sistemática e sequencial para o desenvolvimento de software
![Page 6: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/6.jpg)
Cascata
![Page 7: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/7.jpg)
Cascata
Vantagens: – Documentação produzida em cada fase– Aderência a outros modelos de processo
de engenharia
![Page 8: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/8.jpg)
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
![Page 9: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/9.jpg)
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.
![Page 10: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/10.jpg)
Espiral
![Page 11: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/11.jpg)
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
![Page 12: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/12.jpg)
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
![Page 13: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/13.jpg)
Processo Unificado
![Page 14: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/14.jpg)
Modelos Tradicionais
Principal problema dos modelos tradicionais é a dificuldade em lidar com mudanças:
– de requisitos – de escopo – de tecnologia
![Page 15: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/15.jpg)
Modelos ágeis
Modelos de desenvolvimento com uma etapa de especificação inicial de software menos detalhada
Existem diversos modelos ágeis de engenharia de software
![Page 16: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/16.jpg)
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;
![Page 17: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/17.jpg)
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.
![Page 18: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/18.jpg)
Modelos ágeis
Três modelos ágeis de engenharia de software são:
– Crystal– Scrum– Programação Extrema
![Page 19: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/19.jpg)
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
![Page 20: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/20.jpg)
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.
![Page 21: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/21.jpg)
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.
![Page 22: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/22.jpg)
Crystal
![Page 23: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/23.jpg)
Crystal
![Page 24: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/24.jpg)
Crystal
Três premissas que devem ser seguidas durante o desenvolvimento são:
– entregas frequentes– comunicação intensa – melhora por reflexão
![Page 25: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/25.jpg)
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
![Page 26: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/26.jpg)
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?”
![Page 27: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/27.jpg)
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
![Page 28: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/28.jpg)
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
![Page 29: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/29.jpg)
Scrum
Um projeto é dividido em três fases: – planejamento– sprint – avaliação
![Page 30: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/30.jpg)
Scrum
![Page 31: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/31.jpg)
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?
![Page 32: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/32.jpg)
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
![Page 33: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/33.jpg)
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
![Page 34: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/34.jpg)
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
![Page 35: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/35.jpg)
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
![Page 36: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/36.jpg)
Programação extrema
Assume a presença constante das mudanças
Propõe uma série de práticas para lidar com elas
![Page 37: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/37.jpg)
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
![Page 38: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/38.jpg)
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
![Page 39: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/39.jpg)
Programação extrema
![Page 40: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/40.jpg)
Programação extrema
O processo da programação extrema possui três etapas:
– Exploração– Planejamento– Implementação
![Page 41: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/41.jpg)
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...
![Page 42: Modelos de Engenharia de Software](https://reader034.vdocuments.site/reader034/viewer/2022051520/588303791a28abe70d8b5f67/html5/thumbnails/42.jpg)
Obrigada!
Nathalia Sautchuk Patrício
http://nathalia.patricio.pro.br