• Nenhum resultado encontrado

1.1 Contextualização do tema e definição do problema de pesquisa

1.1.1 Tema de Pesquisa

Segundo Oliveira (2002), a formulação do tema de pesquisa pode ser descritiva ou

normativa. O tema desta pesquisa, de caráter descritivo, está centrado nas dificuldades que a área de Sistemas Operacionais tem, historicamente, em atender às novas demandas e exigências que surgem, decorrentes da evolução tecnológica, e à evidente necessidade de propor soluções para amenizar e resolver tais dificuldades. As evidências são apresentadas no capítulo 5.

A linha mestra do trabalho visa a identificação dos fundamentos conceituais e dos requisitos funcionais e não funcionais, bem como a especificação de uma nova estrutura de Sistema Operacional Baseado em Conhecimento (SOBC), de modo a permitir a construção de novas formas de abstrações que possibilitem a superação de problemas clássicos e recorrentes em sistemas computacionais.

1.1.2 Problema de Pesquisa

Buscando uma formulação mais específica, o problema de pesquisa é apresentado indicando de forma mais precisa as dificuldades que se pretende resolver.

Segundo o diretor de tecnologia de processamento de informações da agência DARPA (Defense Advanced Research Projects) Ronald J. Brachman:

“(…) infelizmente, os melhoramentos constantes na velocidade dos processadores apresenta duas dificuldades: enquanto nos dão a oportunidade de construir grandes e melhores coisas, eles inexoravelmente nos conduzem a fazer coisas grandes e, bem, coisas muito grandes. O tamanho dos sistemas de software está aumentando num espiral virtualmente descontrolado – hoje é comum encontrarem-se aplicações que ocupam 50Mbytes e que possuem 5 milhões de linhas de código – e nós sabemos que este crescimento em complexidade inevitavelmente conduz a sérias e novas vulnerabilidades. Sob a perspectiva de segurança, maior complexidade significa mais possibilidades para um intruso encontrar caminhos para entrar; sob a perspectiva de robustez, mais elementos significam mais caminhos que podem conduzir a erros; sob a perspectiva de manutenção, mais código significa que os custos de manter as coisas rodando crescem continuamente; e, sob a perspectiva de treinamento, significa que mais pessoas precisam gastar mais tempo aprendendo como usar sistemas baseados em computador. E eu ainda não toquei em algo que nos afeta todos os dias – a chamada usabilidade dos nossos sistemas.Tudo isto nos conduz a uma conclusão muito clara: nós necessitamos de alguma coisa dramaticamente

diferente. Nós não podemos meramente aumentar a capacidade e velocidade dos nossos

computadores. Nós não podemos somente fazer uma engenharia de software melhor. Nós

precisamos mudar nossa perspectiva em sistemas computacionais e mudar a trajetória

atual(…)” Brachman(2002).3

O cenário apresentado anteriormente deve-se, em parte, à enorme demanda por novas soluções que a sociedade impõe ao mercado e que, portanto, fazem com que as empresas tenham que produzir soluções em software cada vez mais rápido. Este processo conduz às questões de reaproveitamento de esforço (código, conhecimento, recursos financeiros, etc) para “não ser necessário reinventar a roda”. Na área da pesquisa também existe muita pressão por prazos e resultados, o que induz a adoção de uma base estável como forma de ganhar tempo e concentrar esforços no alvo dos projetos.

Contudo, há um outro aspecto a ser considerado e que está relacionado à

virtualização do operador de computador4. À medida que ocorrem a evolução tecnológica e a miniaturização dos computadores, várias funções vêm sendo incorporadas ao sistema na forma de comandos e interpretadores de comandos. A figura do operador desapareceu no contexto de computadores desktops (notebooks e palmtops) e surgiu a figura do usuário.

Hoje quem usa um computador tem que saber como operá-lo, ou seja, como preparar os dados, como recuperar arquivos, como configurar programas, onde colocar os arquivos, em que formato armazenar, quando realizar uma cópia de segurança (backup), etc. Ou seja, o processo de virtualização do operador transformou o sistema operacional num facilitador de uso (uma espécie de proxy server) e o usuário num operador especializado. Esta necessidade de aprender a operar é, por si só, um fator de exclusão social, na medida em que pessoas necessitam ser treinadas a operar “botões lógicos” para serem aproveitadas pelo mercado de trabalho. E como a área de computação evolui muito rapidamente, esta necessidade de (re) treinamento torna-se algo tão corriqueiro que chega a ser óbvia no modelo atual.

Este caráter de virtualização do operador pode ser caracterizado a partir da seguinte afirmação:

“Na Engenharia Semiótica, a interface é vista como uma mensagem unidirecional enviada dos projetistas para os usuários. Segundo esta abordagem, a mensagem é um artefato de metacomunicação, já que não apenas os projetistas se comunicam com os usuários, mas a própria interface troca mensagens com os últimos. Neste contexto, a interface é um conjunto de signos que são representações que os projetistas usam para comunicar aos usuários como manipular o sistema para atingir seus objetivos” De Souza (1993).

4 Posição ocupada pelo pessoal responsável por efetivamente operar computadores, executando funções

como montar discos e fitas, retirar relatórios da(s) impressora(s), disparar a execução de programas e acompanhar o funcionamento do sistema como um todo.

Um outro conceito que influencia a forma de concepção das soluções computacionais hoje é decorrente da introdução do conceito de multiprogramação. Isto porque, até o surgimento deste conceito (como forma de otimização do uso de recursos), os programas eram enfileirados ou agrupados em lotes para serem executados. Cada programa assumia o controle da máquina durante sua execução e somente ao término de um programa é que o próximo da fila iniciava a sua operação.

A virtualização do hardware, introduzida pelo conceito de multiprogramação, acabou com o enfileiramento de programas através da divisão do tempo de processador em pequenas fatias denominadas time-slices conforme caracterizado pela Figura 2. A decorrência imediata disto foi o surgimento dos problemas de proteção (código e dados) que estão presentes até hoje.

Figura 2 - Virtualização do processador através de multiprogramação

E finalmente, mas não menos importante, é o conceito de programa. Um programa é uma abstração muito mais complexa do que aquela considerada nos estudos de Engenharia de Software. Lá são considerados os aspectos funcionais e não funcionais de uma solução computacional para um problema qualquer.

No entanto, a questão é mais complexa. Na realidade, um programa representa a intromissão virtual de uma pessoa5 (ou grupo de pessoas) dentro da máquina do usuário. Um programa implementa decisões e ações que foram concebidas em contextos diversos, por pessoas com as mais diversas intenções e competências. A Figura 3 caracteriza esta situação demonstrando que a dificuldade de interação é inerente ao próprio modelo. Em verde estão representados os grupos que desenvolvem o nível geralmente denominado 5Na figura do programador ou equipe de desenvolvimento.

de: software básico. A seguir aparecem os desenvolvedores do sistema operacional própriamente dito. Acima destes estão os desenvolvedores de software aplicativo. Cada equipe com seus particulares objetivos e requisitos de performance.

Figura 3 - Intromissão virtual de pessoas na máquina do usuário

O surgimento do conceito de agentes representa uma forma inequívoca desta interpretação. O agente comporta-se como se fosse a incorporação virtual do programador ou da equipe que tem o conhecimento sobre o funcionamento de um programa ou área de aplicação. Ou seja, incorpora o fato de que, na realidade, quem tem o controle da situação é esta entidade externa. Embora seja uma solução interessante, esta metáfora é construída sobre uma base insegura (multiprogramação) onde não são considerados os aspectos de “convivência mútua” entre os “representantes dos vários desenvolvedores externos”6.

Este aspecto, em particular, colabora de forma importante para agravar as questões de segurança. Isto porque cada programa, individualmente, não sabe o que estão fazendo ou pretendem fazer os demais programas que, em determinado momento, concorrem pelas fatias de tempo do processador. E o sistema operacional também não tem esta informação. Assim, o risco é iminente a cada fatia de tempo.

6Sob este aspecto cabe destacar que as primitivas de sincronização, geralmente fornecidas pelos sistemas

operacionais, têm a finalidade de sincronizar (e/ou facilitar a comunicação entre) programas, sob o ponto de vista de requisitos funcionais e não funcionais. O conceito de convivência mútua envolve a finalidade e o resultado da ação da execução de programas em um ambiente de multitarefa.

Portanto, o tripé conceitual: virtualização do operador, virtualização do

hardware e conceito de programa, caracterizam os fundamentos básicos do atual

modelo de construção de sistema operacional, em particular, e de soluções em software, em geral. E, conforme será mostrado neste trabalho, problemas identificados já há quase 3 décadas persistem através das várias gerações de tecnologias desenvolvidas sobre este tripé conceitual.

A preocupação com qualidade em projetos de sistemas operacionais não é recente. Nicol em 1987 afirmava que:

“A história recente· destaca o esforço dos projetistas de sistemas em aspectos quantitativos (processadores mais rápidos, maior capacidade de memória, maior eficiência, tempo de resposta mais rápido, etc). Em função disto, menos atenção tem sido dada à qualidade do serviço prestado ao usuário. Como conseqüência, um maior esforço têm sido dedicado a interfaces gráficas de comunicação, facilitando a interação com o usuário”.

Fazendo-se uma analogia entre a situação acima descrita e aquela associada à filosofia de favorecer o programador em detrimento do usuário, pode-se afirmar que, do ponto de vista do usuário final, a atual tecnologia de sistemas operacionais pode ser classificada no mesmo nível evolutivo daquele caracterizado pelo advento das linguagens de alto nível (Figura 4).

Figura 4 - Estágio atual de evolução dos sistemas operacionais

O usuário já pode usar comandos mais abstratos para operar a máquina, através de ícones e interfaces gráficas, mas ainda tem que se preocupar com o nome de pastas e arquivos e configurações técnicas como url,smtp,dns,etc., as quais muitas vezes fogem do seu escopo de conhecimento e o impedem de ser produtivo em seu ambiente de

trabalho. Para exemplificar esta situação, é apresentada na Figura 5 a tela principal de configuração do browser Internet Explorer o qual é amplamente utilizado atualmente. São sete pastas (algumas contendo sub-pastas) contendo opções de configuração que nem sempre o usuário sabe exatamente qual a sua finalidade.

Figura 5 - Exemplo de opções de configuração do browser Internet Explorer

1.1.3 Questões de Pesquisa

Segundo Hoppen, Lapointe e Moreau (1996), a categoria questão de pesquisa

corresponde às várias dimensões do estudo. Tem por objetivo permitir a verificação sobre a adequação entre o método utilizado e o problema escolhido.

Observa-se que as várias propostas de sistemas operacionais existentes não enfocam adequadamente a questão do atendimento às demandas crescentes e cada vez maiores por novas funcionalidades. Portanto, esse é um amplo campo a ser explorado. Nele, insere-se a realização deste trabalho, cujo enfoque principal é, exatamente, o de propor os fundamentos de uma nova arquitetura de sistema operacional capaz de atender àquelas demandas.

Sob esta perspectiva, o problema de pesquisa é apresentado na forma interrogativa:

Como construir um novo modelo de sistema operacional baseado em abstrações de conhecimento e comportamento inteligente?

A partir das considerações iniciais apresentadas nas seções anteriores, as seguintes questões devem ser evidenciadas sob a forma interrogativa:

1. Quais as características ao atual modelo de Sistema Operacional? 2. Quais as demandas que deverão surgir no futuro?

3. Como tradicionalmente são atendidas as demandas?

4. Qual é o resultado da utilização do atual modelo de Sistema Operacional?

5. Como superar as deficiências através do emprego de técnicas utilizadas em outras áreas do conhecimento?

6. O que é conhecimento e comportamento inteligente no contexto de um sistema operacional?

1.2

Objetivos

Segundo Ruiz (2002), a explicitação dos objetivos de pesquisa concorre para caracterizar o seu alcance e, portanto, para uma nova forma de delimitação do tema. Os objetivos estabelecidos nesta pesquisa serão apresentados na forma de objetivo geral – forma genérica - e objetivos específicos – forma exata(SILVA NETO,2000,pág.86).Também são identificados alguns pontos críticos e dificuldades para a realização da pesquisa.

1.2.1 Objetivo Geral

Como objetivo geral é proposta a elaboração dos fundamentos conceituais de um novo modelo de sistema operacional baseado em abstração de conhecimento e comportamento inteligente.

1.2.1 Objetivos Específicos

Para um perfeito entendimento do objetivo geral proposto faz-se necessária a definição exata do propósito a que se destina. E, para tanto, deve ser analisado mais detalhadamente o termo: “conceito de mundo”.

Um aspecto de fundamental importância nos projetos de robótica, e que é negligenciado pelos projetistas de sistemas operacionais, é o fato de que, em projetos de robótica (considerando-se robôs autônomos), geralmente há uma função de mapeamento

entre o ambiente e uma representação interna do mesmo, denominada “modelo de mundo". Ou seja, há alguma forma de representação do ambiente onde o robô vai operar. E é com base neste modelo de mundo que as decisões são tomadas.

Embora os sistemas operacionais também utilizem registros (na forma de diretórios especiais -/proc no Linux; registry do Windows, etc) para descrever seu estado em determinado momento, eles não apresentam um comportamento externo tão inteligente quanto aquele apresentado pelos robôs. Naturalmente, o escopo e a complexidade das aplicações são diferentes. Mas o aspecto filosófico é que deve ser destacado. E é justamente este o ponto de partida do projeto que ora está sendo desenvolvido.

O objetivo geral de pesquisa é tornado operacional na realização dos seguintes objetivos específicos:

1. Estabelecimento de uma base científica para sustentar o conceito de sistema operacional baseado em conhecimento, através de uma revisão bibliográfica dos itens envolvidos (cap 6);

2. Identificação de como o conceito de mundo, adotado em projetos de robótica, pode ser utilizado como base para a construção de uma nova abstração em sistemas operacionais (cap 6);

3. Especificação de uma infra-estrutura que permita a utilização do conceito de mundo como principal abstração sobre a qual as aplicações são desenvolvidas (cap 7);

4. Estabelecimento dos requisitos funcionais que devem ser apresentados por um Sistema Operacional baseado no conceito de mundo (cap 7);

5. Identificação das técnicas utilizadas em outras áreas do conhecimento e que possam ser agregadas de forma a permitir a construção da abstração de comportamento inteligente (cap 6).