O documento descreve a história e conceitos fundamentais da engenharia de software, desde suas origens na década de 1950 até os desafios atuais. Apresenta o contexto da crise do software na década de 1960 que levou ao desenvolvimento da engenharia de software e discute seus objetivos, características e abordagens metodológicas. Também aborda temas como qualidade, problemas associados à crise do software e mitos versus realidade.
3. ENGENHARIA DE SOFTWARE
HISTÓRICO
1950
Imprevisibilidade do impacto global que o software
teria sobre cada aspecto da sociedade no final do
século XX e início do século XXI.
Negócios;
Ciência e engenharia;
Criação de novas tecnologias;
Engenharia genética
Extensão de tecnologias existentes;
Comunicações
Declínio de antigas tecnologias;
Industria tipográfica
4. ENGENHARIA DE SOFTWARE
HISTÓRICO
Evolução
Décadas 60 e 70
Hardware com alto custo de processamento e
armazenamento de dados;
Programação estruturada, BD, multiusuário,
sistemas distribuídos.
Década 80
Lei de Moore;
Avanços na microeletrônica resultaram em um aumento
de poder computacional a um custo cada vez menor;
Redes de computadores.
5. ENGENHARIA DE SOFTWARE
HISTÓRICO
Evolução
Décadas 90
Sistemas especialistas;
Arquiteturas paralelas;
Orientação à objetos
Programação estruturada, BD, multiusuário,
sistemas distribuídos.
2000...
Programação para Internet
6. ENGENHARIA DE SOFTWARE
HISTÓRICO
IMPORTÂNCIA
Antes – desafio de desenvolver hardware que reduzisse o custo
de processamento e armazenamento de dados.
Hoje – melhorar a qualidade de soluções baseadas em
computador – software.
8. ENGENHARIA DE SOFTWARE
Finalmente, ninguém poderia prever que
milhões de programas de computador tivessem
de ser corrigidos, adaptados e aperfeiçoados à
medida que o tempo passasse, e que o ônus
de realizar essas atividades de “manutenção”
absorveria mais pessoas e recursos que todo o
trabalho aplicado na criação de novos
softwares.
9. ENGENHARIA DE SOFTWARE
O QUE É SOFTWARE
INSTRUÇÕES: que quando executadas produzem a
função com desempenho desejados.
ESTRUTURAS DE DADOS: que possibilitam que os
programas manipulem a informação de maneira
adequada e segura.
DOCUMENTOS: descrição das operações e o do uso dos
programas.
“Conjunto de vários artefatos e não apenas código
fonte” (SOMMERVILLE, 2003).
10. ENGENHARIA DE SOFTWARE
CARACTERÍSTICAS DO SOFTWARE
Elemento de sistema lógico, não físico;
Software não se desgasta;
Maioria “feita” sob medida em vez de ser montada a
partir de componentes existentes;
12. ENGENHARIA DE SOFTWARE
SOFTWARE
Aplicações
O software pode ser aplicado a qualquer situação em
que um conjunto previamente especificado de passos
procedimentais (i. e., um algoritmo) tiver sido definido.
Desenvolver categorias genéricas para as aplicações de
software é uma tarefa um tanto difícil. À medida que a
complexidade do software cresce, desaparece a clara
divisão em compartimentos.
13. ENGENHARIA DE SOFTWARE
SOFTWARE
Aplicações Potenciais
Software Básico – coleção de programas escritos
para apoiar outros programas.
SO
Compiladores
Gerenciadores de arquivo
Drivers
Software de Tempo Real – monitora/analisa/controla
eventos do mundo real.
Controlador de tráfego aéreo.
14. ENGENHARIA DE SOFTWARE
SOFTWARE
Aplicações Potenciais
Software Científico e de Engenharia – caracterizado
por algoritmos de processamento numéricoSoftware
de Tempo Real – monitora/analisa/controla eventos
do mundo real.
Software embarcado – reside na memória apenas de
leitura (ready-only) e, é usado para controlar
produtos e sistemas para os mercados industriais de
consumo.
15. ENGENHARIA DE SOFTWARE
SOFTWARE
Aplicações Potenciais
Software de computador Pessoal – representa os
mais inovadores projetos de interface com seres
humanos de toda indústria de software.
Software de inteligência artificial – faz uso de
algoritmos não-numéricos para resolver problemas
complexos que não sejam favoráveis à computação
ou à análise direta.
16. ENGENHARIA DE SOFTWARE
CRISE DO SOFTWARE
O conceito de engenharia de software foi proposto em
1968, em uma conferência organizada para discutir o que
foi então chamado de “crise do software”.
Nato – sem ligações com a área
ACM – Association for Computing Machinary (1947)
17. ENGENHARIA DE SOFTWARE
PANORAMA DA CRISE DO SOFTWARE
Resultado direto da introdução de novo hardware
de computador baseado em circuitos integrados;
Aplicações de computador até o momento não
realizáveis, se tornaram viáveis;
Software resultante em ordem de grandeza maior e mais
complexo;
18. ENGENHARIA DE SOFTWARE
CARACTERÍSTICAS DA CRISE DO SOFTWARE
Custos elevados;
Atrasos cronogramas;
Gerência de desenvolvimento ineficaz;
Baixa produtividade das pessoas;
Baixa qualidade do produto de software;
Software existente de difícil de manutenção.
19. ENGENHARIA DE SOFTWARE
RESPOSTA A CRISE
Aplicação de uma abordagem sistemática,
disciplinada e possível de ser medida para o
desenvolvimento, operação e manutenção do
software (IEEE - Institute of Electrical and Eletronic
Engineering).
20. ENGENHARIA DE SOFTWARE
OBJETIVO DA ENGENHARIA DE SOFTWARE
A engenharia de software é um ramo da engenharia
cujo foco é o desenvolvimento dentro de custos
adequados de sistemas de software de alta
qualidade.
Software é abstrato e intangível;
Potencial ilimitado;
Complexo e difícil de ser compreendido.
21. ENGENHARIA DE SOFTWARE
OBJETIVO DA ENGENHARIA DE SOFTWARE
Combinar métodos abrangendo todas as fases de
desenvolvimento de software;
Utilizar melhores ferramentas para automatizar esses
métodos;
Criar blocos de construção mais poderosos para a
implementação do software;
Aplicar melhores técnicas para a garantia da qualidade;
Alimentar uma filosofia de coordenação predominante,
controle e administração.
22. ENGENHARIA DE SOFTWARE
CARACTERÍSTICAS METODOLOGICAS DA
ENGENHARIA DE SOFTWARE
Processo (roteiro) dinâmico, integrado e inteligente de
soluções tecnológicas;
adequação aos requisitos funcionais do negócio do
cliente e seus respectivos procedimentos pertinentes;
efetivação de padrões de qualidade, produtividade e
efetividade em suas atividades e produtos;
fundamentação na tecnologia da informação disponível,
viável, oportuna e personalizada;
planejamento e gestão de atividades, recursos, custos e
datas.
23. ENGENHARIA DE SOFTWARE
IEEE – 1990
Aplicação sistemática, disciplinada e com
abordagem quantitativa para o desenvolvimento,
operação e manutenção de software.
24. ENGENHARIA DE SOFTWARE
SOMMERVILLE – 1992
Engenharia de software envolve questões técnicas
e não-técnicas, tais como a especificação do
conhecimento, técnicas de projeto e
implementação, conhecimentos dos fatores
humanos pelo engenheiro de software e ainda,
gestão de projetos.
25. ENGENHARIA DE SOFTWARE
MAFFEO – 1992
Engenharia de software é: "a área interdisciplinar
que engloba vertentes tecnológica e gerencial
visando a abordar de modo sistemático (modular),
os processos de construção, implantação e
manutenção de produtos de software com
qualidade assegurada por construção segundo
cronogramas e custos previamente definidos".
26. ENGENHARIA DE SOFTWARE
ABORDAGEM DA ENGENHARIA DE SOFTWARE
TECNOLÓGICA E GERENCIAL
Processo de desenvolvimento;
Administração de processos;
Ciclo de vida do software ou metodologia de
desenvolvimento de software.
27. ENGENHARIA DE SOFTWARE
ABORDAGEM EM CAMADAS DA ENGENHARIA
DE SOFTWARE
FOCO NA QUALIDADE
MÉTODOS
FERRAMENTAS
PROCESSOS
28. ENGENHARIA DE SOFTWARE
ABORDAGEM EM CAMADAS DA ENGENHARIA
DE SOFTWARE
“Reunião de metodologias, métodos,
ferramentas, procedimentos e princípios a serem
utilizados durante o processo de produção de
software (percepção do problema,
planejamento, implantação e manutenção) com
o intuito de obter produtos de alta qualidade.”
29. ENGENHARIA DE SOFTWARE
ABORDAGEM EM CAMADAS DA ENGENHARIA
DE SOFTWARE
Ferramentas - dão suporte automatizado ou
semiautomatizado aos métodos;
Integração de ferramentas - quando a informação
criada por uma ferramenta é utilizada por outra, é
estabelecido um sistema de suporte ao
desenvolvimento de software chamado CASE.
30. ENGENHARIA DE SOFTWARE
ABORDAGEM EM CAMADAS DA ENGENHARIA
DE SOFTWARE
Métodos - proporcionam os detalhes de como
fazer para construir o software:
Planejamento e estimativa de projeto ;
Análise de requisitos de software e de sistema ;
Projeto da estrutura de dados;
Algoritmo de processamento;
Codificação;
Teste;
Manutenção.
31. ENGENHARIA DE SOFTWARE
ABORDAGEM EM CAMADAS DA ENGENHARIA
DE SOFTWARE
Procedimentos – constituem o elo de ligação entre
os métodos e as ferramentas. Definem:
A sequência em que os métodos serão aplicados;
Os produtos que se exige que sejam entregues
(documentos, relatórios, formulários, etc.);
Os controles que ajudam a assegurar a qualidade e a
coordenar as mudanças;
Os marcos que possibilitam aos gerentes de software a
avaliar o progresso.
47. ENGENHARIA DE SOFTWARE
PROBLEMAS ASSOCIADOS A CRISE DO
SOFTWARE - MITOS E REALIDADE
ADMINISTRATIVOS -
Existem manuais repletos de padrões e
procedimentos para a construção de software. Isso
não oferecerá ao pessoal tudo o que eles precisam
saber?
O pessoal tem Ferramentas de desenvolvimento de
software de última geração.
Se a equipe está atrasada nos prazos, é viável
adicionar mais programadores e recuperar o atraso.
48. ENGENHARIA DE SOFTWARE
PROBLEMAS ASSOCIADOS A CRISE DO
SOFTWARE
MITOS E REALIDADE
CLIENTE
Uma declaração geral dos objetivos é suficiente para
começar a escrever programas? Pode-se preencher os
detalhes mais tarde?
Os requisitos de projeto são alterados
continuamente, mas as mudanças podem ser
facilmente acomodadas, porque o software é flexível.
49. ENGENHARIA DE SOFTWARE
PROBLEMAS ASSOCIADOS A CRISE DO
SOFTWARE
MITOS E REALIDADE
CLIENTE
Custos com mudanças
MAGNITUDE DAS MUDANÇAS
FASES CUSTO DE MANUTENÇÃO
DEFINIÇÃO 1 x
DESENVOLVIMENTO 1.5x – 6x
MANUTENÇÃO 60x -100x
50. ENGENHARIA DE SOFTWARE
PROBLEMAS ASSOCIADOS A CRISE DO
SOFTWARE
MITOS E REALIDADE
PROFISSIONAL
O programa está escrito e é colocado para funcionar.
O trabalho estará completo.
Enquanto não tiver o programa "funcionando", não
existirá realmente nenhuma maneira de avaliar sua
qualidade.