• Nenhum resultado encontrado

Métodos de Projeto de Sistemas Operacionais

4 MODELOS DE DESENVOLVIMENTO UTILIZADOS

4.4 Métodos de Projeto de Sistemas Operacionais

Existem métodos de desenvolvimento genéricos e métodos específicos para o desenvolvimento de sistemas operacionais e, estudá-los dá pistas sobre o quanto o porte de um sistema operacional é suportado por estes métodos. Ao estudar e analisar os métodos de desenvolvimento de sistemas operacionais vê-se que não há método direcionado para a tarefa de porte de um sistema operacional para uma nova plataforma de hardware. Um extensivo trabalho neste sentido foi realizado por Frohich (FROHICH, 2001).

A seguir, apresenta-se um estudo dos principais métodos de projetos, aplicáveis aos sistemas operacionais, a saber: orientado a aplicações, orientado a objeto, orientado a famílias.

4.4.1

Projeto Orientado a Aplicações

Projetar um sistema operacional tendo em vista uma aplicação, significa maximizar as características do sistema operacional em função de uma aplicação final, de forma que tal aplicação seja favorecida e as características não requisitadas pela aplicação sejam removidas do sistema operacional.

Esta abordagem faz sentido em projetos de sistemas dedicados a uma função específica, para o qual não se planejam evoluções ou adição de funcionalidades.

Segundo Frohich,

“Um sistema operacional orientado a aplicações é definido somente em função da correspondente aplicação, para o qual ele implementa o suporte de run-time necessário”.

(Frohich (FROHICH, 2001))

Pela própria definição de sistema operacional orientado a aplicação fica fácil perceber que se trata de um paradigma que objetiva potencializar as características que favoreçam uma determinada aplicação, em detrimento de características generalistas. Este paradigma é aplicável quando o sistema operacional foi concebido segundo sua metodologia. É extremamente difícil aplicar a metodologia em um sistema operacional construído segundo qualquer outro método. Para se aplicar esta metodologia ao Linux seria necessário reconstruir a maior parte deste sistema operacional, apenas para adequá-lo segundo a proposta do paradigma, sem acrescentar nenhuma nova funcionalidade. No entanto, ao fazer isto, quebra- se a ligação deste código com o código mantido pela comunidade de software livre, o que não parece ser uma boa estratégia, pois se afasta de uma das melhores características do Linux.

Além do já exposto, há que se considerar que este paradigma não apresenta uma técnica específica para portar um sistema operacional para uma nova plataforma de hardware.

4.4.2

Projeto Orientado a Objeto

O paradigma de desenvolvimento de software orientado a objeto tornou-se um dos paradigmas mais utilizados. Orientação a objeto, nas palavras de Booch é:

“Desenvolvimento orientado a objeto é um método de desenvolvimento de software no qual a decomposição do sistema é baseada na idéia de objetos”.

(G. Booch (BOOCH, 1986))

Neste tipo de desenvolvimento, o projeto é concebido agrupando-se os elementos de mesma finalidade. Para a representação na modelagem deste agrupamento de elementos, uma classe de objetos é criada. Cada classe mantém a estrutura fundamental que estará presente em cada objeto derivado desta classe.

A aplicação de projeto orientado a objeto (POO) no desenvolvimento de sistemas operacionais já foi abordado em trabalhos como o realizado na Universidade de Illinois, no qual foi desenvolvido um sistema operacional chamado CHOICES (CAMPBELL, 1987). Além disto, duas outras linhas de projeto surgiram baseadas no POO: projeto baseado em assunto (subject), e projeto baseado em colaboração, ambas não abordadas neste trabalho devido serem apenas evoluções do POO.

A dificuldade na adoção desta abordagem em sistemas operacionais reside no fato de que a maioria das linguagens de programação que suportam POO não são adequadas para o desenvolvimento de sistemas operacionais; isto é, são linguagens de alto nível que não suportam a construção dos elementos rudimentares e de relacionamento direto com o

hardware, comuns em sistemas operacionais, embora linguagem como C++, que suporta

POO, seja perfeitamente aplicáveis (FROHICH, 2001).

É importante salientar que o projeto orientado a objetos tem como foco principal definir uma boa arquitetura através da separação dos aspectos do sistema em classes e subclasses. Não faz parte desta metodologia uma abordagem sistêmica para porte de um sistema operacional para uma nova plataforma de hardware, ainda que tal sistema operacional tenha sido construído de acordo com o paradigma proposto.

4.4.3

Projeto Orientado a Famílias

O projeto de sistemas operacionais baseados em famílias é uma aplicação prática do paradigma de desenvolvimento orientado a famílias, inicialmente proposto por David Parnas

(PARNAS, 1976). Neste tipo de projeto, as características comuns dos programas são agrupadas e posteriormente analisadas em conjunto. Em seu trabalho, Parnas define uma família de programas como:

“Considera-se que um conjunto de programas passa a ser uma família se eles têm tanto em comum que isto justifica o estudo de seus aspectos comuns, antes de olhar para as diferenças entre eles”.

(David L. Parnas (PARNAS, 1976))

A abordagem proposta por Parnas divide o desenvolvimento em famílias de programas fortemente relacionados segundo seus aspectos comuns. Parnas não propôs especificamente uma metodologia para desenvolvimento de sistemas operacionais, mas sua proposta é aplicada a este tipo de desenvolvimento.

Exemplificando a aplicação dos conceitos de Parnas, considerem-se os programas (ou funções) responsáveis pelo controle de tarefas quando estas estão sendo executadas. O escalonamento, as políticas de escalonamento e de multitarefa, todos podem ser agrupados em um elemento maior, como por exemplo, uma família chamada: processos, ou ainda Gerenciador de Processos.

Como se podem ver, conceitos derivados deste paradigma estão presentes nas modernas arquiteturas de sistemas operacionais, inclusive no Linux.

Note-se, no entanto, que este tipo de projeto de sistemas operacionais preocupa-se com sua concepção inicial e não com os esforços necessários para portar um sistema operacional para uma nova plataforma de hardware.

Documentos relacionados