Upload
vanilson-sertao
View
83
Download
0
Embed Size (px)
DESCRIPTION
INTRODUÇÃO A COMPUTAÇÃO
Citation preview
Software
UNIDADE II
Prof: Sérgio Souza Costa
Apostila - Introdução a Ciência da Computação
https://www.dropbox.com/s/om6nklz39dt7if4/Introducao%20Ciencia%20da%20Computacao%20-%20Jose%20Garcia%20Rosa.pdf
Cápitulo 5 - Softwares
Referência
O que é software ?
O que é software?
Resposta não é obvia, segundo Pressman, em 1970 menos de 1% dos profissionais poderiam ter definido o que é software.
O que é software?
Produto que os engenheiros de software projetam e constroem.
O que é software?
Produto que os engenheiros de software projetam e constroem. Englobando:
O que é software?
1) Instruções (programas de computadores, código executável) que produzem algum resultado desejado.
Produto que os engenheiros de software projetam e constroem. Englobando:
O que é software?
2) Estruturas de dados que permitem que os programas manipulem adequadamente a informação.
Produto que os engenheiros de software projetam e constroem. Englobando:
O que é software?
3) Documentação que descrevem o uso dos programas.
Produto que os engenheiros de software projetam e constroem. Englobando:
Produto que os engenheiros de software projetam e constroem. Englobando:
O que é software?
3) Documentação que descrevem o uso dos programas.
SIM. Documentação, aquela parte que os programadores não morrem de amor.
Então, software é um produto do engenheiro de software, como um hardware é um produto de um engenheiro eletrônico ? O que diferencia estes produtos?
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.
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.Vamos ver melhor estas diferenças, e como isto reflete na sua construção.
CARACTERÍSTICAS DO SOFTWARE
Qual a diferença entre Hardware e Software ?
1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.
Projeto (modelo conceitual)
Artefatos (esquemas, plantas, mapas ... )
Fabricação (manufaturado)
Hardware - manufaturado
Mundo Lógico
Mundo físico
1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.
Projeto (modelo conceitual)
Artefatos (diagramas, documentos ..)
Programa – modelo de implementação
Software
Mundo Lógico
Alto nível
Baixo nível
Mo
del
os
1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.
2. Software não se desgasta como nos hardware. Deve ser maleável, permitindo mudanças durante seu ciclo de vida.
Como é a manutenção em um hardware ? e em um software?
Mortalidade infantil
Associada a falhas de fabricação e ou projeto.
Desgaste
Males ambientais, poeiras, vibrações.
Todo hardware tem um tempo de vida.
Mortalidade infantil
Curva de falha do hardware
Desgaste
Tempo
Falh
a
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.
Curva de falha do software
Tempo
Falh
a
Mudança
Curva real
Curva idealizada
Curva de falha do software
Tempo
Falh
a
Mudança
Curva real
Curva idealizada
Curva de falha do software
Tempo
Falh
a
Mudança
Curva real
Contraditorio ? Consegueriam explicar ?
Curva idealizada
Curva de falha do software
Tempo
Falh
a
Mudança
Curva real
Incremento devido os efeitos
colaterais
Curva idealizada
Efeitos colaterais, o pesadelo de todo desenvolvedor de software.
Correção de erros, tendem a gerar novos erros.
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.
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.
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.
Requisitos de softwares sempre mudam.
3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.
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.
3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.
Existem diversos componentes padronizado para a montagem de um hardware, parafusos, placas, transistores, diodos, etc.
O reuso de “componentes de software” ainda não é equivalente a outras engenharias, como no hardware. Padrões ainda estão sendo desenvolvidos.
EVOLUÇÃO DO SOFTWARE
Evolução do Software
Os primeiros anos- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO
1950 1960 1970 1980 2000
Evolução do Software
Os primeiros anos
A segunda era
- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO
- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE
1950 1960 1970 1980 2000
Evolução do Software
Os primeiros anos
A segunda era
- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO
- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE
1950 1960 1970 1980 2000
Crise do software
Evolução do Software
Os primeiros anos
A segunda era
A terceiraera
- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO
-SISTEMAS DISTRIBUÍDOS-INTELIGÊNCIA EMBUTIDA-HARDWARE DE BAIXO CUSTO-IMPACTO DECONSUMO
- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE
1950 1960 1970 1980 2000
Crise do software
Evolução do Software
Os primeiros anos
A segunda era
A terceiraera
- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO
- SISTEMAS DE DESKTOPPODEROSOS- TECNOLOGIASORIENTADASA OBJETOS- SISTEMASESPECIALISTAS- REDES NEURAISARTIFICIAIS- COMPUTAÇÃOPARALELA
- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE
1950 1960 1970 1980 2000
A quartaeraCrise do software
-SISTEMAS DISTRIBUÍDOS-INTELIGÊNCIA EMBUTIDA-HARDWARE DE BAIXO CUSTO-IMPACTO DECONSUMO
A crise do software
+ Complexidade - Confiabilidade
Aumento crescente por sistemas de Informação
Sistemas mais e mais sofisticados exigem mais recursos (humanos e máquinas)
Mais dependência do software nos procedimentos normais do cotidiano
Sistemas devem ser mais e mais seguros.
A crise do software
●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
Manutenabilidade
A crise do software
●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
Manutenabilidade
A programação estuturada(que iremos aprender) foi uma resposta a esta crise .
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.
Tipos de Software
O software pode ser classificado hierarquicamente, em software básico (também chamado software de sistema) e software aplicativo,
Tipos de Software
O software pode ser classificado hierarquicamente, em software básico (também chamado software de sistema) e software aplicativo,
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 UtilitáriosTradutores
Interpretador Montador Compilador
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 UtilitáriosTradutores
Interpretador Montador Compilador
● 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.
Sistema operacional
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:
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:
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).
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:
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).
Abram a seguinte nota de aula:
https://sites.google.com/site/profsergiocosta/posts/fundamentosdesistemasoperacionais
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 UtilitáriosTradutores
Interpretador Montador Compilador
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
Utilitários
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.
● 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)
Hierarquia das linguagens em um computador (tradutores)
LBN – Linguagem deBaixo Nível
LM – Linguagem de Máquina
Montadores
LAN – Linguagem deAlto Nível
CompiladoresInterpretadores
0010 0001 1110
LOAD R1, val1
val2 = val1 + val2
2GL
1GL
3GL
Hierarquia das linguagens em um computador (tradutores)
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
Tradução a partir de uma linguagem de alto nível
● 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.
Interpretaçã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.
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.
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.
Compilação
Java usa uma abordagem
híbrida. O programa fonte
é “compilado” para um
código intermediario que é
executado por uma máquina virtual (e não
diretamente pelo processador)
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.
● 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.
Exercício: