Logo Passei Direto
Buscar

Engenharia de Software 2025

Aula 2 de Engenharia de Software: apresenta linha do tempo da evolução de hardware e software, gerações de linguagens (déc. 40–70, Fortran, COBOL, C, Pascal, Simula), analisa a "crise do software" (NATO 1968, Chaos Report 1995) e os problemas que geraram a disciplina.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Engenharia de Software
Profª Dani Pereira
AULA 2
Objetivos da Aula de 
Hoje:
• Compreender o processo de 
evolução do software
Para refletir
O que torna seu smartphone tão 
interessante?
A Crise do Software
O começo de uma nova era 
tecnológica
A Crise do Software
• O fenômeno da "crise de software" apareceu em meados do ano de 1960 e 
expressava as dificuldades no desenvolvimento de software meio a demanda que 
aumentava assim como a complexidade dos problemas a serem superados.
• Não existiam técnicas estabelecidas para desenvolver softwares, por necessidade 
surgiu a engenharia de software que tem por objetivo sanar os seguintes 
problemas:
• Projetos que ultrapassam o orçamento;
• Projetos que ultrapassam o prazo;
• Softwares que apresentam baixa qualidade;
• Softwares que não atinge os requisitos propostos;
• Código com baixa manutenibilidade.
Evolução da Programação ao longo do tempo
• Década de 40, surgiu a programação física em linguagem de 
máquina (conhecimento total do hardware).
• Década de 50, surgiram as linguagens de 1ª geração, programação 
lógica (abstração do hardware), linguagens montadoras como 
assembler (ainda exigiam conhecimentos do hardware), ênfase em 
cálculos matemáticos. Linguagens: Fortran, List e Algol 58
• Década de 60, surgiram as linguagens de 2ª geração, ênfase no 
processamento de dados (sistemas bancários). Linguagens: Fortran, 
Algol 60, Lisp, Basic e Cobol.
Evolução da Programação ao longo do tempo
• Década de 70, surgiram as linguagens de 3ª geração, ênfase na 
estruturação do código (programação estruturada). Linguagens: 
PL/1, Fortran, Algol 68, Cobol, Linguagem C, Pascal (ferramenta de 
aprendizagem de programação) e Simula (primeira linguagem a 
suportar o conceito de classes).
Crise do Software – Momentos Históricos
• 1968 Conferência da OTAN sobre Engenharia de Software (NATO 
Software Engineering Conference)
• O principal objetivo dessa reunião era estabelecer práticas mais 
maduras para o processo de desenvolvimento, por essa razão o 
encontro é considerado hoje como o nascimento da disciplina de 
Engenharia de Software.
• Conforme foi observado, em relatório da época, cerca de 50 a 80% 
dos projetos nunca foram concluídos ou estavam tão longe de seus 
objetivos que foram considerados fracassados. Dos sistemas que 
foram finalizados, 90% haviam terminado 150 a 400% acima do 
orçamento e dos prazos predeterminados
Crise do Software – Momentos Históricos
• Duas décadas depois, em 1986, Alfred Spector, presidente da 
Transarc Corporation
• Foi coautor de um artigo comparando a construção de pontes ao 
desenvolvimento de software. Sua premissa era de que as pontes 
normalmente eram construídas no tempo planejado, no orçamento, e 
nunca caiam. Na contramão, os softwares nunca ficavam prontos 
dentro do prazo e do orçamento, e, além disso, quase sempre
Crise do Software – Momentos Históricos
• 1995 – estudo da The Standish Group
• O estudo publicado analisava as estatísticas sobre sucesso e fracasso 
dos projetos de desenvolvimento de software: o Chaos Report.
• Foi revelado que 84% dos projetos de software são malsucedidos, 
sejam sendo cancelados ou apresentando falhas críticas (dentre elas 
conclusão fora da janela de tempo prevista, fora do orçamento 
previsto ou com menos funcionalidades do que o planejado). 
Considerando apenas os projetos malsucedidos, o custo real foi 189% 
maior que o estimado, e o tempo de conclusão 222% maior. Estimou-
se que nesse ano, as agências governamentais e companhias privadas 
estadunidenses tenham gasto US$ 81 bilhões apenas em projetos 
cancelados, e mais US$ 59 bilhões em projetos concluídos fora do 
tempo previsto.
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, que é a aplicação de engenharia ao 
software.
(SWEBOK Guide V3.0)
A Engenharia de Software
• Abordagem Sistemática : Significa que o desenvolvimento de 
software deve seguir um processo estruturado, com etapas bem 
definidas, como levantamento de requisitos, design, implementação, 
testes e manutenção.
• Abordagem Disciplinada : Consulte o uso de metodologias e 
melhores práticas para evitar erros comuns no desenvolvimento, 
garantindo que o software seja produzido com qualidade e eficiência.
• Abordagem Quantificável : Enfatiza que o desenvolvimento de 
software deve ser mensurável. Isso inclui análises como número de 
falhas, desempenho, tempo de resposta e custos , permitindo um 
controle eficaz do projeto.
A Engenharia 
de Software
• A engenharia de software se preocupa 
com teorias, métodos e ferramentas para 
desenvolvimento de softwares 
profissionais.
• A engenharia de software é uma 
disciplina da engenharia que se preocupa 
com todos os aspectos da produção de 
software desde o início da especificação 
do sistema até a manutenção do sistema 
após esse estar sendo usado.
• Utiliza teorias e métodos adequados para 
resolver os problemas tendo em mente 
as restrições organizacionais e 
financeiras.
A Engenharia 
de Software
• Não se preocupa apenas com o 
processo técnico de 
desenvolvimento, mas também 
com o gerenciamento de projetos e 
o desenvolvimento de ferramentas, 
métodos, etc. para dar apoio à 
produção de software.
Software
• Principal finalidade de um software: GERAR 
INFORMAÇÃO
• Principais componentes de um SI: hardware, software, 
sistema gerenciador de banco de dados, redes de 
comunicação e serviços, sendo os referidos 
componentes interdependentes.
• O software agrega valor aos dados na geração de 
informação
• O software distribui o produto mais importante da 
nossa era – a Informação (PRESSMAN, 2016).
Software de diferentes categorias
• Software de sistema: Camadas de software que atendem a outros 
softwares, tais como, sistemas operacionais, drivers e outros.
• Software de aplicação: Inclui software com escopo específico, tais 
como, sistemas de gestão empresarial (ERP).
• Software de engenharia/científico: Inclui software aplicado às áreas 
de engenharia e científica, tal como, software para cálculo estrutural 
na área de engenharia civil ou processamento de imagem.
Software de diferentes categorias
• Software embarcado: Instalado em produtos com funções 
específicas, tal como, o controle de um veículo com informações 
disponíveis no painel digital.
• Software para linha de produtos: Projetado com determinado 
conjunto de funcionalidades e utilizado por diferentes clientes, por 
exemplo, sistema emissor de nota fiscal.
• Aplicações Web/aplicativos móveis: Software específico para 
dispositivo móvel.
• Software de Inteligência Artificial: Utilizam técnicas de inteligência 
artificial, tais como, sistema especialistas, redes neurais, aprendizado 
de máquinas e outros.
Arquitetura em 
Camadas da Engenharia 
de Software
Camadas da Engenharia 
de Software
• A Engenharia de Software como 
Tecnologia em Camadas é um 
conceito que estrutura uma disciplina 
de forma hierárquica, garantindo que 
todas as atividades de 
desenvolvimento sejam organizadas 
de maneira eficiente e controlada. 
Essa abordagem em camadas garante 
qualidade, organização e suporte 
adequado para o desenvolvimento de 
software.
Arquitetura em Camadas da Engenharia de 
Software
1. Camada de Qualidade
O que é?
Uma camada de qualidade é a base para todas as outras camadas. Ela define os critérios e práticas 
que garantem que o software produzido seja confiável, seguro, eficiente e atenda às expectativas 
dos usuários .
Importância:
O foco está na garantia da qualidade do software (Quality Assurance - QA).
Definir métricas e padrões para medir e avaliar a qualidade.
Certifique-se de que o software atenda aos requisitos funcionais e não funcionais .
Inclui práticas como revisões, auditorias, testes e conformidade com normas (ISO, CMMI, etc.) .
Exemplos de aplicação:
Testes automatizados para evitar erros em grandes projetos.
Revisões de códigopara garantir boas práticas.
Auditorias de processos para verificar conformidade com normas como ISO 9001, CMMI .
Arquitetura em Camadas da Engenharia de 
Software
2. Camada de Processo
O que é?
A camada de processo estabelece o caminho a ser seguido no desenvolvimento do software. Ela 
define metodologias e frameworks que serão organizados como o software será projetado, 
construído e planejado.
Importância:
Definir um ciclo de vida do software (Ex: Cascata, Ágil, Scrum, DevOps ).
Organiza atividades, papéis e responsabilidades dentro da equipe.
Permite a gestão de prazos, custos e recursos .
Garanta que o software seja desenvolvido de forma eficiente e previsível .
Exemplos de aplicação:
Uma empresa pode usar o Scrum (método ágil) para organizar entregas incrementais .
Em sistemas críticos, pode ser usado o modelo em V , que enfatiza validações em cada fase .
DevOps integra desenvolvimento e operações para automação e entrega contínua .
Arquitetura em Camadas da Engenharia de 
Software
3. Camada de Métodos
O que é?
A camada de métodos abrange todas as técnicas, práticas e diretrizes usadas para desenvolver o 
software. Ela detalha como os requisitos são levantados, o software é projetado, codificado, 
testado e documentado .
Importância:
Defina como resolver problemas de software de maneira eficaz.
Inclui princípios de modelagem, análise, design e programação .
Auxilia no desenvolvimento de software modular, reutilizável e sustentável .
Exemplos de aplicação:
UML (Unified Modeling Language) para modelagem de sistemas.
Design Patterns para resolver problemas comuns na programação.
Refatoração para melhorar o código sem mudar sua funcionalidade.
Pair Programming (programação em pares) para revisão de código em tempo real.
Arquitetura em Camadas da Engenharia de 
Software
4. Camada de Ferramentas
O que é?
A camada de ferramentas fornece os recursos tecnológicos que ajudam a aplicar os métodos, 
implementar os processos e garantir a qualidade.
Importância:
Auxilia a automatizar tarefas e melhorar a eficiência.
Fornecer ambientes integrados para desenvolvimento, testes e implantação.
Suporta gerenciamento de código-fonte, automação de construções e monitoramento de sistemas
.
Exemplos de aplicação:
IDE (Ambientes de Desenvolvimento Integrado): VS Code, Eclipse, IntelliJ.
Sistemas de Controle de Versão: Git, GitHub, GitLab, Bitbucket.
Ferramentas de automação de testes: Selenium, JUnit, Jest.
Ferramentas de CI/CD (Integração Contínua): Jenkins, GitHub Actions, Azure DevOps.
Arquitetura em Camadas da Engenharia de 
Software
Resumo da Arquitetura em Camadas da Engenharia de Software
1️⃣ Camada de Qualidade → Garantir que o software atenda aos 
padrões esperados. 
2️⃣ Camada de Processo → Definir o fluxo de trabalho para o 
desenvolvimento do software. 
3️⃣ Camada de Métodos → Fornecer técnicas e práticas para a 
construção do software. 
4️⃣ Camada de Ferramentas → Disponibiliza tecnologias para suporte 
ao desenvolvimento.
Para Saber 
Mais
Para saber mais
• Vídeo "Software Engineering: Crash Course Computer Science #16"
https://www.youtube.com/watch?v=O753uuutqH8
(Acesse usando chrome a ative a legenda, e a 
tradução automática para português)
[1] Vídeo "O Que faz um Engenheiro De Software" disponível em: 
https://www.youtube.com/watch?v=ykFwpzab8rM
[2] PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software. Porto 
Alegre: AGMH, 2016.
Páginas 14 até 27. Disponível em: 
https://integrada.minhabiblioteca.com.br/#/books/9788580555349/
https://www.youtube.com/watch?v=O753uuutqH8
https://www.youtube.com/watch?v=ykFwpzab8rM
	Slide 1: Engenharia de Software
	Slide 2: Objetivos da Aula de Hoje:
	Slide 3
	Slide 4: Para refletir
	Slide 5: A Crise do Software
	Slide 6: A Crise do Software
	Slide 7: Evolução da Programação ao longo do tempo
	Slide 8: Evolução da Programação ao longo do tempo
	Slide 9: Crise do Software – Momentos Históricos
	Slide 10: Crise do Software – Momentos Históricos
	Slide 11: Crise do Software – Momentos Históricos
	Slide 12
	Slide 13: A Engenharia de Software
	Slide 14: A Engenharia de Software
	Slide 15: A Engenharia de Software
	Slide 16: A Engenharia de Software
	Slide 17: Software
	Slide 18: Software de diferentes categorias
	Slide 19: Software de diferentes categorias
	Slide 20: Arquitetura em Camadas da Engenharia de Software
	Slide 21: Camadas da Engenharia de Software
	Slide 22: Arquitetura em Camadas da Engenharia de Software
	Slide 23: Arquitetura em Camadas da Engenharia de Software
	Slide 24: Arquitetura em Camadas da Engenharia de Software
	Slide 25: Arquitetura em Camadas da Engenharia de Software
	Slide 26: Arquitetura em Camadas da Engenharia de Software
	Slide 27: Para Saber Mais
	Slide 28: Para saber mais

Mais conteúdos dessa disciplina