next up previous contents index
Next: Organização do Documento Up: Análise do Problema Previous: Motivação e Raízes

Requisitos e Pressupostos

A aplicação supõe-se desenvolvida numa linguagem OO, em que as entidades relevantes para o processamento, e, por conseguinte, para esta discussão, são os objectos, instâncias das classes que fazem parte do código da aplicação.

A utilização de uma linguagem OO facilita a programação e a filosofia associada permite uma fácil modelização dos vários segmentos da aplicação, graças à modularidade intrínseca dos sistemas de objectos.

Não se colocam, à partida, muitas restrições à linguagem a utilizar, porque o desenho é o suficientemente genérico e flexível para cobrir uma gama de linguagens com características comuns. Todavia, a realização vai apenas cobrir uma delas: C++. As linguagens admissíveis devem obedecer à condição de terem uma estrutura de classes, classes essas das quais os objectos serão instâncias, e.g. Smalltalk [Goldberg & Robson, 1983], C++ [Stroustrup, 1992], Objective-C [Cox, 1986]. Não podem, deste modo, ser consideradas linguagens em que os objectos tenham entre si relações como as que são definidas por delegação, e.g. Self [Ungar & Smith, 1987], e a instanciação se faça com base em protótipos. Esta é apenas uma hipótese simplificativa e não significa que não possam ser desenvolvidas técnicas semelhantes para essas linguagens.

O modelo de objectos deve prever acesso uniforme a todos os objectos, independentemente das características a eles associadas. A manifestação das características deve ser transparente para o código da aplicação. Os objectos da aplicação não diferirão dos da linguagem em termos de estrutura interna ou modo de utilização.

A programação, quando utiliza as técnicas expostas neste documento, não deve colocar restrições em relação à programação que não as utilize. Em particular, não deve ser restringido o uso de herança múltipla, se esta for suportada pela linguagem OO.

As aplicações, no modelo proposto, são entidades estratificadas, constituídas por módulos funcionais, alguns destes fornecendo suporte a propriedades dos objectos. Executam-se em máquinas, possivelmente heterogéneas, ligadas em rede. Em cada aplicação existem várias entidades, algumas das quais possivelmente activas.

As aplicações admitem a existência de alguns serviços de âmbito global, especialmente no que respeita à identificação de entidades intra ou inter-aplicação. Assim, supõe-se a existência de um serviço de nomes global. Entenda-se global como acessível num dado universo. Num sistema hierárquico, e.g. DCE [Open Software Foundation, Inc., 1992], isto significa que todas as entidades de uma dada célula têm acesso ao serviço, em qualquer nó da célula. Como exemplos, de outras entidades de suporte exteriores à aplicação, podem tomar-se os serviços de comunicação, sejam eles entre módulos de aplicações, ou entre aplicações na mesma máquina, ou entre máquinas distintas.

Genericamente, pressupõe-se a existência de um módulo de suporte, para executar cada operação especial que a aplicação possa desejar executar sobre um objecto. A aplicação apenas fornece abstracções sobre essas entidades, por forma a uniformizar os acessos aos vários serviços. Ou seja, nada é dito sobre o interior de cada módulo. A aplicação apenas exige a cada módulo uma interface bem conhecida. O módulo não pode partir do princípio que a aplicação o vai gerir, i.e., um módulo deve inferir das acções da aplicação as acções necessárias para a sua auto-gestão. Alguns módulos serão apresentados como exemplos, após a descrição pormenorizada da estrutura de uma aplicação e das ferramentas utilizadas para a geração automática de código.

Para cada característica específica de um objecto de uma aplicação, existe um módulo que a suporta. Para cada um destes módulos existem problemas específicos, e.g. problemas relacionados com a própria funcionalidade do módulo, enquanto outros são comuns a todos os módulos, e.g. problemas estruturais. Os problemas serão abordados quando os serviços a que dizem respeito forem apresentados ou a sua programação discutida. Por exemplo, para a distribuição, deveriam ser considerados os problemas relacionados com a comunicação, segurança, tolerância a faltas, localização e identificação de objectos, entre outros.



next up previous contents index
Next: Organização do Documento Up: Análise do Problema Previous: Motivação e Raízes



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995