64
Software UNIDADE II Prof: Sérgio Souza Costa

Aula 06 softwares

Embed Size (px)

DESCRIPTION

INTRODUÇÃO A COMPUTAÇÃO

Citation preview

Page 1: Aula 06   softwares

Software

UNIDADE II

Prof: Sérgio Souza Costa

Page 3: Aula 06   softwares

O que é software ?

Page 4: Aula 06   softwares

O que é software?

Resposta não é obvia, segundo Pressman, em 1970 menos de 1% dos profissionais poderiam ter definido o que é software.

Page 5: Aula 06   softwares

O que é software?

Produto que os engenheiros de software projetam e constroem.

Page 6: Aula 06   softwares

O que é software?

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 7: Aula 06   softwares

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:

Page 8: Aula 06   softwares

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:

Page 9: Aula 06   softwares

O que é software?

3) Documentação que descrevem o uso dos programas.

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 10: Aula 06   softwares

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.

Page 11: Aula 06   softwares

Então, software é um produto do engenheiro de software, como um hardware é um produto de um engenheiro eletrônico ? O que diferencia estes produtos?

Page 12: Aula 06   softwares

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.

Page 13: Aula 06   softwares

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.

Page 14: Aula 06   softwares

CARACTERÍSTICAS DO SOFTWARE

Page 15: Aula 06   softwares

Qual a diferença entre Hardware e Software ?

Page 16: Aula 06   softwares

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Page 17: Aula 06   softwares

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.

Page 18: Aula 06   softwares

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.

Page 19: Aula 06   softwares

2. Software não se desgasta como nos hardware. Deve ser maleável, permitindo mudanças durante seu ciclo de vida.

Page 20: Aula 06   softwares

Como é a manutenção em um hardware ? e em um software?

Page 21: Aula 06   softwares

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

Page 22: Aula 06   softwares

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.

Page 23: Aula 06   softwares

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Curva idealizada

Page 24: Aula 06   softwares

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Curva idealizada

Page 25: Aula 06   softwares

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Contraditorio ? Consegueriam explicar ?

Curva idealizada

Page 26: Aula 06   softwares

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Incremento devido os efeitos

colaterais

Curva idealizada

Page 27: Aula 06   softwares

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Page 28: Aula 06   softwares

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.

Page 29: Aula 06   softwares

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.

Page 30: Aula 06   softwares

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.

Page 31: Aula 06   softwares

3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.

Page 32: Aula 06   softwares

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.

Page 33: Aula 06   softwares

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.

Page 34: Aula 06   softwares

EVOLUÇÃO DO SOFTWARE

Page 35: Aula 06   softwares

Evolução do Software

Os primeiros anos- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

1950 1960 1970 1980 2000

Page 36: Aula 06   softwares

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

Page 37: Aula 06   softwares

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

Page 38: Aula 06   softwares

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

Page 39: Aula 06   softwares

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

Page 40: Aula 06   softwares

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.

Page 41: Aula 06   softwares

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

Page 42: Aula 06   softwares

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 .

Page 43: Aula 06   softwares

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.

Page 44: Aula 06   softwares

Tipos de Software

O software pode ser classificado hierarquicamente, em software básico (também chamado software de sistema) e software aplicativo,

Page 45: Aula 06   softwares

Tipos de Software

O software pode ser classificado hierarquicamente, em software básico (também chamado software de sistema) e software aplicativo,

Page 46: Aula 06   softwares

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

Page 47: Aula 06   softwares

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

Page 48: Aula 06   softwares

● 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

Page 49: Aula 06   softwares

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:

Page 50: Aula 06   softwares

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).

Page 51: Aula 06   softwares

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

Page 52: Aula 06   softwares

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

Page 53: Aula 06   softwares

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

Page 54: Aula 06   softwares

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.

Page 55: Aula 06   softwares

● 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)

Page 56: Aula 06   softwares

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)

Page 57: Aula 06   softwares

Tradução a partir de uma linguagem de alto nível

Page 58: Aula 06   softwares

● 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

Page 59: Aula 06   softwares

● 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

Page 60: Aula 06   softwares

● 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

Page 61: Aula 06   softwares

● 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

Page 62: Aula 06   softwares

● 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)

Page 63: Aula 06   softwares

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.

Page 64: Aula 06   softwares

● 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: