inf0198 – introdução à computação 1 introdução à computação unidade iii - software

58
1 INF0198 Introdução à Computação Introdução à Computação Unidade III - Software

Upload: internet

Post on 18-Apr-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

1INF0198 – Introdução à Computação

Introdução à Computação

Unidade III - Software

Page 2: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

Software

SoftwareAplicativo

Software deSistemas

ProgramasAplicativos para

FinalidadesGerais

ProgramasAplicativos para

Específicos

Programas deGerenciamento

de Sistemas

Programas deDesenvolvimento

de Sistemas

Executa Tarefas deProcessamento deInformações paraUsuários Finais

Gerencia e ApóiaOperações deSistemas e RedesDe Computadores

Navegadores de RedeCorreio EletrônicoProcess. De TextosPlanilhas EletrônicasGerenciam. de BD´sPacotes IntegradosEditoração EletrônicaGráficos de Apresentação

ContabilidadeGerenc. de VendasProc. de TransaçõesComércio EletrônicoCiência e EngenhariaEducaçãoEntretenimento, etc.

Sistemas OperacionaisProgramas de Geren- ciamento de RedeSGBD´sUtilitários do SistemaMonitores de DesempenhoMonitores de Segurança

Tradutores de Lingua- gem de ProgramaçãoEditores e Ferramen- tas de ProgramaçãoCASE

Page 3: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

3INF0198 – Introdução à Computação

3 - Software – Visão Geral

Uma das principais funções do software é direcionar os trabalhos do hardware. O software consiste em Programas de Computador que controlam o funcionamento do hardware, ou seja, são seqüências de instruções interpretáveis pela máquina, juntamente com a Documentação do Programa usada para explicar seu funcionamento ao usuário.

Page 4: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

4INF0198 – Introdução à Computação

Software – Visão Geral

Os Programas de Computador são conjuntos de instruções ou ordens para o computador, que dirigem o circuito no hardware para operar de uma determinada maneira.

A Documentação do Programa é o conjunto de descrições narrativas destinadas a auxiliar o uso e a implementação do programa, podendo ser internas ou externas.

Existem dois tipos fundamentais de software: software básico e software aplicativo.

Page 5: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

5INF0198 – Introdução à Computação

Software – Visão Geral

O software básico (ou de sistemas) constitui um conjunto de programas projetados para coordenar as atividades e funções do hardware e de vários programas que rodam no computador. O software básico é projetado para determinada CPU e para uma classe particular de hardware. A configuração do hardware combinada com o software básico constituem a Plataforma do Sistema do Computador. 

O software aplicativo consiste em programas que ajudam os usuários a solucionar problemas específicos. Ele possui um maior potencial para atender aos processos que agregam valor a um negócio.

Page 6: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

6INF0198 – Introdução à Computação

Software Básico ou de Sistemas

Existem três tipos fundamentais de software básico:

Programas Tradutores de Linguagem;

Programas Utilitários;

Sistemas Operacionais.

Page 7: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

7INF0198 – Introdução à Computação

Tradutores de Linguagem

A programação envolve a tradução do que o usuário quer realizar em um código que o computador possa entender e executar, desta forma surge a necessidade de Programas Tradutores de Linguagem, que convertem uma instrução de uma linguagem de programação de alto nível em uma linguagem de máquina.

O código do programa de alto nível escrito pelo programador é chamado de código fonte, e o código da linguagem de máquina, código objeto.

Page 8: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

8INF0198 – Introdução à Computação

Tradutores de Linguagem - Tipos

Interpretador é um tradutor que converte cada instrução de um programa em linguagem de máquina em tempo de execução.

Compilador/Ligador é um tradutor que traduz um programa completo para um programa completo em linguagem de máquina. A ligação é realizada por um programa chamado ligador, que pega os módulos-objetos (alguns podem estar armazenado em bibliotecas) e os junta como se fossem um quebra-cabeças para montar a forma final do programa – o arquivo executável. Desta forma aproveitamos a modularidade para compilarmos somente os fontes alterados.

Page 9: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

9INF0198 – Introdução à Computação

Programas Utilitários

Apesar de os desenvolvedores de sistemas operacionais tentarem oferecer todos os recursos de que os usuários precisam para utilizar e manter seus sistemas, invariavelmente eles deixam de satisfazer a algumas expectativas. Essas falhas criaram um mercado para softwares de terceiros, chamados utilitários.

Os utilitários são programas que preencheram a lacuna entre a funcionalidade de um sistema operacional e as necessidades dos usuários.

Com a popularização dos programas utilitários, os desenvolvedores de sistemas operacionais acabam por incorporá-los a novas versões de seus produtos.

Page 10: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

10INF0198 – Introdução à Computação

3.1 - Sistemas Operacionais

Todo computador tem, em seu nível mais básico de software, uma camada de inteligência que dá vida à máquina. Quando você liga o computador, instruções internas orientam-no para encontrar e “rodar” o sistema operacional, que continua a operar durante todo o tempo em que a máquina fica ligada.

Um Sistema Operacional (S.O.) nada mais é do que um programa muito especial – talvez o mais complexo e importante em um computador. O S.O. “acorda” o equipamento e faz com que ele reconheça a CPU, a memória, o teclado, o sistema de vídeo e as unidades de disco. Além disso oferece aos usuários a facilidade de se comunicar com o computador e serve de plataforma para a execução de programas aplicativos. (P.Norton)

Page 11: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

11INF0198 – Introdução à Computação

Sistemas Operacionais

Usuário Programas

ArquivosHardware

Sistema Operacional

O SO é o núcleo do mecanismo que faz o computador funcionar. Ele trabalha nos bastidores como intermediário entre as solicita- ções dos usuários e dos programas; gerencia e orienta o hardware do computador, lê e grava dados de e para unidades de disco.

Page 12: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

12INF0198 – Introdução à Computação

Sistemas Operacionais

Um S.O. compreende um conjunto de programas que controla o hardware do computador e atua como uma interface entre os aplicativos. 

Geralmente estão armazenados em disco, e após a inicialização da máquina, processo de boot, partes desse, é transferida para a memória principal conforme a necessidade. 

Dentre suas atividades, encontram-se funções comuns do hardware, proporcionando um certo grau de independência do hardware, memória e tarefas de sistemas gerenciadores, e ainda uma intermediação com o usuário.

Page 13: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

13INF0198 – Introdução à Computação

S.O. - Funções Básicas

Funções comuns de hardware. São chamadas ao sistema, onde uma função bem determinada, será executada através de um conjunto de instruções que o hardware exige. Ex:

Receber registros através do teclado ou de algum dispositivo de entrada

Ler e escrever dados nos discos ou outros dispositivos secundáriosProduzir e transcrever a informação para a tela do computador

 Interface com o usuário. Permite que os indivíduos

acessem e comandem o computador. As primeiras interfaces, para mainframes e computadores pessoais, eram através de comandos. Hoje em dia temos as interfaces gráficas com o usuário (GUI), usando imagens (chamadas ícones) e menus exibidos na tela para enviar comandos ao computador.

Page 14: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

14INF0198 – Introdução à Computação

S.O. - Funções Básicas (cont.)

  Gerenciamento da memória. Consiste em controlar o acesso, o espaço disponível e o armazenamento na memória. 

Controlar o acesso à memória possibilita ao computador armazenar e recuperar dados e instruções, fornecendo-os para a CPU. Áreas de memória protegida também é uma técnica utilizada para que danos não aconteçam em regiões de memória que contêm códigos críticos do SO. 

Devido ao espaço finito da memória, alguns sistemas operacionais fazem uso da memória virtual, que aloca espaço em disco para suplementar a capacidade funcional imediata de memória RAM.

Page 15: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

15INF0198 – Introdução à Computação

S.O. - Funções Básicas (cont.)

 Independência de hardware. O SO serve como uma interface entre o programa aplicativo e o hardware. Essa interface acontece automaticamente, de forma que o usuário não precisa fazer nada para que ela ocorra. Podemos citar a troca e utilização de diferentes periféricos sem alterar o software aplicativo.

Gerenciamento de tarefas. Distribui os recursos do computador para fazer o melhor uso de cada componente do sistema. Permite a um usuário rodar vários programas ou tarefas ao mesmo tempo (multitarefa ou multidocumento) e que vários usuários usem, simultaneamente, o mesmo computador (tempo compartilhado).

Page 16: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

16INF0198 – Introdução à Computação

S.O. - Funções Básicas (cont.)

 Capacidade de rede. Pode prover características e recursos que tornam possível a conexão a uma rede de computador. Acesso aos recursos do sistema. Os computadores lidam com dados confidenciais que podem ser acessados por rede. O sistema operacional deve fornecer um alto nível de segurança contra o acesso não autorizado a dados e programas do usuário. Gerenciamento de arquivo. O sistema operacional executa uma função de gerenciamento de arquivo para assegurar não só que os arquivos no armazenamento secundário estarão disponíveis quando necessário, bem como que estarão protegidos contra o acesso de usuários não autorizados.

Page 17: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

17INF0198 – Introdução à Computação

S.O. - Histórico p/ Microcomputador

 No início, o único padrão real entre os microcomputadores era o chip do processador, com isso muitos softwares só rodavam no computador em que tinha sido desenvolvido.Nos anos 70 foi criado o CP/M (Control Program for Microcomputers)PC/MS-DOS 1 1981 primeira versão do MS-DOSPC/MS-DOS 2 1983 HD, arquivos hierárquicosPC/MS-DOS 3 1984 disquetes de 1.2MB, redesPC/MS-DOS 4 1988 interface gráfica por shellOS/2 1988 IBM, multitarefa e memória virtualPC/MS-DOS 5 1991 utilitários de gerenc. de memóriaPC/MS-DOS 6 1993 compr. de dados, otimização memóriaPC-DOS 7 1994 desfragmentação de arquivosWindows 95 1995 interface gráfica, não requer DOS.

Page 18: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

18INF0198 – Introdução à Computação

S.O. - Classificação

 Entre as questões mais básicas no projeto de um Sistema Operacional estão:

O S.O. deve ser capaz de executar mais de uma tarefa ao mesmo tempo?

O S.O. deve funcionar com apenas um usuário, ou deve aceitar vários simultaneamente?

O S.O. deve ser capaz de usar mais de uma CPU?

Page 19: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

19INF0198 – Introdução à Computação

S.O. - Classificação

Multitarefa refere-se à capacidade que um S.O. tem de rodar mais de uma programa ao mesmo tempo.

Multiusuário refere-se à capacidade que um S.O. tem de permitir que mais de um usuário acesse o computador ao mesmo tempo.

Multiprocessamento refere-se à capacidade que um S.O. tem de usar e gerenciar uma série de CPUs.

Page 20: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

20INF0198 – Introdução à Computação

S.O. - Estrutura

Chamadas de Sistema

Os programas de usuário solicitam serviços do sistema operacional através de execução de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usuário pode chamar. Tal procedimento coloca os parâmetros da chamada do sistema em locais específicos, tais como registradores, e emite uma instrução de “TRAP”, ou seja, uma chamada a procedimento protegida, para iniciar a execução do sistema operacional.Ex: Criar processo, gerenciar memória,, ler e escrever em arquivos, manipular dispositivos de I/O (terminais, impressoras).

Page 21: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

21INF0198 – Introdução à Computação

S.O. - Estrutura

Arquitetura Monolítica.

Não há estruturação visível. O S.O. é escrito como um conjunto de procedimentos, cada um podendo chamar qualquer dos demais sempre que necessário. Cada procedimento deve ter uma interface bem definida em termos de parâmetros e de resultados. Todos os procedimentos individuais são compilados juntos de forma a ligá-los em um único arquivo objeto.A única estruturação é em relação às Chamadas de Sistema fornecidas pelo S.O., pois são requisitadas através da colocação de parâmetros em lugares muito bem determinados, tais como registradores ou pilhas, seguindo-se a execução de uma instrução especial de TRAP, chamada ao supervisor (ou kernel)

Page 22: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

22INF0198 – Introdução à Computação

S.O. - Estrutura

Arquitetura de Camadas.

É quando o sistema operacional está organizado como uma hierarquia de níveis, cada um construído sobre o nível imediatamente abaixo.Ex: THE – foi o 1º, sendo construído por E.W. Dijkstra em 1968.

5 Operador

4 Programas do Usuário

3 Gerência dos dispositivos de I/O

2 Comunicação processo-operador

1 Gerência da memória e do tambor magnético

0 Alocação do processador e implementação da multiprogramação

Page 23: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

23INF0198 – Introdução à Computação

S.O. - Estrutura

Máquina Virtual ou estendida

Evolução natural e gradual do S.O. de forma afastar o usuário da complexidade do hardware, apresentando-o uma interface muito simples de entender e de programar e equivalente ao hardware, fazendo-o pensar que a máquina é “somente dele”.O coração do sistema, conhecido como monitor de máquina virtual, roda sobre o hardware, e implementa a multiprogramação, fornecendo não só uma, mas várias máquinas virtuais para o nível acima, com cópias fiéis do hardware, incluindo os modos kernel/usuário, entrada/saída, interrupções, e tudo o mais que uma máquina real possui.

Page 24: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

24INF0198 – Introdução à Computação

S.O. - Estrutura

Modelo Cliente-Servidor

O S.O. ganhou muita simplicidade pelo fato de mover parte do seu código tradicional (implementação da máquina virtual) para um nível mais alto.Uma tendência nos sistemas operacionais modernos é aproveitar esta idéia, deixando o S.O. reduzido à sua expressão mais simples, ou seja, o kernel.. Normalmente, as funções tradicionais são implementadas como processos do usuário. Para solicitar um serviço, como a leitura de um arquivo, o processo usuário, agora denominado processo cliente, envia uma requisição para o processo servidor, o qual então realiza o trabalho solicitado e envia a resposta de volta ao processo usuário.

Page 25: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

25INF0198 – Introdução à Computação

S.O. - Estrutura

Modelo Cliente-Servidor (cont.)

Neste modelo, tudo o que o kernel faz é implementar a comunicação entre clientes e servidores. Através da divisão do SO em várias partes, cada uma tratando de uma faceta do sistema, tal como servidor de arquivos, de processos, de terminais, gerente de memória, consegue-se fazer com que cada uma das partes torne-se menor e mais facilmente gerenciável.Como os servidores rodam no modo usuário e não no kernel, eles não tem acesso ao hardware, como conseqüência, se for detectado um bug no servidor de arquivos, este serviço pode entrar em colapso, mas não a máquina toda.

Processo Cliente

Processo Cliente

Servidor de Processo

Servidor de Terminal . . .

Servidor de Arquivo

Servidor de Memória

Kernel

Modo Usuário

Modo Supervisor

Processos clientes obtém serviços enviando mensagens para para os processos servidores

Page 26: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

26INF0198 – Introdução à Computação

S.O. - Estrutura

Modelo Cliente – Servidor Sistema distribuído

Outra vantagem é sua adaptabilidade aos sistemas distribuídos. Se um cliente se comunica com um servidor por troca de mensagens, o cliente não precisa saber se a mensagem é tratada localmente, em sua própria máquina, ou se ela foi enviada através da rede, para um servidor em uma máquina remota.

Cliente Servidorde Processo

Servidorde Arquivo

Kernel Kernel Kernel

Servidorde Terminal

Kernel

Máquina 1 Máquina 2 Máquina 3 Máquina 4

Page 27: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

27INF0198 – Introdução à Computação

S.O. - Estrutura

Existem duas correntes de pensamento a respeito da estrutura dos sistemas distribuídos. Uma diz que cada máquina deve rodar um kernel tradicional que forneça a maioria dos serviços ele próprio, outra acha que o kernel deve fornecer tão pouco serviço quanto possível, com o grosso dos serviços sendo prestado a partir de servidores a nível usuário.

Kernel Monolítico é simplesmente um SO centralizado que foi ampliado com facilidades de rede e de integração remotos. A maioria das chamadas de sistema são feitas mandando um trap para o kernel, com o trabalho sendo feito no kernel, e com este retornando os resultados ao processo usuário. A maioria das máquinas tem de possuir discos e precisa gerenciar seus próprios sistemas de arquivos locais. Ex: Unix e suas extensões/imitações.

Page 28: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

28INF0198 – Introdução à Computação

S.O. - Estrutura

MicroKernel A maioria dos sistemas distribuídos que têm sido projetados desde o início, sem aproveitar nada que já esteja pronto, usa este método. O microkernel é mais flexível pelo fato de não fazer quase nada. Basicamente fornece quatro serviços:

1. Um mecanismo de comunicação entre processos.2. Um mínimo de funções para gerência da memória.3. Um mínimo de funções de gerência de processos e

escalonamento.4. Funções de entrada/saída de baixo nível

Em particular não fornece sistemas de arquivos, de diretórios, a gerência completa de processos, e a manipulação da maioria das chamadas do sistema. O objetivo é mantê-lo o menor possível.

Page 29: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

29INF0198 – Introdução à Computação

S.O. - Exemplos

Windows Server 2003 – MicrosoftSolaris 10 UNIX – Sun MicrosystemsNetware 5.1 – NovellLinux 6.1 – Red Hat Software

Page 30: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

30INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Consiste em programas escritos para resolver problemas específicos dos usuários, sua função principal é aplicar o poder do computador para dar às pessoas, grupos e organizações a capacidade de resolver problemas e executar atividades ou tarefas específicas. Os programas aplicativos então interagem com o software básico.

Page 31: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

31INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Classificação quanto ao Desenvolvimento:

Uma empresa pode tanto desenvolver um programa único no gênero voltado para uma aplicação específica (chamado software proprietário) ou comprar e usar um software já existente (chamado de software padronizado).

Software aplicativo proprietário. Ele geralmente é criado internamente, mas também pode ser adquirido de outra empresa.Podemos ter a opção do desenvolvimento interno ou através de uma firma terceirizada um software de contrato.

Page 32: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

32INF0198 – Introdução à Computação

3.2 - Software Aplicativo

 Software aplicativo padronizado. Pode ser comprado, licenciado ou alugado de uma empresa especializada que desenvolve programas e os vende para muito usuários de computador e organizações. Pacote customizado ou personalizado. Em alguns casos, as empresas optam por uma combinação entre desenvolvimento de software interno e externo, ou seja, os pacotes de software padronizados são modificados ou adaptados pelo pessoal interno.

Page 33: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

33INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Classificação quanto à Utilização:

Comercial;

Técnico-Científico;

Automação;

Educacional.

Page 34: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

34INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Classificação quanto à Comercialização:

Comercial;

Freeware;

Shareware;

Domínio Público

Page 35: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

35INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Comercial

Comercial' não é sinônimo para ``não-livre''.

Um programa é comercial se ele é desenvolvido como uma atividade de um negócio. Um programa comercial pode ser livre ou não-livre, dependendo da sua licença. Da mesma maneira, um programa desenvolvido por uma escola ou por um indivíduo pode ser livre ou não-livre, dependendo da sua licença. As duas perguntas: que tipo de entidade desenvolveu o programa e qual liberdade seus usuários possuem são independentes.

Page 36: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

36INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Freeware

Não é sinônimo para ``free software'' ou ``software livre''. O termo ``freeware'' foi usado comumente nos anos 80 para programas publicados apenas como executáveis, sem código fonte disponível. Atualmente não existe um consenso a respeito de sua definição.

Page 37: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

37INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Shareware

Softwares que pode ser testado gratuitamente por determinado tempo (normalmente 30 dias), para que o usuário possa decidir se deseja ou não comprá-lo. Após o período de avaliação, o usuário deve decidir se deseja efetuar o registro (termo utilizado para a compra de um shareware), ou removê-lo do computador.

A troca fica baseada na confiança, pois o usuário utiliza, de graça, o aplicativo e, se ficar contente com o resultado, envia dinheiro para quem o desenvolveu.

Page 38: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

38INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Shareware (cont.)

Nem todos os usuários são confiáveis e alguns passaram a usar os produtos sem enviar qualquer contribuição para o autor. Nesse momento, os programadores resolveram aplicar restrições aos programas, até que eles fossem registrados pelos usuários.

Assim que nasceram os Demos, programas que têm sua funcionalidade total durante um determinado período de tempo e também aqueles que são feitos incompletos como é o caso de demos de jogos e até os aplicativos convencionais que só possuem algumas opções habilitadas.

Page 39: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

39INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Livre

Termo que se refere à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro tipos de liberdade para os usuários do software:

A liberdade de executar o programa, para qualquer propósito. A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades. A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie.

Page 40: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

40INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Livre (cont.)

Você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição. O acesso ao código-fonte é uma condição necessária ao software livre.

Independente de como você obteve a sua cópia, você sempre tem a liberdade de copiar e modificar o software, ou mesmo de vender cópias. É uma questão de liberdade, não de preço.

"Software Livre" Não significa "não-comercial". Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial.

Page 41: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

41INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Aplicativo de Usuário  O software aplicativo pessoal inclui ferramentas para fins especiais e programas que podem dar suporte a várias necessidades do indivíduo. Processador de texto. Se o usuário redige relatórios, cartas ou documentos em geral, os aplicativos de processamento de textos são indispensáveis. Planilha eletrônica. As pessoas usam planilhas eletrônicas para preparar orçamentos, estimar lucros, analisar programas de seguro, resumir dados de impostos e analisar investimentos.

Page 42: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

42INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Aplicativo de Usuário (cont.) Programa de banco de dados. Os aplicativos de banco de dados são ideais para o armazenamento, manipulação e recuperação de dados e são particularmente úteis quando faz-se necessário manipular grande quantidade de dados e produzir relatórios e documentos. Software de apresentação gráfica. Um programa de apresentação pode auxiliar na elaboração de uma apresentação, um desenho ou uma ilustração. Correio Eletrônico (e-mail). Programa que permite o envio e recebimento de mensagens eletrônicas pela Internet.

Page 43: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

43INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Aplicativo de Usuário (cont.) Navegador de Rede (browser). É a interface fundamental que é utilizada para acessarmos a Internet, bem como as Intranets e Extranets. Especialistas vêem o navegador como o modelo de como a pessoas utlizarão os computadores no futuro. Suíte de aplicativos. Corresponde a um conjunto de softwares embalados juntos em um único pacote. As suítes podem incluir processadores de texto, planilhas eletrônicas, sistemas de gerenciamento de banco de dados, programas de apresentação, ferramentas de comunicação, organizadores, etc ...

Page 44: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

44INF0198 – Introdução à Computação

3.2 - Software Aplicativo

Software Aplicativo de Grupo - Groupware O software pode também ajudar grupos de pessoas a trabalharem juntas com maior eficácia e eficiência.

Um Groupware pode dar apoio a um grupo de profissionais trabalhando no mesmo problema permitindo compartilhar idéias e o trabalho através de sistemas.

Deve-se notar que as pessoas nas empresas são interdependentes e estão ligadas pelos sistemas de informação da organização.

Page 45: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

45INF0198 – Introdução à Computação

3.3 – Linguagens de Programação

Tanto o software básico como o software aplicativo são escritos em esquemas de códigos denominados linguagens de programação. Uma linguagem de programação padrão compreende um conjunto de regras que descrevem como as instruções de programação devem ser escritas. A redação ou codificação destas instruções é chamada de programação, e a pessoa que escreve ou faz a codificação desempenha o papel de programador. A programação envolve a tradução do que o usuário quer realizar em um código que o computador possa entender e executar.

Page 46: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

46INF0198 – Introdução à Computação

3.3 – Linguagens de Programação

Cada linguagem de programação usa um conjunto de instruções que tem significado especial, como também sua própria série de regras, chamada de sintaxe da linguagem, que determina como estas instruções devem combinar em ordens capazes de transmitir instruções significativas à CPU.

As linguagens tem evoluído com o tempo e de alguma forma regulada por padrões, devido ao fato de versões diferentes de uma mesma linguagem rodavam de maneira distinta em um mesmo computador. Um padrão de linguagem de computação consiste em uma série de normas que descrevem como os comandos e ordens da programação devem ser escritos.Ex.: ANSI – American National Standards Intitute.

Page 47: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

47INF0198 – Introdução à Computação

3.3.1 – Linguagem de Máquina

Primeira Geração. Os programadores escreviam suas instruções em códigos binários, dizendo à CPU exatamente quais circuitos ligar ou desligar, e devem possuir conhecimento detalhado das operações internas da CPU que estão utilizando.

A linguagem de máquina é considerada uma linguagem de baixo nível, porque não existe um esquema de codificação do programa menos sofisticado do que os símbolos binários 1 e 0.

Por ser a programação extremamente difícil, pouquíssimos programas são escritos nesta linguagem. Por ser a única capaz de instruir diretamente a CPU, toda instrução de programa em outra linguagem deve ser traduzida para ela antes de sua execução.ASCII – American Standard Code for Information Interchange.

Page 48: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

48INF0198 – Introdução à Computação

3.3.2 – Linguagem Assembly

Linguagens de 2ª geração. Os programas usados para traduzí-las em código de máquina são chamados de assemblers (montador).

Foram desenvolvidas para reduzir as dificuldades inerentes à programação em linguagem de máquina, substituindo os dígitos binários por símbolos mais facilmente compreendidos pelos programadores. Da segunda geração em diante, todas as linguagens são consideradas simbólicas.

Esta mudança para um código mais simbólico e legível permitiu ao programador se concentrar mais na solução do problema do que na complexidade da codificação. Apesar disso, ainda é considerada de baixo nível.

Page 49: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

49INF0198 – Introdução à Computação

3.3.2 – Linguagem Assembly

A maioria dos fabricantes fornece uma linguagem assembly que reflete o conjunto exclusivo de instruções para uma determinada linha de computadores.

Essa característica é particularmente desejável para os programadores de software de sistemas (básico), uma vez que isto garante a eles maior controle e flexibilidade na concepção de seus programas.

Desta forma eles podem produzir software mais eficiente, ou seja, programas que exigem um mínimo de instruções, armaze- namento e tempo da CPU para realizar determinada tarefa.

Page 50: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

50INF0198 – Introdução à Computação

3.3.3 – Linguagem de Alto Nível

Linguagens de 3ª Geração. Estas linguagens mantiveram a tendência em direção ao maior uso de símbolos para instruir o computador como completar uma operação.Basic, Cobol, C, C++ e Fortran são exemplos de linguagens de terceira geração que usam declarações e comandos parecidos com o inglês. Características:

Cada declaração traduz várias instruções na linguagem de máquina.

A linguagem é semelhante à língua inglesa e emprega abreviações e palavras usadas na comunicação quotidiana.

Page 51: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

51INF0198 – Introdução à Computação

3.3.3 – Linguagem de Alto Nível

Características (cont.):

As linguagens de terceira geração são relativamente independentes do hardware do computador.Esta característica está ganhando importância à medida que as empresas utilizam diferentes computadores em sistema de processamento distribuídos e, ainda, por força das rápidas mudanças na tecnologia de hardware.

Page 52: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

52INF0198 – Introdução à Computação

3.3.4 – Linguagem de 4ª Geração

Essas são linguagens de programação menos procedimentais e até mesmo mais parecidas com o inglês do que as de terceira geração. Ela enfatiza quais os resultados da produção são desejados mais do que como as instruções da programação devem ser escritas. Requer pouco ou nenhum treinamento. Algumas características incluem a capacidade de consultas e manipulação de banco de dados, capacidade de geração de código executável e funcionalidades gráficas. Como exemplo temos Visual C++, Visual Basic, PowerBuilder, Delphi, SQL.

Page 53: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

53INF0198 – Introdução à Computação

3.3.5 – Linguag. Orientada a Objetos

Enquanto as outras linguagens separam os dados dos procedimentos que serão executados sobre eles, as linguagens OOP os vinculam em conjunto nos objetos. Um objeto consiste nos dados e nas ações que podem ser executadas nestes dados.

A maioria dos pacotes de OOP fornece uma interface gráfica com o usuário que suporta uma montagem visual de objetos do tipo “apontar e clicar”, “arrastar e soltar” conhecida como programação visual, que a torna mais fácil e intuitiva.

A reutilização de objetos é um dos principais benefícios da OOP.

Estas linguagens são mais fáceis de usar e mais eficientes para programar as interfaces gráficas gráficas com o usuário.

Page 54: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

54INF0198 – Introdução à Computação

3.3.5 – Linguag. Orientada a Objetos

Conceitos importantes: O encapsulamento significa que as funções ou tarefas são encapsuladas em cada objeto. O polimorfismo permite que o programador desenvolva uma rotina ou um conjunto de atividades que irão operar ou funcionar com múltiplos objetos (poli). A herança significa que os objetos de um grupo de objetos podem herdar características de outros objetos no mesmo grupo ou classe de objetos. Como exemplo temos: Smalltalk, C++ e Java.

Page 55: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

55INF0198 – Introdução à Computação

3.3.5 – Linguag. Orientada a Objetos

Linguagem Procedural. Linguagem procedimental que utiliza formulações breves e expressões matemáticas para especificar a seqüência de instruções que um computador deve executar. Linguagem não Procedural. Se aproximem mais da conversação humana. Encorajam os usuários e programadores a especificarem os resultados que eles desejam, ao passo que o computador determina a seqüência de instruções que realizará este resultado

Linguagens OO. Diferentemente das anteriores, em que um programa consistia em procedimentos para executar ações sobre cada elemento dos dados, nestas os sistemas ordenam a outros objetos que executem ações sobre si mesmo.

Page 56: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

56INF0198 – Introdução à Computação

3.3.5 – HTML e XML

Assim como a Linguagem Java, são duas linguagens que constituem importantes ferramentas para a montagem de páginas para a Internet, sites e aplicações baseadas em rede.

HTML – Hypertext markup Language (Linguagem de marcação de Hipertexto) é uma linguagem de descrição de página que cria documentos em hipertexto ou hipermídia. Ela insere códigos de controle em um documento em pontos que você pode especificar para criar links (hiperlinks) para outras partes do documento e para outros documentos em outros pontas da Internet. Ela embute códigos de controle no texto ASCII de um documento designando títulos, cabeçalhos, gráficos e componentes de multimídia, além de hiperlinks no documento.

Page 57: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

57INF0198 – Introdução à Computação

3.3.5 – HTML e XML

XML – eXtensible Markup Language.Diferentemente da HTML, descreve os conteúdos das páginas da web por meio de sinalizadores de identificação, ou rótulos de contexto, aos dados de documento web.

Por exemplo, um site de uma agência de viagens com nomes de linhas aéreas e tempo de vôo utilizaria etiquetas de XML ocultas como “nome da linha aérea” e “tempo de vôo” para classificar a duração de cada vôo naquela página. Assim, ela torna a informação do website mais fácil de ser encontrada e classificada.

Um software de procura utilizando XML poderia encontrar facilmente determinado produto se os seus dados tivessem sido rotulados com com sinalizadores XML de identificação.

Page 58: INF0198 – Introdução à Computação 1 Introdução à Computação Unidade III - Software

58INF0198 – Introdução à Computação

3.3.7 – Selecionando uma Linguagem

Selecionar a melhor linguagem de programação para uso em um programa em particular envolve a avaliação de características da linguagem, tais como custo, controle e questões de complexidade. As linguagens de máquina e assembly fornecem um controle mais direto sobre o hardware. Desenvolver programas de computador usando linguagens de altíssimo nível consome menos tempo do que com as de baixo nível.