O documento discute o conceito de software, definindo-o como um produto projetado por engenheiros de software que inclui programas de computador, estruturas de dados e documentação. Também aborda as diferenças entre software e hardware, e como o software evoluiu ao longo do tempo, passando de sistemas personalizados para produtos de software.
4. O que é software?
Resposta não é obvia,
segundo Pressman, em
1970 menos de 1% dos profissionais poderiam ter
definido o que é software.
5. O que é software?
Produto que os engenheiros de software projetam e
constroem.
6. O que é software?
Produto que os engenheiros de software projetam e
constroem. Englobando:
7. O que é software?
Produto que os engenheiros de software projetam e
constroem. Englobando:
1) Instruções (programas de computadores,
código executável) que produzem algum resultado
desejado.
8. O que é software?
Produto que os engenheiros de software projetam e
constroem. Englobando:
2) Estruturas de dados que permitem que os
programas manipulem adequadamente a
informação.
9. O que é software?
Produto que os engenheiros de software projetam e
constroem. Englobando:
3) Documentação que descrevem o uso dos
programas.
10. O que é software?
SIM. Documentação,
aquela projetam
Produto que os engenheiros de softwareparte que ose
programadores não
constroem. Englobando:
morrem de amor.
3) Documentação que descrevem o uso dos
programas.
11. Então, software é um produto do engenheiro de
software, como um hardware é um produto de um
engenheiro eletrônico ? O que diferencia estes
produtos?
12. Então, software é um produto do engenheiro de
software, como um hardware é um produto de um
engenheiro eletrônico ? O que diferencia estes
produtos?
Software é lógico.
Hardware é físico.
13. Então, software é um produto do engenheiro de
software, como um hardware é um produto de um
engenheiro eletrônico ? O que diferencia estes
produtos?
Software é lógico.
Vamos ver melhor
estas diferenças, e
como isto reflete
na sua construção.
Hardware é físico.
16. 1. Desenvolvido ou projetado por engenharia,
não manufaturado no sentido clássico.
17. 1. Desenvolvido ou projetado por engenharia,
não manufaturado no sentido clássico.
Hardware - manufaturado
Projeto (modelo
conceitual)
Mundo Lógico
Artefatos (esquemas,
plantas, mapas ... )
Fabricação (manufaturado)
Mundo físico
18. 1. Desenvolvido ou projetado por engenharia,
não manufaturado no sentido clássico.
Software
Modelos
Alto nível
Baixo nível
Projeto (modelo
conceitual)
Artefatos (diagramas,
documentos ..)
Programa – modelo de
implementação
Mundo Lógico
19. 2. Software não se desgasta como nos
hardware. Deve ser maleável, permitindo
mudanças durante seu ciclo de vida.
20. Como é a manutenção em um hardware ? e
em um software?
21. Curva de falha do hardware
Mortalidade infantil
Desgaste
Associada a falhas de
fabricação e ou projeto.
Desgaste
Falha
Mortalidade
infantil
Males ambientais, poeiras,
vibrações.
Todo hardware tem um
tempo de vida.
Temp
o
22. E no software, como vocês acham que é esta
curva ? Lembrem-se de que no software não
existe uma processo manufaturado, não
existem peças que se desgastam.
25. Contraditorio ?
Curva de falha do software
Consegueriam
Falha
explicar ?
Mudança
Curva real
Curva idealizada
Temp
o
26. Curva de falha do software
Falha
Incremento
devido os efeitos
colaterais
Mudança
Curva real
Curva idealizada
Temp
o
27. Efeitos colaterais, o pesadelo de todo
desenvolvedor de software.
Correção de erros, tendem a gerar novos erros.
28. Efeitos colaterais, o pesadelo de todo
desenvolvedor de software.
Correção de erros, tendem a gerar novos erros.
Desenvolvedores temem modificações, tentam a evitá-las.
29. Efeitos colaterais, o pesadelo de todo
desenvolvedor de software.
Correção de erros, tendem a gerar novos erros.
Desenvolvedores temem modificações, tentam a evitá-las.
Porém, mudanças são inevitáveis e temos que lidar com
isso.
30. Efeitos colaterais, o pesadelo de todo
Requisitos de
softwares
desenvolvedor de software. sempre
mudam.
Correção de erros, tendem a gerar novos erros.
Desenvolvedores temem modificações, tentam a evitá-las.
Porém, mudanças são inevitáveis e temos que lidar com
isso.
31. 3. A maioria é feita sob medida em vez de
ser montada a partir de componentes
existentes.
32. 3. A maioria é feita sob medida em vez de
ser montada a partir de componentes
existentes.
O reuso de “componentes de software” ainda não é
equivalente a outras engenharias, como no hardware.
Padrões ainda estão sendo desenvolvidos.
33. 3. A maioria é feita sob medida em vez de
ser montada a partir de componentes
existentes.
O reuso de “componentes de software” ainda não é
equivalente a outras engenharias, como no hardware.
Padrões ainda estão sendo desenvolvidos.
Existem diversos componentes padronizado para a
montagem de um hardware, parafusos, placas,
transistores, diodos, etc.
35. Evolução do Software
Os primeiros
anos
- ORIENTAÇÃO
BATCH
- DISTRIBUÍÇÃO
LIMITADA
- SOFTWARE
CUSTOMIZADO
1950
1960
1970
1980
2000
36. Evolução do Software
Os primeiros
anos
- ORIENTAÇÃO
BATCH
- DISTRIBUÍÇÃO
LIMITADA
- SOFTWARE
CUSTOMIZADO
1950
A segunda
era
- MULTIUSUÁRIO
- TEMPO REAL
- BANCO DE
DADOS
- PRODUTOS DE
SOFTWARE
1960
1970
1980
2000
37. Evolução do Software
Crise do software
Os primeiros
anos
- ORIENTAÇÃO
BATCH
- DISTRIBUÍÇÃO
LIMITADA
- SOFTWARE
CUSTOMIZADO
1950
A segunda
era
- MULTIUSUÁRIO
- TEMPO REAL
- BANCO DE
DADOS
- PRODUTOS DE
SOFTWARE
1960
1970
1980
2000
38. Evolução do Software
Crise do software
Os primeiros
anos
- ORIENTAÇÃO
BATCH
- DISTRIBUÍÇÃO
LIMITADA
- SOFTWARE
CUSTOMIZADO
1950
A terceira
era
A segunda
era
- MULTIUSUÁRIO
- TEMPO REAL
- BANCO DE
DADOS
- PRODUTOS DE
SOFTWARE
1960
1970
-SISTEMAS
DISTRIBUÍDOS
-INTELIGÊNCIA
EMBUTIDA
-HARDWARE DE
BAIXO CUSTO
-IMPACTO DE
CONSUMO
1980
2000
39. Evolução do Software
A quarta
era
Crise do software
Os primeiros
anos
- ORIENTAÇÃO
BATCH
- DISTRIBUÍÇÃO
LIMITADA
- SOFTWARE
CUSTOMIZADO
1950
A terceira
era
A segunda
era
- MULTIUSUÁRIO
- TEMPO REAL
- BANCO DE
DADOS
- PRODUTOS DE
SOFTWARE
1960
1970
-SISTEMAS
DISTRIBUÍDOS
-INTELIGÊNCIA
EMBUTIDA
-HARDWARE DE
BAIXO CUSTO
-IMPACTO DE
CONSUMO
- SISTEMAS DE
DESKTOP
PODEROSOS
- TECNOLOGIAS
ORIENTADAS
A OBJETOS
- SISTEMAS
ESPECIALISTAS
- REDES
NEURAIS
ARTIFICIAIS
- COMPUTAÇÃO
PARALELA
1980
2000
40. A crise do software
+ Complexidade
- Confiabilidade
Aumento crescente por
sistemas de Informação
Mais dependência do
software nos
procedimentos
normais do cotidiano
Sistemas mais e mais
sofisticados exigem mais
recursos (humanos e
máquinas)
Sistemas devem ser
mais e mais seguros.
41. A crise do software
Manutenabilidade
Imprecisão nas especificações iniciais do projeto
●Muitas modificações exigidas pelo cliente
●Rotatividade acentuada da equipe de projeto
●Informações não muito bem documentadas
●Custo elevado nos estágios finais de projeto
●
42. A programação
A crise do software
estuturada(que
Manutenabilidade
iremos aprender)
foi uma resposta
a esta crise .
Imprecisão nas especificações iniciais do projeto
●Muitas modificações exigidas pelo cliente
●Rotatividade acentuada da equipe de projeto
●Informações não muito bem documentadas
●Custo elevado nos estágios finais de projeto
●
43. Programas & Instruções
A faceta mais conhecida do software são os programas. Um
programa é uma lista ordenada de instruções que causa um
comportamento pré-determinado no computador ao ser
executada. Uma instrução é composta de uma operação
elementar que possa ser executada pelo processador, e dos
dados associados a esta operação.
44. Tipos de Software
O software pode ser classificado hierarquicamente, em
software básico (também chamado software de sistema) e
software aplicativo,
45. Tipos de Software
O software pode ser classificado hierarquicamente, em
software básico (também chamado software de sistema) e
software aplicativo,
46. Software básico
Correspondem aos programas que geram programas
executáveis, ou que se comunicam diretamente com o
hardware, executando funções de controle deste, permitindo
seu uso pelos programas aplicativos. Os tipos básicos são:
Software básico
Sistema
operacional
Interpretador
Tradutores
Montador
Utilitários
Compilador
47. Software básico
Correspondem aos programas que geram programas
executáveis, ou que se comunicam diretamente com o
hardware, executando funções de controle deste, permitindo
seu uso pelos programas aplicativos. Os tipos básicos são:
Software básico
Sistema
operacional
Interpretador
Tradutores
Montador
Utilitários
Compilador
48. Sistema operacional
● O software é o que permite os computadores executarem essas
mais distintas tarefas. Porém, existem algumas tarefas
fundamentais a todos os sistemas computacionais.
○ Por exemplo armazenar e recuperar dados em um dispositivo
de armazenamento, como disco magnético, lazer ou memoria
flash.
● Tratar as peculiaridades de cada dispositivo, tornaria o
desenvolvimento de software algo extremamente complexo.
● Portanto, torna-se desejável oferecer uma forma de acesso
homogêneo aos dispositivos físicos, abstraindo as diferenças
tecnológicas.
49. Sistema operacional
Um sistema operacional (SO) pode ser visto então como um software que
abstrai o acesso aos recursos por softwares aplicativos, ou seja, aqueles
acessados diretamente pelo usuário. Esta é uma visão top-down onde o
sistema operacional é visto como uma maquina estendida (interfaces
homogêneas e simplificadas) para o desenvolvimento de software
aplicativo.
Fonte:
50. Sistema operacional
Um sistema operacional (SO) pode ser visto então como um software que
abstrai o acesso aos recursos por softwares aplicativos, ou seja, aqueles
acessados diretamente pelo usuário. Esta é uma visão top-down onde o
sistema operacional é visto como uma maquina estendida (interfaces
homogêneas e simplificadas) para o desenvolvimento de software
aplicativo.
Porém, existe uma visão
alternativa, bottom-up, onde o
sistema operacional é um
software responsável por
gerenciar todas as partes de
um sistema complexo,
incluindo, hardware, software e
peopleware (usuários).
Fonte:
51. Sistema operacional
Um sistema operacional (SO) pode ser visto então como um software que
abstrai o acesso aos recursos por softwares aplicativos, ou seja, aqueles
acessados diretamenteapelo usuário. Esta é uma visão top-down onde o
Abram seguinte
sistema operacionaldevisto como uma maquina estendida (interfaces
nota é aula:
homogêneas e simplificadas) para o desenvolvimento de software
aplicativo.
Porém, existe uma visão
https://sites.google.
alternativa, bottom-up, onde
com/site/profsergioco o
sistema operacional é um
sta/posts/fundamento
software responsável por
gerenciar todas as partes de
sdesistemasoperacion
um
aissistema complexo,
incluindo, hardware, software e
peopleware (usuários).
Fonte:
52. Software básico
Correspondem aos programas que geram programas
executáveis, ou que se comunicam diretamente com o
hardware, executando funções de controle deste, permitindo
seu uso pelos programas aplicativos. Os tipos básicos são:
Software básico
Sistema
operacional
Interpretador
Tradutores
Montador
Utilitários
Compilador
53. Utilitários
Programas que executam tarefas envolvendo a gerência dos
recursos em um computador, sendo normalmente parte ou
atuando conjugados ao sistema operacional. Exemplos de
utilitários são os programas de controle do acesso ao disco,
vídeo, etc
54. Tradutores
Tradutores: Programas responsáveis pela transformação de
uma linguagem de programação em linguagem de
máquina.
Linguagem de Programação: É um conjunto de símbolos
(vocabulário) e regras (gramática) que especificam como
transmitir informações entre usuários e computador.
55. Hierarquia das linguagens em um
computador (tradutores)
● Linguagem de máquina: É baseada em código binário, em 0s e
1s. É utilizada diretamente pelo computador.
● Linguagem de baixo nível: É uma simplificação da linguagem
de máquina. Permite que os programas utilizem abreviações
simples de instruções de programa (mnemônicos) Exemplo:
Ling. Assembly. Compare A,B
● Linguagem de alto nível: Utiliza combinação de um conjunto
de símbolos de acordo com certas regras de sintaxe para
expressar uma seqüência de operações de máquina. É uma
linguagem que não exige conhecimento do código de
máquina. São mais fáceis de ler, escrever e manter. Instruções
são escritas em inglês (PRINT, Display)
56. Hierarquia das linguagens em um
computador (tradutores)
LOAD R1, val1
2GL
LBN – Linguagem de
Baixo Nível
Montadores
0010 0001 1110
1GL
LM – Linguagem de
Máquina
val2 = val1 + val2
3GL
LAN – Linguagem de
Alto Nível
Compiladores
Interpretadores
58. Tradução a partir de uma linguagem de
alto nível
●
Existem 2 métodos básicos de
abordagem na tradução de linguagem de
alto nível para linguagem de máquina:
●
●
Interpretação
Compilação
59. Interpretação
●
O programa conversor recebe a primeira instrução do programa fonte,
confere para ver se está escrita corretamente, converte-a em linguagem
de máquina e então ordena ao computador que execute esta instrução.
●
Depois repete o processo para a segunda instrução, e assim
sucessivamente, até a última instrução do programa fonte. Quando a
segunda instrução é trabalhada, a primeira é perdida, isto é, apenas uma
instrução fica na memória em cada instante.
●
Se este programa fonte for executado uma segunda vez, novamente
haverá uma nova tradução, comando por comando, pois os comandos em
linguagem de máquina não ficam armazenados para futuras execuções.
Neste método, o programa conversor recebe o nome de
INTERPRETADOR.
60. Compilação
●
O programa conversor recebe a primeira instrução do programa fonte,
confere-a para ver se está escrita corretamente, converte-a para
linguagem de máquina em caso afirmativo e passa para a próxima
instrução, repetindo o processo sucessivamente até a última instrução do
programa fonte.
●
Caso tenha terminado a transformação da última instrução do programa
fonte e nenhum erro tenha sido detectado, o computador volta à
primeira instrução, já transformada para linguagem de máquina e
executa-a. Passa à instrução seguinte, executa-a, etc., até a última.
●
Se este programa for executado uma segunda vez, não haverá
necessidade de uma nova tradução, uma vez que todos os comandos em
linguagem binária foram memorizados em um novo programa completo.
Neste método, o programa conversor recebe o nome de COMPILADOR.
61. Compilação
●
VANTAGEM: Neste processo a execução fica mais rápida em relação à
anterior, pois se economiza o tempo de retradução de cada instrução a
cada nova execução.
●
DESVANTAGEM: A cada modificação introduzida no programa fonte é
necessária uma nova tradução completa para obter um novo programa
objeto, o que torna o processo mais dificultoso na fase de
desenvolvimento, quando muitas modificações são feitas.
●
Geralmente o COMPILADOR exige mais memória que o INTERPRETADOR,
razão pela qual aquele é mais usado em computadores maiores e este em
micros pessoais. Mas com a tendência dos micros pessoais de terem
memórias maiores, mesmo neles, os COMPILADORES são os programas
conversores preferidos.
62. Compilação
●
●
●
VANTAGEM: Neste processo a execução fica mais rápida em relação à
anterior, pois se economiza o tempo de retradução de cada instrução a
cada nova execução.
m
Java usa uma abordage
e
híbrid A cada rama font
DESVANTAGEM:a. O progmodificação introduzida no programa fonte é
é “compilado” para umcompleta para obter um novo programa
necessária uma novarmediario que é
tradução
código inte
objeto, o que ecutado por uma mais dificultoso na fase de
torna o processo
ex
desenvolvimento, quando muitas modificações são feitas.
máquina virtual (e não
diretamente pelo
processador)
Geralmente o COMPILADOR exige mais memória que o INTERPRETADOR,
razão pela qual aquele é mais usado em computadores maiores e este em
micros pessoais. Mas com a tendência dos micros pessoais de terem
memórias maiores, mesmo neles, os COMPILADORES são os programas
conversores preferidos.
63. Compilação
São os programas voltados para a solução de problemas do
usuário. Podem ser de:
■ uso geral: são programas que podem ser utilizados em vários
tipos de aplicações. Exemplos: editores de texto, gráficos,
planilhas, gerenciadores de banco de dados, etc.
■ uso específico: se destinam exclusivamente a um único tipo
de aplicação. Exemplos: folha de pagamento, crediário,
imposto de renda, cadastro, contas a pagar e receber, etc.
64. Exercício:
●
●
●
●
Cite 20 softwares aplicativos de uso geral e
específico para diferentes finalidades.
Cite 5 nomes de soft. antivírus.
Cite 5 linguagens de programação de alto
nível.
Cite 6 tipos de softwares utilitários. Diga
qual sua finalidade.