O documento descreve a evolução histórica do software e a importância crescente do mesmo, levando ao surgimento da engenharia de software para resolver problemas decorrentes do desenvolvimento desorganizado de softwares. Ele explica as principais eras do software, os tipos de software, a "crise de software" e como a engenharia de software utiliza métodos, ferramentas e procedimentos para desenvolver software de forma estruturada e de qualidade.
2. Para reconhecer e entender a importância da engenharia de
software, é preciso primeiro saber qual é a importância dos
próprios softwares.
Para isso, é necessário entender o que é um software.
3. ◦ Software: conjunto de programas,
documentação e procedimentos operacionais
com os quais pode-se fazer com que os
computadores e outros dispositivos eletrônicos
sejam úteis aos homens. Sendo que os
programas são conjuntos de instruções
arranjadas de forma que possam ser
entendidas e executadas por um computador.
4. Tipos de aplicações de softwares:
Software Básico
Software Aplicativo
Software Científico e de Engenharia
Software Embutido
Software de Computador Pessoal
Software de Inteligência Artificial
Software Baseado na Web
5. 1.1.1 Software Básico
Também conhecidos como “software de
sistema”,
sistema”, se caracterizam por uma forte
interação com o hardware do computador
Executam as funções de controle que
permitem que o software aplicativo tenha
interface com outros elementos do sistema
Exemplos: operacionais,
Exemplos: sistemas operacionais,
compiladores,
compiladores, drivers, etc…
6. 1.1.2 Software Aplicativo
categorias:
Podem ter diversas funções e ser divididos em categorias:
Software de Tempo Real
◦ Funções de monitoramento, análise e
monitoramento,
controle de eventos
◦ A resposta do sistema deve obedecer a
severas restrições de tempo (p. ex., entre 1
minuto)
milissegundo e 1 minuto)
◦ Exemplos: controle de tráfego aéreo,
Exemplos: aéreo,
relógio digital
7. 1.1.2 Software Aplicativo
Software Comercial
◦ Uma das maiores áreas de aplicação de
software
◦ Facilitam operações comerciais e
tomadas de decisões administrativas
◦ Exemplos: folha de pagamentos, contas a
Exemplos: pagamentos,
receber, estoque,
pagar e a receber, controle de estoque,
etc…
8. Software Científico e de Engenharia
Caracteriza-se pelo processamento de
dados numéricos.
◦ Exemplos: astronomia, vulcanologia, análise da
fadiga de materiais, biologia molecular, etc…
◦ Outros exemplos: auxílio de desenvolvimento de
projetos, como os programas CAD (Computer-
Aided Design)
9. Software Embutido
◦ Controle de produtos e sistemas para os
mercados industriais e de consumo.
◦ Exemplos: controle do teclado de fornos
de microondas, funções digitais de
automóveis (como controle de
combustível, mostradores no painel e
sistemas de freio), etc…
10. Software de Computador Pessoal
◦ Esta categoria envolve diversos tipos de
softwares utilizados para diferentes fins.
◦ Exemplos: processadores de textos, planilhas
eletrônicas, jogos, gerenciamento de dados,
etc…
11. Software de Inteligência Artificial
◦ Sistemas que utilizam abordagens e
metodologias da inteligência artificial
◦ Principais aplicações: problemas difíceis de
serem modelados computacionalmente por
modelos tradicionais
12. Software de Inteligência Artificial
Principais técnicas: sistemas baseados em
conhecimento, sistemas especialistas, redes
neurais, algoritmos genéticos, etc…
◦ Exemplos: jogos, prova de teoremas, entendimento
de língua natural (tradução automática, sumarização
automática), robótica, aprendizado de máquina, etc
13. Software Baseado na Web
◦ Sistemas feitos para serem utilizados na internet
por meio de um browser.
◦ Tecnologias: HTML, ASP, CGI, PHP, Java, XML,
etc…
◦ Exemplos: Páginas pessoais, portais, consulta a
bases de dados, etc…
14. Para entender como surgiu a
área de Engenharia de
Software, é preciso analisar a
história da evolução do
software ao longo dos anos.
15. Geralmente divide-se a
evolução dos softwares em 4
eras:
2a. Era 4a. Era
1a. Era 3a. Era
1950 1960 1970 1980 1990 2000
16. 1a. Era
Software customizado e
produzido somente sob
encomenda.
Distribuição limitada.
Durante esses anos, a maior parte
do software era desenvolvida e
usada pela própria pessoa ou
organização.
17. 1a. Era
O desenvolvedor era um funcionário da
empresa contratado para desenvolver o
sistema e ficar disponível para corrigir erros
que pudessem surgir. Como apenas uma
pessoa era responsável pelo
desenvolvimento e manutenção do sistema,
não havia a necessidade de documentação
ou estruturação, já que apenas o
desenvolvedor deveria ser capaz de
entender o software que desenvolveu.
18. 2a. Era
Começaram a surgir sistemas multiusuários, sistemas de
tempo real, banco de dados
Começaram a surgir também software como produto, ou
seja, softwares produzidos para serem vendidos para
diferentes organizações.
Foi nessa época que começaram a surgir as empresas
desenvolvedoras de software.
19. 2a. Era
Softwares desenvolvidos para mainframes e
minicomputadores eram distribuídos para
centenas e, às vezes, até milhares de usuários.
Começaram a ser criadas bibliotecas de códigos,
inclusive eram comprados produtos no exterior
para acrescentar mais instruções às bibliotecas.
20. No entanto, quando aumentou o uso e distribuição
dos softwares, começaram a aumentar também os
problemas.
Às vezes os programas tinham de ser corrigidos
devido à descoberta de falhas, ou alterados conforme
as exigências do usuário ou adaptados a novos
hardware, atividades atualmente chamadas de
“manutenção de software”.
21. A chamada “crise de software”
surgiu porque a natureza
personalizada dos programas e a
falta de documentação em alguns
casos praticamente impossibilitava
a sua manutenção.
22. 3a. Era
Surgem os sistemas distribuídos, ou
sistemas em rede.
Surgem eletrodomésticos e máquinas
eletrônicas com software embutido.
O hardware nessa época já tem um
custo mais baixo.
23. 3a. Era
Foi nessa era que surgiram os
microprocessadores pessoais, que
passaram a ser amplamente
consumidos pelo público geral,
estimulando o crescimento de muitas
empresas de software e o
surgimento de novas empresas.
24. 3a. Era
O número de cópias vendidas de um
software chegava a centenas de
milhares.
Nessa era, o hardware passa a ser
considerado um produto primário
básico, sendo que o software é
responsável pela diferenciação.
25. 3a. Era
Enquanto a taxa de crescimento
das vendas de hardware se
estabilizaram na década de 80, as
vendas de software continuaram
a crescer.
26. 4a. Era
Podemos dizer que a quarta era se estende até os
dias atuais.
Esta era caracteriza-se pelas tecnologias orientadas
a objeto, sistemas de inteligência artificial
(sistemas especialistas, redes neurais), computação
paralela e multi-processada, linguagens de
programação de quarta geração.
27. Importância do Software
As diferentes eras da evolução do
software mostram que ele se
tornou mais importante à medida
que o hardware tornou-se um
“problema resolvido”.
28. Importância do Software
Quando o computador começou a ser usado,
aproximadamente na década de 50 e nas três
décadas seguintes, o principal desafio era
desenvolver hardware para reduzir custos de
processamento e armazenagem de dados, bem
como reduzir o seu tempo de processamento.
29. Naquela época, o software era apenas um conjunto
de instruções que dizia ao computador como
efetuar os cálculos o mais rápido possível.
Aproximadamente no fim da década de 80 esse
cenário começou a mudar.
Os computadores já eram rápidos o suficiente e os
pesquisadores perceberam que o hardware estava
sendo mal aproveitado, que ele podia ser utilizado
para resolver outros tipos de problemas.
30. Então, a chave para o bom aproveitamento de
um computador passou a ser o software.
Claro que a preocupação com a evolução do
hardware continua. Não se passa seis meses
sem o lançamento de um processador mais
veloz que os anteriores.
No entanto, é crucial que os software
acompanhem essa evolução, fazendo bom uso
do hardware.
31. Durante as primeiras eras do software, o
desenvolvimento de software era feito de
forma totalmente desorganizada.
Não era feito nenhum projeto,
planejamento, ou análise de requisitos e
o software não era documentado.
32. O software era simplesmente produzido
conforme o conhecimento e experiência
pessoal do programador.
Com o tempo, o desenvolvimento
desorganizado levou a diversos
problemas.
33. O principal problema é quando surgiam
erros ou quando era necessária ou desejada
alguma mudança no software.
Como o código não era documentado e não
obedecia a nenhuma estrutura formal,
apenas o desenvolvedor conseguia
entender e modificá-lo.
34. Em alguns casos, quando a mudança
era realizada muito tempo após o
desenvolvimento do software, mesmo
o próprio desenvolvedor tinha
dificuldades para entender o código
que ele mesmo desenvolveu.
Assim, as mudanças eram altamente
custosas.
35. Ao conjunto de problemas
encontrados no desenvolvimento de
software deu-se inicialmente o nome
de “crise de software”, sendo
posteriormente chamado de
“aflição crônica”.
36. Veremos ainda diversos tipos de
problemas causados pela falta de
planejamento e programação
estruturada, como por exemplo:
a insatisfação do cliente;
a dificuldade de cumprir prazos;
erro na previsão dos custos, entre
outros.
37. Devido a esses problemas, verificou-
se que era preciso tomar vários
cuidados antes e durante o
desenvolvimento de software, para
evitar que esses problemas
ocorressem.
38. “Assim, a Eng. de Software
surgiu para propor estratégias
que evitassem que esses
problemas acontecessem.”
39. Primeira definição (Fritz Bauer,1969):
“O estabelecimento e uso de sólidos
princípios de engenharia para que se possa
obter economicamente um software que
seja confiável e que funcione eficientemente
em máquinas reais”.
41. Segundo Arndt Von Staa (1987):
“O desenvolvimento e a aplicação de ciência,
matemática, técnicas, métodos e ferramentas
para o desenvolvimento e a manutenção
econômica de software de qualidade,
controlável, operando de modo econômico em
máquinas e ambientes reais”.
43. Segundo Anneliese Mayrhayser
(1990):
“Uma disciplina da Ciência da
Computação que oferece
métodos, técnicas e ferramentas
para desenvolver e manter
softwares com alta qualidade
para resolução de problemas”.
44. Foco nos objetivos:
• Software de qualidade
• Resolução de problemas
Foco nas metodologias:
• Métodos
• Técnicas
• Ferramentas
45. Métodos, Ferramentas e
Procedimentos definidos na
disciplina de Engenharia de
Software:
Permitem que o gerente controle
todo o processo de
desenvolvimento do software
46. Métodos, Ferramentas e
Procedimentos definidos na
disciplina de Engenharia de
Software:
Oferecem ao profissional
desenvolvedor uma base para a
construção de software de alta
qualidade.
Levam à produção de um software
que atenda aos requisitos e
expectativas do cliente
47. MÉTODOS
Definem diversos tipos de tarefas a serem
realizadas antes, durante e após o
desenvolvimento de um software.
Incluem a especificação de notações a serem
utilizadas, critérios para medir a qualidade do
software e medidas de levantamento de
requisitos
48. Principais Tarefas:
◦ Planejamento e estimativa de projeto;
◦ Análise de Requisitos;
◦ Projeto da Estrutura de Dados;
◦ Algoritmo de Processamento;
◦ Codificação;
◦ Teste;
◦ Manutenção.
49. FERRAMENTAS
Podem auxiliar o desenvolvimento de
software em diversos níveis:
◦ Apenas ambientes para codificação;
◦ Apoio semi-automático;
◦ Apoio automatizado.
50. Ferramentas CASE (Computer-Aided Software
Engineering)
◦ Ambientes de apoio ao desenvolvimento
de software.
◦ Podem incluir diferentes ferramentas
integradas, de forma que a informação
gerada por uma das ferramentas do
ambiente possa ser utilizada por outra
ferramenta do mesmo ambiente.
51. Ferramentas CASE (Computer-Aided Software
Engineering)
◦ Exemplo 1: um ambiente contendo
compilador, banco de dados e ferramentas
de auxílio ao teste de software
◦ Exemplo 2: ambiente para a coordenação
de desenvolvimento de software em equipe
◦ Exemplo 3: ambiente que gera o código com
base na modelagem.
53. PROCEDIMENTOS
Podem indicar:
◦ a seqüência na qual os métodos
serão aplicados;
◦ os produtos a serem entregues
(documentos, relatórios, etc);
◦ controles de qualidade;
◦ coordenação de mudanças;
◦ etc.
54. 1. Qual é a diferença entre software básico e software
aplicativo?
2. Quais são as 7 principais categorias de software
aplicativo? Dê um exemplo de software de cada
categoria.
3. Quais são as características da 1a. era do software?
4. Quais são as características da 2a. era do software?
5. Quais são as características da 3a. era do software?
6. Quais são as características da 4a. era do software?
55. 7.Em qual era começaram a surgir problemas
com os software?
8. O que significa dizer que atualmente
“software é mais importante que hardware”?
9. Como é que a crise de software levou ao
surgimento da engenharia de software?
Comente.
10. Defina engenharia de software com suas
próprias palavras.
11.Quais são os principais objetivos da
engenharia de software?
12.Quais são os 3 elementos da engenharia de
software?