Você está na página 1de 16

Software Definia o

Neste tpico so apresentadas diferentes definies de software, para que seja


possvel tirar algumas concluses importantes, e os tipos de software
encontrados.
Existem inmeras definies para software, dependendo da viso utilizada. A
seguir so apresentadas quatro definies.
Definio 1 Parte lgica que dota o equipamento fsico de capacidade para
realizar todo tipo de trabalho.
Definio 2 Ingrediente que estabelece que o computador executar uma
tarefa especfica (instrues eletrnicas que em geral residem em um meio de
armazenamento). Um conjunto especfico dessas instrues chamado
programa.
Definio 3 Software : (1) instrues programas de computador que, quando
executadas, produzem a funo e o desempenho desejados; (2) Estruturas de
dados que possibilitam que os programas manipulem adequadamente a
informao e (3) Documentos que descrevem a operao e o uso dos
programas.

Definio 4 Software no apenas o programa, mas tambm toda a
documentao associada aos dados de configurao necessrios para fazer com
que esses programas operem corretamente. Um sistema de software,
usualmente, consiste em uma srie de programas, documentao do sistema
que descreve a estrutura desse sistema, e documentao do usurio que explica
como utilizar o sistema.

A partir das definies apresentadas possvel definir software como:

Software - a parte lgica do sistema de computao que armazenada
eletronicamente. composto por um ou mais programas (conjuntos de
instrues) que capacitam o hardware a realizar tarefas especificas, pelos
dados manipulados por eles, pela documentao de especificao (projeto)
dos programas e pela documentao de operao dos programas.

1. Evoluo do Software
Para compreender melhor o que os softwares podem realizar hoje,
importante conhecer como evoluram.
Observe que as etapas da figura abaixo se sobrepem, indicando a ocorrncia
de muitos aspectos ao mesmo tempo.

Evoluo do software. Fonte: Pressman (1995, p.5)
Primeiros anos (anos 50 at meados dos anos 60)
Sistema de computao realizava, sequencialmente, conjuntos de
instrues agrupadas em lotes (batch).
No era interrompido at o encerramento do processo.
Existiam poucos programas disponveis no mercado, pois eram
customizados (feitos especialmente para cada sistema de computao).
Segunda Era (incio dos anos 60 at meados dos anos 70)
Programas passaram a ser usados por vrias pessoas ao mesmo tempo
real.
Surgiram os primeiros programas de banco de dados, permitindo que os
dados fossem armazenados no sistema de computao para tratamento
especfico.
Comearam a ser criados softwares para venda como produto, ou seja, o
mesmo software utilizado por vrias empresas.


Terceira Era ( incio dos anos 70 at final dos anos 80 )
Surgiu o conceito de sistemas distribudos, que representam
processamento realizado no somente por um computador central, mas
tambm por outros ligados a ele.
O software comeou a ser usado em equipamentos de uso dirio. Era a
chamada inteligncia dos equipamentos.
Computadores ficaram muito mais baratos permitindo que empresas e
pessoas em maior nmero pudessem adquiri-los.
Quarta Era (meados dos anos 80 at os dias de hoje)
Computadores pessoais passam a ter a capacidade de processamento
equivalente (ou superior) a antigos computadores de grande porte,
disseminando o seu uso.
Surgem as tecnologias orientadas a objeto, que procuram apresentar uma
nova (e mais prxima da realidade) forma de criar software.
Software passam a ser usados para a tomada de decises, inclusive com o
surgimento dos Sistemas Especiais, que permitem o uso do conhecimento
humano como base da tomada de deciso.
A inteligncia artificial (por exemplo, redes naturais) comea a apresentar
aplicaes prticas, aprendendo e corrigindo decises futuras.
Sistemas de computao comeam a processar instrues de forma
paralela aumentando ainda mais a velocidade de processamento.
Daqui para frente...
Estas so apenas algumas das tendncias relacionadas aos softwares:
Uso cada vez mais intensivo da computao distribuda ( redes de
computadores ).
Aplicaes de inteligncia artificial cada vez mais prximas do usurio
comum.
Computadores com capacidade de armazenamento e processamento cada
vez maiores, permitindo programas mais extensos e potentes.
Softwares cada vez mais fceis de usar, inclusive ajudando o prprio
usurio a escolher a melhor maneira de realizar as tarefas.

2. Categorias
Qualquer classificao que for adotada para os softwares pode ser considerada
correta, dependendo do enfoque adotado. A seguir, representada uma
categorizao possvel.
a) Software de sistema (Bsico): trabalha fortemente integrado com o
sistema de computao, realizando as tarefas de gerenciamento
necessrias ao seu funcionamento. Fazem parte dessa categoria:

Sistema operacional: software responsvel pelo funcionamento
geral dos sistemas de computao. Sem eles os sistemas de
computao no funcionam.

Utilitrios de sistema: softwares que acompanham o sistema
operacional e o auxiliam nas suas tarefas.

b) Software Aplicativo: software que realiza algum trabalho para o usurio.

c) Linguagem de Programao: software utilizado para criao de softwares
aplicativos.

Essa classificao abrange quase todos os softwares existentes, mas alguns tipos
so de difcil classificao, tais como: Midleware (software que faz a mediao
entre um aplicativo e o sistema operacional, ou entre dois aplicativos) ou
Firmware (cdigo impresso no processador ou gravado em memrias ROM,
visto, como parte do hardware).


3. Tipos de Software
Os softwares apresentam algumas definies relacionadas forma de aquisio
e uso. As definies no so padronizadas e muitos softwares podem ser
enquadrados em mais de um tipo:

Freeware: software distribudo gratuitamente, mas que limitao
no revela o cdigo-fonte (instrues). Possui licena para
redistribuio, mas pode ter limitao para uso comercial.

Free Software: a distribuio desse software pode ser gratuita ou
paga, mas permitido o seu uso, modificao e redistribuio (aqui
free significa liberdade de ao).

Open Source: software distribudo sob licena de open-source, cujo
cdigo-fonte de domnio pblico ou com copyright (direitos
autorais). Esse tipo de licena permite que o cdigo-fonte seja
livremente modificado, mas quando for distribudo, deve
permanecer livre para modificaes. Alm disso existem algumas
pequenas restries quanto modificaes. necessrio manter o
nome do autor original e o copyright (operao conhecida como
copyleft). Alguns exemplos dessas licenas so: GNU General Public
License, Mozila Public License.

Shareware: software distribudo gratuitamente, mas que requer
pagamento depois de um perodo (teste) ou para obter mais funes
(verso completa), nesse caso, conhecido como Crippleware.

Adware: software distribudo gratuitamente, mas requer que o
usurio visualize propagandas para usar o software.

Domnio Pblico: software sem copyright, por isso pode ser
distribudo gratuitamente.


4. Meios de aquisio de Software
Os Software, quando adquiridos, permitem a sua transferncia para o sistema
de computao cpia ou instalao por meio de comandos especficos. Os
meios pelos quais chegam ao sistema de computao podem ser :

Discos Flexveis: Atualmente, quase no so mais utilizados como
meio de aquisio softwares devido a sua pequena capacidade de
armazenamento.
CD- Rom/DVD: os meios pticos so os mais utilizados atualmente
na aquisio de software devido a sua alta capacidade de
armazenamento.
Download: Os softwares so trazidos ao sistema de computao de
destino atravs de uma rede de computadores. Os programas ficam
armazenados em um computador e so transferidos (download) para
o destino por sinais que fluem em meios de comunicao como fios
eltricos, fibra ptica, sinais de rdio, etc .

Questionrio para entrega na prxima aula:

1) Como voc define um software?
2) Quais as principais caractersticas da quarta era do software?
3) Quais so as tendncias para o futuro do software?
4) Qual a diferena de um software do tipo freeware e um do tipo open
source?


Linguagens de Programaa o
Este tpico apresenta os principais conceitos relacionados s linguagens de
programao, os tipos encontrados e detalhes de algumas linguagens de
programao comerciais.
A linguagem de programao pode ser entendida como conjunto de palavras
(vocabulrio) e um conjunto de regras gramaticais (para relacionar essas
palavras) que serve para instruir o sistema de computao a realizar tarefas
especficas e com isso, criar os programas. Cada linguagem tem o seu conjunto
de palavras chave e sintaxes.
A pessoa responsvel por criar o programa (programador) escreve comandos na
linguagem de programao (cdigo fonte). A linguagem de programao deve
traduzir o cdigofonte em uma linguagem compreensvel pela CPU (linguagem
de mquina). Essa transformao pode acontecer por meio de Compilao ou
Interpretao.
Em alguns casos as linguagens de programao so conhecidas indistintamente
como compiladores.
1. Compilao
A Compilao transforma cdigo-fonte em programa executvel pela CPU, de
modo a criar programas autnomos que no necessitam da linguagem de
programao para serem executados. Para isso, so necessrias algumas etapas.
O programador escreve os comandos que realizaro a tarefa desejada na
linguagem de programao (usando palavra-chave e sintaxes prprias ).
Nesse caso ele est utilizando uma linguagem de alto nvel, pois os comandos
esto mais prximos da linguagem humana do que linguagem de mquina. Ele
cria o cdigo-fonte.
Nessa etapa o cdigo-fonte passa por um processo de compilao. Nesse
processo a linguagem de programao utiliza um de seus mdulos internos
conhecido como programa compilador para transformar os comandos do
cdigo-fonte em comando de linguagem de mquina, criando o cdigo objeto.

Processo de Compilao. Fonte: Marula (2005, p.169)
Durante esse processo, a linguagem de programao realiza anlises lxica,
sinttica e semntica para detectar se os comandos feitos pelo programador
utilizaram a palavra-chave vlidas e se essas palavras esto dispostas em uma
ordem correta.
O processo poder parar nesse momento, mas a criao de programas
executveis possui algumas caractersticas adicionais. O cdigo-fonte de um
programa pode ser formado por somente um conjunto de comandos, mas boa
parte dos programas formada por vrios desses conjuntos interligados. Isso
permite que um programa com uma quantidade de funes muito grande possa
ser desenvolvido por um grupo de pessoas, cada uma desenvolvendo uma parte
dele.
Outro aspecto importante que um programa pode utilizar cdigos ou dados
criados previamente e armazenados em arquivos conhecidos como Bibliotecas.
O processo de compilao deve agrupar todas essas partes, ligando as de forma
adequada. Esse processo realizado por um mdulo da linguagem de
programao conhecido como Linkeditor (Ligador). Terminado o processo de
Linkedio (Ligao), gerado o cdigo executvel, um programa autnomo
pode ser executvel em outros sistemas de computao, sem a necessidade da
presena da linguagem de programao.
A compilao deve levar em conta o tipo de CPU na qual o programa ir rodar,
pois o cdigo executvel consiste em instrues que sero executadas pela CPU.
Algumas linguagens, como Java, conseguem criar cdigos executveis em
praticamente qualquer tipo de CPU.
Muitas linguagens de programao utilizam o processo de compilao, como,
por exemplo, Delphi (Borland), Visual Basic (Microsoft) e C++.
2. Interpretao
A interpretao consiste em executar o cdigo-fonte diretamente por meio de
um mdulo da linguagem de programao conhecido como Interpretador.
Nesse processo, no existe cdigo objeto nem cdigo executvel. Desta forma,
existe a necessidade da presena da linguagem de programao no sistema de
computao no qual o programa ser executado. Os programas no so
autnomos.
Um dos problemas da interpretao que em determinados comandos, por
exemplo, comandos de repetio de funes, a linguagem vai interpretar o
comando tantas vezes quantas ele for repetido, o que a torna mais lenta na
execuo dos programas, isso no acontece com os programas compilados.
Apesar dessa vantagem, o processo de interpretao utilizado em algumas
linguagens de programao em conjunto com a compilao, no para gerar os
programas executveis, mas na fase de desenvolvimento, quando o
programados desejar executar o cdigo-fonte para detectar problemas, ento a
interpretao usada para esse propsito. Algumas linguagens interpretadas
so : COBOL, LISP e Pascal.
3. Escolha da linguagem de programao.
A escolha da linguagem de programao depende de alguns fatores que dever
ser levados em considerao, e abordamos os seguintes:
rea de aplicao do programa a ser criado, pois cada linguagem de
programao voltada para criao de determinados tipos de
aplicao.
Complexidade do programa a ser criado e da estrutura dos dados
que sero gerados por ele, pois a linguagem pode ajudar a diminuir
essa complexidade.
Tipo de sistema de computao no qual o programa ser executado,
pois existe uma interao entre o cdigo gerado pela linguagem de
programao a CPU do sistema.
Desempenho desejado, pois isso bastante influenciado pelo tipo de
linguagem escolhida.
Especializao da equipe de programadores. Quanto mais
especializada na linguagem for a equipe, mais eficaz ela ser.
Disponibilidade da linguagem de programao.

4. Categorias de linguagens de programao.


Geraes de linguagens de programao. Fonte: Pressman (1995, p.695)
As linguagens de programao so dividas em geraes. Mas essas geraes no
tem relao somente com a poca em que foram criadas conforme figura a
cima, mas tambm com a proximidade que a linguagem utilizada para escrever
os comandos tem com a linguagem natural humana. Essa proximidade
conhecida como abstrao, pois cada vez mais o programador no precisa se
preocupar com detalhes ligados diretamente ao sistema, por exemplo,
representar os comandos com zeros e uns.

As linguagens de programao que necessitam de comandos escritos mais
prximos da linguagem de mquina (microcdigo formado por zeros e uns)
conhecida como uma linguagem de baixo nvel. J uma linguagem que utiliza
palavras em idioma normal conhecida como uma linguagem de alto nvel.

As empresas que criam linguagens de programao procuram, a cada novo
lanamento, aproximar a linguagem de programao da linguagem natural
humana, e com isso facilitar o processo de programao. A seguir so
apresentadas algumas linguagens de programao e suas caractersticas
principais.

a) Linguagens de primeira gerao

So as linguagens de mais baixo nvel, pois o programador necessita
escrever comandos praticamente no nvel da mquina. Inicialmente, os
programas eram codificados bit a bit (zeros e uns), mas com tempo, surgiu
a Linguagem Assembly que permite o uso de instrues escritas em
cdigo hexadecimal, reduzindo o trabalho de programao. Uma
caracterstica dessa linguagem que cada comando tem correspondncia
direta com um comando em microcdigo da CPU.
Essa linguagem usada quando outras, de nvel mais alto, no cumprem
requisitos de velocidade de processamento ou utilizao de memria, ou
no so suportadas pelo sistema.

b) Linguagens de segunda gerao

So linguagens que apresentam um avano em relao ao Assembly. Os
comandos so dados por intermdio de palavras utilizadas no dia a dia
(normalmente verbos em ingls). Alguns especialistas no consideram a
Assembly uma linguagem de programao, portanto essa gerao
marcaria o incio das linguagens de programao.

Essas linguagens foram muito utilizadas serviram de base para as mais
modernas. Exemplos de linguagens de segunda gerao :

FORTRAN: reconhecida como a primeira linguagem de programao
(os comandos no so escritos em linguagem de mquina). ideal
para aplicaes matemticas e de engenharia, mais no adequada
para criao de software bsicos, de tempo real e embutidos.
COBOL: Primeira linguagem voltada para criao de aplicaes
comerciais. Programas criados em COBOL, ainda so muito
utilizados, principalmente em empresas que utilizam computadores
de grande porte.
BASIC: Linguagem desenvolvida para o ensino de programao, que
renasceu nos anos 70 com os computadores pessoais.
ALGOL: Linguagem voltada para aplicaes cientficas, bastante
utilizada na Europa, mas que apresenta compiladores caros. Foi
percursora das linguagens de terceira gerao.

c) Linguagens de terceira gerao (linguagens de programao
estruturadas ou modernas)

As linguagens de programao de terceira gerao podem ser classificadas
em trs categorias: Linguagens de Alto Nvel, Linguagens Orientadas a
Objeto e Linguagens Especializadas: Apesar de as categorias todas
apresentarem uma caracterstica em comum, seguem, de alguma forma,
as tcnicas de Programao Estruturada.

Linguagens de alto nvel de uso geral: So linguagens de
programao baseadas no ALGOL, e bastante utilizadas. So
exemplos desse tipo de linguagem:

Pascal: primeira linguagem de programao estruturada.
Foi criada para ensinar essas tcnicas de programao.
uma descendente direta do ALGOL , podendo ser utilizada
para criar aplicativos para as reas de engenharia,
cientfica e de software bsico.

PL/1 : criada pela IBM, foi a primeira linguagem
verdadeiramente de amplo espectro, utilizada tanto para
aplicaes cientficas quanto para aplicaes comerciais.

C: originalmente criada para o desenvolvimento de
sistemas operacionais e compiladores (o UNIX
implementado em C), tambm pode ser usada para
criaes de aplicaes comerciais.

Ada: linguagem criada pelo Departamento de Defesa dos
Estados Unidos para criao de sistemas de computao
de tempo real para uso militar ( embutidos em
armamentos ). Semelhante Pascal, tambm utilizada
para aplicaes no - militares.

Linguagem Orientadas a Objeto: So linguagens de
programao que permitem a implementao dos modelos de
anlise e projeto orientados a objeto. Usam todos os conceitos
ligados orientao a objeto. So exemplos desse tipo de
linguagem:

Smalltalk: linguagem criada para explicar conceitos de
orientao a objeto.

C++: linguagem derivada da linguagem C utilizada para
uma ampla gama de aplicaes.

Java: linguagem de programao criada pela Sun
apresenta a vantagem de poder ser executada em
qualquer sistema de computao, no importando a CPU
que utilize, caracterstica muito importante para
aplicaes voltadas para a internet.

Linguagem de Script (internet): linguagens que melhoram
a funcionalidade das pginas de internet. Alguns exemplos
so: JavaScript (Netscape), VBScript e Jscript (Microsoft).

Linguagens internet: linguagens que, na maioria dos
casos, so utilizadas para criao de pginas de internet
dinmicas. Alguns exemplos so: PHP, ASP Active Server
Pages ou .Net (Microsoft), JavaServer Pages (Sun), Perl -
Practical Extraction and Report Language e Python.

Linguagens Especializadas: Linguagens de programas que
apresentam sintaxe dos comandos bastante incomum (em
relao a outras linguagens) e so criadas para aplicaes
especiais. Exemplos dessas linguagens:

LISP: usada quase que exclusivamente para aplicaes de
Inteligncia Artificial ( IA ), como Sistemas Especialistas.
Trabalha com traduo e documentao automtica de
com a manipulao de smbolos e listas.

PROLOG: tambm utilizada em IA para desenvolvimento
de sistemas especialistas. Tambm orientada a objeto.

FORTH: utilizada para desenvolvimento de softwares
para microprocessadores.

Linguagens de quarta gerao ( 4GL Fourth Generation
Language): At agora so as linguagens que apresentam o
maior nvel de abstrao (mais alto nvel). Para conseguir isso,
automatizam muitas das tarefas (quanto no todas elas).
Podem ser classificadas em trs categorias: linguagens de
consulta, geradores de programa, linguagens de prototipao.

Linguagens de consulta: So linguagens de
programao declarativas criadas para trabalhar em
conjunto com bancos de dados, permitindo que esses
dados sejam manipulados. Os comandos dessas
linguagens devem ser utilizados dentro do cdigo
gerado por outras linguagens que hospedam esses
comandos em alguns aspectos, elas no poderiam nem
ser consideradas linguagens de programao, pois no
traduzem os comandos para linguagem de mquina. O
principal exemplo desse tipo de linguagem o SQL (
Structured Language ). A linguagem SQL padronizada
pelo ANSI, mas praticamente todos os fabricantes de
bancos de dados criam extenses transformando-a em
uma linguagem SQL proprietria.

Geradores de programas: So linguagens de
programao que permitem que o programador crie
programas inteiros usando apenas declaraes
baseadas nos modelos gerado pelo projeto do
programa. Nesse tipo de linguagem, o trabalho de
programao muito pequeno. uma linguagem de
programao de nvel muito elevado. Algumas
ferramentas CASE (Computer-Aided System
Engineering), que so ferramentas que autorizam
vrias tarefas na criao de modelos e projetos nos
sistemas de software, implementam esse tipo de
linguagem.Exemplos de ferramentas CASE so: Rational
Rose (IBM), System Architect (Popkin) e ERWin (CA
Computer Associates).

Linguagens de prototipao: So linguagens de
programao que facilitam a criao da interlace com o
usurio, sendo conhecidas como Linguagens Visuais. O
programa recebe um conjunto de componentes de
interface que so montados para configurar a interface
com o usurio. Depois disso, ele se preocupa em
programar o que deve ser executado conhecidas como
Linguagens orientadas a eventos. Essas linguagens de
programao proporcionam a Prototipao, ou seja,
permitem que sejam criados esboos visuais do
programa final ( inclusive com alguma funcionalidade)
para que o usurio identifique problemas de operao,
de esttica, etc. Exemplos dessas linguagens de
prototipao so Delphi (Borland), Visual Basic e C#
(Microsoft).