• Nenhum resultado encontrado

4.1 O COMPONENTE SOFTWARE

No documento Download/Open (páginas 161-167)

CAPÍTULO IV COMPUTADOR UMA NOVA MÍDIA

4.1 O COMPONENTE SOFTWARE

Os softwares são os componentes da engenharia da computação que especializam o uso das demais tecnologias empregadas, principalmente do hardware. “Em termos de emprego, a ponta de software da indústria é de duas vezes maior do que a ponta de hardware, com mais de 400 mil empregados nos Estados Unidos” (STRAUBHAAR, 1997, p. 207).

Com os softwares formados por milhares de pequenos programas de computador, se

31 São sistemas de arquivos que possibilitam representar conteúdos de multimídia e hipermídia, ou seja, a combinação de dados, textos, gráficos, imagens em movimento, som, objetos de realidade virtual, etc.

32 São objetos do mundo real representados nos computadores. Além das características físicas dos objetos ou pessoas, com a VR (virtual reality) podemos representar também os comportamentos naturais dos objetos representados. Assim, imergem o usuário em um ambiente de som e visão que lhe dá a impressão subjetiva de estar em uma realidade alternativa." (STRAUBHAAR, 1997, p. 204)

implementam os códigos com as instruções que irão determinar o conjunto de operações físicas e lógicas que devem ser realizadas pelo hardware. Segundo Straubhaar (1997, p. 207) "A indústria de software divide-se em três segmentos: companhias que escrevem programas de computador personalizados, companhias que vendem softwares pré-empacotados e companhias que projetam sistemas integrados por computador”33.

Somente a indústria de software pré-empacotado é um negócio de mais de US$20 bilhões por ano nos Estados Unidos, cerca de cinco vezes o tamanho de uma indústria de software muito conhecida, os filmes de cinema” (STRAUBHAAR, 1997, p. 207).

Uma outra maneira de categorizar software é segundo seus objetivos e complexidade, ou seja, consiste em agrupá-los segundo funções mais amplas, em algo maior, quando, então, podemos chamar o conjunto de sistema ou subsistema de software.

Nos subsistemas de software coexistem programas que podem ser agrupados em diversas categorias. Em nosso exemplo de Modelo de sistema de mídia digital, podemos agrupar em uma categoria denominada Sistemas de Administração de Conhecimento outros subsistemas, tais como Sistemas Gerenciadores de Bancos de Dados -SGBD's34, Sistemas para Controle de Acesso aos Conteúdos, Sistemas para Indexação Semântica dos Conteúdos. O Sistema de Administração de Conhecimento, por outro lado, trabalhará em conjunto com outras categorias de software, dentre as quais os Sistemas Operacionais, "programas de computador que fornecem funções básicas de operação" (idem, p. 207).

Isso posto, podemos imaginar um subsistema de software para o Modelo de sistema de mídia digital, composto por um grande número de programas, agrupados em diversas categorias, e estruturados em um modelo lógico similar ao da figura 8 - Modelo de Subsistema Aplicativo apresentada em anexo.

À esquerda, na função de entrada (IN), os conteúdos presentes em diversos formatos analógicos, comuns ao mundo exterior, terão que ser codificados pelo software para um formato digital, antes de serem introduzidos nos computadores. O processo de digitalização implica codificação binária, explicada em detalhe no decorrer deste capítulo, para representar o conteúdo analógico original. Adicionalmente é feita a compressão das informações codificadas, visando sincronizar a velocidade de entrada da informação digitalizada com a velocidade de transmissão e armazenamento dos hardwares dos computadores que estejam

33 Esses softwares também são conhecidos como software embarcado. (Nota do autor).

34Software especializado em armazenamento e recuperação dos conteúdos em dispositivos DASD - Direct

sendo utilizados. A compressão – algoritmo matemático que reduz a quantidade de informações binárias para reduzir o tamanho dos arquivos – também irá viabilizar esses processos físicos em termos de tempo necessário ao processamento e do espaço ocupado nos dispositivos de hardware.

Na função de saída (OUT) responsável pela transmissão do conteúdo através da rede de telecomunicações, fica caracterizada a necessidade de software para comprimir e converter o conteúdo para o meio físico no qual a informação será transmitida. Se, por exemplo, formos utilizar linhas telefônicas analógicas como veículo de transmissão do conteúdo digital, antes de iniciar a transmissão teremos que converter o sinal digital para analógico. Ou seja, a conversão torna-se necessária para adequar a informação a ser transmitida aos veículos que serão utilizados, e que na figura 8 são apresentados por símbolos representativos da Internet, satélite, (ondas de) rádio, cabo ótico, telefone, etc. Em alguns casos são desenvolvidos hardware e softwares embarcados para a realização dessas tarefas. Um exemplo muito conhecido desse tipo de solução é o MODEM – Modulator / Demodulator, equipamento que “converte dado digital para tons analógicos que podem ser transmitidos pela rede telefônica" (STRAUBHAAR, 1997, p. 201).

Por último, quando da apresentação do conteúdo ao receptor, os processos de descompressão e decodificação realizados pelo software irão possibilitar a reversão do conteúdo para a forma original, ou para sua adequação (formatação) ao equipamento periférico onde será apresentada.

Os softwares responsáveis pelos processos descritos anteriormente, relacionados às funções de digitalização, pertencem a uma categoria de software denominada CODEC – Codificação e Decodificação. O estabelecimento de padrões de codec, aceitos e adotados pelo mercado e indústria de desenvolvedores de hardware e software, irá possibilitar o compartilhamento dos conteúdos digitais, fazendo com que possamos reproduzir os conteúdos de arquivos por meio de grande variedade de programas aplicativos, em computador, espaço e tempo diferentes. Simultaneamente, os CODEC precisam equacionar, ainda, problemas relacionados ao tamanho dos arquivos gerados, de forma a fazer frente às limitações físicas e econômicas relacionadas ao processamento, armazenamento e transmissão de grandes volumes de informação, principalmente em caso de arquivos com imagens em movimento e som sincronizados. No entanto, antes de detalharmos as particularidades acerca da categoria de software de CODEC, devemos ampliar um pouco mais nossa compreensão acerca das

diversas categorias de softwares existentes.

O agrupamento de softwares em diversas categorias funcionais, embora bastante sujeito a controvérsias, nos dá uma razoável idéia da diversidade existente. Dentre as categorias mais conhecidas estão os sistemas operacionais, específicos para cada arquitetura de hardware, tais como computadores, equipamentos de telecomunicações, telefones celulares, etc. Outras categorias são os softwares de comunicação em redes de computadores, os softwares de linguagens de programação, os softwares de gerenciamento e administração de dados, os softwares de automação de escritórios ou de produtividade pessoal; os softwares de computação gráfica, os softwares aplicativos para processamento de dados corporativos, os softwares de processamento de informações gerenciais, os softwares de navegação em Internet e inúmeras outras categorias.

As diversas categorias de softwares operam em "camadas" distintas, e comunicando- se entre si e com o hardware. Os sistemas operacionais operam na camada mais baixa, no mais baixo nível, ou seja, diretamente em contato com o hardware, acionando e controlando as operações físicas (gravação em disco, por exemplo) e lógicas (processamento de algoritmos, cálculos, movimentações de conteúdos em memória, etc). Esse conceito de camadas se aplica também para a divisão das categorias de software em sub-camadas. Com esse procedimento, programas aplicativos da categoria dos sistemas operacionais podem ser separados em sub-camadas. O componente da sub-camada de mais baixo nível dos sistemas operacionais é denominado de kernel35 e acima dele inúmeras outras sub-camadas de programas da mesma categoria podem operar. São aplicativos tais como interfaces gráficas, gerenciadores de arquivos e outros, que funcionam acima e em comunicação direta com o kernel do sistema operacional.

Em camadas superiores e em ligação estreita com o sistema operacional, funcionam inúmeros softwares de outras categorias, tais como os de conexão de computadores em redes ou de automação de escritório (editor de texto, planilha, etc).

Nesses casos, os aplicativos da camada superior, ou de mais alto nível, são dependentes do sistema operacional para realizar as operações com o hardware. Se, por exemplo, um programa aplicativo de edição de texto necessitar "abrir" um arquivo contendo um texto, ou seja, transferir o texto contido no arquivo armazenado em dispositivo DASD para

35 Também denominado software básico, é o núcleo, a parte essencial do sistema operacional responsável pelo controle e acionamento dos componentes físicos dos computadores .

a memória do computador e apresentar a primeira página no monitor de vídeo, através de uma interface GUI36 X-Windows, terá que "solicitar" ao sistema operacional que acione diversos recursos de hardware para que essas operações sejam realizadas. Na figura 11 - Modelo de camadas e categorias de software típicas de sistemas LINUX, apresentada em anexo apresentamos contendo inúmeras camadas do sistema GNU37/Linux, com softwares de diversas categorias.

Diante do que foi exposto acerca das categorias e camadas de software podemos concluir que, para funcionar apropriadamente, os programas são dependentes uns dos outros e, todos, dos sistemas operacionais. Estes, por sua vez, são altamente dependentes das arquiteturas do hardware.

Existem sistemas operacionais preparados para operar em uma única plataforma de hardware, como são os casos dos sistemas operacionais OS/400 da IBM e o Windows da Microsoft, que operam respectiva e exclusivamente nas plataformas de hardware IBM AS-40038 e INTEL 80x8639,. Dizemos que os aplicativos, bem como os sistemas operacionais desse tipo não são portáveis, ou seja, não operam em outras plataformas ou arquiteturas de hardware que utilizem processadores diferentes, sem um extenso trabalho de adaptação dos programas para o processador da nova plataforma.

Existem outros sistemas operacionais que são portáveis para inúmeras plataformas, dentre os quais destacam-se os sistemas operacionais UNIX40 e LINUX41, que operam em mais de 200 plataformas diferentes de hardware, inclusive nas plataformas IBM AS-400 e INTEL 80x86.

Com o intuito de completar nossa compreensão acerca de software, passaremos agora a uma rápida explicação sobre o que está envolvido em sua construção.

36 Interfaces gráficas com o usuário (GUIs) usam ícones e símbolos para gerar comandos para os computadores" (STRAUBHAAR, 1997, p. 196)

37 GNU é o acrônimo para GNU is Not UNIX

38 A arquitetura AS-400 da IBM compõe uma série de minicomputadores para uso em pequenos negócios e departamentos de grandes empresas, lançado em 1988 e ainda em produção nos dias de hoje. Essa arquitetura utiliza processadores RISC – Reduced Instruction Set Code e suporta processamento multi-usuário e multi- tarefa.

39 Uma família de microprocessadores Intel que inclui os modelos Intel 80186, lançado em 1982, Intel 80286, Intel 80386, Intel 486, Intel 8086, e a linha Celeron e Pentium. Esses processadores foram utilizados Pela IBM na fabricação dos microcomputadores IBM PC-AT – Personal Computer.

40 O sistema operacional UNIX foi desenvolvido pelos Laboratórios Bell, foi liberado para as universidades em 1974, inclusive seu código-fonte, com permissão para alteração da fonte" (CASTELLS, 2001, p. 18) 41 Em 1991, [...] Linus Torvalds, um estudante de 22 anos da Universidade de Helsinki, desenvolveu um novo sistema operacional baseado no UNIX, chamado Linux, e o distribuiu gratuitamente pela Internet"

Inicialmente é importante esclarecer que o processo de construção de software se assemelha muito a outras áreas da engenharia, quanto às atividades de: a) engenharia da aplicação, responsável pela identificação do problema que pretendemos resolver e pela criação da solução para resolvê-lo; b) engenharia do produto, responsável pelo projeto e desenho do produto (no caso o sistema) que será capaz de resolver o problema identificado; c) engenharia de processo, responsável pela definição dos processos e dos meios para a fabricação do produto; e, d) engenharia de produção, responsável pela fabricação dos componentes e montagem do produto final.

Foge do objetivo desta análise discutir com maior profundidade as características das atividades de engenharia enumeradas como a, b e c. Na maioria das vezes as atividades dessas áreas são agrupadas sob a denominação de Análise de Sistemas. Interessa-nos apenas discutir as questões relativas ao item d que diz respeito à fabricação dos componentes de software, e isso é o que passamos a fazer.

Independentemente de sua categoria, um software terá que ser escrito pelo ser humano de tal forma que o computador possa "entender" quais operações deve realizar. A solução para essa exigência consiste na utilização de uma linguagem de programação com a qual as instruções, necessárias a realização das operações, possam ser especificadas sem margem de erro e de forma absolutamente clara. Ocorre que, conforme veremos detalhadamente mais adiante, os processadores entendem somente a linguagem binária, composta por combinações de zeros e uns, e portanto, de difícil utilização pelo ser humano. Para resolver esse problema temos que recorrer a softwares tradutores, capazes de converter os códigos de sinais escritos pelos humanos, denominado código fonte, para os códigos de sinais que o processador entende, denominado código executável.

Esses softwares “tradutores” compõem a categoria denominada de linguagens de programação e são bastante numerosos, estando COBOL, FORTRAN, C, C++, C#, Algol, Pascal, Basic, Pyton, PL/SQL, Natural e JAVA, entre as linguagens mais conhecidas e utilizadas.

As linguagens de programação realizam suas tarefas de tradução de código fonte de formas variadas. Algumas delas, pertencentes à sub-categoria das linguagens interpretadas, operam "entre" o sistema operacional e o aplicativo e fazem a tradução no exato momento em que o computador está realizando as operações. Têm como vantagem a realização das operações de forma mais "instantânea", no momento em que o código fonte é submetido ao

computador. Têm como desvantagens a necessidade da mesma tradução ser realizada tantas vezes quanto o programa for executado, levar mais tempo para realizar as operações em virtude da necessidade da intervenção do software tradutor antes de cada operação, e demandar mais espaço na memória do computador, para que nela caibam tanto o código-fonte do programa quanto o software da linguagem. Outras, pertencentes à sub-categoria das linguagens compiladas, fazem a tradução uma única vez e geram o código executável. Nesse caso, o resultado do processamento esperado só poderá ser obtido após a compilação do programa fonte porém os requisitos de espaço e velocidade de processamento são compensadores.

Embora as linguagens compiladas aparentem ser mais vantajosa que as interpretadas, uma desvantagem das compiladas está na dificuldade de portabilidade dos códigos executáveis para arquiteturas de hardware e de sistemas operacionais diferentes. Para resolver este problema de portabilidade, algumas linguagens funcionam em uma situação intermediária, na qual o código fonte é compilado, porém, o código executável gerado não é para um hardware específico e sim para um outro software "executor". O melhor exemplo de sucesso dessa subcategoria de linguagens é o ambiente de programação JAVA, cujo "executor" é denominado Java Engine. Essa técnica de separação de camadas possibilita que um código executável, gerado em qualquer plataforma de hardware possa ser processada em qualquer outra plataforma de hardware e de sistema operacional sem a necessidade de recompilação, desde que nela esteja instalado o "executor ". Isso explica o sucesso da JAVA. Ao tratar dos softwares “tradutores”, afirmamos que os computadores compreendem somente os valores zero e um. Chega o momento de detalharmos um pouco mais essa questão, de forma a compreendermos como os conteúdos do mundo real, quer sejam informações para processamento ou especificações de códigos de programação, são representados dentro dos computadores.

No documento Download/Open (páginas 161-167)