Você está na página 1de 26

UMA INTRODUÇÃO À

ENGENHARIA DE SOFTWARE
luiza.alves@grupounibra.com
Código da turma: 6v6isqy
ENGENHARIA DE SOFTWARE
A dependência do software

• A economia dos países desenvolvidos é dependente de software


• Os gastos com desenvolvimento de software representam uma fração
significativa do PIB
• Existem cada vez mais sistemas controlados por software
História

• A área surgiu no final da década de 60.


• Nas décadas de 40-50, foram
projetados os primeiros computadores
• Software não era a preocupação central,
mas sim construir máquinas para executar

alguns poucos programas.


• Computadores eram usados por poucos e
para resolver apenas problemas
Progressos na construção de hardware
científicos.
mudaram de forma rápida esse cenário...
História – Final da década de 60

• Computadores já eram populares, estavam


em várias universidades norte-americanas e
europeias e em algumas grandes empresas.
• Cientistas se viram diante do novo desafio:
• Novas aplicações se tornavam possíveis e
começavam a ser demandadas: sistemas
como folha de pagamento, controle de
clientes, controle de estoques, etc.
História da Engenharia de Software
Conferência da OTAN 1968

• Cerca de 50 renomados Cientistas da Computação se


reuniram por uma semana em Garmisch, na Alemanha;
• Conferência patrocinada por um comitê científico da OTAN;
• Objetivo: Chamar a atenção para um problema crucial do
uso de computadores, o SOFTWARE.
• Resultado: Relatório (+130 págs) sobre a necessidade da
construção de software com base em princípios práticos e
teóricos, tal como ocorre em ramos tradicionais e bem
estabelecidos da engenharia.
Criaram o termo
ENGENHARIA DE
SOFTWARE

Conferência da OTAN 1968, marco histórico de criação


da área de Engenharia de Software.
Passado mais de um século ...

• Bibliotecas, frameworks, serviços que Avanços na área


permitem o reuso de código e eliminam são notáveis!
detalhes de implementação: Foram desenvolvidos:
• Interfaces gráficas, • processos,
• padrões,
• Criação de estruturas de dados, • frameworks,
• Acesso a bancos de dados, • modelos,
• Criptografia de mensagens, etc, • técnicas de testes
(redução de falhas), etc
• Desenvolvimento No/Low code.
Passado mais de um século ...

• Sistemas também envelhecem.


• Logo:
software também precisa de manutenção, não
apenas corretiva (para corrigir bugs), mas
também para garantir que os sistemas
continuem atuais, fáceis de manter e entender,
mesmo com o passar dos anos.
Principais problemas com o
software:
• Software que não funciona
• Software com altos custos
• Prazos não cumpridos
• Baixa qualidade: Primeiro Bug em 1945:

• Muitos defeitos
• Confiabilidade duvidosa
• Difíceis de usar pelo usuário
• Lentos
• Não portáveis, etc
Os bugs mais conhecidos...
Não existe bala de prata

Em 1987, em um ensaio intitulado 


“Não Existe Bala de Prata: Essência e
Acidentes em Engenharia de Software”,
Frederick Brooks, pioneiro da área de
Engenharia de Software, chamou a atenção
para particularidades da área de Engenharia
de Software, chamadas DIFICULDADES
ESSENCIAIS.

Frederick Brooks,
Prêmio Turing em Computação (1999)
Dificuldades essências segundo Brooks

Complexidade: Facilidade de mudanças:


• O software é uma das construções mais • Necessidade de evoluir sempre,
desafiadoras e complexas! incorporando novas funcionalidades.
• Mesmo construções de engenharia • Quanto mais bem sucedido for um
tradicional (um satélite, usina nuclear sistema de software, mais demanda por
ou foguete), são cada vez mais mudanças ele recebe!
dependentes de software.
Conformidade: Invisibilidade:
• Software tem que se adaptar ao seu • como os sistemas de software são
ambiente, que muda a todo momento. abstratos, é difícil visualizar o tamanho e
• Por exemplo, se as leis para recolhimento consequentemente estimar o esforço de
de impostos mudam, os sistemas devem ser sua construção.
rapidamente adaptados à nova legislação.
O que é software?

• “... quando falamos de


Engenharia de Software, não se
trata apenas do programa em
si, mas de toda a documentação
associada e dados de
configurações necessários para
fazer esse programa operar
corretamente”
(SOMMERVILLE, 2011, p. 17)
Só código?
O que é software?

PROGRAMAS DOCUMENTAÇÃO ASSOCIADA


(Códigos fonte e executáveis) (Requisitos, modelos do projeto, arquivos de
configurações, manuais de usuários etc)

15
Engenharia de Software

• ES inclui:

TEORIAS MÉTODOS FERRAMENTAS

Está relacionada com o desenvolvimento EFICAZ de software


O que é Engenharia de Software?

• Investiga DESAFIOS e propõe SOLUÇÕES que permitam


desenvolver sistemas de software — principalmente COMPLEXOS
e GRANDES — de forma produtiva e com qualidade.
• Trata da aplicação de abordagens SISTEMÁTICAS,
DISCIPLINADAS e quantificáveis para desenvolver, operar,
manter e evoluir software.
• É a área da Computação que se preocupa em propor e aplicar
princípios de ENGENHARIA na construção de software.
Engenharia de Software

• Os custos de software, geralmente, dominam o custo do sistema


como um todo.
• São maiores do que o custo de hardware
• São maiores para manter do que para desenvolver!

Para sistemas com vida longa, custos de manutenção podem ser várias
vezes o custos de desenvolvimento
O que é Disciplina da engenharia
Engenharia de envolvida com todos os
aspectos da produção de
Software? software.
Engenharia de Software

“A engenharia de software tem por objetivo apoiar o


desenvolvimento profissional de software, mais do que a
programação individual.
Ela inclui técnicas que apoiam especificação, projeto e
evolução de programas, que normalmente não são
relevantes para o desenvolvimento de software pessoal.
(SOMMERVILLE, 2011, p. 3)”
Engenheiros de software

Devem adotar uma abordagem sistemática e organizada para o


trabalho e usar ferramentas e técnicas apropriadas, dependendo:
• Do problema a ser solucionado,
• Das restrições de desenvolvimento,
• Dos recursos disponíveis.
O que é um processo de
software?
Um conjunto de atividades
cujo objetivo é o
desenvolvimento ou evolução
do software

Atividades genéricas:

Especificação Desenvolvimento Validação Evolução


Atividades genéricas de todos os processos de
software

ESPECIFICAÇÂO DESENVOLVIMENTO VALIDAÇÃO EVOLUÇÃO

Especificação do que o Produção do sistema Verificação se o Mudanças no software


sistema deve fazer e de software (programa software é o que o em resposta a
suas restrições de executável) cliente deseja demandas de
desenvolvimento mudanças
Não é fácil...

Entender a funcionalidade

Analisar e entender detalhes dessa solução Atender o desejo do cliente


O que acontece...
O que estuda a
Engenharia de Software?

SWEBOK V3.0 (IEEE) • Requisitos de software • Modelos e Métodos de Eng.


de software
• Versão mais atual do Guia para o • Projeto de software
• Qualidade de software
Conjunto de Conhecimento em • Construção de software
• Prática Profissional de Eng.
Engenharia de Software. • Teste de software de Software

• Manutenção de software • Aspectos Econômicos da Eng.


• Desenvolvido e criado por líderes de Software
• Gerenciamento de
autoridades, revisadas por configuração de software
• Fundamentos de computação

profissionais e disponibilizadas • Gestão de Eng. de Software


• Fundamentos Matemáticos

para análise e comentários • Processo de Eng. de


• Fundamentos de Engenharia

públicos Software

Você também pode gostar