Você está na página 1de 55

1.

Engenharia de
Software
Prof. Peter Jandl Jr
Engenharia de Software II
ADS | UNIP
Roteiro

Introdução: computadores, software

A crise do software

Engenharia de Software
22/03/2024 (C) 2019-2024, PJandl. 2
+
Computadores e Software
• Hardware é um requisito simples, pois:
• É uma commodity, de custo relativo baixo, sendo o custo do projeto diluído
pelo volume de produção.
• Componentizado, produzido em série, manufatura altamente automatizada.
• Requer software.
• Software é um requisito complexo, pois:
• É um determinante, de custo relativo alto, baixo volume não permite diluir
custo do projeto.
• Desenvolvimento não é (completamente) sistematizado, nem seu processo de
produção (muito) automatizado.
• Requer mão de obra altamente especializada.
22/03/2024 (C) 2019-2024, PJandl. 3
+
Software::uma definição
• Software é o programa, mas também inclui sua documentação
e sua configuração, cuja associação é necessária para que o
programa opere corretamente.
• Assim, um sistema de software consiste de um conjunto de
programas separados; de arquivos de configuração; da
documentação do sistema, que descreve sua estrutura; e da a
documentação do usuário, que explica como usar o sistema.

• (SOMMERVILLE, 2011)

22/03/2024 (C) 2019-2024, PJandl. 4


Software
(1)Instruções que, quando
executadas, produzem a função
e o desempenho desejados.
(2)Estruturas de dados que
possibilitam que os programas
manipulem adequadamente a
informação.
(3)Documentos que descrevem a
operação e o uso dos
programas.

22/03/2024 (C) 2019-2024, PJandl. 5


+
Software::requisitos típicos

Desenvolvimento rápido

Interoperabilidade

Robustez

Segurança
22/03/2024 (C) 2019-2024, PJandl. 6
Desenvolvimento clássico de software
• Resolução de problemas baseadas na divisão em partes mais
simples
• Funções
• Módulos e bibliotecas
• Sub-programas.
• Técnicas de programação voltadas para estruturação da
solução em tais partes.
• Linguagens de programação voltadas para o modo de
funcionamento do computador.
22/03/2024 (C) 2019-2024, PJandl. 7
Software::características
1. É desenvolvido ou projetado por engenharia, não é
manufaturado no sentido clássico.
2. Software não se “desgasta”, mas se torna obsoleto.
3. Maioria é feita “sob medida” ao invés de ser
montado a partir de componentes.
4. Requer mão de obra altamente especializada para
sua produção.

22/03/2024 (C) 2019-2024, PJandl. 8


Software::questões
• É importante garantir que o
software atenda as necessidades
de seus usuários? Como?
• É importante mensurar se o uso
do software permite alcançar os
objetivos organizacionais?
Como?
• É importante evitar que os erros
presentes no software causem
prejuízos ou danos? Como?
22/03/2024 (C) 2019-2024, PJandl. 9
Problemas
causados por
Software

22/03/2024 (C) 2019-2024, PJandl. 10


1982
Gasoduto Trans-Siberiano
Falha no software do sistema de controle do gasoduto permitiu a elevação da pressão do
gás e levou a uma enorme explosão (talvez a maior não nuclear da história). Existem
muitas teorias conspiratórias, sendo o bug a explicação oficial.

22/03/2024 (C) 2019-2024, PJandl. 11


1985-1987
Therac-25

Falha no software, no subsistema


de geração de imagens, produziu
milhares de diagnósticos
incorretos que prejudicaram
milhares de pacientes.
As indenizações ultrapassaram a
casa dos bilhões de dólares para
empresa que desenvolveu e
comercializou o equipamento.

22/03/2024 (C) 2019-2024, PJandl. 12


1994
Intel Pentium FDIV bug

Incorreção na execução de operação de divisão com alguns valores em ponto flutuante,


embora rara e de difícil detecção, obrigou a Intel a substituir o componente dos clientes
que protestaram, causando prejuízo de US$ 475 milhões.
22/03/2024 (C) 2019-2024, PJandl. 13
1999
NASA Mars Climate Orbiter

Satélite, de um projeto de US$ 125 milhões foi


perdido devido à um problema de conversão entre
unidades, impedindo que entrasse na órbita de
Marte corretamente, destruindo-o.

22/03/2024 (C) 2019-2024, PJandl. 14


2003
The Great Northeast Blackout
Falha em sistema de alarme, provocou o maior apagão conhecido. Todo
nordeste dos EUA ficou sem energia, lançando cerca de 50 milhões de pessoas no escuro
e resultou em 11 mortes, além de US$ 6 bilhões de prejuízo ao governo.

22/03/2024 (C) 2019-2024, PJandl. 15


2019 Falha no sistema de automação de pousos e decolagens desta versão

Boing 737-MAX do Boing 737, um dos maiores sucessos da aviação comercial,


provocaram dois acidentes fatais e a suspensão da permissão de vôo
deste modelo de aeronave. Um prejuízo inicial de US$ 25 bilhões.

22/03/2024 (C) 2019-2024, PJandl. 16


Contraponto::sucessos
Mecanismos de Busca
Redes Sociais e Aplicativos de Mensagens
Ecossistema Android
SWIFT (sistema internacional de compensação e transferências)
Sistema de compensação bancária nacional
Programa de declaração do imposto de renda de pessoa física
Urnas eletrônicas usadas pela Justiça Eleitoral
Transferência de valores via PIX
Veículos autônomos
Mecanismos de IA (ChatGPT, Bard/Gemini etc)
22/03/2024 (C) 2019-2024, PJandl. 17
22/03/2024 (C) 2019-2024, PJANDL. 18
Sistemas de Software

22/03/2024 (C) 2019-2024, PJandl. 19


Evolução dos sistemas
• Com a evolução dos computadores e a sofisticação das
necessidades das empresas e dos usuários ...
• Software tornou-se maior e mais complexo, exigindo equipes
mais numerosas para seu desenvolvimento ...
• Capacidades individuais tornam-se cada vez menos
determinantes no resultado produzido pelas equipes.

22/03/2024 (C) 2019-2024, PJandl. 20


+
Software no final dos anos 1960
Desempenho
inadequado

Funcionamento Custo proibitivo


duvidoso para manter

Entregue
atrasado

Manutenção Custos excedem


impossível previsão

22/03/2024 (C) 2019-2024, PJandl. 21


Crise do
software
• Com o aumento da
complexidade do software
e do tamanho das equipes:
• Prazos tornam-se cada vez
mais difíceis de cumprir!
• Custos fogem sempre as
previsões!
• Qualidade do software
deixa sempre a desejar!

22/03/2024 (C) 2019-2024, PJANDL. 22


NATO Science Committe, Garmisch, Alemanha, 7-11/Out/1968

22/03/2024 (C) 2019-2024, PJandl. 23


Crise do
Custo de Alteração do
Projeto na
Fase de Manutenção

software
(10-100x)

Custo de Alteração do
Projeto na
Fase da Implementação
(2-10x)

Custo de Alteração
do Projeto na
Fase de Projeto
(1x)

22/03/2024 (C) 2019-2024, PJandl. 24


Raízes da Crise
• Hardware apresenta alta taxa de
falhas no início do ciclo de vida.
• Período de estabilidade.
• Falhas aumentam com o
desgaste até o descarte (fim da
vida) do equipamento.

22/03/2024 (C) 2019-2024, PJandl. 25


Raízes da Crise
• Software apresenta alta taxa de
falhas no início do ciclo de vida
(erros de projeto e
programação).
• Período de estabilidade
teoricamente infinito.
• Não existe desgaste.

22/03/2024 (C) 2019-2024, PJandl. 26


Raízes da Crise
• Software se deteriora!
• Mudanças nos requisitos de uso
e novas necessidades dos
usuários levam a inclusão de
alterações.
• Upgrades introduzem novas
falhas e limitações que levam a
obsolescência.

22/03/2024 (C) 2019-2024, PJandl. 27


Raízes da Crise
• Custos do software estão
concentrados no trabalho
de engenharia, que inclui
análise, projeto,
desenvolvimento e testes.
• Projetos de software não
podem ser geridos como
problemas de manufatura,
pois a lógica de produção é
outra!

22/03/2024 (C) 2019-2024, PJandl. 28


+
Crise do software
• Expressão surgida na
Inversão da
conferência da OTAN sobre composição de custos
software para se referir ao dos sistemas
computacionais.
conjunto de problemas que
enfatizavam a necessidade
de mudanças profundas nas
abordagens utilizadas para
o desenvolvimento de
software.

22/03/2024 (C) 2019-2024, PJandl. 29


Origem e significado do termo

Engenharia de Software
22/03/2024 (C) 2019-2024, PJANDL. 30
+ 31

Engenharia de Software
• The phrase ‘software engineering’ was
deliberately chosen as being provocative,
in implying the need for software
manufacture to be based on the types of
theoretical foundations and practical
disciplines, that are traditional in the
established branches of engineering.
NATO Science Committee,
Garmisch, Alemanha, 7-11/Outubro/1968.

22/03/2024 (C) 2019-2024, PJandl.


Engenharia de
Software systems are now ubiquitous.
Software Virtually all electrical equipment now
include some kind of software; software is
used to help run manufacturing industry,
schools and universities, health care,
finance and government; many people
use software of different kinds for
entertainment and education. The
specification, development, management
and evolution of these software systems
make up the discipline of software
Sommerville, I. Software Engineering,
6th. Edition, 2001.
engineering.

22/03/2024 (C) 2019-2024, PJandl. 32


Engenharia de
Even simple software systems have a high
Software inherent complexity, so engineering
principles have to be used in their
development. Software engineering is
therefore an engineering discipline where
software engineers use methods and theory
from computer science and apply this cost-
effectively to solve difficult problems. […]
Software engineering was developed in
response to problems of building large,
custom software systems for defense,
Sommerville, I. Software Engineering,
6th. Edition, 2001. government and industrial applications.
22/03/2024 (C) 2019-2024, PJandl. 33
Engenharia de Software
• Abordagem para o • É a construção por múltiplas
desenvolvimento de pessoas de um software com
software na qual são múltiplas versões. (Parnas,
empregadas técnicas e 1987)
métodos bem definidos e de
maneira bem disciplinada.

22/03/2024 (C) 2019-2024, PJandl. 34


Solução da crise do software
• Para reverter o cenário da crise:
• Projetos de software passam a ser encarados como projetos de
engenharia de software.
• Técnicas formais de análise, projeto e desenvolvimento passam a
ser estudadas, testadas e avaliadas.
• Novas linguagens e ferramentas de programação são criadas para
atender as novas necessidades dos desenvolvedores.

22/03/2024 (C) 2019-2024, PJandl. 35


Engenharia de Software
• O IEEE é a maior associação • É a aplicação de uma abordagem
http://www.ieee.org

profissional dedicada ao avanço sistemática, disciplinada e


da inovação tecnológica e quantificável de
excelência em benefício da desenvolvimento, operação e
humanidade. manutenção de software; que é
• O IEEE e seus membros inspiram a aplicação de engenharia a
uma comunidade global por software.
meio de publicações relevantes, • Também inclui o estudo de suas
conferências, padrões e próprias abordagens.
atividades profissionais e
educacionais (IEEE, 2012).
22/03/2024 (C) 2019-2024, PJandl. 36
SWEBOK
Guide to the Software Engineering Body of
Knowledge

1. Promover uma visão consistente da


engenharia de software mundialmente.
2. Esclarecer o lugar – e delimitar a atuação
– da engenharia de software em relação
a outras disciplinas.
3. Caracterizar os conteúdos da disciplina
de engenharia de software.
4. Proporcionar acesso organizado do
conjunto de conhecimento na área de
Engenharia de Software.
5. Prover uma base para desenvolvimento
de um currículo, para certificação de
profissionais e licenciamento de
materiais.
22/03/2024 (C) 2019-2024, PJandl. 37
SWEBOK::foco

22/03/2024 (C) 2019-2024, PJandl. 38


SWEBOK::público-alvo
• Organizações públicas e privadas
• que necessitam de uma visão consistente sobre a engenharia de software para
definição de requisitos de formação e treinamento, classificar vagas, desenvolver
políticas de avaliação de desempenho ou até mesmo especificar atividades de
desenvolvimento de software.
• Engenheiros de software
• Autoridades
• responsáveis por elaborar políticas públicas.
• Sociedades profissionais e educadores
• para definição de regras de certificação, políticas de acreditação para currículos
acadêmicos e orientações para a prática profissional.
• Estudantes de engenharia de software
22/03/2024 (C) 2019-2024, PJandl. 39
SWEBOK

22/03/2024 (C) 2019-2024, PJandl. 40


São 15 KAs
Knowledge
SWEBOK::áreas do conhecimento Areas!

Cap. 1

Cap. 6

Cap. 2
Cap. 7

Cap. 3

Cap. 8

Cap. 4

Cap. 9

Cap. 5

Cap. 10
22/03/2024 (C) 2019-2024, PJandl. 41
SWBOK::KA::Requisitos de Software
• Esta área (KA) está preocupada com a elicitação, análise,
especificação e validação da requisitos de software.

22/03/2024 (C) 2019-2024, PJandl. 42


SWBOK::KA::Projeto de Software
• É definido como o processo de definição da arquitetura,
componentes, interfaces e outras características de um sistema ou
componente e também o resultado desse processo.

22/03/2024 (C) 2019-2024, PJandl. 43


SWBOK::KA::Construção de Software
• O termo construção de software se refere à criação detalhada de
software relevante e funcional a partir de uma combinação de
codificação, verificação, teste unitário, teste integrado e depuração.

22/03/2024 (C) 2019-2024, PJandl. 44


SWBOK::KA::Teste de Software
• Teste de software consiste numa verificação dinâmica do
comportamento de um programa em um conjunto finito de casos de
teste contra o comportamento esperado.

22/03/2024 (C) 2019-2024, PJandl. 45


SWBOK::KA::Manutenção de Software
• Uma vez em operação, alguns defeitos não foram cobertos, o
ambiente operacional muda e novos requisitos de usuário surgem. A
fase de manutenção do ciclo de vida inicia após um período de
garantia ou de suporte pós-implementação, mas as atividades de
manutenção ocorrem muito antes.

22/03/2024 (C) 2019-2024, PJandl. 46


SWBOK::KA::Gerência de Configuração de
SW
• É um processo de suporte ao ciclo de vida do software que beneficia a
gestão de projetos, as atividades de desenvolvimento e manutenção,
atividades de garantia e consumidores e usuários do produto final.

22/03/2024 (C) 2019-2024, PJandl. 47


SWBOK::KA::Gerência de Engenharia de
SW
• Pode ser definida como a aplicação de atividades de gestão -
planejamento, coordenação, medição, monitoramento, controle e
divulgação – para garantir que o desenvolvimento e manutenção de
• software seja sistemática, disciplinada e quantificada.

22/03/2024 (C) 2019-2024, PJandl. 48


SWBOK::KA::Processo de Engenharia de
SW
• Este inclui atividades técnicas e de gestão dentro dos processos do
ciclo de vida de software. Além disso está preocupado com a
definição, implementação, avaliação, gerenciamento da mudança e
melhorias nos próprios processos do ciclo de vida de software.

22/03/2024 (C) 2019-2024, PJandl. 49


SWBOK::KA::Ferramentas e Métodos de ES
• Ferramentas de desenvolvimento de software são baseadas em
programas de computador que apoiam os processos de ciclo de vida
de software.
• Os modelos e métodos impõe uma estrutura na atividade de
engenharia de software.

22/03/2024 (C) 2019-2024, PJandl. 50


SWBOK::KA::Qualidade de Software
• A área de Qualidade de Software lida com as considerações sobre a
qualidade de software que transcende os processos do ciclo de vida
de software.
• Foca na qualidade do software.

22/03/2024 (C) 2019-2024, PJandl. 51


Engenharia de
Software e
Disciplinas
Relacionadas

(C) 2019-2024, PJandl. 03/22/2024 52


Conclusões
• A Engenharia de Software é crucial é porque se dedica ao
desenvolvimento de sistema de software confiáveis, eficientes e
seguros.
• Ela abrange desde a concepção e o planejamento até a manutenção e
a evolução de sistemas, garantindo que os produtos atendam às
necessidades dos usuários e das organizações.
• Além disso, a engenharia de software também promove a
padronização de processos, o que contribui para a redução de custos
e prazos, bem como para a melhoria da qualidade dos produtos
desenvolvidos.

22/03/2024 (C) 2019-2024, PJandl. 53


Referências

22/03/2024 (C) 2019-2024, PJandl. 54


Referências para saber mais
• IEEE. SWEBOK - Guide to the Software Engineering Body of
Knowledge. Version 3, 2014.
• SOMMERVILLE, I. Engenharia de Software. 8ª Ed. Pearson: 2007.

22/03/2024 (C) 2019-2024, PJandl. 55

Você também pode gostar