Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema...

20
GT2.1 Noções básicas e tipos de software GT2.2 Software de aplicação GT2.3 Software de sistema GT2.4 Linguagens de programação, desenvolvimento de software e ferramentas CASE GT2.5 Questões e tendências de software Guias de Tecnologia 1 Hardware 2 Software 3 Dados e Bancos de Dados 4 Telecomunicações 5 Visão Técnica da Análise e Projeto de Sistemas Guia de Tecnologia 2 Software

Transcript of Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema...

Page 1: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

Parte XXX

GT2.1 Noções básicas e tipos de software

GT2.2 Software de aplicação

GT2.3 Software de sistema

GT2.4 Linguagens de programação, desenvolvimento de software e ferramentas CASE

GT2.5 Questões e tendências de software

Guias de Tecnologia1 Hardware2 Software3 Dados e Bancos de Dados4 Telecomunicações5 Visão Técnica da Análise e Projeto de Sistemas

Guia de Tecnologia

2Software

Page 2: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-2 Guias de Tecnologia

GT2.1 Noções básicas e tipos de software

O hardware do computador, redes e dispositivos móveis, como PDAs e iPhones, não funcio-nam nem executam uma operação sem que recebam instruções. Essas instruções são conheci-das como software ou programas, aplicações ou plug-ins de computador. O software permite que o usuário customize um computador ou dispositivo.

O software consiste em sequências de instruções que um computador, uma rede ou um dispo-sitivo executa a fim de realizar uma tarefa. O processo de escrever um programa é chamado de programação, e os indivíduos que realizam essa tarefa são os programadores. Programas de software armazenados são acessados e suas instruções são executadas na CPU.

Programas de computador incluem uma documentação, que é a descrição, por escrito, das funções do programa. A documentação ajuda o usuário a operar o sistema computacional e ajuda outros programadores a entender o que o programa faz e como ele realiza suas tarefas. A documentação é vital ao negócio da organização. Sem ela, se um programador ou usuário abandona o projeto (ou se esquece dele), o conhecimento sobre como usar o programa ou sobre como foi desenvolvido pode se perder.

Todos os softwares são escritos em uma linguagem de programação, como Visual Basic, PHP, COBOL, C++ ou Java. Para uma lista das linguagens de programação mais populares, visite o site langpop.com (em inglês).

Existem dois tipos principais de software: software de aplicação e software de sistema. Ambos têm tarefas específicas a executar.

O software de aplicação é um conjunto de instruções de computador, escrito em uma linguagem de programação. As instruções orientam o hardware do computador a executar atividades de processamento de dados ou de processamento de informações que fornecem funcionalidade ao usuário. Essa funcionalidade pode ser ampla, como no caso de um proces-sador de texto, ou restrita, como o programa de folha de pagamentos de uma organização.

Software de sistema agem principalmente como intermediários entre o hardware do com-putador e programas de aplicação, e os usuários podem manipulá-los diretamente. Software de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au-torregulatórias importantes para os sistemas computacionais, como carregar (inicializar) a si mesmo quando o computador é ligado pela primeira vez.

Programas de aplicação manipulam dados ou texto para produzir ou fornecer informa-ção. Programas de sistema manipulam os recursos de hardware de computador. O software de sistema instalado em um computador determina as capacidades e as limitações dentro das quais o software de aplicação opera. A Figura GT2.1 mostra que um software de sistema é um intermediário necessário entre o hardware e o software de aplicação; o software de aplicação não executa sem o software de sistema.

Tanto o software aplicativo quanto o software de sistema são escritos em linguagens de programação, as quais também são apresentadas neste guia.

NOÇÕES BÁSICAS DE SOFTWARE

TIPOS DE SOFTWARE

Software de aplicação

Softw

are de sistema

Hardware

Figura GT2.1 O soft-ware de sistema é um intermediário necessário entre o hardware e o soft-ware aplicativo

Page 3: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-3

GT2.2 Software de aplicação

Um software de aplicação é um programa que executa tarefas específicas. Todos nós já usa-mos muitos tipos diferentes de aplicações. Eis alguns deles:

• Aplicações de planilha para criar documentos que gerenciam e organizam dados numé-ricos.

• Aplicações de processamento de texto para criar documentos que são formatados e orga-nizados para leitura.

• Aplicações de bancos de dados para desenvolver bancos de dados que organizam e recu-peram grandes quantidades de informação.

• Aplicações contábeis para gerenciamento de finanças pessoais ou para a contabilidade de empresas.

• Aplicações gerenciadoras de atividades, como calendários e agendas de endereços. • Aplicações de apresentações para a confecção de slides. • Aplicações gráficas para a criação de imagens. • Programas de comunicação como programas de e-mail, mensagens de texto e fax para

enviar e receber mensagens. • Aplicações multimídia para a criação de vídeos e músicas. • Utilitários ou programas de serviço para executar várias tarefas de manutenção ou melho-

ria do sistema operacional do computador.

A Tabela GT 2.1 mostra pacotes de software de produtividade mais populares para três tipos diferentes de software: proprietários, de código aberto e baseados na Web.

Algumas dessas ferramentas genéricas são, na verdade, ferramentas de desenvolvimento. Ou seja, são ferramentas usadas para construir aplicações. Por exemplo, é possível usar o Ex-cel para criar aplicações de suporte à tomada de decisão, como alocação de recursos, sincro-nização ou controle de inventário. É possível usar pacotes semelhantes para realizar análises estatísticas, para executar análises financeiras e para conduzir pesquisas de marketing.

O software de aplicação de prateleira pode ser comprado ou alugado de um fornecedor que desenvolve e vende programas para várias organizações. Software de prateleira pode ser

TABELA GT 2.1 Software de produtividade populares: proprietário, de código aberto e baseado na Web

ProprietárioMicrosoft Office

Código abertoOpen Office

Baseado na WebGoogle Docs

Preço Varia; a partir de US$ 59,95 (ver-são para estudantes)

Openoffice.org gratuito; Oracle Open Office a partir de US$ 49,95 por licença

Gratuito para uso pessoal; Google Apps for Business custa US$ 50,00 anuais por conta de usuário

Sistemas operacionais supor-tados

Windows; há uma versão para o OS X da Apple

Windows, OS X, Linux, Sola-ris e vários outros sistemas operacionais

Roda em qualquer sistema operacional que ofereça um navegador Web como IE, Fi-refox, Chrome ou Safari

Online e offline Principalmente offline; a ver-são 2010 oferece aplicativos online

Apenas offline O Google Gears permite que o Google Docs seja usado offline

Processador de texto Word Writer Documentos

Planilha Excel Calc Planilhas

Apresentação PowerPoint Impress Apresentações

Banco de dados Access Base Não tem software de banco de dados

Outro software OneNote, Outlook, Publisher, Groove, Communicator, In-foPath

Math, Draw Desenho, Formulários

Page 4: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-4 Guias de Tecnologia

um pacote padrão ou personalizáveis. Programas de uso especial, ou “pacotes”, podem ser criados para fins específicos, como controle de estoque ou folha de pagamento. A palavra pacote é comumente utilizada para designar um programa (ou conjunto de programas) desen-volvido por um fornecedor e está disponível para compra em um formato pré-configurado.

Muitas aplicações de suporte à tomada de decisão e aplicações comerciais são construídas com linguagens de programação em vez de com programas de aplicação de uso geral. Isso é o que acontece especialmente com problemas complexos e não estruturados. Aplicações de sis-temas de informação também podem ser criadas a partir de uma mistura de programas de uso geral e/ou com várias ferramentas de desenvolvimento, desde editores a geradores de números aleatórios. Conjuntos de software como, por exemplo, o Microsoft Office, o Open Office ou o Google Docs são de especial interesse, pois podem acelerar o desenvolvimento de aplicações. Também de especial interesse são as ferramentas CASE e os softwares corporativos integra-dos, descritos mais adiante.

Outras aplicações. Existem centenas de outros softwares de aplicação. Os mais interessantes para a gestão de negócios são os seguintes:

1. Middleware. Aplicações de Internet criadas para permitir a interação de uma empre-sa com outras são complexas em função da variedade de componentes de hardware e software com os quais essas aplicações precisam trabalhar. Essa complexidade aumenta quando dispositivos móveis sem fio passam a acessar as redes da empresa pela Internet. O middleware é um software que conecta módulos de aplicações desenvolvidos em dife-rentes linguagens de computador e que roda em plataformas heterogêneas, seja em uma única máquina ou em uma rede. O middleware mantém um registro da localização dos módulos de software que precisam ser conectados uns aos outros através de um sistema distribuído e gerencia a troca de informações.

2. Aplicações corporativas. Um software empresarial consiste em programas que gerenciam operações vitais de uma organização, como gestão da cadeia de suprimentos (movimento desde a obtenção de matérias-primas de fornecedores à entrega de produtos finais aos clientes), reposição de estoque, encomendas, coordenação logística, gestão de recursos humanos, fabricação, operações, contabilidade e gestão financeira. Alguns módulos co-muns de software de aplicações corporativas são a folha de pagamento, o processamento do pedido de vendas, contas a pagar/receber e contabilidade fiscal.

Fornecedores de software empresarial têm produzido software mais barato, baseado em padrões da indústria, compatível com os produtos de outros fornecedores e mais fácil de configurar e instalar. Os maiores fornecedores – SAP, Oracle, PeopleSoft e Computer Associates – oferecem programas que facilitam o trabalho de usuários comerciais e de profissionais de TI.

3. Software de presença. A tecnologia de presença pode detectar quando você está online e que tipo de dispositivo está usando. Tem origem no sistema de mensagens instantâneas (instant messaging – IM). Quando você se conecta a um serviço de IM, sua chegada é ime-diatamente anunciada a uma lista de usuários que você selecionou para serem alertados sobre a sua presença online.

GT2.3 Software de sistemaO software de sistema controla e suporta o hardware de computador e suas atividades de processamento de informações. O software de sistema também facilita a programação, o teste e a depuração de programas de computador. Ele é mais genérico que o software de aplicação e costuma não depender de qualquer tipo específico de aplicação. Programas de software de sistema suportam software de aplicação direcionando as funções básicas do computador. Por exemplo, quando o computador é ligado, o programa de inicialização (um programa do siste-ma) prepara e prontifica todos os dispositivos para processamento. Outras tarefas comuns de sistemas operacionais são as seguintes:

• Monitorar o desempenho • Corrigir erros • Fornecer e manter a interface com o usuário

Page 5: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-5

• Iniciar (“inicializar”) o computador • Carregar programas na memória • Gerenciar alocação de memória para esses programas • Colocar arquivos e programas no armazenamento secundário • Criar e manter diretórios • Formatar disquetes • Controlar o monitor do computador • Enviar trabalhos à impressora • Manter a segurança e limitar o acesso • Localizar arquivos • Detectar vírus • Compactar dados

O software de sistema pode ser agrupado em três importantes categorias funcionais:

1. Programas de controle de sistema são programas que controlam o uso de hardware, soft-ware e recursos de dados de um sistema de computador durante sua execução do trabalho de processamento de informações de um usuário. Um sistema operacional é o principal exemplo de um programa de controle de sistema.

2. Programas de suporte ao sistema suportam as operações, o gerenciamento e os usuários de um sistema de computador por meio de uma série de serviços. Programas utilitários de sistema, monitores de desempenho e monitores de segurança são exemplos de programas de suporte ao sistema.

3. Programas de desenvolvimento de sistemas ajudam os usuários a desenvolver programas e procedimentos de processamento de informações e a preparar aplicações de usuário. Os principais programas de desenvolvimento são compiladores de linguagem, interpretado-res e tradutores.

Eis os programas de controle de sistema mais importantes.

Sistemas operacionais. O componente principal de software de sistema é um conjunto de programas coletivamente conhecido como sistema operacional. O sistema operacional super-visiona a operação global do computador, incluindo o monitoramento do status do computa-dor, o tratamento de interrupções de programas executáveis e o agendamento de operações, o que inclui o controle de processos de entrada e de saída.

Computadores com apenas uma CPU parecem executar múltiplas tarefas ao mesmo tem-po. Nesses casos, o sistema operacional controla que tarefa em particular terá acesso aos vá-rios recursos do computador. Ao mesmo tempo, o sistema operacional controla o fluxo total de informações dentro do computador.

Em um microcomputador, o sistema operacional controla a comunicação do computador com seu monitor, com a impressora e com os dispositivos de armazenamento. Ele também rece-be e direciona entradas de teclado e outras fontes de entrada de dados. O sistema operacional é projetado para maximizar a quantidade útil de trabalho que o hardware do computador realiza.

Os programas que executam no computador usam diversos recursos controlados pelo sis-tema operacional. Esses recursos incluem tempo de CPU, armazenamento primário ou memó-ria e dispositivos de entrada/saída. O sistema operacional tenta alocar o uso desses recursos da maneira mais eficiente possível.

O sistema operacional também é responsável pela interface entre o usuário e o hardware. Ao mascarar muitas das características do hardware, tanto o programador profissional quanto o usuário final dispõem de um sistema fácil de usar.

A portabilidade, uma característica desejável do sistema operacional, significa que o mes-mo software de SO pode ser executado em diferentes computadores. Um exemplo de sistema operacional com portabilidade é o UNIX e sistemas semelhantes a ele. Versões desses siste-mas operacionais podem ser executadas em hardwares produzidos por vários fornecedores diferentes. Alguns exemplos incluem o Linux, o NetBSD, o AIX, da IBM, e o Solaris, da Ora-cle. Entretanto, não há uma única versão padrão do UNIX que execute em todas as máquinas.

Funções do sistema operacional. O sistema operacional realiza quatro funções principais na operação de um sistema de computador: gerenciamento de tarefas, gerenciamento de re-cursos, consolidação de servidor e gerenciamento de dados.

PROGRAMAS DE CONTROLE DE SISTEMA

Page 6: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-6 Guias de Tecnologia

1. O gerenciamento de tarefas é a preparação, o agendamento e o monitoramento de ta-refas para processamento contínuo pelo sistema de computador. Job Control Language (JLC) é uma linguagem de computador especial encontrada no ambiente de computação de mainframe que permite que o programador se comunique com o sistema operacional.

2. O gerenciamento de recursos é o controle do uso de recursos de sistemas de computador empregados por outros produtos de software de sistema e programas de software de apli-cação sendo executados no computador. Esses recursos incluem o armazenamento primá-rio, o armazenamento secundário, o tempo de processamento da CPU e os dispositivos de entrada/saída.

3. A consolidação de servidor diz respeito à criação de uma infraestrutura mais simples, mais racional e gerenciável. Existem quatro estratégias de consolidação possíveis: consolidação lógica, consolidação física, consolidação da carga de trabalho e consolidação de aplicação. A consolidação leva também a um uso mais flexível, consistente e eficiente de recursos do que no caso de servidores distribuídos, pois permitem que os clientes encontrem o equilí-brio certo dentro de cada um dos servidores.

4. O gerenciamento de dados é o controle de entrada e saída de dados, bem como de sua localização, armazenamento e recuperação. Programas de gerenciamento de dados con-trolam a alocação de dispositivos de armazenamento secundários, o formato físico e a catalogação do armazenamento de dados.

Sistemas operacionais de computador desktop e notebooks. O Microsoft Windows li-dera a série de sistemas operacionais para desktops. O MS-DOS (Microsoft Disk Operating System) foi um dos sistemas operacionais originais para o PC da IBM e seus clones.

O Windows 95, lançado em 1995, foi o primeiro de uma série de produtos no sistema operacional Windows a fornecer ícones através de uma interface GUI (graphic user interface) para fornecer acesso instantâneo às tarefas mais comuns. Produtos subsequentes no sistema operacional do Microsoft Windows são os seguintes:

• O Windows 98 não foi uma atualização importante do Windows 95, mas ofereceu alguns refinamentos, reparou alguns bugs e apresentou algumas melhorias.

• O Windows NT é um sistema operacional para desktops de alta performance, estações de trabalho e servidores. O Windows NT suporta software escrito para DOS e Windows e ofe-rece excelente capacidade de computação para aplicações novas com requisitos de arquivo e uso intenso de memória. Além disso, foi criado para estabelecer conexões simples e con-fiáveis com redes e outros mecanismos de computação e é popular em sistemas em rede.

• O Windows 2000 é a versão renomeada do Windows NT 5.0. Esse sistema operacional adicionou dispositivos de segurança e executa em computadores com vários processadores.

• O Windows XP foi a primeira atualização do Windows 2000 e teve três versões: uma ver-são de 32 bits para o público em geral, uma versão profissional de 32 bits e uma versão de 64 bits, também profissional.

• O Windows Vista foi o próximo grande lançamento do sistema operacional Windows. O Vista supostamente melhoraria a produtividade do usuário de forma considerável, ofere-ceria novos recursos para desenvolvedores de software e traria avanços significativos em segurança, implementação e confiança.

• O Windows 7 apresenta melhorias em relação ao desempenho, à estabilidade e à segu-rança em relação ao Windows Vista. O Windows Touch otimiza o Windows 7 para ser usado com telas sensíveis ao toque. Isso melhora bastante a experiência do usuário que usa o Windows em um dispositivo com tela sensível ao toque. O Windows 7 Professional e o Ultimate incluem o modo Windows XP, que roda uma instalação virtual do Windows XP que permite aos usuários rodar softwares compatíveis apenas com esse sistema ope-racional. Novas funcionalidades de interface incluem o Snap, que redimensiona a janela dependendo de para onde ela é movida na tela.

O UNIX é outro sistema operacional que oferece recursos sofisticados, incluindo multipro-cessamento e multitarefas. O UNIX é de grande valor para organizações porque pode ser usado em muitas plataformas diferentes, suporta vários dispositivos de hardware (p.ex., impressoras, plotters, etc.) e há um grande número de aplicações escritas que é compatível com ele. O UNIX tem várias versões. A maioria dos fornecedores desse sistema operacional tem concentrado seus esforços no desenvolvimento de servidores, em detrimento de desktops, e alguns, como a IBM,

Page 7: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-7

promovem o Linux para o uso em desktops. Entretanto, a versão mais popular do UNIX em computadores pessoais é o OS X, da Apple.

O Linux foi originalmente escrito por Linus Torvalds na Universidade de Helsinque, na Finlândia, em 1991. Ele então liberou o código-fonte para o mundo (chamado de software de código-fonte aberto). Desde aquela época, muitos programadores ao redor do globo traba-lhavam em Linux e em componentes de software escritos para ele. O resultado é que, como o UNIX, o Linux roda em diversas plataformas de hardware, suporta vários dispositivos de hardware e há um grande número de aplicações que executa nele.

O Linux (algumas vezes chamado de GNU/Linux) é um sistema operacional do tipo UNIX criado para oferecer aos usuários de computadores pessoais um sistema operacional gratuito ou de baixíssimo custo, em comparação aos sistemas UNIX tradicionais, mais caros. O Linux é um sistema operacional consideravelmente completo, que inclui uma interface grá-fica, um X Window System, multitarefas, gerenciamento de memória virtual, TCP/IP, o editor Emacs e outros componentes que costumam ser incluídos em sistemas UNIX completos.

O Linux foi criado para computadores pessoais, mas obteve grande parte de seu sucesso em servidores. Na verdade, a maioria dos servidores Web e dos supercomputadores roda o Linux. O Linux de fato é usado em computadores pessoais, mas tem no máximo 3% do mer-cado de sistemas operacionais desse segmento. Algumas estatísticas afirmam que o Linux tem apenas 1% do mercado. Como resultado, a maioria das empresas desenvolvedoras de Linux, como a Red Hat, concentra-se no mercado de servidores. Entretanto, a Canonical oferece um sistema operacional Linux para desktop fácil de usar chamado Ubuntu (ubuntu.com).

O sistema operacional Macintosh, o Mac OS X, para microcomputadores da Apple, atual-mente é um sistema operacional UNIX de 64 bits que roda em CPUs Intel X86_64. O OS X só pode rodar legalmente em um “computador da Apple”, de acordo com os termos de licença para o usuário final (end-user license agreement, ou EULA). O OS X dá suporte à integração com a Internet, a gerenciamento de memória virtual e à rede AppleTalk. O Mac OS X oferece uma interface com o usuário (chamada de Aqua), gráficos avançados, gerenciamento de me-mória virtual e multitarefas.

Sistemas operacionais para netbooks. Atualmente, a maioria dos netbooks vem com o Windows 7 Starter, que é a versão mais simples do Windows 7. No entanto, ainda há alguns netbooks sendo distribuídos com Windows XP ou sistemas operacionais baseados em Linux. Outra opção que talvez esteja disponível no futuro é o SO Google Chromium, comumente chamado de Chromium. É um sistema operacional de código aberto para netbooks baseado em Linux. O código foi liberado sob licença BSD, mas é um trabalho ainda não concluído. Ne-nhum fabricante de peso distribuiu netbooks que executem o SO Chromium. A característica mais notável do Chromium é que ele executa somente o navegador Chrome, então só pode ser usado quando conectado à Internet.

Smartphones têm sistemas operacionais próprios, como mostra a Tabela GT2.2.

Sistemas operacionais de mainframe. Computadores mainframe em geral requerem siste-mas operacionais especializados que possam lidar com grandes cargas e que tenham recursos avançados de segurança. Os principais sistemas operacionais de servidor são o Linux, o Win-dows Server 2008, o UNIX, o HP NonStop e o z/OS da IBM. Apesar de alguns deles também serem sistemas operacionais desktops, todos podem ser usados como sistemas operacionais de servidor departamentais, por causa de sua flexibilidade, confiabilidade, capacidade de res-tauração, segurança, tolerância a falhas, multiprocessamento, rede TCP/IP (integração com a Internet), gerenciamento de rede e serviços de diretório.

Sistemas operacionais de servidor corporativo. Sistemas operacionais para servidores cor-porativos (p.ex., o RHES, da Red Hat, o SLES, da Novell, e o z/OS, da IBM) geralmente exe-cutam em mainframes e em sistemas de médio porte. Sistemas operacionais corporativos ofe-recem maior capacidade de gerenciamento, segurança e estabilidade e também maior suporte a aplicações online, comércio eletrônico seguro, múltiplos usuários ao mesmo tempo, grandes bancos de dados (terabytes) e milhões de transações por dia. Sistemas operacionais para ser-vidores corporativos também oferecem particionamento, um método de segmentação dos re-cursos do servidor que permite o processamento de diversas aplicações em um único sistema.

Sistemas operacionais para supercomputadores. Sistemas operacionais para supercomputa-dores visam atender o mercado de hardware para supercomputadores. A maioria desses sistemas

Page 8: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-8 Guias de Tecnologia

TAB

ELA

GT2

.2Si

stem

as O

per

acio

nais

de

Smar

tpho

nes

Sist

ema

op

erac

iona

lSy

mb

ian

Bla

ckB

erry

OS

Win

do

ws

Pho

ne 7

iOS

And

roid

Web

OS

Fab

rica

nte

No

kia

com

a S

ym-

bia

n Fo

und

atio

nR

IM (R

esea

rch

In M

otio

n)M

icro

soft

Ap

ple

Go

og

le c

om

o

Op

en H

and

set

Alli

ance

Palm

(ag

ora

da

HP)

Co

men

tári

os

Sist

ema

op

erac

io-

nal d

e te

lefo

nes

mai

s p

op

ular

do

m

und

o

Smar

tpho

ne m

ais

po

pul

ar

nos

Est

ado

s U

nid

os

O W

ind

ow

s Ph

one

7 é

um

a re

visã

o c

om

ple

ta

do

Sis

tem

a O

per

acio

nal

par

a Sm

artp

hone

s d

a M

icro

soft

Mud

ou

a m

anei

ra

com

o o

s am

eri-

cano

s en

cara

m

tele

fone

s ce

lula

res

qua

ndo

foi l

ança

do

em

19/

06/2

007

dig

o a

ber

to s

ob

a

licen

ça A

pac

he

2.0,

ain

da

fort

e-m

ente

co

ntro

lad

o

pel

a G

oo

gle

Ap

ós

uma

suce

ssão

d

e d

ecis

ões

ruin

s d

a Pa

lm, a

HP

com

-p

rou

a Pa

lm p

rin-

cip

alm

ente

pel

o

Web

OS

Que

m p

od

e us

ar o

si

stem

a o

per

acio

nal

em s

eus

dis

po

siti

-vo

s?

O S

ymb

ian

v3 te

m

cód

igo

ab

erto

, q

ualq

uer u

m

po

de

usá-

lo; v

er-

sões

ant

erio

res,

no

ent

anto

, era

m

pro

prie

tária

s

Ap

enas

RIM

Lice

ncia

do

s p

ara

fab

ri-ca

ntes

de

hard

war

e p

ela

Mic

roso

ft

Ap

enas

Ap

ple

dig

o a

ber

to,

mas

fort

emen

te

cont

rola

do

pel

a G

oo

gle

Tant

o c

om

po

nent

es

de

cód

igo

ab

erto

q

uant

o p

rop

rietá

-rio

. A P

alm

co

gito

u lic

enci

ar o

Web

OS

ante

s d

e se

r co

m-

pra

da

pel

a H

P

Loja

ofi

cial

de

apli-

caçõ

esH

á vá

rias

loja

s d

ifere

ntes

. Al-

gun

s ex

emp

los

são

a lo

ja O

vi,

da

No

kia,

a

Sam

sung

Ap

pli-

catio

ns S

tore

e a

A

T&T

Med

ia M

all

A A

pp W

orld

foi c

riada

par

a co

mpe

tir c

om a

loja

de

aplic

açõe

s do

iPho

ne; a

s ap

licaç

ões

pode

m s

er a

d-qu

irida

s de

out

ras

font

es,

assi

m c

omo

cost

umav

a se

r fei

to a

ntes

do

lanç

a-m

ento

da

App

Wor

ld

Mo

bile

Mar

ketp

lace

Tem

a m

aio

r lo

ja d

e ap

licaç

ões

e q

ue

mai

s cr

esce

, co

m

mai

s d

e 20

0 m

il ap

licaç

ões

; to

das

as

ap

licaç

ões

pre

ci-

sam

ser

ap

rova

das

p

ela

Ap

ple

O m

erca

do

And

roid

te

m a

seg

und

a m

aio

r lo

ja d

e ap

licaç

ões

e a

se

gun

da

que

mai

s cr

esce

, co

m m

ais

de

38.0

00 a

plic

a-çõ

es

Cat

álo

go

de

aplic

a-çõ

es P

alm

Pri

mei

ro t

elef

one

Eric

sso

n R

380

Bla

ckB

erry

671

0 e

6720

Ain

da

não

anu

ncia

do

iPho

ne o

rigin

alG

1Pa

lm P

re

Ple

na c

apac

idad

e m

ulti

tare

fas;

exe

cu-

ta v

ária

s ap

licaç

ões

ao

mes

mo

tem

po

Sim

Sim

Ao

cont

rário

do

Win

dow

s M

obile

, o W

ind

ows

Pho-

ne 7

não

pos

sui m

ultit

a-re

fas

par

a ap

licaç

ões

de

terc

eiro

s; e

m v

ez d

isso

, as

ap

licaç

ões

são

pau

sa-

das

qua

ndo

troc

adas

A p

artir

do

4.0

, o iO

S te

rá c

apac

idad

e m

ultit

aref

as p

lena

Sim

Sim

Tam

bém

usa

do

em

O S

ymb

ian

pro

-va

velm

ente

ser

á us

ado

em

tab

lets

Foi u

sad

o o

rigin

alm

ente

em

pag

ers

bid

ireci

ona

isA

tual

men

te, n

ão h

á d

isp

osi

tivo

alg

um q

ue

rod

e W

ind

ow

s Ph

one

7

dis

po

níve

l ao

púb

lico

iPo

d T

ouc

h e

vers

ão

mo

difi

cad

a no

iPad

Net

bo

oks

, tab

lets

, le

itore

s d

e e-

bo

ok,

to

cad

or d

e m

ídia

p

ort

átil

A H

P te

m p

lano

s d

e us

ar o

Web

OS

em

tab

lets

Page 9: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-9

é baseada em Linux, como o CNK/SLES 9 e o Red Hat Enterprise Linux 4. No entanto, sistemas operacionais de supercomputadores não se limitam a Linux. Alguns exemplos de sistemas não baseados em Linux incluem o Unicos, para o Cray X1, o 2000 K/S/X, da HP, e o AIX, da IBM (ambos tipos de UNIX). Outros fabricantes são a Sun, a NEC, a Silicon Graphics e a Fujitsu. Esses sistemas operacionais gerenciam ambientes multiprocessador e multiusuário altamente pa-ralelos.

Sistemas operacionais de interface gráfica com o usuário. Um sistema operacional de inter-face gráfica com o usuário (graphical user interface, ou GUI) é um sistema no qual os usuários têm controle direto sobre objetos visíveis (como ícones e ponteiros) e ações que substituem a complexa sintaxe de comandos. O próximo passo na evolução das interfaces gráficas são as inter-faces sociais. Uma interface social é uma interface com o usuário que orienta o usuário por aplica-ções de computador usando personagens do tipo cartoon gráficos, animações e comandos de voz.

Tarefas de processamento. Sistemas operacionais gerenciam as atividades de processamen-to com recursos de gerenciamento de tarefas que alocam recursos de computador para otimi-zar os ativos de cada sistema. Os recursos mais importantes são descritos a seguir.

Multiprogramação e multiprocessamento. Multiprogramação envolve dois ou mais mó-dulos de aplicações ou programas colocados na memória principal ao mesmo tempo. O pri-meiro módulo executa na CPU até que ocorra uma interrupção, como uma solicitação de entrada. A solicitação de entrada é iniciada e executada enquanto um segundo módulo de aplicação é iniciado. A execução do segundo módulo continua até que outra interrupção ocorra, quando a execução de um terceiro módulo começa. Quando o processamento da interrupção é completado, o controle é devolvido ao programa que foi interrompido. Uma vez que a troca entre programas ocorre rapidamente, todos os programas parecem estar em execução ao mesmo tempo.

Em um sistema de multiprocessamento, mais de um processador está envolvido. Os pro-cessadores podem compartilhar dispositivos de entrada/saída, ainda que cada processador possa controlar alguns dispositivos exclusivamente. Em alguns casos, todos os processadores compartilham a memória principal. Como resultado, mais de uma operação de CPU pode ser realizada exatamente ao mesmo tempo; ou seja, cada processador pode executar um módulo de aplicação ou uma parte dele simultaneamente com outro. A multiprogramação é imple-mentada inteiramente por software, ao passo que o multiprocessamento é, antes de qualquer coisa, uma implementação de hardware, com o auxílio de software sofisticado.

Compartilhamento de tempo (time-sharing). O compartilhamento de tempo é uma exten-são da multiprogramação. Nesse modo, um determinado número de usuários opera online a mesma CPU, mas cada um usa um terminal diferente de entrada/saída. Um módulo de apli-cação de um usuário é colocado em uma partição (uma parte reservada do armazenamento primário). A execução é realizada por um certo período ou até que seja feita uma requisição de entrada/saída. Como na multiprogramação, os módulos de outros usuários também são co-locados no armazenamento primário de outras partições. A execução passa adiante para outro módulo de aplicação no final do período determinado e alterna-se entre todos os usuários.

Memória virtual. A memória virtual permite ao usuário escrever um programa como se a memória principal fosse maior do que realmente é. Os usuários recebem “praticamente” todo o armazenamento primário de que necessitam. Com a memória virtual, as páginas de um módulo de aplicação não precisam ser todas carregadas na memória principal ao mesmo tempo. Enquanto o programa é executado, o controle passa de uma página para outra. Se a página subsequente já está na memória principal, a execução prossegue. Se a página subse-quente não está na memória principal, a página demora para ser carregada. Na verdade, a memória principal é estendida em um dispositivo de armazenamento secundário.

Sistema operacional de máquina virtual. Uma máquina virtual é um sistema de computa-dor que parece um computador real para o usuário mas, na realidade, foi criado pelo sistema operacional. Um sistema operacional de máquina virtual faz com que uma única máquina simule múltiplas máquinas aos usuários, cada uma com seu próprio sistema operacional. Cada usuário pode escolher um sistema operacional diferente para sua máquina virtual. Como re-sultado, diversos sistemas operacionais podem existir na máquina real ao mesmo tempo.

Page 10: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-10 Guias de Tecnologia

Programas de suporte ao sistema. Utilitários de sistema são programas criados para de-sempenhar tarefas comuns como classificar registros, mesclar conjuntos de dados, verificar a integridade de discos magnéticos, criar diretórios e subdiretórios, restaurar arquivos deletados acidentalmente, localizar arquivos dentro da estrutura do diretório, gerenciar o uso de me-mória e redirecionar saídas. Essas são as tarefas básicas da maioria dos sistemas operacionais e programas de aplicação. O TestDrive, por exemplo, permite que você baixe um software; você testa o programa e o TestDrive o ajuda na compra ou na remoção do aplicativo. Alguns softwares de limpeza de disco, como o Desfragmentador de Disco da Microsoft, também co-nhecidos como desfragmentadores ou ferramentas de diagnóstico e reparo, ajudam a organi-zar o disco rígido ordenando arquivos a fim de liberar espaços contínuos para novos arquivos, localizam arquivos pouco usados, arquivos temporários e outros arquivos que desperdiçam espaço. O Norton Utilities realiza tarefas de manutenção de rotina em discos rígidos e em dispositivos de armazenamento secundário.

Monitores de desempenho do sistema. Monitores de desempenho do sistema monitoram o desempenho do sistema de computador e produzem relatórios com estatísticas detalhadas sobre o uso de recursos do sistema, como tempo de processamento, espaço de memória, dispo-sitivos de entrada/saída e programas de sistema e de aplicação.

Monitores de segurança de sistema. Monitores de segurança de sistema são programas que monitoram o uso de um sistema de computador para proteger o computador e seus recursos contra usos não autorizados, fraudes ou destruição. Esses programas oferecem ao computa-dor a segurança necessária para permitir apenas acessos autorizados ao sistema. Monitores de segurança de sistema controlam o uso de recursos de hardware, software e dados de um computador. Por fim, esses programas monitoram o uso do computador e coletam estatísticas de tentativas de uso impróprio.

Programas de desenvolvimento de sistema. Traduzir programas de computador voltados ao usuário escritos em código-fonte para código de objeto ou máquina requer o uso de com-piladores ou intérpretes, os quais são exemplos de programas de desenvolvimento de siste-ma. Outro exemplo são os programas de engenharia de software auxiliada por computador (computer-aided software engineering).

GT2.4 Linguagens de programação, desenvolvimento de software e ferramentas CASE

Linguagens de programação oferecem os componentes básicos para a construção de todos os softwares de sistema e de aplicação. Linguagens de programação são um conjunto de símbolos e regras para escrever o código do programa. Cada linguagem usa um conjunto diferente de regras e a sintaxe, que determina como os símbolos devem ser combinados para que façam sentido.

As características das linguagens dependem de seu propósito. Por exemplo, se os progra-mas têm o objetivo de rodar processamentos de lote, eles serão diferentes de programas com o objetivo de rodar processamentos em tempo real. Linguagens para programas de Internet são diferentes de programas destinados a rodar aplicações de mainframe.

Os diferentes estágios das linguagens de programação são chamados de gerações. O termo geração pode ser mal interpretado. Na geração de hardware, as gerações mais antigas estão se tornando obsoletas e caindo em desuso. Já todas as gerações de software ainda estão em uso. Elas são descritas na Figura GT2.2 e discutidas a seguir.

Linguagem de máquina. Primeira geração (1G). A linguagem de máquina é a linguagem de computador de mais baixo nível e consiste na representação interna de instruções e dados. O código de máquina – as instruções entendidas e diretamente executáveis pela CPU – é com-posto de dígitos binários. Um programa que usa esse nível de codificação é chamado de pro-grama de linguagem de máquina e representa a primeira geração de linguagens de programa-ção. A CPU de um computador executa somente programas em linguagem de máquina, que são dependentes da máquina. Ou seja, a linguagem de máquina para um tipo de processador central pode não rodar em outros tipos.

A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO

Page 11: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-11

Entender e usar a linguagem de máquina é extremamente difícil para os programadores. Como resultado, cada vez mais linguagens orientadas ao usuário têm sido desenvolvidas. Essas linguagens facilitam a programação, mas não são executáveis pelo computador sem antes traduzir o programa para linguagem de máquina. O conjunto de instruções escritas em uma linguagem orientada ao usuário é conhecido como programa-fonte.

Linguagem assembly. Segunda geração (2G). Uma linguagem assembly é uma linguagem mais orientada ao usuário que representa instruções e localizações de dados utilizando mne-mônica, ou auxílios de memória, que são mais fáceis de usar. As linguagens assembly são consideradas a segunda geração de linguagens de computador. Comparada à linguagem de máquina, a linguagem assembly facilita consideravelmente o trabalho do programador. No entanto, uma instrução em linguagem assembly precisa ser traduzida em uma instrução na linguagem de máquina. Uma vez que a linguagem de máquina depende do hardware e que programas de linguagem assembly são traduzidos um a um, as linguagens assembly também dependem de hardware.

Um programa de software de sistemas chamado de assembler realiza a tradução de um programa de linguagem assembly em linguagem de máquina. Um assembler aceita um progra-ma-fonte como entrada e produz um programa-objeto como saída. O programa-objeto é então processado em dados, como mostra a Figura GT2.3.

As linguagens de alto nível são o próximo passo na evolução de linguagens de programação orientadas ao usuário. Elas são muito mais parecidas com a linguagem natural e, portanto, são mais fáceis de escrever, ler e alterar. Além disso, uma instrução em uma linguagem de alto nível é traduzida em várias instruções de linguagem de máquina, tornando a programação mais produtiva.

LINGUAGENS DE ALTO NÍVEL

Programa- -fonte

CPU

Escrito por um programador

(a)

Convertida por um tradutor

Pronto para executar como

código de máquina

Dados CPU

Os dados são inseridos

(b)

O programa é executado

Os resultados são produzidos

Programa objeto

Saída

Programa objeto

Tradutor

Figura GT2.3 O pro-cesso de tradução de linguagem.

Linguagem de máquina

0–1Programação longa e difícil

Linguagem assembly

Montam instruções repetitivas, código mais curto

Progresso

Gerações

MáquinaHumano

Linguagem natural

Incluem comandos, código mais curto

Linguagens procedurais

Linguagens não procedurais

Geradores de aplicações, comandos especificamresultados

Linguagens inteligentes

Processamento de linguagem natural

1a 2a 3a 4a 5a

Figura GT2.2 A evo-lução das linguagens de programação. A cada geração são feitos pro-gressos em direção à linguagem natural.

Page 12: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-12 Guias de Tecnologia

Linguagens procedurais. Terceira geração (3G). As linguagens procedurais são o próxi-mo passo na evolução de linguagens de programação orientadas ao usuário. São conheci-das também como linguagens de terceira geração, ou 3GLs. Elas são muito mais parecidas com a linguagem natural (a maneira como falamos) e, portanto, são mais fáceis de escre-ver, ler e alterar. Além disso, uma instrução em uma linguagem procedural é traduzida em várias instruções de linguagem de máquina, tornando a programação mais produtiva. Em geral, as linguagens procedurais são mais parecidas com a linguagem natural do que as linguagens assembly. Além disso, usam palavras comuns em vez de mnemônica abreviada. Por causa disso, as linguagens procedurais são consideradas a primeira geração de lingua-gens de alto nível.

As linguagens procedurais exigem que o programador especifique, passo a passo, exata-mente como o computador realizará uma tarefa. Uma linguagem procedural é orientada fo-cando como um resultado deve ser produzido. Uma vez que computadores entendem apenas linguagem de máquina (i.e., 0s e 1s), linguagens de alto nível precisam ser traduzidas em lin-guagem de máquina antes da execução. A tradução é feita por softwares de sistema chamados de tradutores de linguagem. Um tradutor de linguagem converte o programa de alto nível, chamado de código-fonte, em código de linguagem de máquina, chamado de código-objeto. Existem dois tipos de tradutores: compiladores e interpretadores.

• Compiladores. A tradução de um programa de linguagem de alto nível para código-ob-jeto é realizada por um programa de software chamado de compilador. O processo de tradução é conhecido como compilação.

• Interpretadores. Um interpretador é um compilador que traduz e executa uma instrução de um programa-fonte por vez. Desse modo, interpretadores tendem a ser mais simples do que compiladores. Essa simplicidade permite que a depuração seja mais extensa e que a assistência ao diagnóstico esteja disponível em interpretadores.

• Exemplos de linguagens procedurais. A FORTRAN (Formula Translator) é uma lingua-gem procedural algébrica do tipo fórmula. Ela foi desenvolvida para atender a requisitos de processamento científicos.

A COBOL (Common Business-Oriented Language) foi desenvolvida como uma lingua-gem de programação para a comunidade de negócios. A intenção era fazer com que as ins-truções em COBOL fossem semelhantes ao modo como seriam expressas em inglês. Como resultado, os programas seriam “autodocumentáveis”. Há hoje em uso mais programas em COBOL do que em qualquer outra linguagem de computador.

O Microsoft Visual BASIC é a extensão da linguagem de programação BASIC. Essa lin-guagem é famosa por sua interface gráfica com o usuário e é ideal para criar protótipos. Em 2002, a Microsoft lançou a plataforma .NET, para que todas suas linguagens, incluindo a Vi-sual BASIC, suportassem essa poderosa plataforma.

A linguagem de programação C foi a linguagem que mais cresceu nos anos 1990. A C é considerada mais transportável do que outras linguagens, o que significa que um programa escrito em C para um tipo de computador em geral executa em outros tipos de computador com poucas modificações, ou até mesmo sem modificação alguma. Além disso, a linguagem C é facilmente modificável.

Linguagens não procedurais. Quarta geração (4G). Outro tipo de linguagem de alto nível, conhecida como não procedural ou de quarta geração (4GL), permite que o usuário especifi-que os resultados desejados sem ter que especificar os procedimentos detalhados necessários para atingir os resultados. Uma linguagem não procedural é orientada para aquilo que é re-querido. As 4GLs, também referidas como linguagens de comando, simplificam e aceleram o processo de programação e reduzem o número de erros de codificação.

Linguagens de programação naturais. Quinta geração. As linguagens de programação de linguagem natural (natural language programming language – NLPs) são o próximo passo evo-lutivo. São algumas vezes conhecidas como linguagens de quinta geração ou linguagens inte-ligentes. Os programas de tradução para traduzir linguagens naturais de forma estruturada e legível pela máquina são extremamente complexos e requerem uma grande quantidade de recursos de computador. Exemplos incluem a INTELLECT e a ELF. Esses são em geral front--ends (como a linguagem FOCUS) que melhoram a interface do usuário com as 4GLs. Diversas linguagens procedurais de inteligência artificial (como as LISP) são chamadas por alguns de 5GLs.

Page 13: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-13

Linguagens de programação objeto. Linguagens objeto foram criadas para se ajustar a no-vas tecnologias como multimídia, hipermídia, gerenciamento de documentos e Internet. Essas linguagens são descritas a seguir.

Linguagens de programação orientada a objetos. A programação orientada a objetos (POO, ou object-oriented programming – OOP) modela um sistema como um conjunto de objetos. Como a programação estruturada, a POO tenta gerenciar a complexidade com-portamental de um sistema, mas também tenta gerenciar a complexidade de informações de um sistema. A abordagem orientada a objetos (OO) envolve programação, ambientes de sistemas operacionais, bancos de dados orientados a objetos e um novo modo de abor-dar aplicações de negócios.

Conceitos da abordagem orientada a objetos. Os conceitos básicos da abordagem OO são objetos, classes, transmissão de mensagens, encapsulamento, herança e polimorfismo. Como esses conceitos parecem complexos e técnicos demais à primeira vista, talvez seja útil relacio-ná-los a aspectos das interfaces gráficas com o usuário em sistemas operacionais populares, como Windows e o Mac OS X da Apple. Essas interfaces foram desenvolvidas por meio da programação orientada a objetos e incorporam recursos orientados a objetos.

Sistemas orientados a objetos enxergam o software como uma coleção de objetos que interagem entre si. Um objeto modela coisas do mundo real. Essas coisas podem ser entidades físicas, como carros, alunos ou eventos. Ou podem ser coisas abstratas, como contas em ban-cos, ou aspectos de uma interface, como um botão ou uma caixa para entrada de texto.

Quando nos referimos a um objeto, podemos ter dois sentidos: uma classe ou uma instân-cia. Uma classe é um modelo ou uma estrutura geral que define os métodos e atributos a serem incluídos em um tipo particular de objeto. Um objeto é uma instância específica de uma classe, capaz de realizar serviços e armazenar dados. Por exemplo, “aluno” pode ser uma classe em sistema de matrícula de alunos. Um aluno em particular, por exemplo, John Kim, é uma ins-tância dessa classe e, portanto, um objeto.

Objetos têm dados associados a eles. Os elementos de dados são referidos como atributos ou variáveis porque seus valores podem mudar. Por exemplo, o objeto John Kim pode ar-mazenar os dados que o identificam como formando, graduando em sistemas de informação, matriculado no último semestre do curso.

Os objetos exibem comportamentos, que são as atividades que eles executam. O pro-gramador implementa esses comportamentos ao escrever seções de código que realizam os métodos de cada objeto. Métodos são os procedimentos ou comportamentos de um objeto que modificarão os valores de atributo daquele objeto. Os métodos são algumas vezes chamados de operações que manipulam o objeto. Comportamentos comuns incluem modificar os dados em um objeto e comunicar informações em valores de dados. Ao clicar em uma caixa de sele-ção em um sistema Windows, o usuário inicia o comportamento que modifica o atributo para “selecionado” e mostra um X ou uma marca de seleção na caixa.

Os objetos interagem entre si utilizando mensagens. Essas mensagens representam so-licitações para exibir os comportamentos desejados. O objeto que inicia uma mensagem é o remetente, e o objeto que recebe a mensagem é o receptor. Quando interagimos com objetos, enviamos mensagens a eles e eles também podem enviar mensagens para nós. Clicar em um botão, selecionar um item de um menu e arrastar e soltar um ícone são maneiras de enviar mensagens aos objetos. Essas mensagens podem ativar métodos no objeto destinatário e, as-sim, novas mensagens são geradas.

Transmitir mensagens é o único meio de obter informações de um objeto, porque os atri-butos não são diretamente acessíveis. A falta de acessibilidade aos dados de um objeto é cha-mada de encapsulamento ou ocultamento de informação. Ao ocultar suas variáveis, um objeto protege outros objetos de complicações derivadas da dependência em sua estrutura interna. Os outros objetos não precisam conhecer o nome de cada variável, o tipo de informação que ela contém nem o formato de armazenamento físico da informação. Eles só precisam saber solicitar informações ao objeto.

Com a herança, uma classe de objetos é definida como um caso especial de uma classe mais geral, incluindo automaticamente o método e as definições variáveis da classe geral. Classes especiais de uma classe são subclasses, e a classe mais geral é uma superclasse. Por exemplo, a classe aluno é uma subclasse de ser humano, que é uma superclasse. A classe aluno pode ser dividida ainda em alunos do estado, alunos de fora do estado ou alunos com

Page 14: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-14 Guias de Tecnologia

bolsa, que seriam subclasses da classe aluno. Essa organização resulta em uma hierarquia de classes.

A herança é particularmente valiosa, porque os analistas podem procurar em hierarquias de classes predefinidas, conhecidas como bibliotecas de classes, tratar por aquelas que sejam semelhantes às classes de que precisam em um novo sistema. Esse processo economiza muito tempo. Por exemplo, se o usuário final precisa tratar alunos como uma classe de objetos, o analista pode encontrar uma classe geral que seja similar à classe aluno, como vista pelo usuá-rio final. Assim, o analista reutiliza informações de uma classe existente em vez de partir do começo para definir a classe aluno. A relação entre classes e subclasses é mostrada na Figura GT2.4.

Polimorfismo é a habilidade de enviar a mesma mensagem a vários receptores dife-rentes (objetos) e fazer com que a mensagem desencadeie a ação desejada. Por exemplo, suponha que existam três classes de objetos em um sistema de ensino particular: alunos do estado, alunos de fora do estado e alunos com bolsa de estudos. Precisamos calcular a ma-trícula para cada tipo de aluno (classes), levando em conta que as matrículas serão diferen-tes para as três classes. O polimorfismo nos permite enviar a mesma mensagem “calcular matrícula” às três classes e obter a matrícula correta para cada uma.

Programação com OO. Criar programas e aplicações usando linguagens de programação orientada a objetos é semelhante a construir um prédio usando partes pré-fabricadas. O objeto contendo os dados e os procedimentos é um bloco de construção de programação. Os mesmo objetos são usados repetidamente, um processo conhecido como reusabilidade, ou capacidade de reutilização. Ao reutilizar o código do programa, os programadores escrevem programas com muito mais eficiência e com muito menos erros. Linguagens de programação orientadas a objetos oferecem vantagens como código reutilizável, custos baixos, menor incidência de erros e quantidade de testes, e implementação mais rápida. Linguagens populares de programação orientadas a objetos incluem Smalltalk, C++, Java e C#.

Smalltalk. A Smalltalk é uma linguagem orientada a objetos pura desenvolvida pelo Xerox Palo Alto Research. A sintaxe é razoavelmente fácil de aprender, sendo bem menos compli-cada que a da C e a da C++.

C++. A C++ é uma extensão direta da linguagem C, com 80 a 90 por cento da C++ permane-cendo C puro.

Employee (Classe)Name (Variáveis de classe)Title

Print (Methods)

Contractor (Subclasse de funcionário)NameTitleContract_numberDollar_amountPrint

Paid weekly (Subclasse de funcionário)NameTitle

PrintMake_weekly_paycheck

Horista (Subclasse de funcionários pagos por semana)NameTitleHourly_wageHours_per_weekPrintMake_weekly_paycheck - Redefinição

Salaried (Subclasse de funcionários pagos por semana)NameTitleSalary

Print - RedefiniçãoMake_weekly_paycheck - Redefinição

Figura GT2.4 Classes, subclasses, herança e redefinição de objetos. (Fonte: © Cortesia da Apple Corporation. Usada com permissão.)

Page 15: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-15

Unified Modeling Language, (UML). Desenvolver um modelo para sistemas de software complexos é tão essencial quanto ter a planta para a construção de um edifício. A UML é uma linguagem para especificar, visualizar, construir e documentar os artefatos (como as classes, objetos, etc.) em sistemas de software orientados a objetos. Ela torna a reutilização desses artefatos mais fácil, porque a linguagem fornece um conjunto comum de notações que podem ser usadas para todos os tipos de projetos de software.

Linguagem de Programação Visual. Linguagens de programação usadas em um ambiente gráfico costumam ser chamadas de linguagens de programação visuais. A programação visual permite aos desenvolvedores criar aplicações por meio da manipulação direta de imagens, em vez de especificar as características visuais no código. Essas linguagens usam mouses, ícones, símbolos na tela ou menus suspensos para facilitar a programação e torná-la mais intuitiva. A Visual Basic e o Visual C++ são exemplos de linguagens de programação visuais.

Várias linguagens existem especificamente para a Internet. A mais conhecida é a HTML.

Hypertext Markup Language. A linguagem padrão que a Web usa para criar e reconhecer documentos hipermídia é a Hypertext Markup Language (HTML). A linguagem HTML relaciona-se fracamente com a Standard Generalized Markup Language (SGML), que é um método de representar linguagens de formatação de documentos. Linguagens como a HTML que seguem o formato SGML permitem que editores de documentos separem as informações da apresentação do documento. Ou seja, documentos com as mesmas informa-ções podem ser apresentados de diversas maneiras. Os usuários têm a opção de controlar elementos visuais como fontes, tamanho da fonte e espaçamento entre parágrafos sem alte-rar as informações originais.

A HTML é fácil de usar. Documentos na Web costumam ser escritos em HTML e são nomeados com o sufixo .html ou .htm. Documentos em HTML são arquivos ASCII de 7 ou 8 bits padrão com códigos de formatação que contêm informações sobre layout (estilos de texto, títulos, parágrafos, listas) e hiperlinks. A HTML padrão suporta a criação e o layout de documentos simples em hipertexto, bem como formas interativas e “pontos ativos” definidos em imagens.

O hipertexto é uma abordagem para gerenciamento de dados na qual os dados são arma-zenados em uma rede de nós conectada por links (chamados de hiperlinks). Os usuários aces-sam os dados por um sistema de navegação interativo. A combinação de nós, links e índices de ajuda para qualquer tópico é um documento em hipertexto. Um documento em hipertexto pode conter textos, imagens e outros tipos de informação como arquivos de dados, áudio, ví-deo e programas de computador executáveis.

A rede mundial de computadores usa Uniform Resource Locators (URLs) para repre-sentar links de hipermídia e links para serviços de rede dentro de documentos em HTML. A primeira parte do URL (antes das duas barras) especifica o método de acesso. A segunda cos-tuma ser o endereço do computador em que os dados ou serviços estão localizados. Um URL é sempre uma linha contínua sem espaços.

A Dynamic HTML é o próximo passo, além da HTML. A Dynamic HTML oferece avan-ços como estes:

• Oferece uma experiência mais agradável e dinâmica ao usuário na Web, tornando as pági-nas mais parecidas com aplicações dinâmicas, com menos conteúdo estático. Permite que o usuário interaja com o conteúdo das páginas sem precisar baixar conteúdo adicional do servidor. Isso significa que páginas Web que usam Dynamic HTML oferecem informa-ções mais animadoras e úteis.

• A Dynamic HTML dá aos desenvolvedores controle preciso sobre a formatação, as fon-tes e o layout, o que oferece um modelo de objeto aprimorado para tornar as páginas interativas.

• Serve como base para crossware, uma nova classe de aplicações sob demanda, indepen-dente de plataforma, construída com Dynamic HTML, Java e JavaScript. O Netscape Ne-tcaster, um componente do Netscape Communicator, foi a primeira aplicação crossware do Netscape.

Aprimoramentos e variações de HTML tornam possíveis novos layouts e recursos designs em páginas Web. Por exemplo, as folhas de estilo em cascata (cascading style sheets – CSSs)

LINGUAGENS DE PROGRAMAÇÃO WEB E SOFTWARE

Page 16: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-16 Guias de Tecnologia

são um complemento da HTML que atua como um modelo, definindo aparência ou estilo (como tamanho, cor e fonte) de um elemento de uma página Web, como uma caixa.

XML. A XML (eXtensible Markup Language) é otimizada para distribuição de documen-tos pela rede. É construída com base na SGML. A XML é uma linguagem para definição, validação e compartilhamento de formatos de documentos. Ela permite que autores criem, gerenciem e acessem conteúdos dinâmicos, personalizados e customizados na Web sem in-troduzir extensões de HTML proprietárias. A XML é especialmente indicada para aplica-ções de comércio eletrônico. A XQuery é uma linguagem de consulta XML desenvolvida e padronizada pelo World Wide Web Consortium (W3C). A XQuery é uma linguagem po-derosa e conveniente criada para o processamento de dados em XML: não apenas arquivos em XML, mas também outros dados, incluindo bancos de dados com estrutura similar à da XML. O objetivo da XQuery é localizar, recuperar e reorganizar dados vistos pelas lentes da XML.

Java. Java é uma linguagem de programação orientada a objetos desenvolvida pela Sun Mi-crosystems. Essa linguagem possibilita aos programadores desenvolver aplicações que funcio-nem na Internet. O Java é usado para desenvolver aplicações pequenas, chamadas de miniapli-cações, que podem ser incluídas em uma página HTML na Internet. Quando o usuário usa um navegador compatível com Java para abrir uma página que contém uma miniaplicação Java, o código da miniaplicação é transferido ao sistema do usuário e executado pelo navegador.

JavaScript. JavaScript é uma linguagem de criação de scripts orientada a objetos desenvolvi-da pela Netscape Communications para aplicações cliente/servidor. Ele permite que usuários tornem páginas Web mais interativas. Muitas pessoas confundem JavaScript com Java. Não há relação alguma entre essas duas linguagens. O JavaScript é uma linguagem bem básica e não tem semelhanças com a linguagem Java, que é sofisticada e complexa.

JavaBeans. JavaBeans é a arquitetura de componente neutra em relação à plataforma do Java. É usado para desenvolver ou montar soluções cientes de rede para ambientes de hard-ware e sistemas operacionais heterogêneos, dentro da empresa ou na Internet. O JavaBeans estende a capacidade “escreva uma vez, execute em qualquer lugar”, para desenvolvimento de componentes reutilizáveis. O JavaBeans executa em qualquer sistema operacional e em qualquer ambiente de aplicação.

ActiveX. O ActiveX é um conjunto de tecnologias da Microsoft que combina diferentes lin-guagens de programação em um site exclusivo e integrado. Antes do ActiveX, o conteúdo Web era constituído de textos e imagens estáticas bidimensionais. Com o ActiveX, os sites ga-nharam vida usando efeitos multimídia, objetos interativos e aplicações sofisticadas que criam uma experiência de usuário comparável à títulos de CD-ROM de alta qualidade. O ActiveX não é propriamente uma linguagem de programação, mas um conjunto de regras para compar-tilhamento de informações entre aplicações.

ASP. ASP (Active Server Pages) é uma tecnologia do tipo CGI (Common Gateway Interface)da Microsoft que permite criar páginas Web geradas dinamicamente no lado do servidor usan-do uma linguagem de criação de scripts. Como o ASP comunica-se com controles ActiveX e com outros programas OLE, os usuários podem aproveitar diversos geradores de relatório, controles gráficos e todos os controles ActiveX para os quais podem ser utilizados. O ASP também pode ser programado em VBScript ou JavaScript, permitindo que os usuários traba-lhem na linguagem de sua preferência.

Software baseado na Web é um software que é instalado e executa em servidores e depois é acessado por um computador pessoal em rede. O computador pessoal costuma usar um navegador Web para acessar o software hospedado em um servidor. Um exemplo disso é o Google Docs.

A CASE (computer-aided software engineering) é uma ferramenta para programadores, ana-listas de sistemas, analistas de negócio e desenvolvedores de sistema que ajuda a automatizar o desenvolvimento de software e ao mesmo tempo melhorar a qualidade de software.

Ela é uma combinação de ferramentas de software e métodos estruturados de desen-volvimento de software. As ferramentas automatizam o processo de desenvolvimento de software, ao passo que as metodologias ajudam a identificar os processos a serem automa-

FERRAMENTAS CASE

Page 17: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-17

tizados com ferramentas. Ferramentas CASE costumam usar elementos gráficos ou dia-gramas para ajudar a descrever e documentar sistemas e deixar mais claras as interfaces ou interconexões entre os componentes (ver Figura GT2.5). Elas em geral estão integradas, permitindo que os dados sejam transmitidos de ferramenta para ferramenta.

Categorias de ferramentas CASE. Ferramentas CASE suportam aspectos individuais ou estágios do processo de desenvolvimento de sistemas, grupos ou aspectos relacionados, ou o processo como um todo. Ferramentas Upper CASE (U-CASE) concentram-se principal-mente em aspectos de projeto de desenvolvimento de sistemas, por exemplo, ferramentas que criam diagramas de fluxo de dados ou de relacionamento de entidades. As ferramentas lower CASE (L-CASE) auxiliam a programação e atividades relacionadas, como testes, em estágios avançados do ciclo de vida. Ferramentas Integrated CASE (I-CASE) incorporam a funcionali-dade das ferramentas U-CASE e L-CASE e oferecem suporte a várias tarefas por todo o ciclo de desenvolvimento de software.

Ferramentas CASE são subdivididas em duas categorias: conjunto de ferramentas e workbenches. Um conjunto de ferramentas é uma coleção de ferramentas de software que automatiza um tipo de tarefa de software ou uma fase do processo de desenvolvimento de software. A subcategoria CASE workbench é uma coleção de ferramentas de software que se inter-relacionam com base em pressupostos comuns sobre a metodologia de desenvolvimento empregada. Um workbench também usa o repositório de dados que contém todas as infor-mações técnicas e de gestão necessárias para construir o sistema de software. De modo ideal, workbenches oferecem suporte durante todo o processo de desenvolvimento de software e ajudam a produzir um sistema documentado e executável.

Como a maioria das ferramentas CASE tem natureza gráfica e a habilidade de construir protótipos funcionais rapidamente, usuários sem treinamento técnico podem participar mais ativamente do processo de desenvolvimento. Eles podem ver como o sistema completo ficará antes que seja construído, o que resulta em menos mal-entendidos e erros de design.

O uso de ferramentas CASE ajuda a tornar mais fácil a revisão de uma aplicação. Quando revisões são necessárias, só é preciso modificar especificações no repositório de dados, e não no código-fonte. Isso também permite que sistemas protótipos sejam desenvolvidos com mais

Figura GT2.5 Tela de uma ferramenta CASE.

Page 18: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-18 Guias de Tecnologia

rapidez e facilidade. Algumas ferramentas CASE ajudam a gerar códigos-fonte diretamente, com benefícios significativos.

Mas elas também têm algumas desvantagens. A falta de suporte à gestão de ferramen-tas CASE dentro das organizações pode ser um problema. As CASE são caras para instalar, e o custo de treinamento de desenvolvedores é alto, o que torna seu uso adequado custoso também. Muitas empresas não sabem como medir a qualidade ou a produtividade no desen-volvimento de software e, por isso, acham difícil justificar as despesas de implementação de ferramentas CASE. Além disso, a receptividade de programadores profissionais pode influen-ciar bastante a eficiência dessas ferramentas. Muitos programadores que já dominam uma abordagem de desenvolvimento hesitam em adotar um novo método.

GT2.5 Questões e tendências de softwareA importância do software em sistemas de computador trouxe novas questões e tendên-cias para os gerentes organizacionais. Entre elas, avaliação e seleção de softwares, licença de software, atualizações e defeitos de software, malware, sistemas abertos, softwares de código-fonte aberto, shareware, pirataria de software, arquitetura orientada a serviços e computação autônoma.

Há dúzias ou até mesmo centenas de pacotes de software para praticamente qualquer função. A avaliação e a seleção do software é uma decisão difícil e sofre a influência de diversos fa-tores. A primeira parte do processo seletivo envolve entender as necessidades de software da organização e identificar o critério que será usado na tomada de decisão. Uma vez que os re-quisitos de software são estabelecidos, produtos de software específicos devem ser avaliados. Uma equipe de avaliação, composta por representantes de cada um dos grupos que terá um papel na construção e no uso do software, deve ser escolhida. A equipe irá estudar as alter-nativas propostas e encontrar o software que prometa ser a melhor opção para aquilo que a organização precisa e o que ele oferece.

Licença proprietária. Fornecedores gastam tempo e dinheiro desenvolvendo produtos. Para proteger esse investimento, eles precisam impedir que o software seja copiado e distribuído por indivíduos e outras empresas de desenvolvimento de software. Uma empresa pode ad-quirir os direitos autorais do software que produz, o que significa que o Copyright Office dos Estados Unidos garante às empresas o direito legal exclusivo de reproduzir, publicar e vender o software.

Licença de código-fonte aberto. Existem também licenças de software de código-fonte aberto. Software de código-fonte aberto pode ser distribuído e vendido livremente. Alguns exemplos de software de código-fonte aberto populares incluem GNU General Public License (licença pública geral), BSD e Licença Apache 2.0.

Software licenciado sob licença de código-fonte aberto precisa ser livre para ser redistri-buídos por qualquer pessoa, e o software precisa ser distribuído com o código-fonte junto com o direito de modificar o código-fonte e de produzir trabalhos derivados sob os mesmos termos da mesma licença. Para mais informações, ver Open Source Initiatives “Open Source Defini-tion” em http://www.opensource.org/docs/osd.

Outra questão de interesse para a gestão organizacional são as atualizações de software (o que também é conhecido como manutenção de software). Fornecedores de software costumam revisar seus programas e vender novas versões. O software revisado pode oferecer melhorias importantes ou, por outro lado, oferecer pouco em termos de capacidades adicionais. Além disso, o software revisado pode apresentar erros (bugs).

Decidir comprar ou não o software mais novo é um problema para empresas e adminis-tradores de SI. É também difícil decidir ser ou não uma das primeiras empresas a comprar e obter vantagens estratégicas de novo software antes dos competidores, arriscando encontrar bugs que não haviam sido descobertos.

AVALIAÇÃO E SELEÇÃO DE SOFTWARE

LICENÇA DE SOFTWARE

ATUALIZAÇÕES DE SOFTWARE

Page 19: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

2 • Software GT2-19

Um software de qualidade é usável, confiável, sem defeitos, tem bom custo-benefício e é passível de manutenção. Entretanto, é muito frequente que o código do programa seja ine-ficiente, mal projetado e repleto de erros. Defeitos de software arruinaram o lançamento de um satélite europeu, atrasaram a abertura do Aeroporto Internacional de Denver por um ano e destruíram uma missão da NASA a Marte. Em outro exemplo, no mesmo dia em que a Microsoft lançou o Windows XP, a empresa postou 18 megabytes de patches em seu site: correção de bugs, atualizações de compatibilidade e aprimoramentos.

Com nossa dependência de computadores e redes, os riscos ficam cada vez maiores. De acordo com o Software Engineering Institute (SEI), programadores profissionais co-metem em média 100 a 150 erros a cada mil linhas de código escritas. Usando a média do SEI, o Windows XP, com 41 milhões de linhas de código, teria mais de 4 milhões de bugs. A indústria reconhece o problema, mas ele é tão grande que apenas passos iniciais estão sendo dados. Um deles é melhorar o design e o planejamento no início do processo de desenvolvimento.

O conceito de sistemas abertos refere-se a um modelo de produtos de computador que tra-balham em conjunto. Atingir esse objetivo é possível pelo uso do mesmo sistema operacional com software compatível em todos os diferentes computadores que irão interagir uns com os outros em uma organização. Uma abordagem complementar é produzir aplicativos que rodem em todas as plataformas. Se hardware, sistema operacional e software de aplicações forem projetados como sistemas abertos, o usuário poderá comprar o melhor software para aquilo que precisa sem se preocupar se irá rodar em um tipo específico de hardware. Como exemplo, a maioria dos pacotes de software de aplicação da Apple Macintosh não roda em computa-dores Wintel (Windows-Intel). No entanto, o Windows roda em computadores Apple mais novos com processadores Intel. Nenhum deles roda em mainframes.

Certos sistemas operacionais, como o UNIX, rodam em quase todos os tipos de máqui-nas. Assim, para atingir o objetivo de sistemas abertos, as organizações costumam usar UNIX nos desktops e em máquinas maiores para que os softwares produzidos para UNIX opere em todas as máquinas. Avanços recentes em direção a sistemas abertos envolvem o uso da lingua-gem Java, que pode ser executada em vários tipos de computadores, no lugar de um sistema operacional tradicional.

Sistemas abertos não devem ser confundidos com software de código-fonte aberto. O soft-ware de código-fonte aberto está disponível na forma de código-fonte sem custos para os desenvolvedores. Há muitos exemplos desse tipo de software, incluindo GNU (GNU’s NOT UNIX) (gnu.org/), desenvolvido pela Free Software Foundation (fsf.org/), o Linux kernel (kernel.org/), o servidor Web Apache (apache.org/), o servidor de e-mail sendmail SMTP (Send Mail Transport Protocol) (sendmail.org/), a linguagem de programação Perl (perl.com), o navegador Mozilla Firefox (mozilla.org/), o Oracle Open Office (oracle.com), o An-droid OS da Google e o Symbian v3.

Software de código-fonte aberto é, em muitos casos, mais confiável que software pro-prietário. Como o código está disponível para muitos desenvolvedores, vários bugs são des-cobertos – mais cedo e rapidamente, sendo corrigidos de imediato. O suporte para software de código-fonte aberto também está disponível a partir de empresas que fornecem produtos derivados do software, como, por exemplo, Red Hat para Linux (redhat.com/). Essas empre-sas oferecem serviços pagos de treinamento e assistência técnica.

O Linux foi usado para criar os impressionantes efeitos da trilogia O Senhor dos Anéis. Mais de 200 estações de trabalho e 450 servidores de processador duplo rodaram o Red Hat Linux 7.3 para identificar os recursos do sistema e distribuir tarefas de renderizações, como sombras e reflexos, através de processadores ociosos para acelerar a criação de cenas.

Em termos de segurança e estabilidade, o código-fonte aberto é melhor porque várias pessoas podem encontrar problemas ocultos e erradicá-los mais cedo. Além disso, alguns em-presários têm receio de ser bloqueados por software proprietário.

Software de código-fonte aberto algumas vezes é produzido por fornecedores, mas cos-tuma ser produzido por grupos de voluntários. Ele normalmente é distribuído a custo baixo

DEFEITOS DE SOFTWARE

SISTEMAS ABERTOS

SOFTWARE DE CÓDIGO-FONTE ABERTO

Page 20: Guia de Tecnologia 2 Software - Meus achados preciosos · de sistema, como, por exemplo, o sistema operacional (OS) Windows, possuem funções au- torregulatórias importantes para

GT2-20 Guias de Tecnologia

ou sem custo algum por distribuidores que esperam ganhar dinheiro com treinamento, con-sultoria, produtos complementares e software personalizado. Inicialmente, isso não foi consi-derado confiável nem uma alternativa viável para o uso de software proprietário produzido por grandes empresas com reputação e recursos financeiros significativos. O Linux mudou essa percepção por meio do uso de software de código-fonte aberto; as empresas economizam muito sem comprometer qualidade, assistência e aprimoramentos futuros.

Shareware é um tipo de software cujo autor espera que o usuário pague uma quantia modesta pelo privilégio de usar o programa. Freeware é gratuito. Ambos ajudam a manter os custos de software baixos. Shareware e freeware costumam não ser tão poderosos quanto as versões profissionais (não têm o conjunto completo de funcionalidades), mas a maioria dos usuários consegue o que precisa a um custo baixo. Eles estão disponíveis na Internet em grande quan-tidade (download.com). Um problema comum desse tipo de software é a eventual introdução de vírus ou de spyware. Alguns pacotes populares são o WinZip, o Adobe Reader, o Mozilla, o Zero Pop-up e o KaZaa.

SHAREWARE E FREEWARE