Guia_Tecnologia_2 - Blog do Prof. PC

Transcrição

Guia_Tecnologia_2 - Blog do Prof. PC
Parte XXX
Guia de Tecnologia
2
Guias de Tecnologia
1
2
3
4
5
Hardware
Software
Dados e Bancos de Dados
Telecomunicações
Visão Técnica da Análise e Projeto de Sistemas
Software
GT2.1
GT2.2
GT2.3
GT2.4
Noções básicas e tipos de software
GT2.5
Questões e tendências de software
Software de aplicação
Software de sistema
Linguagens de programação, desenvolvimento de software e
ferramentas CASE
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 funcionam nem executam uma operação sem que recebam instruções. Essas instruções são conhecidas como software ou programas, aplicações ou plug-ins de computador. O software permite
que o usuário customize um computador ou dispositivo.
NOÇÕES BÁSICAS
DE SOFTWARE
O software consiste em sequências de instruções que um computador, uma rede ou um dispositivo 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).
TIPOS DE SOFTWARE
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 processador 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 computador 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 autorregulató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.
re de aplicaç
ftwa
ão
So
are de sistem
ftw
a
So
Hardware
Figura GT2.1 O software de sistema é um
intermediário necessário
entre o hardware e o software aplicativo
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á usamos 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 organizados para leitura.
• Aplicações de bancos de dados para desenvolver bancos de dados que organizam e recuperam 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 melhoria 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 Excel para criar aplicações de suporte à tomada de decisão, como alocação de recursos, sincronizaçã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ário
Microsoft Office
Código aberto
Open Office
Baseado na Web
Google Docs
Preço
Varia; a partir de US$ 59,95 (versã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 suportados
Windows; há uma versão para
o OS X da Apple
Windows, OS X, Linux, Solaris e vários outros sistemas
operacionais
Roda em qualquer sistema
operacional que ofereça um
navegador Web como IE, Firefox, Chrome ou Safari
Online e offline
Principalmente offline; a versã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, InfoPath
Math, Draw
Desenho, Formulários
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) desenvolvido 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 sistemas 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 integrados, 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 empresa 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 diferentes 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 comuns 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 é imediatamente anunciada a uma lista de usuários que você selecionou para serem alertados
sobre a sua presença online.
GT2.3 Software de sistema
O 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 sistema) 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
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, software 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, interpretadores e tradutores.
PROGRAMAS DE
CONTROLE DE
SISTEMA
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 supervisiona a operação global do computador, incluindo o monitoramento do status do computador, 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 tempo. 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 recebe 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 sistema 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 mesmo 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 sistemas 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 Oracle. 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 recursos, consolidação de servidor e gerenciamento de dados.
GT2-6
Guias de Tecnologia
1. O gerenciamento de tarefas é a preparação, o agendamento e o monitoramento de tarefas 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 aplicaçã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 controlam 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 lidera 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 oferece 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 confiá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 versã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, ofereceria 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 à seguranç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 operacional. 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 multiprocessamento 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,
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 trabalhavam 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 mercado 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, atualmente é 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 memó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. Nenhum 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 sistemas 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 Windows 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 restauraçã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 corporativos (p.ex., o RHES, da Red Hat, o SLES, da Novell, e o z/OS, da IBM) geralmente executam em mainframes e em sistemas de médio porte. Sistemas operacionais corporativos oferecem 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 servidores corporativos também oferecem particionamento, um método de segmentação dos recursos do servidor que permite o processamento de diversas aplicações em um único sistema.
Sistemas operacionais para supercomputadores. Sistemas operacionais para supercomputadores visam atender o mercado de hardware para supercomputadores. A maioria desses sistemas
Symbian
Nokia com a Symbian Foundation
Sistema operacional de telefones
mais popular do
mundo
O Symbian v3 tem
código aberto,
qualquer um
pode usá-lo; versões anteriores,
no entanto, eram
proprietárias
Há várias lojas
diferentes. Alguns exemplos
são a loja Ovi,
da Nokia, a
Samsung Applications Store e a
AT&T Media Mall
Ericsson R380
Sim
O Symbian provavelmente será
usado em tablets
Fabricante
Comentários
Quem pode usar o
sistema operacional
em seus dispositivos?
Loja oficial de aplicações
Primeiro telefone
Plena capacidade
multitarefas; executa várias aplicações
ao mesmo tempo
Também usado em
Foi usado originalmente
em pagers bidirecionais
Sim
Atualmente, não há
dispositivo algum que
rode Windows Phone 7
disponível ao público
iPod Touch e versão
modificada no iPad
iPhone original
A partir do 4.0, o iOS
terá capacidade
multitarefas plena
Ainda não anunciado
Tem a maior loja de
aplicações e que
mais cresce, com
mais de 200 mil
aplicações; todas
as aplicações precisam ser aprovadas
pela Apple
Netbooks, tablets,
leitores de e-book,
tocador de mídia
portátil
Sim
G1
O mercado Android
tem a segunda
maior loja de
aplicações e a
segunda que mais
cresce, com mais
de 38.000 aplicações
Código aberto,
mas fortemente
controlado pela
Google
Código aberto sob
a licença Apache
2.0, ainda fortemente controlado
pela Google
Mudou a maneira
como os americanos encaram
telefones celulares
quando foi lançado
em 19/06/2007
Apenas Apple
Google com o
Open Handset
Alliance
Android
Apple
iOS
Ao contrário do Windows
Mobile, o Windows Phone 7 não possui multitarefas para aplicações de
terceiros; em vez disso,
as aplicações são pausadas quando trocadas
Mobile Marketplace
A App World foi criada para
competir com a loja de
aplicações do iPhone; as
aplicações podem ser adquiridas de outras fontes,
assim como costumava
ser feito antes do lançamento da App World
BlackBerry 6710 e 6720
Licenciados para fabricantes de hardware
pela Microsoft
O Windows Phone 7 é
uma revisão completa
do Sistema Operacional
para Smartphones da
Microsoft
Microsoft
Windows Phone 7
Apenas RIM
Smartphone mais popular
nos Estados Unidos
RIM (Research In Motion)
BlackBerry OS
Sistemas Operacionais de Smartphones
Sistema operacional
TABELA GT2.2
A HP tem planos de
usar o WebOS em
tablets
Sim
Palm Pre
Catálogo de aplicações Palm
Tanto componentes
de código aberto
quanto proprietário. A Palm cogitou
licenciar o WebOS
antes de ser comprada pela HP
Após uma sucessão
de decisões ruins
da Palm, a HP comprou a Palm principalmente pelo
WebOS
Palm (agora da HP)
WebOS
GT2-8
Guias de Tecnologia
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 paralelos.
Sistemas operacionais de interface gráfica com o usuário. Um sistema operacional de interface 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 interfaces 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 processamento com recursos de gerenciamento de tarefas que alocam recursos de computador para otimizar 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 primeiro 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 processadores 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 é implementada 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 extensã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 aplicaçã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 colocados 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 subsequente 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 computador 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 resultado, diversos sistemas operacionais podem existir na máquina real ao mesmo tempo.
GT2-10
Guias de Tecnologia
Programas de suporte ao sistema. Utilitários de sistema são programas criados para desempenhar 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 memó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 conhecidos como desfragmentadores ou ferramentas de diagnóstico e reparo, ajudam a organizar 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, dispositivos 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 computador 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 compiladores ou intérpretes, os quais são exemplos de programas de desenvolvimento de sistema. 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 programas 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.
A EVOLUÇÃO DAS
LINGUAGENS DE
PROGRAMAÇÃO
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 – é composto de dígitos binários. Um programa que usa esse nível de codificação é chamado de programa 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.
GT2-11
2 • Software
Máquina
1a
2a
Gerações
3a
4a
Linguagem
de máquina
Linguagem
assembly
Linguagens
procedurais
Linguagens
não procedurais
Linguagens
inteligentes
Incluem
comandos,
código mais
curto
Geradores de
aplicações,
comandos
especificam
resultados
Processamento
de linguagem
natural
Humano
0–1
Montam
Programação instruções
longa e difícil repetitivas,
código mais
curto
Figura GT2.2 A evolução das linguagens de
programação. A cada
geração são feitos progressos em direção à
linguagem natural.
5a
Linguagem
natural
Progresso
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 mnemô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 programa-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.
LINGUAGENS DE
ALTO NÍVEL
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.
(a)
Tradutor
Programa-fonte
CPU
Escrito por um
programador
Convertida por
um tradutor
Programa
objeto
Pronto para
executar como
código de máquina
(b)
Programa
objeto
Figura GT2.3 O processo de tradução de
linguagem.
Dados
CPU
Saída
Os dados são
inseridos
O programa é
executado
Os resultados
são produzidos
GT2-12
Guias de Tecnologia
Linguagens procedurais. Terceira geração (3G). As linguagens procedurais são o próximo passo na evolução de linguagens de programação orientadas ao usuário. São conhecidas 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 escrever, 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 linguagens de alto nível.
As linguagens procedurais exigem que o programador especifique, passo a passo, exatamente como o computador realizará uma tarefa. Uma linguagem procedural é orientada focando 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 linguagem 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-objeto é 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 linguagem 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 linguagem de programação para a comunidade de negócios. A intenção era fazer com que as instruçõ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 linguagem é 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 Visual 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 especifique 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 é requerido. 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 evolutivo. São algumas vezes conhecidas como linguagens de quinta geração ou linguagens inteligentes. 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.
2 • Software
GT2-13
Linguagens de programação objeto. Linguagens objeto foram criadas para se ajustar a novas 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 comportamental 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 abordar 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 relacioná-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 bancos, 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ância. 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 instâ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 armazenar 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 programador 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 solicitaçõ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, assim, novas mensagens são geradas.
Transmitir mensagens é o único meio de obter informações de um objeto, porque os atributos não são diretamente acessíveis. A falta de acessibilidade aos dados de um objeto é chamada 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
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 diferentes (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 matrícula para cada tipo de aluno (classes), levando em conta que as matrículas serão diferentes 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 complicada 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++ permanecendo C puro.
Employee
Name
Title
(Classe)
(Variáveis de classe)
Print
(Methods)
Contractor (Subclasse de funcionário)
Name
Title
Contract_number
Dollar_amount
Print
Horista
Paid weekly
Name
Title
(Subclasse de funcionário)
Print
Make_weekly_paycheck
(Subclasse de funcionários pagos
por semana)
Name
Title
Hourly_wage
Hours_per_week
Print
Make_weekly_paycheck - Redefinição
Salaried
(Subclasse de funcionários pagos
por semana)
Name
Title
Salary
Print - Redefinição
Make_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.)
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.
LINGUAGENS DE
PROGRAMAÇÃO
WEB E SOFTWARE
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 alterar 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 armazenados em uma rede de nós conectada por links (chamados de hiperlinks). Os usuários acessam 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 representar 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 costuma 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áginas 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 fontes 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, independente de plataforma, construída com Dynamic HTML, Java e JavaScript. O Netscape Netcaster, 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)
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 documentos 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 introduzir 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 poderosa 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 Microsystems. Essa linguagem possibilita aos programadores desenvolver aplicações que funcionem na Internet. O Java é usado para desenvolver aplicações pequenas, chamadas de miniaplicaçõ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 desenvolvida 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 hardware 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 linguagens 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 ganharam 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 compartilhamento 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 usando 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 trabalhem 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.
FERRAMENTAS CASE
A CASE (computer-aided software engineering) é uma ferramenta para programadores, analistas 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 desenvolvimento de software. As ferramentas automatizam o processo de desenvolvimento de
software, ao passo que as metodologias ajudam a identificar os processos a serem automa-
2 • Software
GT2-17
tizados com ferramentas. Ferramentas CASE costumam usar elementos gráficos ou diagramas 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 principalmente 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 funcionalidade 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 informaçõ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.
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 ferramentas 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 desenvolvimento 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 influenciar 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 software
A importância do software em sistemas de computador trouxe novas questões e tendências 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.
AVALIAÇÃO E
SELEÇÃO DE
SOFTWARE
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 fatores. 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 requisitos 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 alternativas 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 DE
SOFTWARE
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 adquirir 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 redistribuí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 Definition” em http://www.opensource.org/docs/osd.
ATUALIZAÇÕES DE
SOFTWARE
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 administradores 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.
2 • Software
GT2-19
DEFEITOS DE
SOFTWARE
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 ineficiente, 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 cometem 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.
SISTEMAS ABERTOS
O conceito de sistemas abertos refere-se a um modelo de produtos de computador que trabalham 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 computadores 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áquinas. 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 linguagem Java, que pode ser executada em vários tipos de computadores, no lugar de um sistema
operacional tradicional.
SOFTWARE DE
CÓDIGO-FONTE
ABERTO
Sistemas abertos não devem ser confundidos com software de código-fonte aberto. O software 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 Android OS da Google e o Symbian v3.
Software de código-fonte aberto é, em muitos casos, mais confiável que software proprietário. Como o código está disponível para muitos desenvolvedores, vários bugs são descobertos – 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 empresas 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 empresários têm receio de ser bloqueados por software proprietário.
Software de código-fonte aberto algumas vezes é produzido por fornecedores, mas costuma ser produzido por grupos de voluntários. Ele normalmente é distribuído a custo baixo
GT2-20
Guias de Tecnologia
ou sem custo algum por distribuidores que esperam ganhar dinheiro com treinamento, consultoria, produtos complementares e software personalizado. Inicialmente, isso não foi considerado 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 E
FREEWARE
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 quantidade (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.

Documentos relacionados