Você está na página 1de 100

FABRCIO DOI

OBJETOS ADAPTATIVOS: APLICAO DA TECNOLOGIA


ADAPTATIVA ORIENTAO A OBJETOS


















So Paulo
2007

FABRCIO DOI














OBJETOS ADAPTATIVOS: APLICAO DA TECNOLOGIA
ADAPTATIVA ORIENTAO A OBJETOS



Dissertao apresentada Escola Politcnica
da Universidade de So Paulo para obteno
do Ttulo de Mestre em Engenharia.












So Paulo
2007

FABRCIO DOI














OBJETOS ADAPTATIVOS: APLICAO DA TECNOLOGIA
ADAPTATIVA ORIENTAO A OBJETOS



Dissertao apresentada Escola Politcnica
da Universidade de So Paulo para obteno
do Ttulo de Mestre em Engenharia.


rea de concentrao:
Sistemas Digitais


Orientador:
Prof. Dr. Paulo Srgio Muniz Silva




So Paulo
2007















Este exemplar foi revisado e alterado em relao verso original, sob
responsabilidade nica do autor e com a anuncia de seu orientador.

So Paulo, de julho de 2007.


Assinatura do autor ____________________________


Assinatura do orientador ________________________









FICHA CATALOGRFICA



Doi, Fabricio
Objetos adaptati vos : aplicao da tecnologia adaptati va
orientao a objetos / F. Doi. -- ed.rev. -- So Paulo, 2007.
87 p.

Dissertao (Mestrado) - Escola Politcnica da Universidade
de So Paulo. Departamento de Engenharia de Computao e
Sistemas Digitais.

1. Modelo adaptati vo 2. Programao orientada a objetos
3. Engenharia de programao I. Universidade de So Paulo.
Escola Politcnica. Departamento de Engenharia de Compu-
tao e Sistemas Digitais II. t.


DEDICATRIA



































Dedico este trabalho a meus pais.








AGRADECIMENTOS



Ao professor Dr. Paulo Srgio Muniz Silva pela orientao, dedicao, compreenso e
incentivo para a realizao do trabalho.
Aos professores que participaram da banca do exame de qualificao, Prof. Dr. Joo Jos Neto
e Prof. Dr. Ricardo Luis de Azevedo da Rocha que muito contriburam com suas sugestes na
avaliao da proposta inicial desta dissertao.
Aos meus pais, Pantaleo Doi e Maria de Lourdes Doi, que me deram carinho e condies para
realizar este trabalho.
A toda a minha famlia que estiveram presente em todos os momentos.
Vanessa, que me apoiou e esteve presente durante todo este trabalho.
A todos que direta ou indiretamente contriburam para a realizao deste trabalho.






















RESUMO


Este trabalho estuda o problema da construo de sistemas orientados a objetos com
caractersticas adaptativas, tendo como principal objetivo simplificar o processo de construo.
Para isso o trabalho utiliza como base terica a Tecnologia Adaptativa e sua aplicao em
diversos formalismos. O Modelo Adaptativo de Objetos foi utilizado como base de
comparao de solues para a construo de sistemas adaptativos. Nesta pesquisa so
apresentadas aplicaes e uma proposio para a construo e modelagem de sistemas
adaptativos, atravs da extenso do conceito de objetos com caractersticas da tecnologia
adaptativa. Atravs deste estudo avaliou-se o impacto da aplicao do dispositivo adaptativo
em um formalismo com tipo. Os resultados obtidos no presente trabalho demonstram que a
tecnologia adaptativa propcia para linguagens orientadas a objetos e que os diagramas UML
so capazes, com pequenas extenses, de representar o comportamento adaptativo
adequadamente.
Palavras-chave: Tecnologia Adaptativa, Meta-modelos, Modelo Adaptativo de Objetos,

ABSTRACT


This study addresses the issue of implementing object-oriented software with adaptive
characteristics, having as primary purpose simplify the implementing process. The key
theoretical basis consisted in adaptive technology and its application in various formalisms.
Adaptive Object Model has been taken as comparison basis to solutions to implement adaptive
systems. This study describes applications and a proposition to implement and model adaptive
systems, through the extension of object concept with adaptive technology characteristics. It
also evaluates the impact of applying adaptive devices in formalism with types. The results
obtained demonstrate that adaptive technology is suitable for object-oriented languages and
that UML diagrams are capable of presenting adaptive behavior appropriately with a small
number of extensions.
Keywords: Adaptive Technology, Meta models, Adaptive Object Model

SUMRIO



1 INTRODUO.................................................................................................................... 1
1.1 MOTIVAO............................................................................................................. 1
1.2 OBJETIVOS ................................................................................................................ 3
1.3 ESTRUTURA DO TRABALHO ................................................................................ 4
2 CONCEITOS DA ORIENTAO A OBJETOS................................................................. 6
2.1 CARACTERSTICAS GERAIS DA ORIENTAO A OBJETOS.......................... 6
2.1.1 LINGUAGENS BASEADAS EM CLASSES............................................... 7
2.1.2 LINGUAGENS BASEADAS EM OBJETOS............................................. 10
2.2 MODELAGEM ORIENTADA A OBJETOS........................................................... 11
2.2.1 DIAGRAMA DE CASOS DE USO............................................................ 11
2.2.2 DIAGRAMA DE ESTADOS...................................................................... 13
2.2.3 DIAGRAMA DE CLASSES....................................................................... 13
2.2.4 DIAGRAMA DE SEQNCIA.................................................................. 14
2.2.5 DIAGRAMA DE COMUNICAO.......................................................... 15
2.3 TEORIA DOS OBJETOS.......................................................................................... 15
3 MODELO ADAPTATIVO DE OBJETOS ........................................................................ 18
3.1 ARQUITETURA DO AOM...................................................................................... 21
3.1.1 COMPSITO .............................................................................................. 24
3.1.2 INTERPRETADOR..................................................................................... 25
3.1.3 CONSTRUTOR........................................................................................... 26
3.1.4 ESTRATGIA............................................................................................. 27
3.1.5 OBJETO TIPO............................................................................................. 28
3.1.6 PROPRIEDADE.......................................................................................... 30
3.1.7 QUADRADO DE TIPOS ............................................................................ 30
3.1.8 OBJETO REGRA........................................................................................ 31

3.2 TRABALHOS CORRELATOS ................................................................................ 33
4 TECNOLOGIA ADAPTATIVA........................................................................................ 35
4.1 HISTRICO.............................................................................................................. 35
4.2 DISPOSITIVO ADAPTATIVO................................................................................ 38
4.3 EXEMPLO DE DISPOSITIVO ADAPTATIVO...................................................... 40
4.4 ALGUMAS DIFICULDADES DA TECNOLOGIA ADAPTATIVA..................... 44
5 OBJETOS ADAPTATIVOS............................................................................................... 46
5.1 CONCEITOS............................................................................................................. 46
5.1.1 NOTAS PARA A EXTENSO DO CLCULO DE OBJETOS SEM TIPOS 47
5.1.2 FORMAS DE ADAPTATIVIDADE EM OBJETOS ................................. 47
5.2 TIPOS EM OBJETOS ADAPTATIVOS .................................................................. 51
5.2.1 MECANISMOS ADAPTATIVOS.............................................................. 52
5.2.2 INFERNCIA DE TIPOS PELA CLASSE ................................................ 56
5.3 CONSTRUO ........................................................................................................ 58
5.3.1 REFLEXES E DECISES DE PROJETO............................................... 59
5.3.2 CONSTRUO DA ADAPTATIVIDADE BASEADA EM CLASSES .. 63
5.3.3 ARCABOUO DE OBJETOS ADAPTATIVOS....................................... 63
5.4 PROTTIPO.............................................................................................................. 66
5.5 MODELAGEM DE OBJETOS ADAPTATIVOS.................................................... 68
5.5.1 DIAGRAMA DE CLASSES....................................................................... 70
5.5.2 DIAGRAMA DE SEQNCIA.................................................................. 73
5.5.3 DIAGRAMA DE TIPOS ADAPTATIVOS................................................ 77
6 CONCLUSES E TRABALHOS FUTUROS................................................................... 80
REFERNCIAS BIBLIOGRFICAS....................................................................................... 83
PGINAS DE INTERNET.................................................................................................... 88

LISTA DE FIGURAS
FIGURA 2 MTODOS EMBUTIDOS NOS OBJETOS ADAPTADO DE (ABADI; CARDELLI, 1996)................................... 7
FIGURA 3 MTODOS PERTENCENDO A CONJUNTOS SEPARADOS DOS OBJETOS ADAPTADO DE (ABADI; CARDELLI,
1996).................................................................................................................................................................. 8
FIGURA 4 EXEMPLO DE MONTADORA DE AUTOMVEIS ........................................................................................ 22
FIGURA 5 ALGORITMOS DE ORDENAO............................................................................................................... 22
FIGURA 6 A) CARRO REPRESENTADO NUM MODELO NO ADAPTATIVO B) CARRO NUM MODELO ADAPTATIVO..... 23
FIGURA 7 - COMPSITO............................................................................................................................................ 25
FIGURA 8 INTERPRETADOR (EXEMPLO PARA EXPRESSO REGULAR) .................................................................... 26
FIGURA 9 CONSTRUTOR ........................................................................................................................................ 27
FIGURA 10 ESTRATGIA........................................................................................................................................ 28
FIGURA 11 OBJETO TIPO ....................................................................................................................................... 29
FIGURA 12 OBJETO TIPO (EXEMPLO) ..................................................................................................................... 29
FIGURA 13 PROPRIEDADE...................................................................................................................................... 30
FIGURA 14 QUADRADO DE TIPOS .......................................................................................................................... 31
FIGURA 15 AO................................................................................................................................................... 32
FIGURA 16 ASSESSOR............................................................................................................................................ 32
FIGURA 17 OBJETO REGRA.................................................................................................................................... 33
FIGURA 1 A) AUTMATO FINITO RECONHECEDOR DE QUAISQUER COMBINAES FORMADAS POR UM A, UM B E UM
C; B) AUTMATO ADAPTATIVO (AA) RECONHECEDOR DE UM A, UM B E UM C, COM AO ADAPTATIVA A, QUE
RETIRA A TRANSIO UTILIZADA E CRIA UMA TRANSIO EM VAZIO EM DIREO AO ESTADO FINAL; C) AA
APS RECONHECER A; D) AA APS RECONHECER A E C; E) AA APS RECONHECER A, B E C. ............................. 43
FIGURA 18 MECANISMO ADAPTATIVO .................................................................................................................. 52
FIGURA 19 TRANSFORMADOR DE TIPO.................................................................................................................. 54
FIGURA 20 EXTENSOR DE TIPO.............................................................................................................................. 55
FIGURA 21 REDUTOR DE TIPO ............................................................................................................................... 56
FIGURA 22 MTODOS ADAPTATIVOS..................................................................................................................... 59
FIGURA 23 META-MODELO DE OBJETO.................................................................................................................. 64
FIGURA 24 META-MODELO DE OBJETO ADAPTATIVO............................................................................................. 65
FIGURA 25 RVORE DE TIPOS DO RECONHECEDOR DE UM A, UM B E UM C (EM DESTAQUE O RECONHECIMENTO DA
CADEIA BAC) ................................................................................................................................................. 68
FIGURA 26 PERFIL UML ADAPTIVECLASS............................................................................................................ 71
FIGURA 27 UM EXEMPLO DE DIAGRAMA DE CLASSES ADAPTATIVO PARA O RECONHECEDOR DE UM A, UM B E UM C.
......................................................................................................................................................................... 72
FIGURA 28 REPRESENTAO DO MECANISMO DE EXTENSO DE TIPO - ADAPTADA DE (ODELL, 2003) .................. 74
FIGURA 29 REPRESENTAO DO MECANISMO DE REDUO DE TIPO ADAPTADA DE (ODELL, 2003) ................... 75
FIGURA 30 REPRESENTAO DO MECANISMO DE TRANSFORMAO DE TIPO ADAPTADA DE (ODELL, 2003) ...... 75
FIGURA 31 DIAGRAMA DE SEQNCIA DO RECONHECEDOR DE UM A, UM B E UM C................................................ 76
FIGURA 32 PERFIL UML DO DIAGRAMA DE TIPOS ADAPTATIVOS......................................................................... 78

LISTA DE ABREVIATURAS E SIGLAS

UML Unified Modeling Language (Linguagem de Modelagem Unificada)
OMG Object Management Group (Grupo de Gerenciamento de Objetos)
API Application Program Interface (Interface de Programao para
Aplicao)
AOM Adaptive Object-Model (Modelo Adaptativo de Objetos)
CLI Common Language Infraestructure (Infra-estrutura de Linguagem
Comum)
OO Orientao a Objetos
















1
1 INTRODUO
A modelagem de objetos adaptativos (YODER; JOHNSON, 2002) um estilo
arquitetnico que permite a criao de sistemas orientados a objetos flexveis, que
permitem a realizao de customizaes pelo usurio do sistema, de acordo com o
surgimento de novas necessidades. Entretanto a modelagem de objetos adaptativos
possui problemas, sendo que este trabalho trata da complexidade de sua representao,
que mistura a soluo descrio das regras de negcio.
Em outro aspecto, a tecnologia adaptativa (NETO, 2001) uma generalizao de vrios
trabalhos derivados dos autmatos adaptativos (NETO, 1993) e tem por objetivo
aumentar a expressividade de formalismos simples com pequenas modificaes, sem
que modelos feitos de acordo com o formalismo predecessor s mudanas sejam
perturbados.
Este trabalho aplica algumas das caractersticas da tecnologia adaptativa, na orientao a
objetos, mais especificamente na modelagem de objetos adaptativos, para aumentar a
expressividade dos modelos realizados sob este estilo arquitetnico, diminuindo a sua
complexidade. Entretanto, para resolver esta questo, um problema ainda pouco
explorado pela tecnologia adaptativa ter de ser explorada: a aplicao do dispositivo
adaptativo em um formalismo com tipo e a conseqente alterao que tal aplicao
requer na modelagem UML (Unified Modeling Language) (OMG, 2005) de sistemas
orientados a objetos.
1.1 MOTIVAO
A principal motivao do presente trabalho buscar uma forma simplificada para a
construo de sistemas adaptativos, ou seja, sistemas que necessitam de ajustes
freqentes ou de uma maior flexibilidade durante sua execuo, que por vezes
conseguida atravs de criaes arquitetnicas que permitem a interpretao de
requisitos, com meta-arquiteturas ou arquiteturas reflexivas. Uma forma de arquitetura
reflexiva o modelo adaptativo de objetos (AOM), que modela, em sua maioria,


2
sistemas que gerenciam certo tipo de produto e que podem adicionar outros produtos
com as regras apropriadas (YODER; JOHNSON, 2002). Nesta linha de sistemas, pode-
se incluir sistemas de gerenciamento de laboratrio clnico, tambm conhecidos como
LIS (Laboratory Information System), em que o laboratrio est condicionado a novas
regras impostas pelos seus principais clientes, os planos de sade, ou a novos exames ou
mtodos de anlises que requeiram diferentes informaes para a criao de laudos
apropriados.
Alm do AOM, outras solues podem ser utilizadas para a criao deste tipo de
sistemas, como a gerao automtica de cdigo e o uso de tcnicas de reflexo. Alm
destes, alguns padres de projeto prevem esse tipo de variao permitindo uma soluo
para esses tipos de sistemas. A gerao automtica de cdigo se diferencia por
desacoplar o meta-modelo do sistema, entretanto necessita de gerao de cdigo e nova
compilao para que as mudanas tenham efeito, enquanto no AOM as mudanas so
imediatas. O uso de tcnicas de reflexo induz utilizao de mecanismos prontos, j
existentes no sistema, que devem ser includos em um processo dinamicamente,
tornando o processo adaptativo. Novamente, a grande diferena entre esta soluo e o
AOM a necessidade de um cdigo compilado, pronto para ser executado, enquanto o
AOM interpreta uma informao de acordo com o meta-modelo desenhado para
desenvolver um comportamento apropriado ao sistema. Portanto, o AOM til
construo de sistemas que possibilitam uma adequao do mesmo em tempo de
execuo, sem que haja a necessidade de compilao ou gerao de cdigo.
Embora o AOM permita a construo de sistemas flexveis, ele aumenta a complexidade
de sistemas, pois mistura descrio do escopo do problema o meta-modelo gerado para
permitir tal ganho, o que dificulta a compreenso do sistema.
Com o estudo da tecnologia adaptativa (NETO, 2001; NETO, 1993), uma alternativa
parece surgir para resolver a dificuldade do aumento da complexidade do sistema
enfrentado pelo AOM, com a introduo do dispositivo adaptativo. Pela simplicidade
com que ela tratada, espera-se que a incluso da tecnologia adaptativa na teoria dos


3
objetos permita que a adaptatividade possa ser aplicada sem apresentar os problemas
citados e a custos aceitveis.
Apesar de tal simplicidade, outra motivao para o presente trabalho a representao
do dinamismo que a tecnologia adaptativa prov. Ainda no se encontrou uma maneira
suficientemente simples e clara para representar o comportamento adaptativo dos
modelos. Isso um problema para a pesquisa por novas solues com a Tecnologia
Adaptativa, pois, sem uma boa representao, a criao, compreenso e depurao de
solues adaptativas tornam-se mais difceis.
1.2 OBJETIVOS
O principal objetivo do presente trabalho aplicar alguns conceitos da tecnologia
adaptativa orientao a objetos, mais especificamente ao AOM, para criar uma camada
em que se definem os objetos adaptativos e realizar uma anlise preliminar de alguns
dos benefcios e dificuldades trazidas pela tecnologia adaptativa orientao a objetos.
Para tanto, sero estudados alguns aspectos elementares da teoria dos objetos (ABADI;
CARDELLI, 1996), procurando utiliz-los pragmaticamente para que os resultados do
presente trabalho possam ser utilizados nas linguagens orientadas a objetos disponveis
comercialmente, destacando-se alguns problemas que possam ocorrer nessa integrao,
como a questo da alterao dinmica do tipo do objeto ao longo de seu ciclo de vida e a
influncia dessa alterao no sistema de tipos. No presente trabalho, este ltimo aspecto
apenas formulado, pretendendo-se que sua anlise seja retomada formalmente em um
trabalho futuro que dever estender a teoria de objetos de Abadi e Cardelli (1996) para
abranger o conceito de dispositivo adaptativo (NETO, 2001).
Com a aplicao de alguns conceitos da Tecnologia Adaptativa, espera-se poder
simplificar o entendimento, a documentao e a manuteno de sistemas construdos
sobre o estilo arquitetnico do Modelo Adaptativo de Objetos, podendo separar
claramente um meta-modelo construdo segundo esse estilo da soluo de um problema
qualquer com o uso de um arcabouo.
Uma questo fundamental da aplicao da Tecnologia Adaptativa Orientao a


4
Objetos a modelagem das abstraes computacionais. Assim, o presente trabalho
analisa alguns dos diagramas mais usados da modelagem UML (Unified Modeling
Language) definido pela OMG (Object Management Group)
1
. Os diagramas de classe e
de seqncia sero revistos e preparados para representarem os objetos adaptativos e seu
comportamento, apresentando-se uma proposta para a representao do dinamismo da
tecnologia adaptativa aplicada orientao a objetos.
1.3 ESTRUTURA DO TRABALHO
O trabalho est dividido em trs partes principais: a apresentao dos fundamentos
tericos envolvidos, da soluo proposta e, finalizando, das concluses e trabalhos
futuros vislumbrados.
Os captulos 2, 3 e 4 apresentam os fundamentos tericos necessrios, descrevendo a
Orientao a Objetos (OO), a Tecnologia Adaptativa e o Modelo Adaptativo de Objetos
(AOM).
No captulo 2 apresentada a Teoria dos Objetos, bem como alguns aspectos de sua
modelagem e alguns problemas que devem ser enfrentados na sua extenso. No final do
captulo apresenta-se uma sntese do formalismo do Clculo de Objetos sem tipo.
No captulo 3, o Modelo Adaptativo de Objetos apresentado como uma soluo
correlata para a criao de sistemas adaptveis. Sua arquitetura e seus principais
aspectos so estudados, com a apresentao dos principais padres de projeto
(GAMMA; 1995) utilizados nesta arquitetura.
O captulo 4 apresenta a Tecnologia Adaptativa como ferramenta para a extenso de
formalismos. Apresenta um breve histrico da tecnologia, mostrando os formalismos e
situaes em que foi aplicada. Em seguida, apresenta o Dispositivo Adaptativo e sua
aplicao nos autmatos. Por fim, apresentam-se um exemplo com autmatos
adaptativos e algumas observaes sobre a tecnologia.

1
OMG (Object Management Group) um consrcio formado por grandes empresas de computao para
produzir e manter as especificaes da indstria da computao para a interoperabilidade das aplicaes
das empresas, como definido em seu site http://www.omg.org.


5
O captulo 5 apresenta a soluo proposta para a aplicao da Tecnologia Adaptativa
Orientao a Objetos. Os principais problemas na integrao so analisados e uma
soluo ser proposta. Alm disso, o captulo apresenta algumas proposies para a
alterao da UML 2.0 para utiliz-la na descrio de sistemas adaptativos.
Por fim, no captulo 6 o trabalho concludo sendo apresentadas situaes em que os
objetos adaptativos podem ser aplicados, e as vantagens e desvantagens desse tipo de
soluo. Tambm so sugeridos temas para o desenvolvimento de trabalhos futuros.


6
2 CONCEITOS DA ORIENTAO A OBJETOS
Neste captulo alguns conceitos da orientao a objetos so apresentados, de forma a
embasar a sua posterior extenso. Assim, apresentam-se algumas caractersticas gerais
desse paradigma de programao, alguns aspectos da representao de modelos
orientados a objetos e um formalismo criado para sustentar a orientao a objetos.
2.1 CARACTERSTICAS GERAIS DA ORIENTAO A OBJETOS
O texto desta seo baseia-se integralmente em (ABADI; CARDELLI, 1996),
procurando sintetizar o significado dos conceitos de objetos dentre as formas como este
tratado em diferentes linguagens de programao.
Os objetos comeam a ser utilizados na construo de sistemas de software nos anos 60,
a partir da analogia da construo de um sistema mecnico onde objetos concretos so
utilizados. Esta viso se encaixa nas trs fases de construo de um software: a anlise
melhorada com a analogia em si, permitindo maior integrao do software com o que ele
representa; durante a fase de projeto so criados modelos aderentes e com maior
persistncia, ou seja, tem mais resistncia s mudanas provocadas durante a vida do
sistema; para a construo, o reuso de cdigo facilitado, criando objetos reusveis e
presentes de maneira mais eficaz.
Apesar das diferenas apresentadas entre os paradigmas de programao, os chamarizes
da orientao a objetos no so exclusivos dela. A resistncia do modelo pode ser
realizada com a organizao do programa em volta de tipos de dados abstratos
(LISKOV; GUTTAG, 1986). Reuso de cdigo pode ser feito atravs de modularizao
(PARNAS, 1972; WIRTH, 1983) e parametrizao (MILNER, 1978; MILNER; et al,
1989). Uma vantagem do paradigma dos objetos o reuso de cdigo, quando
permitida no s a reutilizao de cdigo atravs do mecanismo de herana, como a
sobreposio de objetos ou mtodos, sem a necessidade de concordncia total de tipo ou
interface. Os objetos so derivados de outros criados anteriormente, combinando reuso
(pelo mecanismo de herana) e variao (com a sobreposio). Os mtodos podem ser


7
sobrescritos, sempre mantendo a interface do mtodo antigo, mas podendo utilizar
atributos existentes no objeto derivado.
O paradigma da Orientao a Objetos vem se desenvolvendo com a criao de Padres
de Projeto (GAMMA; et al, 1995). Com seu crescente uso os padres de projeto vm se
afirmando como uma forma apropriada de organizao de sistemas.
Foram muitas as linguagens que antecederam a linguagem Java no paradigma da
orientao a objetos, sendo a mais conhecida a linguagem denominada Smalltalk
(NCITS, 1998). As linguagens orientadas a objeto, apesar de pertencerem ao mesmo
paradigma, podem ser divididas em dois grandes grupos: as linguagens baseadas em
classes e as linguagens baseadas em objetos.
2.1.1 LINGUAGENS BASEADAS EM CLASSES
Como exemplos de linguagens baseadas em classes, temos Java, C++ e o prprio
Smalltalk. Estas linguagens tm como caracterstica o conceito de classe o qual fornece
a descrio de objetos gerados por ela.
Os objetos das linguagens baseadas em classes podem possuir mtodos embutidos no
prprio objeto, ou podem acess-los em um conjunto de mtodos da classe atravs da
delegao. Na primeira opo, mais fcil de entender, os mtodos so includos juntos
aos seus dados no momento da criao do objeto, como sugere a Erro! Fonte de
referncia no encontrada..

Figura 1 Mtodos embutidos nos objetos Adaptado de (Abadi; Cardelli, 1996)
Na segunda opo, os cdigos dos mtodos ficam agrupados em conjunto(s) de
mtodo(s), como mostrado na Erro! Fonte de referncia no encontrada.. Desta
forma, os objetos delegam a execuo de um mtodo do conjunto de mtodos ocupando
menos espao quando coexiste em um maior nmero de objetos de uma classe.


8

Figura 2 Mtodos pertencendo a conjuntos separados dos objetos Adaptado de (Abadi; Cardelli,
1996)
Outro conceito importante nas linguagens baseadas em classes o conceito de subclasse
e herana. Uma subclasse descreve uma classe a partir da extenso e mudanas da
superclasse, com a replicao implcita dos campos e mtodos, que podem ou no ser
sobrescritos. A herana o compartilhamento dos atributos entre uma classe e suas
subclasses. Assim, a subclasse pode utilizar seus prprios mtodos, como os mtodos
herdados da classe, utilizando um identificador especial para acess-los (super nas
linguagens Java e C#). Da mesma forma, possvel especificar que se est utilizando o
mtodo do objeto na subclasse e no da superclasse utilizando outro identificador
especial (this em Java e em C#).
As linguagens baseadas em classe possuem, ainda, a subsuno, ou seja, se um objeto
uma instncia de uma classe (isto , ela foi criada a partir desta classe), ento ele
tambm instncia da superclasse. Essa propriedade traz duas possibilidades na
invocao de um mtodo. Quando um mtodo deve receber um objeto da superclasse,
ele pode receber um objeto da subclasse ou da superclasse, e a chamada de um mtodo
sobrescrito torna-se um problema. Para isso tm-se duas alternativas: disparo esttico do
mtodo, que sempre chamar o mtodo da superclasse, ou o disparo dinmico, que
verificar a classe especfica a que pertence o objeto e chamar o mtodo
correspondente.
Como conseqncia da possibilidade de se passar por parmetros objetos de subclasses
em um mtodo que recebe uma instncia de superclasse, as linguagens provem uma
forma de se verificar a qual classe um objeto pertence. Isso discutido por puristas da


9
OO, com argumentos tais como a violao da abstrao dos objetos, com uma
conseqente fragilidade dos programas quando uma nova subclasse criada.
Tericos contrrios verificao da classe do objeto argumentam que a Orientao a
Objetos permite a especializao dos mtodos da superclasse, isto , a especializao de
um mtodo sobrescrito com a alterao dos argumentos e do tipo do resultado. Com
isso, um mtodo pode ser sobrescrito para ser especfico em cada subclasse, de forma
que a verificao da classe no precisa ser utilizada.
Outra ferramenta para evitar o uso da verificao de tipo a especializao Auto Tipo
(Self Type Specialization). Esta especializao no tem nenhuma semelhana com o this
presente nas linguagens C# e Java, que no possuem tal especializao. De forma
resumida, a especializao Auto Tipo permite que um desenvolvedor especifique como
entrada ou sada de um mtodo, o tipo do objeto em questo, e no da classe em que o
mtodo foi definido. Em outras palavras, se existe uma classe Pedido que apresenta
um mtodo Novo o qual devolve um Self Type, e outra classe Pedido Mdico que
herda as caractersticas da classe Pedido, ento o mtodo Novo de um objeto da
classe Pedido Mdico devolve um objeto Self Type, ou seja, devolve um objeto da
classe Pedido Mdico e no um objeto genrico da classe Pedido, como
normalmente ocorre nas linguagens comerciais.
H a necessidade de se distinguir os conceitos de tipo de um objeto e da classe a que ele
pertence. O tipo de um objeto indica somente a lista de propriedades (campos e
mtodos) que ele possui, sem sua construo. Dado que um objeto de um determinado
tipo, possvel saber tudo o que ele contm. J saber que um objeto pertencente a uma
classe no suficiente para conhecer seus atributos. Isso porque, devido subsuno, o
objeto pode, na verdade, ser instncia de uma subclasse da classe, possuindo diferenas
na implementao e podendo conter outros atributos.
Assim, o subtipo pode ser definido como possuindo todos os componentes do tipo e,
possivelmente, outros adicionais. Isso faz com que, nem sempre, uma subclasse pertena
a um subtipo, j que a subclasse pode, simplesmente, sobrescrever um ou mais mtodos
da classe (sem especializ-los) e pertencer ao mesmo tipo da classe.


10
As linguagens baseadas em classes podem ainda conter o conceito de protocolo de
objeto. Um protocolo de objeto define um conjunto de atributos que um objeto deve
conter para pertencer a este protocolo. Desta forma, um mtodo pode ser parametrizado
com este protocolo e diferentes tipos de objetos, independente de serem relacionados por
herana, podem satisfazer como parmetro do mtodo.
2.1.2 LINGUAGENS BASEADAS EM OBJETOS
As linguagens baseadas em objetos tiveram menos ateno e por isso foram menos
desenvolvidas. Como exemplos tm-se as linguagens Simula, Emerald, Cecil e Omega.
So mais simples que as linguagens baseadas em classes e, devido ausncia de classes,
os objetos so criados atravs de outros objetos, denominados criadores de objetos. Por
essa ausncia de classe, a programao possui como grande atrativo uma maior
flexibilidade na criao de cada objeto. Entretanto, a organizao do sistema tem maior
complexidade, o que faz com que pseudo-classes sejam criadas para facilitar o
desenvolvimento de sistemas gerados a partir desse tipo de linguagem.
Para que objetos parecidos sejam construdos, as linguagens baseadas em objetos
possuem os conceitos de prottipos e de clonagem. Diferente das classes, os prottipos
so partes do sistema como instncias e servem como base para que outros objetos sejam
criados a partir da sua clonagem, a criao de cpias idnticas, mas com estados
independentes. Para se dispor da clonagem com vantagem, possvel alterar os atributos
e os mtodos dos objetos criados.
A herana em linguagens baseadas em objetos pode aparecer de duas formas: embutida
nos objetos ou por delegao. A primeira ocorre quando os objetos clonados contm
cpias dos atributos do objeto doador. J a herana por delegao feita atravs do uso
de referncias para o objeto doador, de forma que, ao chamar um mtodo no sobrescrito
o cdigo executado ser o do doador. A grande questo da delegao que os doadores
so partes ativas do sistema e quaisquer mudanas nestes objetos afetam seus clones.
Isso pode tanto fragilizar os sistemas (DONY; et. al., 1992; TAIVALSAARI, 1993),
como pode ser usado como vantagem. Por outro lado, a delegao permite um consumo
mais eficiente do espao utilizado pela aplicao.


11
Os tipos nas linguagens baseadas em objetos como Cecil e Omega restringem o
dinamismo apresentado por linguagens deste tipo, justamente por serem parecidas com
os tipos utilizados nas linguagens baseadas em classes. Nestas linguagens, os tipos tm
duas caractersticas distintas: a mudana de modo (mode-switching) pode receber mais
facilmente o tipo apropriado; e o tratamento de especializao de mtodo e o auto tipo
devem ser revistos, j que os mtodos podem ser atualizados, o que confunde o conceito
de tipo. A mudana de modo um caso especial de herana dinmica, em que uma
coleo de atributos herdados trocada por uma coleo de atributos similares.
2.2 MODELAGEM ORIENTADA A OBJETOS
A modelagem orientada a objetos est ancorada na abstrao de dados, a qual deve
representar no mbito computacional uma viso do problema a ser modelado centrado
na analogia a coisas e conceitos do mundo real. Assim, em vez de tratar simplesmente
com algoritmos e fluxo da informao, a modelagem trata conjuntamente a informao
que ser tratada e as operaes sobre ela, pretendendo ser de entendimento mais simples
por pessoas que no participem da construo de sistemas.
Para a especificao de projetos orientados a objetos surgiu a UML Unified Modeling
Language (Linguagem de Modelagem Unificada), atualmente na verso 2.0 (OMG,
2005). A UML uma linguagem de modelagem bastante adequada orientao a
objetos. A UML define uma srie de artefatos, e especifica a representao de seus
elementos formadores. Os artefatos, em especial os diagramas, tm diferentes intuitos.
Aqui sero expostos alguns dos artefatos que sero influenciados pela adio do
dispositivo adaptativo na teoria dos objetos: o diagrama de caso de uso, de estado, de
classe, de seqncia e de comunicao.
2.2.1 DIAGRAMA DE CASOS DE USO
O Diagrama de Casos de Uso (OMG, 2005) tem o objetivo de melhorar a comunicao
entre o cliente do sistema e os desenvolvedores, com a documentao e esclarecimento
dos requisitos os quais o cliente espera que sejam atendidos pronta ou futuramente pelo
sistema. Alm disso, os casos de uso so importantes para esclarecer situaes no


12
atendidas diretamente pelo sistema, mas que fazem parte do contexto a que o sistema
ser aplicado.
Alm do diagrama, parte essencial nesse contexto a especificao dos casos de uso
(no definidos explicitamente na UML), que permitem o melhor entendimento entre as
partes. O diagrama apenas uma viso resumida e pictrica dos casos de uso. A
especificao dos casos de uso representa toda a interao entre o ator e o sistema, as
atividades que tm valor para o ator e detalhes de como as regras devem ser realizadas.
Por outro lado, o diagrama de casos de uso representa apenas o ator e seu
relacionamento com o sistema, dando uma viso mais genrica do sistema sem entrar em
detalhes de especificao das atividades.
Em princpio, esse diagrama no deve ser alterado com a adio da tecnologia
adaptativa, mas pode ser interessante evidenciar a presena de elementos dinmicos no
momento da extrao de requisitos, podendo fazer com que a descrio e o diagrama
tenham novos componentes.
Os casos de uso foram propostos inicialmente em (JACOBSON, 1992), em que
definida uma metodologia de desenvolvimento orientado a objetos. Os casos de uso so
essencialmente formados por atores, um conjunto de eventos que se realizam e
condies de pr e ps-realizao. Como ator subentende-se quaisquer entidades que
interagem com o sistema em questo, seja um usurio ou um outro sistema que se
comunica com o sistema modelado. Atores so entidades que nunca pertencem ao
sistema. O caso de uso a forma como especificado o comportamento que o sistema
deve prover, incluindo o comportamento normal e excepcional e o tratamento de erro.
Os casos de uso podem relacionar-se atravs da extenso e da incluso. Na extenso, o
comportamento de um caso de uso pode ser estendido a partir do comportamento de um
outro caso de uso. A extenso pode conter uma condio para a sua ocorrncia, bem
como um ou mais pontos de extenso (caracterstica do caso de uso que indica o lugar
no comportamento do caso de uso em que ele pode ser estendido) em que ela pode
ocorrer. J a incluso ocorre quando o comportamento de um caso de uso includo no
comportamento de outro caso de uso.


13
Note que, assim como o diagrama no fornece detalhes dos casos de uso, o mecanismo
adaptativo no precisa estar presente neste diagrama, o que fortalece a hiptese de que o
diagrama no deva ser alterado.
2.2.2 DIAGRAMA DE ESTADOS
A UML divide as mquinas de estados (OMG, 2005) em dois tipos: comportamental e
protocolar. A mquina de estado comportamental (Behavioral state machines) pode ser
utilizada para mostrar o comportamento de vrios elementos do modelo, como uma
instncia de uma classe. A mquina de estado protocolar (Protocol state machines)
usada para expressar protocolo de uso, sendo conveniente na definio do ciclo de vida
de objetos, ou da ordem de invocao de suas operaes.
Pelo fato de o diagrama mostrar o comportamento de elementos do sistema, uma
alterao com a incluso da tecnologia adaptativa necessria, j que as aes
adaptativas devem alterar o comportamento dos elementos representados. Alm disso,
esse diagrama tem uma grande semelhana com o que representa os autmatos e se
originou a partir dos statecharts, ambos j estendidos com o dispositivo adaptativo,
como visto no captulo 4.
2.2.3 DIAGRAMA DE CLASSES
O diagrama de classes (OMG, 2005) o mais importante diagrama da UML, pois ele
representa a informao que o sistema trata, sendo, desta forma, esttico. Mesmo sendo
esttico, este diagrama deve sofrer alteraes com a incluso dos objetos adaptativos.
Em primeiro lugar, ele retrata objetos atravs de classes estticas e no objetos
adaptativos com classes maleveis (ou seja, classes que permitam os objetos se
adaptarem), sendo importante esta diferenciao e representao. Alm disso, o
diagrama fixar os tipos a que um objeto de uma classe poder pertencer durante seu
ciclo de vida.
O diagrama de classes formado por classes, com a representao de suas
denominaes, atributos e mtodos, bem como as associaes e dependncias que tm
entre si, generalizaes realizadas e abstraes existentes. As associaes representam a


14
relao semntica que ocorre entre duas instncias. Dependncia uma relao
indicando que um elemento necessita de outro para sua especificao ou implementao.
A generalizao uma relao hierrquica entre uma classe mais genrica e outra mais
especfica.
Seguindo a linha de especulao sobre mudanas no diagramas de classes devidas
introduo do dispositivo adaptativo, o diagrama deve se manter estrutural e, a menos
que esta estrutura no seja mudada, este diagrama no sofrer mudanas com a ao do
dispositivo adaptativo. Como apresentado no item 5.1.2, a mudana na estrutura s
ocorre em uma forma de adaptatividade, a adaptatividade baseada em classes, que no
ser tratada neste trabalho. Desta forma, este diagrama no ter comportamento
dinmico com a introduo do dispositivo adaptativo e apenas representar a
maleabilidade dos objetos, como apresentado no item 5.5.1.
2.2.4 DIAGRAMA DE SEQNCIA
O diagrama de seqncia (OMG, 2005) mostra como cada caso de uso realizado
atravs dos objetos do sistema. O diagrama representa o comportamento do sistema que
se tornar dinmico com a tecnologia adaptativa, trazendo a necessidade da alterao do
diagrama. O diagrama de seqncia tem aspecto temporal, demonstrando a ordem com
que as interaes entre os objetos ocorrem.
O diagrama de seqncia representa instncias de classes em suas linhas de vida
(lifelines), e como, e em que ordem, ocorrem as interaes entre elas e o recebimento de
eventos externos para a realizao de um comportamento (ou caso de uso) do sistema.
Essas interaes so representadas atravs das mensagens trocadas entre os objetos e da
representao da execuo dos mtodos na linha de vida do objeto.
O diagrama de seqncia, diferente do diagrama de classes, no deve ter um
comportamento especfico, mas diversos comportamentos, de acordo com o contexto e o
histrico do objeto. Portanto, o diagrama ter comportamento dinmico, ou, em outras
palavras, ter diferentes formas de acordo com o contexto e seu histrico. Uma soluo


15
para representar o comportamento adaptativo neste diagrama apresentada no item
5.5.2.
2.2.5 DIAGRAMA DE COMUNICAO
Complementar ao diagrama de seqncia, existe o diagrama de comunicao (OMG,
2005). O que distingue os dois diagramas o ponto de vista de como os casos de uso so
resolvidos, ou as formas como as interaes so realizadas. Enquanto o diagrama de
seqncia mostra a ordem em que ocorrem as interaes, o diagrama de colaborao
destaca os relacionamentos entre os objetos, mostrando a topologia destes
relacionamentos. Assim como o diagrama de seqncia, este diagrama deve ser revisto
ao aplicar a tecnologia adaptativa, pois com as aes adaptativas h a tendncia da
topologia e seus relacionamentos serem alterados em tempo de execuo do sistema.
Este diagrama apresenta as instncias e as trocas de mensagens, mas sem representar a
linha de vida graficamente (ele apresenta algumas seqncias de mensagens atravs de
simples numerao). Alm disso, no leva em conta a sobreposio de mensagens,
assumindo-as como irrelevantes.
2.3 TEORIA DOS OBJETOS
Em (ABADI; CARDELLI, 1996) apresentada a primeira formulao matemtica
completa de uma teoria de objetos. No presente trabalho, do formalismo ser
apresentado apenas o Clculo de Objetos sem tipo, o qual servir para mostrar que um
objeto uma coleo de atributos nomeados, todos eles sendo considerados como
mtodos (ABADI; CARDELLI, 1996). Alm disso, a teoria de objetos completa
incluindo o clculo de objetos com tipos fornecer as bases tericas para sua extenso
com o dispositivo adaptativo.
O objetivo desta seo fornecer uma idia geral do estilo de argumentao do clculo.
Para tanto, o texto apresenta, a ttulo ilustrativo, alguns fragmentos elementares do
clculo de objetos sem tipo, que tratam da semntica primitiva de operaes de objetos,
os quais agem sobre mtodos no sentido dado pela teoria de objetos. A hiptese a ser


16
refinada e analisada em um trabalho futuro que tais operaes de objetos podem ser
apropriadamente estendidas para embutir formalmente aes adaptativas.
O Clculo de Objetos ou Clculo- formado por um pequeno conjunto de primitivas: a
definio de objetos e as redues (primitivas de semntica). Resumidamente, cada
mtodo tem uma varivel vinculada representando o eu (self) e um corpo que produz um
resultado. As nicas operaes nos objetos so: invocao de mtodos e atualizao de
mtodos. A invocao executa um determinado mtodo, retornando um resultado. A
atualizao, sob a tica da semntica funcional, produz uma cpia do objeto na qual o
mtodo substitudo por um outro mtodo. O conceito de campo, presente em
linguagens orientadas a objetos, formalmente no faz parte do clculo de objetos. Os
autores justificam que um campo pode ser tratado como um tipo especial de mtodo, em
que a invocao do mtodo devolve o valor do campo e a atualizao do mtodo
corresponde atribuio de um valor ao campo
2
.
Um objeto [l
1
=(x
1
)b
1
, ..., l
n
=(x
n
)b
n
] definido como uma coleo de componentes
l
i
=(x
i
)b
i
, de nomes l
i
distintos e mtodos associados (x
i
)b
i
, para n i K 1 ; a ordem dos
componentes no importante. O mtodo (x)b possui parmetro prprio x e corpo b.
A invocao de um mtodo escrita o.l, em que l o nome do mtodo invocado,
pertencente ao objeto. A atualizao o.l (x)b corresponde criao de uma cpia do
objeto com a substituio do mtodo nomeado l com (x)b. importante frisar que, com
a incluso do dispositivo adaptativo, o clculo passa a ter trs novas operaes, a
excluso, a atualizao e a incluso de mtodos, como pode ser visto no item 5.1.1.
Os campos podem ser retratados como mtodos que no usam a varivel prpria, os
chamados mtodos prprios. Assim, uma invocao de mtodo passa a ser uma seleo
de campo e uma atualizao de mtodo passa a figurar como atualizao de campo.

2
As linguagens apresentam diferentes definies para objetos. Nenhuma das linguagens comerciais
orientadas a objetos mais conhecidas como Java, C# e C++, por exemplo, apresentam mtodos que
possam ser atualizados como sugere o modelo de objetos da Teoria de Objetos de (Abadi, Cardelli, 1996).
Alm disso, a denominao dos conceitos do modelo de objetos realizado por tais linguagens distinta.
Por exemplo, mtodo chamado de funo membro em C++. Mais diversa ainda a denominao de
campo. C# apresenta-o como campo, Java como campo ou varivel de instncia e C++ como membro de
dados.


17
Apesar desta diferenciao, um mtodo pode, a qualquer momento, se transformar num
campo e vice-versa.
O texto citado define a reduo, passos de reduo e define as equaes de simetria,
unicidade, transitividade e prova a completude do clculo. Para o presente trabalho, isto
tudo serve de base para a utilizao do conceito de que um objeto formado por um
conjunto de apenas uma forma de entidade, os mtodos, possibilitando a viso de que
mtodos e atributos de um objeto possam ser vistos da mesma maneira.




18
3 MODELO ADAPTATIVO DE OBJETOS
Segundo (YODER; JOHNSON, 2002) o Modelo Adaptativo de Objetos, ou Adaptive
Object-Model (AOM), um sistema que representa classes, atributos, relacionamentos e
comportamento como meta-dados. Desta forma, o modelo baseado em instncias e no
em classes, e a execuo do sistema realizada com a interpretao dos meta-dados.
Tambm conhecido como Modelo Ativo de Objetos ou Modelo Dinmico de Objetos, o
Modelo Adaptativo de Objetos uma estrutura reflexiva particular, que permite ao
usurio definir novos comportamentos para o sistema de acordo com a criao de novas
necessidades.
Com isso possvel construir sistemas que atendam negcios em que as regras variam
com freqncia seguindo um determinado padro. Assim, o modelo pode ser feito para
atender a este padro de alterao, permitindo ao sistema atender diferentes regras que
surgirem durante a sua vida. Desta forma, o modelo pode ser preparado para que estas
mudanas sejam includas no sistema por um usurio do sistema, sem a necessidade de
interveno de um desenvolvedor. Um exemplo de variao a incluso de novos
produtos em uma empresa. Cada produto de uma empresa pode ter caracterizaes
diferentes, fazendo com que o comportamento dos negcios tenha de ser individualizado
por produto.
Enquanto os modelos de objetos representam a informao tratada pelo sistema, o
modelo adaptativo de objetos representa a forma como a informao interpretada. Ou
seja, um modelo adaptativo pode ser visto como um meta-modelo da dinmica do
processamento da informao no sistema, apresentando a informao de forma
implcita
3
.
O AOM utiliza uma srie de padres de projetos como o Compsito (Composite), o
Interpretador (Interpreter), o Construtor (Builder), a Estratgia (Strategy) (GAMMA; et
al, 1995), o Objeto Tipo (Type Object) (JOHNSON; WOLF, 1998), a Propriedade
(Property) (FOOTE; YODER, 1998) e o Objeto Regra (Rule Objects) (ARSANJANI,

3
Pretende-se elaborar esta interpretao na dissertao e em um artigo futuro.


19
2000). A prtica usual aplicar os padres Objeto Tipo e Propriedade conjuntamente
para formar a arquitetura Quadrado de Tipos (Type Square) (YODER; et al, 2001). Com
estes padres de projeto, o AOM pode representar os atributos e as regras do negcio
como meta-dados que so interpretados em tempo de execuo. Como tudo
interpretado, o modelo pode ser alterado com uma simples alterao nos meta-dados.
Neste aspecto, o AOM permite uma flexibilidade bastante destacada por todos os
arquitetos que experimentam este tipo de soluo (YODER;JOHNSON, 2002).
Entretanto, os modelos produzidos segundo o AOM so normalmente complexos,
esbarrando na dificuldade de se encontrar mo de obra com experincia neste tipo de
modelagem (YODER;JOHNSON, 2002).
O grande problema do AOM sua utilizao como soluo para as freqentes alteraes
nas regras de negcio. Da o modelo passa a misturar a informao tratada pelo sistema
com a soluo, fazendo com que o modelo se enfraquea, pois ele perde a abstrao da
regra modelada, prejudicando o desenvolvimento. Isso faz tambm que seu custo de
manuteno aumente muito, inviabilizando, por muitas vezes, a utilizao deste tipo de
arquitetura. Outra viso que as alteraes freqentes nas regras de negcio fazem parte
do negcio, e por isso o modelo deve refletir isto de maneira adequada, levando ao
modelo adaptativo, mas, do mesmo modo, o modelo complexo e encarece a soluo.
Apesar de o AOM ser uma soluo interessante para modelar sistemas para negcios em
que as regras tm grande dinamismo, todos os autores de AOM indicam que necessrio
um bom estudo antes de se utilizar este recurso. Isso acontece pois o AOM apresenta um
problema em desempenho, devido necessidade de interpretao dos meta-dados, alm
do j comentado problema de custo de manuteno. O desempenho tem uma queda
significativa em relao a outros sistemas pelo fato de o cdigo feito no AOM ser
duplamente interpretado: a interpretao da mquina virtual orientada a objetos e a
interpretao que o programa possui internamente para criar o comportamento
adaptativo. Essa queda de desempenho unida ao alto custo de construo e manuteno
deve, ento, ser considerada para se verificar a viabilidade da construo de um sistema
com o AOM.


20
Uma alternativa para esse problema do AOM apresentada em (DANTAS; et al, 2004)
com a unio do AOM programao orientada a aspectos (KICZALES, 1996). A
orientao a aspectos prev uma separao do problema em diversos grupos, tornando-
se assim mais fcil de compreender as solues modeladas e facilitando o reuso de
cdigo. A partir desta viso, o autor procura separar o modelo adaptativo da informao
do negcio.
Alm da unio com a programao orientada a aspectos, existe a possibilidade de
implementar a adaptatividade na prpria mquina virtual orientada a objetos, como a
Java Virtual Machine ou o .NET Microsoft Framework. Uma mquina virtual um
programa que simula uma mquina computacional, realizando operaes definidas para
ela. Uma mquina virtual orientada a objetos realiza operaes sobre objetos, com a
interpretao do cdigo em tempo de execuo. Ento, uma proposta a extenso de
uma destas mquinas para ela se tornar uma mquina virtual orientada a objetos
adaptativos.
Um exemplo de extenso de mquina virtual feito em (ORTIN; et al, 2005). Neste
trabalho a Infra-estrutura de Linguagem Comum de Cdigo Compartilhado Shared
Source Common Language Infrastructure (MICROSOFT - ROTOR, 2006), tambm
conhecida como Rotor, estendida para que ela apresente a reflexo estrutural. O Rotor
uma verso de cdigo aberto da Microsoft que implementa a Infra-estrutura de
Linguagem Comum Common Language Infraestructure (ECMA, 2006), um padro
criado pela ECMA International
4
para permitir que aplicaes sejam escritas em
diferentes linguagens de alto nvel e possam ser executadas em diferentes ambientes,
sem a necessidade de reescrever as aplicaes para considerarem as caractersticas de
cada ambiente.
A reflexo estrutural uma das distines para a reflexo feitas em (ORTIN; et al,
2005). Levando em conta o que pode ser refletido, o trabalho faz a distino das formas

4
A ECMA International uma associao de indstrias fundada em 1961 e dedicada padronizao da
Tecnologia de Comunicao de Informao (ICT) e da eletrnica de consumo (CE). Stio
http://www.ecma-international.org


21
de reflexo em Introspeco, Reflexo Estrutural e Reflexo Computacional
(Comportamental). A Introspeco a simples consulta da estrutura de um sistema, na
qual o programador pode consultar informaes das classes, objetos, mtodos e campos
em tempo de execuo, como ocorre no pacote java.lang.reflect (Java) e no espao de
nome System.Reflection (.NET). A Reflexo Estrutural permite a alterao da estrutura
de um sistema, como ocorre na linguagem de programao Python em que campos e
mtodos podem ser adicionados tanto a classes como a objetos. A Reflexo
Computacional permite a mudana da semntica do sistema, o que provoca a mudana
do comportamento do sistema, como ocorre no MetaJava (GOLM; KLEINDER,
1997), uma extenso Java que permite a alterao no mecanismo de disparo de mtodos.
3.1 ARQUITETURA DO AOM
A arquitetura do Modelo Adaptativo de Objetos apresenta a forma como a informao
deve ser interpretada. Desta maneira, o modelo deve representar a estrutura de como a
informao armazenada, para que o interpretador trabalhe com ela.
O AOM, em geral, apresenta-se, principalmente, como soluo para quatro casos:
utilizao de objetos compostos, objetos formados por outros objetos; existncia de
diferentes algoritmos para um mesmo problema; representao de regras instveis, que
necessitam de constante manuteno; representao de tipos de dados variveis.
Para resolver cada um destes casos, o AOM cria objetos num meta-modelo em vez de
criar uma classe para cada objeto. Para isso lana mo de diversos padres de projetos
(GAMMA; et al, 1995), sendo que cada caso utiliza um grupo mais especfico de
padres.
Os objetos compostos so resolvidos por padres como Compsito, Interpretador e
Construtor (GAMMA; et al, 1995). Com esses padres possvel criar objetos
complexos a partir da composio de objetos mais simples. Da mesma forma, isso
permite que, em tempo de execuo, seja definido como e quais objetos formam um
objeto composto. Isto d uma caracterstica adaptativa a esta soluo, permitindo uma
flexibilidade maior aos sistemas modelados desta forma. Um exemplo poderia ser uma


22
montadora de automveis, como mostrado na Erro! Fonte de referncia no
encontrada.. No exemplo, um automvel composto por peas, que podem ser motor,
rodas, entre outros, ou seja, uma composio de peas. A montadora junta as peas,
bastando trocar ou reposicionar as peas para construir um modelo diferente. No
exemplo, as peas formam com o automvel o Compsito e o Montador representa o
padro Construtor. O padro Interpretador no foi utilizado.
Automvel Pea
Motor Roda
Montador
MontadorModeloA MontadorModeloB
cria

Figura 3 Exemplo de Montadora de Automveis
Outro caso ocorre quando mais de um algoritmo pode servir como soluo para um
problema. Isso pode acontecer em engenharia, quando uma frmula vlida em
condies especficas, existindo outra para outras condies. O AOM resolve este
problema normalmente atravs do padro Estratgia (GAMMA; et al, 1995), permitindo
tratar cada algoritmo como um objeto e fazendo com que o algoritmo correto possa ser
aplicado no momento oportuno. O exemplo da Erro! Fonte de referncia no
encontrada. mostra algoritmos de ordenao. Com poucos elementos a serem
ordenados um algoritmo mais simples pode ser utilizado, como o Bubble Sort, e com um
nmero grande de elementos j passa a ser necessrio a utilizao de algoritmos mais
sofisticados como o Quick Sort.
AlgoritmoOrdenao
BubbleSort QuickSort
Cliente
usa

Figura 4 Algoritmos de ordenao


23
Alm destes problemas, juntam-se os casos de representao de regras e, de forma mais
geral, da informao tratada pelo sistema modelado. Ao tratar as regras como objetos do
sistema, as quais podem ser definidos atravs de uma meta-estrutura, o AOM permite
uma flexibilidade nas regras do negcio que o sistema gerencia. Assim, o fluxo de
informaes pode ser alterado conforme novas necessidades do negcio. Da mesma
maneira, a informao tratada pode ser alterada dentro de uma meta-estrutura que a
defina. No casos das regras, o padro mais utilizado o Objeto Regra (ARSANJANI,
2000), enquanto as informaes so meta-modeladas com os padres Propriedade
(FOOTE; YODER, 1998), Objeto Tipo (JOHNSON; WOOLF, 1998) e sua composio,
o Quadrado de Tipos (YODER; et al, 2001). O exemplo da Erro! Fonte de referncia
no encontrada. apresenta apenas a representao da informao, sendo adaptado de
(YODER; JOHNSON, 2002). Na Erro! Fonte de referncia no encontrada.a, o
automvel caracterizado da maneira natural, em que uma classe abstrata generalizada
para a criao de outros modelos, sendo os atributos definidos em suas classes. Na Erro!
Fonte de referncia no encontrada.b, o automvel passa a ser formado por atributos
determinados dinamicamente atravs do relacionamento com a classe Propriedade, o que
permite que novas propriedades sejam inseridas a qualquer momento, sem necessidade
de reviso do modelo. Ainda na Erro! Fonte de referncia no encontrada.b, os tipos
de automveis so obtidos atravs de um relacionamento com a classe TipoAutomvel,
no sendo mais necessria a criao de generalizaes para a classe Automvel. Neste
exemplo, o padro Quadrado de Tipos no foi utilizado e a representao de regras foi
deixada para ser mostrada mais adiante.
Automvel
- ano: int
- cor: string
Compacto Sedan Luxo
a) Antes b) Depois
Automvel
- tipo: TipoAutomvel
TipoAutomvel
Propriedade
- nome: string
- tipo: Type
- valor: object
0..*
propriedades
tipo 0..*

Figura 5 a) Carro representado num modelo no adaptativo b) Carro num modelo adaptativo


24
Desta forma, uma soluo AOM pode servir para um dos casos apresentados, ou um
conjunto deles, o que faz com que no exista uma regra para sua aplicao. Desta forma,
o AOM no uma regra de como modelar, mas sim a utilizao de meta-modelos para
permitir aos sistemas possurem caractersticas de adaptatividade. Assim, o AOM nem
ao menos fora a utilizao dos padres de projeto sugeridos, mas a sua utilizao
recomendada j que eles j foram implantados com sucesso durante outras experincias.
Por isso, importante para um analista entender os padres que pode utilizar e como
utiliz-los para criar um modelo adaptativo de objetos mais adequado aos seus
problemas. Por isso, cada padro citado ser apresentado e, em seguida, o seu papel no
AOM ser discutido.
Os primeiros padres a serem apresentados (Compsito, Interpretador, Construtor e
Estratgia) so comuns tambm em sistemas que no seguem a arquitetura do AOM.
Este texto ir seguir (GAMMA; et al, 1995), em que estes padres so discutidos.
Em seguida sero apresentados os padres mais importantes do AOM (Objeto Tipo,
Propriedade, Quadrado de Tipos e Objeto Regra). A importncia destes padres tal que
todo modelo AOM normalmente possui ao menos um deles presente.
3.1.1 COMPSITO
O Compsito (GAMMA; et al, 1995) um padro muito utilizado para construir rvores
que representam hierarquias parte-todo. Esse padro permite ao cliente tratar o objeto
todo, bem como partes dele da mesma forma.


25
Cliente
Componente
+ operao() : void
Folha
+ operao() : void
Composio
+ adiciona(Componente) : void
+ obterFilho(int) : void
+ operao() : void
+ remove(Componente) : void

Figura 6 - Compsito

Como se v na Erro! Fonte de referncia no encontrada., o padro formado por
trs classes: o componente, e seus filhos, a folha e a composio. Note que a composio
, alm de filho do componente, formado por componentes, que o que define o padro.
No AOM, o Compsito tem o papel de permitir a construo de estruturas dinmicas de
tipos e regras.
3.1.2 INTERPRETADOR
O Interpretador (GAMMA, 1995, pp. 243-255) um padro em que define a
representao de uma linguagem e um interpretador para esta representao, de forma
que sentenas desta linguagem possam ser interpretadas.
Este padro, diferente de muitos outros existentes, no possui uma estrutura bsica, pois
cada linguagem que representada pode possuir um modelo diferente. Mesmo dentro de
uma linguagem, diferentes estruturas podem ser montadas. Um exemplo de interpretador
para uma expresso regular mostrado na Erro! Fonte de referncia no encontrada..
A figura apresenta como centro a Expresso Regular, que pode ser do tipo Literal,
Seqencial, Alternativa ou Repetitiva, sendo que a expresso seqencial e a alternativa
so compostas por duas expresses regulares (seqenciais ou alternadas) e a repetitiva
pela expresso regular que deve ser repetida.


26
ExpressoRegular
+ Interpreta() : void
ExpressoLiteral ExpressoSequencial
ExpressoAlternativa ExpressoRepetitiva
alternativa2
alternativa1
expresso2
expresso1
repetio

Figura 7 Interpretador (exemplo para Expresso Regular)
No AOM este padro importantssimo, pois ele permite a personalizao do
comportamento dos objetos. Com a possibilidade de fazer a interpretao de uma
linguagem em tempo de execuo, possvel definir expresses em tempo de execuo,
o que permite caractersticas adaptativas serem realizadas.
3.1.3 CONSTRUTOR
Esse padro de projeto tem a inteno de separar a construo de um objeto complexo
de sua representao, de forma que o processo de construo possa criar diferentes
representaes (GAMMA; et al, 1995, pp. 97-106).
O Construtor consiste numa classe que serve como padro para construo de objetos ou
composies que formam um objeto, de forma a simplificar e padronizar a sua
construo.
Na Erro! Fonte de referncia no encontrada., o construtor mostrado. possvel
verificar a existncia de uma classe Diretor, que delega a construo de partes de um
produto a cada construtor necessrio para sua realizao. Desta forma o Produto criado
a partir de diversos Construtores, que so organizados ou dirigidos pelo Diretor.


27
Diretor
+ Constri() : void
Construtor
+ ConstriParte() : void
ConstrutorConcreto
+ ConstriParte() : void
+ PegaResultado() : void
Produto

Figura 8 Construtor
No AOM, este padro costuma ser utilizado para construir as estruturas a partir dos
dados extrados do meta-modelo.
3.1.4 ESTRATGIA
Estratgia um padro que define uma famlia de algoritmos, encapsula cada um, e faz
seu intercmbio (GAMMA; et al, 1995, pp. 315-323). Com isso, esse padro permite
que o algoritmo a ser utilizado possa ser definido em tempo de execuo, de acordo, por
exemplo, com o contexto em que est inserido.
O padro Estratgia consiste em criar uma interface, ou uma classe abstrata, de como
deve ser a chamada do algoritmo, e cada algoritmo diferente encapsulado em uma
classe diferente. Assim, o padro Estratgia permite que o contexto defina qual o melhor
algoritmo a ser executado em tempo de execuo. A estrutura bsica do padro
Estratgia mostrada na Erro! Fonte de referncia no encontrada.. O Cliente pode
escolher qual Estratgia adotar, sendo a sua interface definida na classe Estratgia. O
desenvolvedor pode definir quantas estratgias de execuo de algoritmos forem
necessrias, bastando criar as classes filhas (representado por EstratgiaConcreta).


28
interface
Estratgia
+ realizaAlgortimo() : void
EstratgiaConcreta
+ realizaAlgortimo() : void
Cliente

Figura 9 Estratgia
Para o AOM, este padro tem a mesma importncia do Interpretador: ele permite a
personalizao do comportamento do objeto. , porm, um pouco diferente na questo
da construo, visto que os algoritmos, em princpio, so definidos em tempo de projeto
e no de execuo.
3.1.5 OBJETO TIPO
Um dos padres mais importantes da arquitetura do AOM o Objeto Tipo, tambm
conhecido como Power Type, ou Item Descriptor ou Instance of an Instance. Ele tem a
funo de desmembrar as instncias de suas classes, de modo que essas classes possam
ser construdas como instncias de outra classe (JOHNSON; WOOLF, 1998 pp. 47).
Desta forma, novas classes podem ser criadas dinamicamente, permitindo ao sistema ter
sua prpria regra de checagem de tipo.
O objeto tipo utilizado para permitir que o tipo dos objetos adaptativos possa ser
determinado e at mesmo definido em tempo de execuo. Com o objeto tipo possvel
que um sistema crie novos tipos de objetos conforme a necessidade criada por seus
usurios. Assim, se em desenvolvimento uma informao pode no ser bem definida,
pode-se definir um meta-modelo em que o usurio defina como so as informaes que
o sistema deve tratar.


29
Como mostrado na Erro! Fonte de referncia no encontrada., o Objeto Tipo
formado por duas classes: uma que representa o objeto (Classe); e outra que representa o
tipo deste objeto (TipoClasse).
TipoClasse Classe
type

Figura 10 Objeto Tipo
Desta forma, o tipo de um objeto passa a ser uma varivel, atribuda com uma instncia
de TipoClasse. Assim uma instncia de TipoClasse representa o tipo de uma ou
mais intncias de Classe, e estes tipos do objeto podem ser controlados pelo
programador, que tem um grau de liberdade maior para criar Tipos dinamicamente,
como representado na Erro! Fonte de referncia no encontrada., em que instncias
de tipos so representadas pelas entidades ObjetoTipo1 e ObjetoTipo2 e se
apresentam duas instncias de objetos Objeto1 e Objeto2 ambas do tipo 1, sendo o
tipo 2 apresentado somente a ttulo de exemplo.
No AOM, esse padro essencial, pois como os dados so interpretados como meta-
dados, o tipo de informao deve ser inferido em tempo de execuo. Utilizando o
Objeto Tipo possvel descobrir, em tempo de execuo, o tipo do objeto e aplicar,
desta forma, o tratamento correto no contexto em que estiver, ou mesmo criar o objeto
com o tipo definido em tempo de execuo.

Obj etoTipo1
Obj etoTipo2
Obj eto1A
- Tipo: umTipoClasse
Obj eto1B
- Tipo: umTipoClasse

Figura 11 Objeto Tipo (exemplo)


30
3.1.6 PROPRIEDADE
Tambm conhecido como Attributes, Annotations, Dynamic Attributes, Dynamic
Variables, Variable State, Dynamic Slots e Property List, o padro Propriedade
(FOOTE; YODER, 1998) outro de grande importncia para o AOM.
A Propriedade um padro similar ao Objeto Tipo, mas que, em vez de tratar classes
como instncias, tratam as propriedades que pertencem aos objetos. Ele faz com que as
propriedades de um objeto saiam da definio da classe do objeto e passem a instncias
de uma classe genrica denominada Propriedade, como mostrado na Erro! Fonte de
referncia no encontrada..
Antes Depois
Produto
- Cor: string
- Peso: float
Produto Propriedade
- nome: string
- tipo: Type
- valor: object

Figura 12 Propriedade
Desta forma um produto no precisa, necessariamente, possuir as mesmas propriedades
ou atributos que outro, apesar de pertencerem a uma mesma classe. Note que, apesar de
perfeitamente possvel, o tipo do objeto (no caso do produto), no garantido no
modelo.
Este padro essencial no AOM quando necessrio tratar propriedades como meta-
dados. Propriedades como meta-dados permitem que o usurio de um sistema possa
definir quais os campos ou atributos que uma entidade necessita, fazendo com que o
sistema se torne mais aderente s suas necessidades.
3.1.7 QUADRADO DE TIPOS
Com a utilizao dos padres Objeto Tipo e Propriedade, a juno dos dois padres em
torno de uma classe, uma Entidade, comumente utilizada. Assim, uma Entidade
pertence a um Tipo de Entidade, e possui uma ou mais propriedades.


31
Este padro de projeto, denominado Quadrado de Tipos (YODER; et al, 2001), vai um
pouco alm, definindo ainda que as propriedades tenham um tipo designado pelo tipo
das Entidades que a contm, conforme a Erro! Fonte de referncia no encontrada..
Entidade TipoEntidade
Propriedade
TipoPropriedade
- nome: string
- tipo: Type
0..*
propriedades
0..*
tipo
0..*
propriedades
0..*
tipo

Figura 13 Quadrado de Tipos
Esta estrutura muito utilizada no AOM. Ela faz com que o tipo se relacione s
propriedades de forma que todo objeto de um tipo tem um conjunto de propriedades
definidos nesta estrutura. Com isso, o padro Propriedade junta-se ao padro Objeto
Tipo dando mais consistncia a este padro, o qual passa a ser mais completo por ligar
as propriedades de um objeto ao tipo a que ele pertence.
3.1.8 OBJETO REGRA
O objetivo deste padro Fazer o projeto e construo de processos de negcios
informatizados extensveis e adaptveis, sem fragiliz-las a mudanas indesejveis,
fazendo com que as regras sejam a eles aplicveis. (ARSANJANI, 2000, pp. 3).
Isso feito criando um arcabouo em que nos permite criar regras, inserindo condies e
aes a serem executadas, de acordo com a necessidade do negcio.
A estrutura desse padro um pouco mais complexa, j que ele serve como um
Mediador (GAMMA; et al, 1995) entre dois outros padres: Ao (Action ou Command)
(GAMMA; et al, 1995) e Assessor (ARSANJANI, 2000). Respectivamente, estes
padres fazem com que aes e assertivas sejam tratadas como objetos, fazendo com
que novas aes ou assertivas possam ser criadas dinamicamente. Uma possvel
estrutura para estes padres mostrada nas figuras Erro! Fonte de referncia no


32
encontrada. e Erro! Fonte de referncia no encontrada., como proposto em
(ARSANJANI, 2000).
Ao
+ executar(ListaDePropriedades) : void
Conj untoAo ResultadoDaAo
Resultado

Figura 14 Ao
Assessor
+ Avaliar(ListaDePropriedades) : boolean
ListaDePropriedades
ResultadoDaAssertiva Resultado
Conj untoAssessor

Figura 15 Assessor
O padro Objeto Regra , ento, formado por assertivas e aes realizadas atravs deste
padro. Caso as assertivas se confirmem, o Objeto Regra encarrega-se de executar cada
uma das aes a que est relacionado. A estrutura, apesar de simples se vista como na
Erro! Fonte de referncia no encontrada., no demonstra como as assertivas so
feitas, nem como as aes so executadas, ficando a cargo do objeto e da construo do
padro.


33
Obj etoRegra
+ aplicarRegra(ListaDePropriedades) : Result
Assessor
+ Avaliar(ListaDePropriedades) : boolean
Ao
+ executar(ListaDePropriedades) : void
Cliente

Figura 16 Objeto Regra
O padro importante para o AOM, pois a partir dele que as regras so personalizadas,
e o comportamento do sistema pode ser adaptado. interessante notar que este padro
depende, mesmo que informalmente, de outro padro importante do AOM: a
Propriedade. Isso porque as aes iro incidir sobre elas, provocando a alterao de seus
valores. Se o conjunto de regras no puder alterar o estado dos objetos em um sistema,
estes perdem a sua funcionalidade.
3.2 TRABALHOS CORRELATOS
Alguns trabalhos podem aumentar o poder dos modelos adaptativos, ora permitindo um
maior desempenho, ora aumentando as possibilidades de construo. Este o caso do
espao de nome (namespace OMG, 2005) Reflection.Emit, no Microsoft .NET
Framework 2.0, e o Javassist (CHIBA, 1998), uma Interface de Programao de
Aplicativos - API (Application Programming Interface) - para Java.
O espao de nome Reflection.Emit uma das novidades da segunda verso do Microsoft
.NET Framework. Este espao de nome apresenta a possibilidade de criar, em tempo de
execuo, os chamados mtodos dinmicos, permitindo estender o comportamento de
um objeto de acordo com o meio em que ele estiver atuando. A grande vantagem desta
soluo o desempenho, pois o cdigo descrito j deve estar na linguagem intermediria
da mquina virtual da Microsoft, o MSIL (Microsoft Intermediate Language), no
necessitando do processo de compilao. Como desvantagem, pode-se dizer na


34
necessidade de se tratar diretamente com o MSIL, o que, por vezes, pode no ser
amigvel. Entretanto, esta soluo traz uma quantidade enorme de possibilidades, j que
a gerao automtica de cdigo pode ser aperfeioada.
O Java, diferentemente do .NET, apresenta o cdigo intermedirio de maneira mais
acessvel ao desenvolvedor. O Javassist uma API que procura facilitar o trabalho de
acesso ao cdigo intermedirio, que armazenado nos arquivos de extenso class,
permitindo inclusive que uma classe inteira seja criada ou reescrita em tempo de
execuo. Em relao ao Reflection.Emit ele possui a desvantagem de no poder tratar
objetos separadamente. Mas no deixa de ter seu valor, pois no s permite a criao de
novos mtodos, como permite a reestruturao de um sistema em tempo de execuo.



35
4 TECNOLOGIA ADAPTATIVA
Este captulo apresenta a tecnologia adaptativa desenvolvida no Laboratrio de
Tecnologia Adaptativa da Universidade de So Paulo, fazendo um resumo do seu
histrico, apresentado inicialmente em (PISTORI; 2002), e atualizando-o com os
acontecimentos mais recentes. Logo a seguir, o texto apresenta o dispositivo adaptativo,
responsvel por tornar um formalismo no adaptativo em adaptativo e exemplifica com
a aplicao do dispositivo nos autmatos de pilha estruturados. Por fim, algumas
consideraes sobre a tecnologia so realizadas para discutir possveis vantagens e
desvantagens da sua aplicao.
4.1 HISTRICO
A Tecnologia Adaptativa tem origem em (NETO, 1994) quando surgem os Autmatos
Adaptativos atravs de uma extenso do formalismo dos autmatos de pilha estruturados
(NETO; MAGALHES, 1981a; NETO; PARIENTE; LEONARDI, 1999; NETO,
1987). O texto que se segue tem forte influncia de (PISTORI; 2002), primeiro trabalho
sobre o histrico da tecnologia adaptativa, e atualiza o histrico com os ltimos
trabalhos realizados at a data do presente trabalho.
A tecnologia adaptativa tem por objetivo dar maior poder de expressividade a
formalismos com poucas modificaes, sem que modelos feitos de acordo com o
formalismo subjacente s mudanas sejam perturbados (NETO, 2001).
Aps o trabalho dos autmatos adaptativos, muitos outros o seguiram, como a criao
dos statecharts adaptativos (JUNIOR, 1995; SANTOS, 1997), das gramticas
adaptativas (IWAI, 2000; IWAI; NETO, 2000), das redes de Markov adaptativas
(BASSETO; NETO, 1999), das rvores de decises adaptativas (PISTORI; NETO,
2002), das redes Neurais adaptativas (ROCHA, 2001) e das tabelas de decises
adaptativas (NETO, 2001). Nestes trabalhos e em outros surgiram aplicaes em
diferentes contextos como em compiladores (LUZ; NETO, 2003), robtica (SOUZA;
HIRAKAWA; NETO, 2004), reconhecimento de imagens (PISTORI; NETO, 2004;


36
PISTORI; et al, 2006), sntese de voz (ZUFFO; PISTORI, 2004), e na gerao de msica
por computao (BASSETO;NETO, 1999).
O segundo trabalho surgiu (JUNIOR, 1995), tratando da especificao e projeto de
sistemas reativos complexos. Neste trabalho o autor define os Statecharts Adaptativos e
cria a primeira ferramenta de edio e simulao de dispositivos adaptativos denominada
STAD (STatecharts ADaptativos). Utilizando redes de Petri, deu-se seqncia a este
trabalho (SANTOS, 1997) para incorporar a idia de sincronizao de processos e criar
os Statecharts Adaptativos Sincronizados (SAS). Neste trabalho, o STAD foi substitudo
pelo SAS (ou STAD-S), que trabalhava sobre o formalismo com a sincronizao de
processos.
Logo apareceu a primeira experincia prtica com a tecnologia adaptativa (BASSETO;
NETO; 1999). Utilizando redes de Markov Adaptativas, foi criado um compacto gerador
de msicas denominado LASSUS. Baseado em poucas regras de criao, cada execuo
do gerador traz uma nova composio sonora que apresenta uma grande qualidade
esttica.
Visto que os primeiros estudos basearam-se no reconhecimento de linguagem, no
demorou a surgir o primeiro formalismo gerador de linguagem. As Gramticas
Adaptativas (IWAI, 2000; IWAI; NETO, 2000) so apresentadas junto ao teorema da
equivalncia expressiva entre as gramticas e os autmatos adaptativos.
Em 2000 verificado o poder computacional dos autmatos adaptativos, comparado ao
da mquina de Turing (ROCHA; NETO, 2000). No ano seguinte os conceitos
fundamentais que atingem as tecnologias adaptativas existentes so consolidados e
generalizados (NETO, 2001), com a introduo dos dispositivos adaptativos baseados
em regras. Neste trabalho so apresentadas tambm as tabelas de decises adaptativas.
Outro trabalho (ROCHA, 2001) utiliza um modelo de autmatos adaptativos como uma
rede neural, para a modelagem de aprendizado dentro de um dispositivo de busca de
solues por mquina adaptvel.


37
As rvores de decises adaptativas so introduzidas em (PISTORI; NETO, 2002) como
um forte aliado para a tomada de decises por computao. Neste trabalho o autor faz
uma comparao da soluo adaptativa com outras solues feitas para tomada de
deciso, obtendo resultado satisfatrio.
Em seguida, foi criado um programa para o projeto, construo e teste de autmatos
adaptativos, denominado ADAPTOOLS (PISTORI, 2003; PISTORI; NETO, 2003).
Apesar de outros formalismos adaptativos j terem apresentado ferramentas para seu
desenvolvimento, o formalismo precursor s foi ter uma ferramenta quase uma dcada
aps seu trabalho precursor (1994).
Em outro trabalho (SOUZA; HIRAKAWA; NETO, 2004), a adaptatividade estudada
no mapeamento de rea realizado por um rob. O rob governado por um autmato
adaptativo, e conforme alteraes em seus sensores, este autmato atualizado.
Num trabalho recente na rea, os autmatos adaptativos foram utilizados para gerar
sintetizadores de voz (ZUFFO; PISTORI, 2004). O que o autor espera que diferentes
sons possam ser gerados para uma mesma slaba com o auxlio dos autmatos
adaptativos. Assim, o autmato se especializa para cada contexto, e as slabas podem ser
apresentadas de maneira adequada ao contexto.
A ltima publicao feita at a data do presente trabalho (PISTORI; et al, 2006), utiliza a
tecnologia adaptativa para o reconhecimento de imagens para auxilio a deficientes
fsicos. O trabalho uma continuao de (PISTORI; NETO; 2004), em que a tecnologia
adaptativa testada para o reconhecimento de sinais de surdos-mudos.
O ltimo acontecimento importante para a tecnologia adaptativa foi o I Workshop de
Tecnologia Adaptativa, realizado em So Paulo no ms de janeiro de 2007. Contando
com a presena da maioria dos contribuidores da tecnologia adaptativa, o evento
permitiu a discusso de alguns dos principais aspectos da tecnologia adaptativa, como
trabalhos em andamento, aplicaes da tecnologia adaptativa e rumos que os seus
estudos devem tomar.


38
4.2 DISPOSITIVO ADAPTATIVO
O texto que segue baseia-se integralmente em (NETO, 2001), em que o dispositivo
adaptativo foi generalizado a partir de diversas experincias da aplicao da tecnologia
adaptativa a formalismos no adaptativos.
O dispositivo adaptativo AD definido como sendo um dispositivo que segue um
comportamento de um dispositivo subjacente at que alguma ao adaptativa no nula
seja realizada, alterando o conjunto de regras e, dessa forma, o dispositivo. A partir de
ento, o dispositivo se comportar de uma nova maneira, de acordo com as novas regras,
at que outra ao adaptativa no nula seja executada.
Desta forma, o AD pode ser visto na forma AD
k
=(C
k
, AR
k
, S, c
k
, A, NA, BA, AA), em que
k corresponde a um passo de computao iniciando em 0, correspondente ao incio do
dispositivo, e incrementa de 1 quando uma ao adaptativa no nula executada, sendo
que:
AD=(ND
0
, AM) um dispositivo adaptativo sobre um dispositivo subjacente inicial
ND
0
com um mecanismo adaptativo AM.
ND
k
o dispositivo no adaptativo subjacente em algum passo de operao k, definido
por um conjunto de regras no adaptativas NR
k
.
C
k
o conjunto de todas as configuraes possveis para ND num passo k, sendo c
k
a
configurao inicial no passo k.
(cadeia vazia) o elemento neutro das operaes unio e interseco em um
conjunto qualquer. O uso de significa que, naquela circustncia, nenhum elemento
vlido do conjuntoest sendo usado.
S o conjunto finito e fixo de todos os eventos que so estmulos de entrada vlidos
para o AD ( S ).
C A o subconjunto das configuraes de aceitao. Seu complemento o
subconjunto das configuraes de falha F.


39
BA e AA so conjuntos de funes adaptativas, ambas contendo a ao nula
( AA BA ). BA corresponde ao conjunto das aes a serem executadas antes da
aplicao da regra, e AA ao conjunto das aes a serem executadas aps a aplicao
da regra.
w=w
1
w
2
...w
n
, i=1,...,n uma cadeia de estmulos de entrada, em que } { S w
i
.
NA o conjunto finito e fixo de todos os smbolos de sada permitidos pelo AD.
AR
k
o conjunto de regras adaptativas, onde AA NA C S C BA AR
k
. Uma
regra adaptativa ar
k
, do conjunto AR
k
tem a forma ar
k
=(ba,c
i
,s,c
j
,z,aa), significando
que a ao adaptativa BA ba executada em resposta a um estmulo s. No caso de
essa ao apagar a regra que est sendo executada, a execuo abortada. Caso
contrrio, a ao no adaptativa nr=(c
i
,s,c
j
,z) executada e, por fim, a ao adaptativa
AA aa executada.
AR o conjunto de todas as regras adaptativas possveis para o AD.
NR o conjunto de todas as regras no-adaptativas subjacentes possveis para o AD.
AA NR BA AM , definido para um AD, o mecanismo adaptativo a ser aplicado
em qualquer passo de operao k para cada regra em NR NR
k
. AM deve ser tal que
ele opere como uma funo quando aplicado a qualquer subdomnio NR NR
k
. Isso
determinar um par de aes adaptativas que podero ser anexadas em qualquer regra
no adaptativa.
Um dispositivo adaptativo inicia-se uma configurao inicial, seguida pela aplicao da
cadeia de estmulos de entrada. Em seguida cada estmulo analisado, sendo aplicada a
regra apropriada para cada estmulo. Neste momento, trs situaes distintas podem
ocorrer:
No existe regra para responder ao estmulo e a cadeia deve ser rejeitada.
Existe uma nica regra a ser aplicada para o estmulo e o prximo contexto bem
definido.


40
Existe mais de uma regra para o estmulo e todas as regras devem ser aplicadas
paralelamente, como de modo usual em um dispositivo no determinstico. Em
ambientes sem paralelismo isso deve ser adequadamente simulado.
Na aplicao de uma regra, primeiramente executada a ao adaptativa anterior ba e,
se esta implicar em excluso da regra que est sendo imposta, a aplicao da regra
abortada e volta-se ao passo de verificao das regras que devem ser aplicadas. Com a
execuo da ao adaptativa o AD passa de uma configurao inicial para uma
intermediria.
Em seguida aplicada a regra no adaptativa, fazendo com que o AD passe para uma
segunda configurao intermediria. Por fim, a ao adaptativa posterior aa executada,
chegando ao autmato final, ou seja, o autmato aps a aplicao da regra adaptativa.
Esses passos so repetidos at o final dos estmulos da cadeia de entrada, at que se
chegue a uma configurao de aceitao ou a uma falha, com a parada do dispositivo.
4.3 EXEMPLO DE DISPOSITIVO ADAPTATIVO
Uma maneira de exemplificar o dispositivo adaptativo analisar como ele utilizado no
trabalho original, ou seja, como o dispositivo utilizado nos autmatos de pilha
estruturados para criar autmatos adaptativos.
Os autmatos de pilha estruturados so vistos como conjuntos de autmatos de estados
finitos interligados atravs da pilha. Dessa forma, o autmato se simplifica em relao
aos autmatos de pilha convencionais, pois a pilha tem funo nica bem definida:
armazenar o endereo de retorno da submquina. Alm disso, as submquinas que
formam o autmato so mais simples, tornando este tipo de construo de melhor
entendimento.
O autmato de pilha estruturado possui dois tipos de transies: as internas, em que h o
consumo da cadeia de entrada; e as externas que so responsveis pela chamada e
retorno das submquinas.
Em (NETO; 1993), os autmatos de pilha estruturados so definidos como uma 8-tupla
M=( Q, A, , , P Z
0
, q
0
, F), em que: Q um conjunto de estados de M, o alfabeto de


41
entrada, o alfabeto de pilha que contm Z
0
, o marcador de pilha vazia. O estado
inicial q
0
pertence ao conjunto Q, e o conjunto F subconjunto de Q, denotando os
estados finais do autmato. O conjunto A o conjunto das submquinas a
i
, i=1,...,n
implementando M da forma:
a
i
= (Q
i
, , P
i
, q
0,i
, F
i
)
em que { Q
1
, ..., Q
n
} e { P
1
, ..., P
n
} so parties de Q e P. F
i
um subconjunto de Q
i
,
representando os estados de retorno da submquina a
i
, e q
0,i
o estado de entrada da
submquina.
Cada transio p do conjunto P da forma:
(g, e, s) : (g, e, s)
esquerda representada a situao da mquina antes da aplicao de p e direita
representada a situao aps a aplicao de p. g e g representam o contedo no topo da
pilha, e e e so estados da mquina, s e s so tomos do conjunto . Os meta-smbolos
e representam, respectivamente, as partes da pilha e da cadeia que no so alteradas
pela produo.
Alm disto, algumas regras so definidas:
Quando e e e pertencem mesma submquina, a transio p representa uma transio
interna da submquina e g e g devem ser vazios.
Quando g no vazio, g, s e s devem ser vazios, e a transio p representa uma
chamada de submquina. Neste caso, e deve ser um estado de entrada de submquina
e g o estado de retorno da submquina.
Quando g no vazio, g, s e s devem ser vazios e a transio p representa um
retorno de submquina, e o estado de retorno deve ser o estado armazenado na pilha
na chamada da submquina.
No mesmo artigo (NETO; 1993), ao aplicar o dispositivo adaptativo, tem-se algumas
pequenas alteraes no formalismo acima.
Uma transio passa a ser da forma


42
(p, e, s) : A, (p, e, s), B
Em que A e B so listas de chamadas a funes adaptativas executadas, respectivamente,
antes e depois da aplicao da regra.
Uma Funo Adaptativa definida neste artigo como uma 9-tupla: FA = (F, P, V, G, C,
E, I, A, B) na qual:
F o nome da funo adaptativa
P a lista de parmetros formais
V o conjunto de variveis da funo
G o conjunto de geradores da funo
C o conjunto de padro de produo de procura e inspeo
E o conjunto de padro de produo de procura e remoo
I o conjunto de padro de produo de procura e insero
A uma ao adaptativa a ser executada antes de F
B uma ao adaptativa a ser executada aps F
As variveis de V so nomes simblicos usados para guardar valores resultantes de
alguma ao adaptativa que efetua consulta. Os geradores em G so nomes simblicos
que referenciam novos valores a cada uso, podendo ser preenchidos por um valor apenas
durante a execuo de uma funo adaptativa.
Uma ao de consulta de C uma ao que realiza uma pesquisa no conjunto de regras
por um determinado padro sem realizar qualquer alterao no conjunto. Uma ao de
remoo de R remove as regras do conjunto de regras que seguem um dado padro. J a
ao de insero de I adiciona uma regra com um padro especificado no conjunto de
regras.
importante frisar novamente que, por executar uma funo adaptativa antes da
aplicao da regra, a regra pode ser excluda por ela. Neste caso, a aplicao da regra


43
cancelada, e outra regra dever ser executada para a transio em que se encontra o
autmato.

Figura 17 a) Autmato Finito reconhecedor de quaisquer combinaes formadas por um a, um b e
um c; b) Autmato Adaptativo (AA) reconhecedor de um a, um b e um c, com ao adaptativa A,
que retira a transio utilizada e cria uma transio em vazio em direo ao estado final; c) AA aps
reconhecer a; d) AA aps reconhecer a e c; e) AA aps reconhecer a, b e c.
Com isso, o modelo de autmato de pilha estruturado torna-se dinmico, ou adaptativo,
e a cada ao adaptativa executada ele se altera. Um bom exemplo do poder do autmato
adaptativo o reconhecedor de cadeias formadas por uma letra a, uma b e uma c em
qualquer ordem. Esse tipo de reconhecimento importante, por exemplo, para

_ a
_ b _ c _d _ e
a,A
c,A
b,A
c,A
b,A b,A
a
a
c
b
b
c
a
b
a
c
c
b


44
linguagens naturais, em que a ordem dos elementos nem sempre fixa. Com autmatos
de estado finito, uma possvel soluo pode ser como a mostrada na Figura 17a. Com
autmatos adaptativos, a soluo pode ser simplificada como na Figura 17b, adaptada de
(NETO, 2000). O autmato, tambm conhecido como Margarida, devido a seu formato,
apresenta uma transio. Ou ptala, para cada letra que precisa ser reconhecida
possuindo uma ao adaptativa A. Conforme as letras vo sendo consumidas, as aes
adaptativas fazem com que a transio utilizada seja retirada, ou seja, uma ptala cai, e
uma nova transio em direo ao estado final adicionada, com a formao do caule.
Desta forma, o autmato s chega ao estado final se todas as ptalas carem. clara a
simplicidade trazida pelo dispositivo adaptativo neste exemplo, com a drstica reduo
no nmero de estados e transies.
4.4 ALGUMAS DIFICULDADES DA TECNOLOGIA
ADAPTATIVA
Um problema do dispositivo adaptativo, tanto nesta aplicao como em outras em que
foi aplicado, como mostrar o comportamento dinmico em um diagrama. Em geral, a
execuo do modelo necessria para que seu entendimento seja claro, como feito na
Figura 17c, Figura 17d e Figura 17e, em que alguns passos de execuo do reconhecedor
citado so mostrados.
A Tecnologia Adaptativa permite a criao de novas solues para alguns problemas
complexos com o aumento da expressividade dos formalismos em que aplicada, sem
aumento significativo da sua complexidade.
Apesar do ganho de expressividade, a tecnologia adaptativa tem alguns problemas que
devem ser destacados, para que no haja empecilhos sua aplicao na teoria dos
objetos. A primeira grande questo a representao do dinamismo que a tecnologia
adaptativa prov. Decorrente desta dificuldade na representao, que parece ainda no
ter sido resolvida, a criao de uma soluo adaptativa dificultada, j que o
desenvolvedor tem mais dificuldades em vislumbrar a forma como o modelo funciona.
Uma necessidade que a aplicao do dispositivo adaptativo gera a necessidade da
alterao na modelagem do formalismo subjacente para que ela represente as


45
caractersticas dinmicas. Entretanto, a representao do dinamismo dificultada pela
natureza da forma como os modelos dos formalismos normalmente so exibidos:
diagramas grficos, de natureza esttica. A natureza da exibio dos modelos dificulta a
representao de caractersticas dinmicas mesmo com a insero de novas
caractersticas nos diagramas. Desta forma, na maioria dos exemplos de aplicao do
dispositivo adaptativo recorre-se a uma seqncia temporal de diagramas para
evidenciar o comportamento dinmico do modelo, como realizado no exemplo do
reconhecedor de um caractere a, um caractere b e um caractere c.
Este problema da representao traz embutido um outro problema: a criao de uma
soluo adaptativa pode tornar-se menos intuitiva conforme a representao do
dinamismo se torne menos expressiva. Em outras palavras, a representao do
dinamismo tem de ser clara e objetiva para que o desenvolvedor possa vislumbrar e at
aprimorar o comportamento adaptativo sugerido pelo modelo.
Por isso a representao do dinamismo deve ter um estudo cuidadoso, sendo que a
simples adio de novas caractersticas nos diagramas existentes para o formalismo
precursor do formalismo adaptativo pode no ser suficiente para que eles fiquem
adequados ao novo formalismo, sendo necessria uma anlise cuidadosa da qualidade da
representao sugerida.
O presente trabalho sugere uma linha de representao do dinamismo para a orientao a
objetos, e espera, com isso, ampliar o estudo de novas solues adaptativas. Enquanto os
trabalhos existentes focalizam a representao das aes adaptativas, este, alm de
represent-las, mostrar a evoluo do formalismo conforme a execuo de aes
adaptativas.



46
5 OBJETOS ADAPTATIVOS
Este captulo apresenta uma aplicao prtica de alguns conceitos da tecnologia
adaptativa ao conceito de objetos, formando os objetos adaptativos sob um ponto de
vista pragmtico. Desta forma, este captulo define o que vem a ser um objeto adaptativo
e outros conceitos necessrios para a aplicao dos conceitos da tecnologia adaptativa
em objetos. Aps estas definies a questo dos tipos discutida, em questes como a
mudana dinmica de tipos e as conseqentes alteraes necessrias no sistema de tipos.
Por fim, a construo e decises relacionadas ao projeto so apresentadas.
5.1 CONCEITOS
Objeto adaptativo um elemento que representa um objeto ou conceito do mundo real
possuindo propriedades que variam conforme o tempo. Desta forma, um objeto pode
alterar seu conjunto de propriedades e com isso especializar seu comportamento
conforme o meio em que atua. Isso permite que a analogia com objetos fsicos se
fortalea, j que alguns objetos reais podem ser alterados para se adaptarem a diferentes
contextos.
Na Orientao a Objetos em voga, que segue as linguagens baseadas em classe, um
objeto segue um padro fixo de acordo com a classe a que pertence. Esta classe
determina o comportamento e as caractersticas presentes em quaisquer objetos criados
no sistema, de acordo com um conjunto de regras bem definido. A idia do objeto
adaptativo que uma classe permita aos objetos a possibilidade de serem adaptados de
acordo com a necessidade do contexto em que utilizado. Isso pode ser realizado com a
possibilidade de incluso e excluso de mtodos, atributos e relacionamentos entre
objetos. Assim, dois objetos da mesma classe podem ter um conjunto de propriedades
bem diferente, o que faz com que tenham comportamentos distintos. Outra maneira de se
apresentar esta caracterstica da adaptatividade, a viso de que uma classe poder
potencialmente mapear infinitos tipos atravs da alterao do conjunto original de suas
propriedades. Esses tipos muitas vezes so desconhecidos em tempo de anlise e projeto


47
do sistema, e surgem ou desaparecem com a incluso ou a excluso das propriedades do
objeto.
5.1.1 NOTAS PARA A EXTENSO DO CLCULO DE OBJETOS SEM TIPOS
Em relao teoria dos objetos estudada no captulo 3, h a necessidade de uma
alterao na definio bsica das operaes dos objetos. Em vez de o objeto possuir
apenas dois tipos de operao (invocao e atualizao do mtodo), ele dever possuir
quatro: invocao, incluso, alterao e excluso do mtodo, sendo a atualizao
realizvel atravs da excluso seguida de uma incluso de um mtodo.
O problema dessa alterao que o Clculo- sem tipo est essencialmente baseado na
seguinte caracterstica das linguagens orientadas a objetos: um objeto pode emular outro
objeto que tenha menos mtodos, pois o primeiro tem o protocolo completo do ltimo
(ABADI; CARDELLI, 1996, p.93). De modo informal, a principal dificuldade que o
clculo no apia de modo simples a incluso e a excluso.
Uma questo fundamental a ser tratada a de como permitir que os objetos tenham seus
tipos alterados sem que isso viole o sistema de tipos definido para uma soluo
computacional. A extenso da teoria de objetos para lidar com objetos adaptativos
servir de base para a formalizao da verificao de tipos. Em outros palavras, o
clculo de objetos adaptativos permitir a inferncia de tipos e suas variaes permitidas
pelo sistema de tipos definidos pelo programados.
5.1.2 FORMAS DE ADAPTATIVIDADE EM OBJETOS
A adaptatividade pode ser realizada de duas formas: baseada em objetos, em que a classe
ser sempre a mesma, mas permitir que cada objeto se altere de acordo com as
necessidades impostas pelo contexto em que inserido; e baseada em classes, em que a
classe pode ser alterada de acordo com novas necessidades do sistema.
importante ressaltar que as formas de adaptatividade no esto relacionadas aos tipos
de linguagens estudados no captulo 2. As linguagens so divididas segundo a entidade
sobre a qual se programa. J a adaptatividade dividida de acordo com a entidade que
sofrer aes adaptativas.


48
Desta forma, esta diviso s faz sentido em linguagens baseadas em classes, pois o
conceito de classe inexiste em linguagens baseadas em objetos. Alm do mais, as
linguagens baseadas em objetos j fornecem um grau de liberdade maior em relao s
linguagens baseadas em classes, que o ganho que esperado com a incluso da
adaptatividade nas linguagens baseadas em classes.
5.1.2.1 ADAPTATIVIDADE BASEADA EM OBJETOS
A adaptatividade baseada em objetos denominada desta forma porque as aes
adaptativas agem sobre as instncias das classes (objetos), mantendo as classes dos
sistemas inalteradas. Desta forma, uma instncia de uma classe vai possuir diferenas
em relao sua classe aps a execuo de uma ou mais aes adaptativas, fazendo com
que o seu comportamento dependa do seu contexto e seu histrico, e no apenas da
classe que o define.
Assim como os objetos comearam a ser utilizados em sistemas como analogias do
mundo fsico, os objetos adaptativos podem ser introduzidos da mesma maneira. Um
exemplo da vida real em que acontece essa alterao dos objetos, enquanto a classe
permanece intacta, em relao a corridas de carros de passeio. Carros de passeio so
todos fabricados em uma linha de produo e, tirando um ou outro problema que possa
ocorrer durante a montagem, saem exatamente iguais. No momento da compra do carro,
algumas alteraes j podem ocorrer, com a incluso de acessrios (ar condicionado,
direo hidrulica, banco de couro, entre outros). Mais que isso, um carro de passeio
pode ser alterado para participar de corridas. As corridas de carro de passeio permitem
em suas regras algumas modificaes no carro e probem outras. Estas modificaes, ou
adaptaes, que ocorrem no carro fazem com que o carro tenha caractersticas bem
distintas dos outros originados pela fbrica, porm ele continua tendo sido fabricado l, e
a fbrica no precisou ser reformada para que suas caractersticas fossem alteradas.
Essa forma de adaptatividade tem caractersticas bem interessantes como a manuteno
da estrutura da informao durante a vida do sistema e a facilidade da incluso de
pequenas, porm importantes, variaes.


49
A manuteno da estrutura da informao facilita o projeto de sistemas adaptativos,
visto que a anlise desta estrutura (como ela se desenvolve ao longo do atendimento dos
requisitos do sistema) idntica feita em projetos de sistemas orientados a objetos.
Pequenas variaes podem ser necessrias em contextos no previstos durante a criao
de algumas classes. Uma variao pode ser a adio de um atributo no objeto ou uma
pequena extenso em um mtodo. Um caso em que isso poderia ser utilizado ocorre em
sistemas de laboratrios clnicos. Cada plano de sade atendido por um laboratrio exige
diferentes informaes para o faturamento de um exame realizado por um de seus
afiliados. Desta forma, cada plano de sade exibe um contexto diferente, fazendo com
que o sistema tenha de ser capaz de gerenciar as informaes possveis em cada caso.
Por se tratar de um agente externo, a necessidade de uma nova informao no s
possvel, como acontece, e a incluso dela no sistema pode ser facilitada com uma ao
adaptativa que inclua um novo atributo.
O conjunto de problemas que a adaptatividade baseada em objetos pretende resolver
pode ser resolvido pelos Modelos Adaptativos de Objetos, tratado no captulo 3. Porm,
espera-se que a adaptatividade baseada em objetos, junto a uma extenso apropriada e
mnima dos diagramas UML, seja capaz de superar os problemas existentes nos modelos
adaptativos de objetos vistos no captulo 3, facilitando a interpretao dos modelos em
sistemas adaptativos com a introduo da representao da caracterstica adaptativa na
UML.
5.1.2.2 ADAPTATITIVADE BASEADA EM CLASSES
A adaptatividade baseada em classes, denominada assim por atuar sobre as classes,
importante principalmente na ocorrncia de alterao de requisitos do sistema. Essa
importncia ocorre em dois mbitos: estrutural e desempenho da aplicao.
Continuando com a analogia com o mundo real feito no item 5.1.2.1 e com a fbrica de
carros, supe-se que um projetista da fbrica tenha tido excelentes idias para o novo
modelo de um carro e a fbrica precisar passa por um processo de modernizao para


50
poder fabricar este novo modelo. Estas idias correspondem a novos requisitos e a
fbrica (a classe) tem de ser remodelada para poder atend-los.
No plano estrutural, a alterao de requisitos pode requerer uma alterao da estrutura
do sistema. A adaptatividade baseada em classes permite isso de modo diferente da
baseada em objetos, a qual faz com que instncias possuam estruturas diferentes da sua
classe geradora, sem modific-la. A manuteno da classe na adaptatividade baseada em
objetos faz com que a estrutura da informao (representada na UML pelo diagrama de
classes) fique intacta. J a adaptatividade baseada em classes altera as classes,
implicando na atualizao dessa estrutura, a qual passa a ser compatvel com novos
requisitos.
No mbito do desempenho, a adaptatividade baseada em classes tende a ser melhor, j
que todas as instncias da classe sero criadas para atender aos novos requisitos do
sistema. No caso da adaptatividade baseada em objetos, a criao das instncias
continuaria a ser feita pelo modelo original, o qual poderia no atender aos novos
requisitos, forando a execuo de aes adaptativas antes de se comear a utilizar uma
nova instncia.
Uma possibilidade para a construo da adaptatividade baseada em classes a utilizao
do Javassist, descrito no item Erro! Fonte de referncia no encontrada.. Entretanto,
devido ao fato de ela tratar a alterao da estrutura da informao do sistema, a
complexidade de seu estudo aumenta muito e, por isso, esse tipo de adaptatividade
dever ser tratado de forma adequada em um trabalho futuro.
Para o presente trabalho, sero detalhados o projeto e a construo de um sistema com
adaptatividade baseada em objetos, servindo tambm como um teste para que haja a
continuidade dos estudos da tecnologia adaptativa na teoria de objetos. Alm disso, a
construo de um sistema com adaptatividade baseada em classes mais complicada,
pois requer a alterao de cdigo compilado, ou a utilizao de recursos de gerao
automtica de cdigo e reflexo para poder ser realizada.


51
5.2 TIPOS EM OBJETOS ADAPTATIVOS
A complexidade do trabalho com tipos dos objetos adaptativos devido a sua natureza
dinmica, pois existe a necessidade de diferentes tipos de objeto de acordo com as
necessidades impostas por cada contexto em que ele utilizado. Assim, conforme as
aes adaptativas so executados, uma instncia de objeto adquire um novo tipo e passa
a se comportar de maneira diferente do tipo anterior a que pertencia.
Deve ficar claro que, para cada ocorrncia de uma ao adaptativa de incluso ou
excluso de propriedade, o tipo do objeto ser alterado. Isto porque o que define o tipo
de um objeto o conjunto de propriedades que o compe e, ao alter-lo, o objeto ter
seu tipo alterado. Se no existirem chamadas para as aes adaptativas de incluso ou
excluso em qualquer ponto da classe geradora do objeto, ele sempre ter o mesmo tipo
e se comportar da mesma forma que na teoria de objetos no adaptativos, obedecendo
assim a um dos princpios da tecnologia adaptativa que prev a completa separao entre
o dispositivo adaptativo e o formalismo subjacente.
Outro ponto importante a diferenciao entre tipo e a classe a que uma instncia
pertence. Diferente do que acontece nas linguagens comerciais mais importantes em
voga (como o Java, o C++ e o C#), em que os conceitos de classe e tipo se misturam
devido relao entre tipo e classe ser unria, na adaptatividade uma classe pode ser
relacionada a diversos tipos, que muitas vezes so desconhecidos em tempo de
desenvolvimento do sistema. Como discutido anteriormente, sem chamadas para aes
adaptativas, os objetos possuiro o mesmo tipo, e a relao volta a ser de uma classe
para um tipo, o que refora a separao entre o dispositivo adaptativo e o formalismo
adaptativo defendido pela tecnologia adaptativa.
Alm deste problema de nomenclatura, existe um problema de semntica a ser resolvido.
Um objeto pode ser esperado como sendo de um tipo em um contexto e chegar a esse
com outro tipo, devido a aes adaptativas que o modificaram em seu passado. O que
esta soluo prope uma limitao imposta s aes adaptativas, utilizando o conceito
de interfaces e fazendo com que as aes adaptativas devam atend-las para evitar que
este tipo de problema acontea. Para resolver este problema de semntica criou-se o


52
mecanismo adaptativo, responsvel por aplicar aes adaptativas e por evitar que o
sistema de tipos seja violado.
5.2.1 MECANISMOS ADAPTATIVOS
Um mecanismo adaptativo o mecanismo atravs do qual alterado o conjunto de
propriedades de um objeto, e, desta forma, o tipo ao qual o objeto pertence. Ele
definido como um tipo de propriedade capaz de modificar o conjunto de propriedades do
objeto a que pertence. Para isso deve-se especificar como ele deve realizar essa alterao
de forma que, inclusive, seja possvel prever os tipos que um objeto possa receber
durante o seu ciclo de vida.
Propriedade
Propriedade
MecanismoAdaptativo
+ executa() : void
# verifica() : boolean
Obj eto
+ Objeto(Tipo) : Objeto
AoAdaptativa
- propriedade: Propriedade
AoAdaptativaAdicao AoAdaptativaRemoco
1..*
1..*

Figura 18 Mecanismo Adaptativo
Como mostrado na Figura 18 o mecanismo adaptativo um tipo de propriedade que
composto por aes adaptativas, que so mecanismos capazes de adicionar ou remover
propriedades de um objeto. Desta forma, as aes adaptativas ficam centralizadas no
mecanismo adaptativo, possibilitando um melhor controle do ciclo de vida do objeto e
uma melhor rastreabilidade dos tipos deste objeto. Por ser um tipo de propriedade, um
mecanismo adaptativo pode ser includo ou excludo por uma ao adaptativa (o que
considerada uma adaptatividade de segunda ordem), sendo importante para se ter um
comportamento adaptvel, em que caractersticas dinmicas so necessrias. Porm, a


53
questo da compreenso do ciclo de vida de um objeto torna-se mais complexa,
dificultando a compreenso deste tipo de sistema.
Outra caracterstica do mecanismo adaptativo que, alm de especificar como a
alterao de propriedades deve ser realizada, ele deve conter um verificador para
verificar se o tipo gerado aps a sua execuo compatvel com o contexto em que o
objeto est inserido. Para tanto, o tipo criado deve conter um mnimo de propriedades
utilizadas no contexto, ou seja, deve implementar a interface necessria pelo contexto
em que inserido.
Uma deciso realizada para simplificar o uso de mecanismos adaptativos a diviso em
trs tipos: transformador de tipo, extensor de tipo e redutor de tipo. Existe uma grande
semelhana destes tipos com as aes adaptativas existentes, porm enquanto as aes
esto diretamente relacionadas a uma propriedade, estes esto relacionados ao tipo do
objeto em questo. Um maior detalhamento de cada um dos tipos de mecanismos
fornecida adiante.
O mecanismo adaptativo deve ser associado a um mtodo, para ser executado antes ou
depois do mtodo, assim como ocorre com uma funo adaptativa em uma transio de
um autmato adaptativo.
5.2.1.1 Transformador de Tipo
O Transformador de Tipo um mecanismo que, como sugere o nome, transforma o
objeto do seu tipo atual para outro tipo (ou interface), pr-existente no sistema. Com este
tipo de mecanismo possvel, por exemplo, que um objeto se especialize em outro, sem
a necessidade de criao de duas instncias de objeto distintas.
Um exemplo de aplicao que requer a mudana de tipo ocorre na segurana, em que
um algoritmo inteligente possa ser capaz de se auto-modificar para criar dificuldades
para invasores de sistemas. Com o transformador de tipo, pode haver duas ou mais
classes de algoritmos e uma inteligncia para modific-los de forma que o invasor tenha
mais dificuldade para identificar o esquema de segurana que protege o sistema.


54
Para definir esse tipo de mecanismo so necessrias algumas informaes: o tipo (ou
interface) de destino do objeto e as aes de excluso, incluso e alterao necessrias.
Alm disso, esse mecanismo deve ter, como todo mecanismo adaptativo, uma
verificao a ser realizada aps a sua execuo para aferir se todas as propriedades do
tipo (ou interface) de destino so consistentes com as propriedades presentes no objeto.
A Figura 19 representa o transformador de tipo. importante destacar que ele possui
uma propriedade indicando qual o tipo final do objeto aps a aplicao do mecanismo.
Assim como ocorre em outros mecanismos, h uma especializao do mtodo de
verificao.
Propriedade
MecanismoAdaptativo
+ executa() : void
# verifica() : boolean
TransformadorTipo
- novoTipo: Tipo
# verifica() : boolean

Figura 19 Transformador de Tipo
O transformador de tipo pode ser utilizado ainda para fazer alteraes de mtodo de um
objeto, provocando assim mudana de comportamento sem alterar a interface do objeto,
o que permitiria utilizar o objeto em um certo contexto com um comportamento
especializado. Haveria neste caso uma transformao de tipo sem a alterao da
interface, o que pode ser til em determinados casos.
5.2.1.2 Extensor de Tipo
O Extensor de Tipo um mecanismo que estende o tipo de um objeto com novas
propriedades. Desta forma, ele possibilita a criao de extenses de comportamento,
possibilitando a criao de novos comportamentos no objeto. Alm disso, ele permite a
alterao de propriedades internamente, de forma a manter a interface anterior
aplicao do mecanismo, com a possibilidade de utilizar a extenso.


55
Este mecanismo poderia ser deixado em uma ou mais classes para permitir a realizao
de pequenos ajustes durante a execuo de um sistema. Desta forma o sistema no
precisaria de nova fase de desenvolvimento, diminuindo os seus custos de manuteno.
O extensor de tipo , ento, definido somente por aes de atualizao e incluso de
propriedades. O extensor pode ser visto como um mecanismo adaptativo limitado, pois
apenas uma especializao deste ltimo.
A Figura 20 representa o extensor de tipo. Diferente do transformador de tipo, este
mecanismo no apresenta o tipo final do objeto, pois este pode ter que ser determinado
em tempo de execuo do sistema.
Propriedade
MecanismoAdaptativo
+ executa() : void
# verifica() : boolean
ExtensorTipo
# verifica() : boolean

Figura 20 Extensor de Tipo
Uma diferena do Extensor para o Transformador que o Tipo em questo nem sempre
existe no sistema. Desta forma, a verificao do tipo do objeto diferenciada, sendo que
o ambiente de execuo deve pesquisar no sistema se existe uma interface ou tipo
correspondente ao conjunto de propriedades final do objeto para evitar duplicidade de
tipos, ou criar um novo tipo (ou interface) para os casos em que no exista um tipo ou
interface similar.
5.2.1.3 Redutor de Tipo
O redutor de tipo um mecanismo que altera o tipo de um objeto atravs da excluso de
propriedades de um objeto. Com isso ele se simplifica ou apresenta um comportamento
deteriorado. Isto pode ser til, por exemplo, para representar este tipo de comportamento
tpico requerido em realidade virtual ou em jogos eletrnicos.


56
Este mecanismo, representado na Figura 21, complementar ao extensor de tipo, sendo
formado por aes de alterao e excluso de propriedades. Embora similar ao extensor,
a verificao no redutor mais complexa, visto que no se pode sempre garantir a
interface necessria ao contexto do objeto, como ocorre no extensor. Desta forma,
necessrio fazer a verificao aps o final da execuo para garantir o funcionamento do
sistema.
Propriedade
MecanismoAdaptativo
+ executa() : void
# verifica() : boolean
RedutorTipo
# verifica() : boolean

Figura 21 Redutor de Tipo
Da mesma forma que o Extensor de Tipo, o Tipo final nem sempre existe no sistema.
Assim, deve ser executado o mesmo procedimento: procurar, inicialmente, por um tipo
ou interface correspondente ao conjunto de propriedades final do objeto; em seguida, ao
encontr-lo, ele deve ser aplicado ao objeto e, em caso contrrio, criar um novo tipo e
aplic-lo ao objeto.
5.2.2 INFERNCIA DE TIPOS PELA CLASSE
Com a centralizao das aes adaptativas nos mecanismos adaptativos e a viso de que
um mecanismo altera o tipo do objeto a cada execuo, possvel prever o
comportamento do ciclo de vida do objeto de acordo com os mecanismos que ele prov.
Entretanto, a complexidade da inferncia de tipos aumenta com o nmero de
mecanismos adaptativos de um objeto e, ainda mais, se um mecanismo adaptativo cria
ou altera mecanismos adaptativos.
Desse modo, possvel criar uma rvore de tipos, em que o tipo inicial o tipo criado ao
se instanciar um objeto da classe. Em seguida, possvel criar ramos para cada


57
mecanismo adaptativo existente, de forma que cada alterao possa ser visualizada e,
conseqentemente, os tipos possveis possam ser mais bem analisados para que o
sistema funcione da maneira esperada.
A criao desta rvore de tipos pode ser resultado de um algoritmo, em que os
mecanismos adaptativos e suas chamadas so recuperados do cdigo fonte da classe. De
maneira sinttica, uma vez recuperados os mecanismos e suas chamadas possvel
inferir quais os tipos possveis para o objeto a partir do tipo inicial, decorrente de uma
simples construo de uma instncia da classe. Esse algoritmo essencial para um
compilador de objetos adaptativos, pois atravs dele possvel verificar se o programa
viola, em algum momento, o sistema de tipos.
O algoritmo deve partir de um tipo inicial, que o tipo gerado pela criao de uma
instncia da classe. A partir de ento, enumeram-se os mecanismos adaptativos da
classe. Em um primeiro nvel, aplica-se cada mecanismo para o tipo inicial, de modo que
sejam descobertos os tipos gerados com a aplicao de um mecanismo adaptativo. Em
seguida, aplica-se cada mecanismo em cada tipo gerado no passo anterior, de forma que
sejam descobertos os tipos gerados em um segundo nvel, e assim sucessivamente.
Deve-se ressaltar que cada tipo gerado possui um conjunto prprio de mecanismos
adaptativos, de forma que cada aplicao do mecanismo adaptativo em um tipo atua de
maneira distinta.
O algoritmo tem a tendncia de no terminar, a menos que sejam colocadas algumas
restries. Em primeiro lugar, tipos iguais ou subtipos, no precisam ser analisados mais
de uma vez. Para o primeiro caso (tipos iguais) a execuo do algoritmo gerar duas
rvores de tipos idnticas, sendo desnecessria para a verificao de tipos. O caso de
subtipos mais complexo, mas, em resumo, pode-se dizer que o algoritmo ir criar uma
rvore derivada do tipo menos especializado, de forma que todos os seus ns tero um
correspondente na rvore mais genrica. Logo, se o sistema de tipos no for violado para
um tipo, no o ser para o seu subtipo e o sistema estar seguro.
Mesmo com tais restries, o algoritmo pode no terminar, com a criao de famlias de
tipos no relacionadas. Conseqentemente, sua utilizao torna-se invivel. Uma


58
possibilidade para resolver este problema definir um nmero mximo de nveis que um
objeto evolui com respeito verificao de tipo (idealmente um sistema no deveria ter
este tipo de limitao). Com isso, se a utilizao de um mecanismo adaptativo sempre
gerar novos tipos em um certo n da rvore de tipos, restringir a sua execuo a um
nmero limitado de vezes para possibilitar o seu trmino. Como conseqncia, no se
pode garantir a segurana do sistema de tipos criado, uma vez que a verificao de tipos
no ser completa, apenas aproximada. O tratamento formal desta questo dever fazer
parte de um trabalho futuro.
No item 5.5, retorna-se ao resultado das execues dos mecanismos adaptativos no ciclo
de vida de objetos.
5.3 CONSTRUO
Existem algumas solues possveis para produzir objetos adaptativos. A primeira delas
seria utilizar o Modelo Adaptativo de Objetos (captulo 3) para criar uma camada de
abstrao para os objetos adaptativos. Assim, utilizando o AOM possvel criar um
objeto adaptativo atravs desta estrutura e fornecer um arcabouo para que o
desenvolvedor utilize objetos adaptativos de forma transparente, em que teria,
basicamente, interfaces para incluir e excluir elementos de um objeto.
Outra possibilidade de construo de objetos adaptativos alterar uma mquina virtual
orientada a objetos, como a Java Virtual Machine ou a mquina virtual do Microsoft
.NET, para representar objetos adaptativos, o que possibilitaria no s a construo,
como um melhor aproveitamento dos recursos da mquina virtual para obter um melhor
desempenho. Neste caso, uma possibilidade de se realizar a pesquisa de mtodo,
mostrada no captulo 3, poderia ser feita segundo a Figura 22. Nela, uma tabela
denominada mtodos adaptados adicionada, podendo ser referenciada pela tabela de
mtodos da classe. Deste modo, o acesso aos mtodos adaptativos uniforme. Da
mesma maneira, deve haver mtodos de incluso, excluso e invocao dos mtodos
com acesso tabela de mtodos adaptados, no includos na figura para simplific-la.


59

Figura 22 Mtodos Adaptativos
Apesar da vantagem de melhor utilizao dos recursos, a utilizao do Modelo
Adaptativo de Objetos foi escolhida principalmente pelo fato de requerer um menor
tempo de desenvolvimento e servir para demonstrar o ganho de expressividade que a
adaptatividade traz aos objetos, um dos objetivos do presente trabalho.
5.3.1 REFLEXES E DECISES DE PROJETO
Para a construo realizada neste trabalho, algumas decises tiveram que ser feitas, para
reduzir o tempo de desenvolvimento e ter maior congruncia com a Tecnologia
Adaptativa e com a Teoria de Objetos. Deve-se lembrar que, mesmo tendo uma viso
mais pragmtica, a soluo do presente trabalho baseia-se nos conceitos da tecnologia
adaptativa para procurar criar uma soluo teoricamente bem fundamentada, de modo a
tornar possvel a continuidade da pesquisa em diversos aspectos, inclusive a criao de
um formalismo para os objetos adaptativos. O texto que segue apresenta algumas
reflexes sobre as alternativas de decises de projetos e as principais decises.
Em primeiro lugar, escolheu-se o uso do AOM para a criao de um arcabouo que
tenha a capacidade de gerar objetos adaptativos. O arcabouo pode ser feito sem grandes
dificuldades, atendendo aos requisitos que a tecnologia adaptativa exige. No arcabouo,
o objeto adaptativo criado em um meta-modelo, o qual permite a criao de todos os
conceitos estudados para o objeto adaptativo.
Com o arcabouo, preservam-se as caractersticas da orientao a objetos e um
desenvolvedor s precisa entender os objetos adaptativos caso necessite e queira utiliz-
los. Esta separao uma das caractersticas necessrias da tecnologia adaptativa, a qual


60
prev que modelos projetados no formalismo original, no caso modelos orientados a
objetos, continuem sendo vlidos no formalismo estendido com o dispositivo adaptativo.
Deve-se reforar que a tecnologia adaptativa no est sendo aplicada a um formalismo,
mas algumas idias desta tecnologia esto sendo aplicadas a um caso particular da teoria
dos objetos, aos contextos particulares de uma linguagem orientada a objetos.
Uma das necessidades que surgem com a adaptatividade a separao dos conceitos de
tipo e classe nos objetos adaptativos. Por isso, um objeto adaptativo deve ter, alm de
um mtodo ObterTipo(), j presente nas linguagens de programao C# e Java (mtodo
GetType()), um mtodo InstnciaDe() ou ObterClasse(). Para isso, os objetos
adaptativos utilizaro o padro Objeto Tipo (JOHNSON; WOOLF, 1998), estudados no
captulo 3. O mtodo ObterTipo() ser sobrescrito para retornar o tipo determinado
dinamicamente pelo meta-modelo. J o mtodo ObterClasse() retornar a classe que
gerou a instncia em questo.
Diferente da teoria dos objetos formulada em (ABADI; CARDELLI, 1996), em que um
objeto um conjunto de mtodos e os campos so tipos de mtodos especficos, como
visto no item Erro! Fonte de referncia no encontrada., os atributos e os mtodos
sero tratados separadamente, como dois tipos diferentes de propriedade, para
simplificar desenvolvimento e para aproximar da viso dada por linguagens orientadas a
objetos usuais, como o Java, o C++ e o C#. Com essa separao, espera-se facilitar o
trabalho do desenvolvedor de objetos adaptativos, o qual j est acostumado com esta
diviso.
As propriedades sero feitas atravs do padro Propriedade (FOOTE; YODER, 1998)
estudado no captulo 3. Mtodos e campos estendem essa classe, caracterizando os tipos
diferentes de propriedades, sendo que os mtodos podero ser realizados de diferentes
formas, atravs da herana de uma estrutura bsica contendo um mtodo de disparo, um
nome, um conjunto ordenado de parmetros e um tipo de retorno do mtodo. Em
princpio, uma das formas ser atravs do padro Objeto Regra (ARSANJANI, 2000
captulo 3) e outra atravs do espao de nome System.Reflection.Emit, o qual permite a
emisso de mtodos dinamicamente.


61
Diferente do que prev a tecnologia adaptativa, uma ao adaptativa ir ser aplicada a
uma entidade apenas, e no a um conjunto de entidades paralelamente. Assim, as
propriedades e mtodos que precisem ser modificados, sero recuperados atravs de sua
assinatura, nica no sistema, e faro com que as aes adaptativas atuem sobre uma
nica propriedade por vez, simplificando o entendimento de sua aplicao.
Uma outra restrio necessria, que as aes adaptativas s podero ser chamadas
atravs dos mecanismos adaptativos, um tipo de propriedade que possui as regras para
aplicao das aes adaptativas. Estes mecanismos se utilizaro das aes adaptativas
para alterar o tipo do objeto e, depois, iro verificar se o sistema de tipos continua
consistente.
O padro de consulta dos objetos adaptativos dever estar de acordo com o nome das
propriedades e dos mtodos, e um conjunto de tipos de parmetros, sempre vazio para o
caso das propriedades. Isto quer dizer que o padro de consulta seguir a assinatura de
mtodos, propriedades e mecanismos adaptativos, de forma que o resultado da consulta
ser um subconjunto unitrio do conjunto de propriedades do objeto adaptativo, sendo
vazio quando o padro no for encontrado.
As aes adaptativas so mtodos embutidos nos objetos adaptativos, podendo ser
utilizados pelo desenvolvedor atravs da especificao de um ou mais mecanismos
adaptativos. Sero aes especficas, ou seja, agem sobre uma propriedade. Assim sero
criados trs mtodos para a realizao das aes adaptativas:
ObterPropriedade(padro de consulta), que devolve um subconjunto de propriedades
que aderem ao padro de consulta passado como argumento.
RemoverPropriedade(propriedade), que remove uma propriedade do objeto.
AdicionarPropriedade(propriedade), que adiciona uma propriedade no objeto.
Outra necessidade da tecnologia adaptativa a aplicao da ao adaptativa antes e/ou
depois da aplicao da regra em questo. No caso dos objetos, a aplicao da regra
corresponde ao uso de uma propriedade, seja a execuo de um mtodo, a atribuio ou
recuperao de um valor de uma propriedade, ou a execuo de um mecanismo


62
adaptativo. Para incluir o mecanismo adaptativo antes ou depois de uma propriedade,
sero utilizados dois novos atributos (um para executar o mecanismo antes e outro para
executar depois do uso da propriedade) para a propriedade, especificando qual
mecanismo deve ser executado. Desta forma, na utilizao de uma propriedade, deve-se
verificar se tais atributos existem, para a aplicao do mecanismo adaptativo apropriado.
Outra importante deciso foi o relacionamento entre o objeto adaptativo e o objeto
convencional. Este relacionamento poderia ser uma especializao, em que o objeto
adaptativo especializa alguns mtodos, como o mtodo ObterTipo, e incrementa outros,
as aes adaptativas. Outra possibilidade seria represent-los como uma composio, em
que o objeto adaptativo contm um objeto convencional, de forma que o objeto
adaptativo s exporia as propriedades necessrias.
A especializao restringe mais o objeto adaptativo, visto que a dependncia do objeto
no adaptativo grande. Entretanto ela se adequa tecnologia adaptativa, na medida em
que a tecnologia preconiza que a camada subjacente deve ser mantida para ser utilizada
normalmente. A composio prov uma maior flexibilidade, simplificando a construo
do mecanismo adaptativo. Pode-se dizer que ela tambm atende tecnologia adaptativa,
na medida em que o objeto adaptativo representa um conjunto maior que o objeto no
adaptativo, incluindo ele prprio. Entretanto, a camada subjacente (o objeto no
adaptativo) passa, nesta viso, a ser dependente da camada adaptativa (o objeto
adaptativo), pois ela tem controle total sobre a outra camada, impossibilitando o uso da
camada subjacente de maneira transparente. Por esta razo, a especializao foi
escolhida para implementar o objeto adaptativo.
Alm disso, um ponto ainda no trabalhado foi o no determinismo que a tecnologia
adaptativa prev (item 4.2). Este item dever ser tratado em um trabalho futuro, em que
o dispositivo adaptativo seja includo no formalismo do objeto. Como este trabalho
pragmtico, este item no ser levado em considerao, por questes de simplificao do
escopo da pesquisa.


63
5.3.2 CONSTRUO DA ADAPTATIVIDADE BASEADA EM CLASSES
Apesar de no ser o foco deste trabalho, vale a pena destacar algumas possibilidades
para a construo desta outra forma de adaptatividade, tanto como referncia para
trabalhos futuros, como para esclarecer um pouco mais as diferenas entre as duas
formas de adaptatividade tratadas no texto.
Para construir a adaptatividade baseada em classes, pode-se pesquisar a possibilidade de
uso da Gerao Automtica de Cdigo, munida por ferramentas de reflexo, assim como
a possibilidade de uso da reflexo estrutural.
Reflexo, como foi visto, a possibilidade, em tempo de execuo, de se descobrir
caractersticas intrnsecas ao objeto que est sendo utilizado. possvel instanciar
objetos de uma classe desconhecida em tempo de desenvolvimento, bem como aplicar
valores a seus atributos ou executar mtodos. Com isso, seria possvel, sem muitas
dificuldades, gerar e compilar automaticamente o cdigo de uma classe em tempo de
execuo para utilizao desta nova classe. Esta classe poderia substituir uma outra
vigente at ento, ou mesmo ser uma nova classe no sistema, passando a atender novos
requisitos do sistema.
A reflexo estrutural permite a alterao das classes e objetos em tempo de execuo.
Infelizmente este tipo de reflexo no implementado nas bibliotecas das mquinas
virtuais vigentes, como a JVM e o .NET. Apesar disto, pode-se implementar esta forma
de reflexo como realizado em (ORTIN; et. al; 2005), em que possvel ter um ganho
de desempenho em relao ao cdigo gerado automaticamente, j que no existem os
passos de gerao, compilao e acesso do cdigo gerado atravs da reflexo
comportamental.
5.3.3 ARCABOUO DE OBJETOS ADAPTATIVOS
A partir das decises tomadas, pde-se esboar o projeto do arcabouo de objetos
adaptativos como um meta-modelo de objetos. Deve-se inicialmente representar os
objetos comuns, ou no adaptativos, em um meta-modelo, para depois estend-lo com os
mecanismos adaptativos.


64
A Figura 23 representa uma parte de um meta-modelo de objetos, representando apenas
algumas caractersticas essenciais, como o Tipo do Objeto, com um relacionamento em
que um objeto tem um tipo, e um tipo pode ser aplicado a um ou mais objetos. Alm do
tipo, o meta-modelo representa as propriedades e suas assinaturas, que as identificam
unicamente e atravs da qual ser realizada a ao adaptativa de consulta. Ainda so
representados os tipos de propriedades: Campo, que possui um valor implcito e mtodos
para recuper-lo e alter-lo, e Mtodo, que possui um corpo que representa a sua
implementao e um mtodo para execut-lo.
Obj eto Tipo
- Nome: string
Propriedade Assinatura
- Nome: string
Campo
- valor: int
+ aplicarValor(Objeto) : void
+ obterValor() : Objeto
Mtodo
- corpo: string
+ Executa(Objeto[]) : Objeto
AssinaturaCampo
- Tipo: Tipo
AssinaturaMetodo
- TipoParametros: Tipo[]
- TipoRetorno: Tipo
1..*
0..*
tipo
1

Figura 23 Meta-modelo de objeto
A incluso do dispositivo adaptativo no meta-modelo introduz um novo tipo de
propriedade: o mecanismo adaptativo o qual estende o objeto no adaptativo, tornando-o
adaptativo atravs dos mtodos de incluso, excluso e alterao de propriedades.


65
A Figura 24 mostra o meta-modelo evidenciando as mudanas ocorridas no meta-
modelo anterior com a introduo da camada adaptativa. Pode-se verificar na figura que
um objeto adaptativo uma especializao de um objeto no adaptativo, bem como o
mecanismo adaptativo um tipo de propriedade com trs subtipos: o transformador de
tipo, o extensor de tipo e o redutor de tipo.
Camada Adaptativa
CamadaSubj acente
Obj eto Tipo
- Nome: string
+ Tipo(Assinatura[]) : Tipo
+ Tipo(Tipo, Assinatura[]) : Tipo
Propriedade
- Nome: string
- Tipo: Type
Obj etoAdaptativo
MecanismoAdaptativo
+ executa() : void
# verifica() : boolean
RedutorTipo TransformadorTipo
- novoTipo: Tipo
ExtensorTipo
AoAdaptativa
- propriedade: Propriedade
1..*
0..*
tipo
1

Figura 24 Meta-modelo de objeto adaptativo


66
A Figura 24 no apresenta, por simplificao, o atributo do mtodo que indica qual
mecanismo deve ser aplicado antes e/ou depois da sua execuo. Alm disso, a figura
mostra as aes adaptativas, pertencentes a um mecanismo adaptativo e atuando sobre o
objeto adaptativo.
Com este modelo e as decises descritas no item 5.3.1 ento possvel construir o
arcabouo e, a partir dele, construir um simples prottipo funcional demonstrando o seu
funcionamento.
5.4 PROTTIPO
Com a soluo do Modelo Adaptativo de Objetos descrita no item 5.3, projetou-se um
arcabouo adaptativo e desenvolveu-se um prottipo para demonstrar o funcionamento
da funcionalidade adaptativa nos objetos adaptativos. O prottipo retrata o exemplo
mostrado no captulo de tecnologia adaptativa (item 4.3), mas realizado atravs dos
objetos adaptativos. O exemplo foi escolhido devido sua simplicidade e porque
permite mostrar todas as aes adaptativas em ao.
Foram realizadas duas formas de se executar o prottipo: reconhecimento de uma cadeia
formada por um caractere a, um caractere b e um caractere c; e reconhecimento de uma
cadeia de um nmero qualquer de letras, formada pelas letras iniciais do alfabeto, sem
repetio de letras (ou seja, uma cadeia de uma letra deve ser o a, uma cadeia de duas
letras deve ser formada por um a e um b, e assim por diante).
O prottipo permite ainda que se execute o reconhecimento passo-a-passo, ou seja, uma
letra por vez, ou o reconhecimento completo. O primeiro foi feito para acompanhar as
alteraes no objeto reconhecedor aps o reconhecimento de cada letra. O
reconhecimento completo til para a verificao do funcionamento do algoritmo, pois
permite a entrada de diversas cadeias e seu reconhecimento num tempo menor.
O prottipo se inicia com a entrada da cadeia pelo usurio e seleo do tipo de
reconhecimento (um a, um b, e um c ou n letras).
A classe base para qualquer reconhecedor a classe ReconhecedoraDeCadeia. Ao se
selecionar um reconhecimento de um a, um b e um c, a classe gera uma instncia


67
reconhecedora de vazio, e o sistema o altera para ser do tipo reconhecedor de um a, um
b e um c. Para isso adicionam-se trs mtodos, cada um para consumir uma das letras, e
trs propriedades responsveis por indicar a necessidade de se consumir cada letra. Ao
executar um consumo de uma letra, o mtodo de consumo removido e a propriedade
de necessidade de reconhecimento da letra marcada. Assim ocorre at o final da
cadeia, quando todos os mtodos de consumo so excludos e as propriedades marcadas,
indicando reconhecimento da cadeia. Quando a cadeia for invlida, ou alguma das
propriedades ir permanecer desmarcada (faltam letras na cadeia), ou no existe o
mtodo de consumo para a letra que est sendo reconhecida. No primeiro caso, o
reconhecimento acaba sem haver a confirmao da cadeia pelo reconhecedor. No
segundo, uma exceo lanada indicando que uma letra no pode ser reconhecida. O
acesso ao objeto feito atravs de dois mtodos no adaptveis: um indicando se o
reconhecimento foi feito (cadeia consumida e todas as propriedades marcadas) e outro
fazendo o reconhecimento da prxima letra na cadeia, passando por todos os mtodos
existentes. No caso de no haver o consumo, gera-se o erro de letra no reconhecida.
O reconhecimento de um nmero qualquer de letras feito de maneira anloga ao
reconhecimento de uma cadeia formada por um caractere a, um caractere b e um
caractere c. A diferena o nmero de mtodos e propriedades criadas, sendo varivel
neste caso. Com tantas semelhanas, o reuso de cdigo foi utilizado atravs do
mecanismo de herana da soluo mais simples.
A seqncia de passos da execuo do reconhecimento de uma cadeia bac pode ser
resumida como segue. O reconhecedor iniciado e seu tipo alterado para um
reconhecedor de um a, um b e um c. Ao reconhecer o primeiro caractere, o consumo de
b executado e excludo, e o reconhecedor passa a ser do tipo reconhecedor de um a e
um c. Ao reconhecer o caractere a, o consumo de a executado e excludo, e o
reconhecedor passa a ser do tipo reconhecedor de um c. Por fim, o reconhecedor
consome o caractere c e se transforma num reconhecedor de cadeia vazia, aceitando a
cadeia de entrada bac.


68
No caso do reconhecedor de um a, um b e um c, o nmero de tipos de reconhecedores
possveis limitado e conhecido, podendo ser representado pela Figura 25, na qual se
representa a rvore de tipos desse reconhecedor. O exemplo passo a passo demarcado
em negrito, demonstrando que apenas alguns tipos da rvore so utilizados no ciclo de
vida deste objeto.
cd
Tipo
ReconhecedorNulo
Tipo
ReconhecedorABC
Tipo
ReconhecedorAB
Tipo
ReconhecedorAC
Tipo
ReconhecedorBC
Tipo
ReconhecedorA
Tipo
ReconhecedorB
Tipo
ReconhecedorC
CriaTransformadorABC
TransformaoTipo
ConsomeC
TransformaoTipo
ConsomeC
TransformaoTipo
ConsomeC
TransformaoTipo
ConsomeB
TransformaoTipo
ConsomeB
TransformaoTipo
ConsomeB
TransformaoTipo
ConsomeA
TransformaoTipo
ConsomeA
TransformaoTipo
ConsomeA
TransformaoTipo
ConsomeA
TransformaoTipo
ConsomeB
TransformaoTipo
ConsomeC
TransformaoTipo

Figura 25 rvore de tipos do reconhecedor de um a, um b e um c em qualquer ordem(em destaque
o reconhecimento da cadeia bac)
5.5 MODELAGEM DE OBJETOS ADAPTATIVOS
Apesar dos problemas que o objeto adaptativo se prope a resolver poderem ser
resolvidos com outras solues, como o Modelo Adaptativo de Objetos do captulo 3 e o


69
uso de reflexo, todas as solues esbarram no problema da modelagem. A inteno
deste captulo tanto mostrar os requisitos para a representao do comportamento
adaptativo em diagramas de uma extenso da UML, como preservar os aspectos
positivos fornecidos pela modelagem orientada a objetos da UML. Em outras palavras, o
critrio de deciso primordial , sempre que possvel, no alterar a UML convencional.
Seguindo a linha de pesquisa da tecnologia adaptativa, em que novos diagramas foram
propostos, este estudo ir procurar trazer para os objetos adaptativos uma forma de
representar seu dinamismo, estendendo os diagramas vigentes da UML. Pretende-se que
os elementos dos modelos constantes nos diagramas originais, relativos soluo no
adaptativa, continuem a ser vlidos nos novos diagramas, como preconiza a tecnologia
adaptativa.
Para tanto, o presente trabalho pretende dar um primeiro passo, analisando apenas
alguns diagramas essenciais modelagem orientada a objetos, deixando os restantes
para um trabalho futuro. Desta forma, sero analisadas apenas as extenses para os
diagramas de classes e de seqncia, alm da incluso de um novo diagrama,
responsvel pela visualizao dos tipos possveis que um objeto pode assumir durante
seu ciclo de vida.
A escolha dos dois diagramas deve-se importncia deles (ou os diagramas mais
utilizados pelos desenvolvedores) e caracterstica de cada um. O diagrama de classes
tem aspecto estrutural, sendo o mais utilizado diagrama da modelagem orientada a
objetos, pois serve como base para toda a modelagem, inclusive na criao de outros
diagramas. O diagrama de seqncia tem aspecto dinmico, apresentando o
comportamento inter-objetos do sistema. A utilizao de dois diagramas com aspectos
diferentes deve nortear os estudos para a extenso dos outros diagramas, de modo que
todos estejam aptos a representar o comportamento adaptativo de um sistema de maneira
adequada.
A extenso ser realizada sobre a UML 2.0 (OMG, 2005), com a criao de perfis UML
para a representao das caractersticas adaptativas includas nos objetos adaptativos.


70
5.5.1 DIAGRAMA DE CLASSES
O modelo de classes tradicional apresenta a estrutura dos objetos do sistema. Como
preconizado pela Tecnologia Adaptativa, o formalismo que recebe a camada adaptativa
deve continuar funcionando aps a sua insero. Em outras palavras, as novidades
trazidas pela tecnologia adaptativa devem ser alternativas, ou seja, o usurio deve poder
escolher entre utiliz-la ou no. Se optar por no utiliz-las, a sua existncia no deve
incorrer em mudanas na forma como trabalha, mantendo sua representao nos
diagramas intacta. Assim, a substituio de um enfoque pelo outro facilitada, uma vez
que o uso das caractersticas do objeto adaptativo opcional.
O modelo de classes adaptativo deve apresentar uma nova propriedade a ser aplicada em
suas propriedades existentes: a propriedade da adaptatividade. Esta propriedade deve
indicar que uma propriedade original pode ser modificada em tempo de execuo,
podendo at mesmo ser excluda. Com isso, propriedades no adaptativas definiriam a
estrutura tradicional da classe aos objetos. Com a extenso das propriedades adaptativas,
os objetos passariam a ter caractersticas prprias, mesmo pertencentes s classes, j que
poderiam, a qualquer momento, incluir ou excluir uma propriedade, mtodo ou
mecanismo adaptativo.
O modelo de classes da UML um dos que menos deve sofrer alteraes para ser
transformado em um modelo adaptativo. O que deve ser alterado neste modelo a
apresentao da viso do que pode ou no ser alterado por aes adaptativas, sem que o
objeto deixe de pertencer classe original. Alm disso, o modelo dever evidenciar os
mecanismos adaptativos pertencentes classe, mostrando como os objetos podem ter
seu tipo alterado em tempo de execuo.
Como visto no item Erro! Fonte de referncia no encontrada., isso s acontece
porque a forma de adaptatividade em objetos estudada no a baseada em classes, que
implicaria em mudanas estruturais e, deste modo, iria implicar em diferentes modelos
de classe durante a execuo de um sistema que aplica este tipo de adaptatividade.


71
profile
AdaptiveClass
metaclass
Class
AdaptiveClass
metaclass
Feature
AdaptiveFeature
- isAdaptable: boolean =true
AdaptiveOperation
- adaptiveFeature: AdaptiveFeature
- type: AdaptiveOperationType =1
metaclass
Operation
enumeration
AdaptiveOperationType
- add: int =1
- rem: int =2
AdaptiveMechanism
TypeExtensor TypeReducer TypeTransformer
1
contem
taggedValue 1..*
extends
extends
0..*
1
extends

Figura 26 Perfil UML AdaptiveClass
Assim, para representar as caractersticas da adaptatividade, criou-se um perfil UML,
conforme mostrado na Figura 26
5
. A figura representa uma classe adaptativa
(AdaptiveClass), que indica se uma classe cria ou no objetos adaptativos. Uma classe
adaptativa possui propriedades adaptativas (AdaptiveFeature), sendo propriedades que
podem ser adicionadas e removidas do objeto em tempo de execuo. Alm disso,
apresentam-se os mecanismos adaptativos (AdaptiveMechanism), responsveis por
aplicar um conjunto de operaes ou aes adaptativas (AdaptiveOperation), de forma
a alterar o tipo de um objeto, podendo ser do tipo Transformador (TypeTransformer),
Redutor (TypeReducer) ou Extensor (TypeExtensor). Uma ao adaptativa pode ser
de adio (AddFeature) ou de remoo (RemFeature), e aplicada a uma instncia
de uma classe com a adio de uma nova propriedade ou remoo de uma propriedade
existente. As classes AdaptiveClass, AdaptiveFeature e AdaptativeOperation so
definidas como extenses das meta-classes Class, Feature e Operation, respectivamente,
do meta-modelo da UML (OMG,2005).

5
A ferramenta utilizada para criar os perfis no oferece suporte notao introduzida na ltima
reviso da UML 2.0 para a extenso de meta-classes (o smbolo de herana em que o tringulo tem
preenchimento em preto). No entanto, o relacionamento <<extendes>> disponvel, tem a mesma
semntica de extenso de meta-classe definida na UML 2.0.


72
O modelo de classes, diferente da maioria dos modelos estudados pela Tecnologia
Adaptativa, no apresenta comportamento dinmico, ou seja, em qualquer momento do
sistema, independente das aes adaptativas que venham a ocorrer, o modelo sempre o
mesmo e deve representar o sistema da mesma maneira. A justificativa para isso que as
classes do sistema no mudam, e sim suas instncias, fazendo com que esse diagrama
seja esttico, no sendo alterado pelos mecanismos adaptativos.
Apesar de o diagrama de classes no representar o comportamento dinmico, ele
representa a configurao inicial dos objetos, representando as instncias no momento
em que so criadas. Isso delimita os tipos que as instncias podem receber com a
execuo dos mecanismos adaptativos pertencentes a ela.
Com a definio deste perfil UML, possvel criar um diagrama para o exemplo do
reconhecedor de um a, um b e um c. Como representado na Figura 27, uma classe leitora
de cadeia, utiliza o reconhecedor adaptativo para verificar se a cadeia tem o formato
esperado. importante ressaltar que o diagrama no representa explicitamente todos os
tipos a que o reconhecedor pode pertencer, mas possvel inferi-los pelos mecanismos
adaptativos existentes (do tipo TypeReducer).
AdaptiveClass
Reconhecedor
- cadeiaVazia: boolean
AdaptiveFeature
+ ConsomeA() : void
+ ConsomeB() : void
+ ConsomeC() : void
TypeReducer
+ ReduzA() : void
+ ReduzB() : void
+ ReduzC() : void
Leitor
- cadeia: string
usa

Figura 27 Um exemplo de diagrama de classes adaptativo para o reconhecedor de um a, um b e
um c.

A viso de quais tipos uma instncia pode receber e do ciclo de vida do objeto, com a
identificao dos tipos por qual ele passa, sero responsabilidade, respectivamente, dos
diagramas de tipos adaptativos e de seqncia, apresentados adiante.


73
5.5.2 DIAGRAMA DE SEQNCIA
Outra classe de diagramas importante na modelagem orientada a objetos a classe dos
diagramas dinmicos, a qual representa o comportamento de instncias do objeto
durante seu ciclo de vida, Esta classe formada por trs diagramas, cada um
representando o comportamento do objeto sob um determinado ponto de vista. O
diagrama de seqncia apresenta o comportamento do ponto de vista temporal, ou
seqencial. Alm dele, existem o diagrama de estados e o diagrama de comunicao. O
primeiro, apresenta o ponto de vista de mquinas de estados finitas e o segundo focaliza
as interaes entre as linhas de vida dos objetos, relevando a arquitetura da estrutura
interna dos objetos e de suas comunicaes atravs de mensagens.
Para representar o comportamento adaptativo, escolheu-se um dos diagramas, de forma
que o tratamento a ser adotado para os demais diagramas deva derivar deste. O diagrama
de estados similar aos diagramas j estudados na tecnologia adaptativa, como os
autmatos (Neto, 1994) e os statecharts adaptativos (Junior, 1995) e, por isso, no ser
visto neste trabalho. O diagrama de comunicao e o diagrama de seqncia so
equivalentes semanticamente (OMG, 2005), e aparentemente a soluo para que eles
representem as caractersticas adaptativas deve ser similar.
A representao de sistemas com tipos alterveis pode ser analisada sob o ponto de vista
da classificao dinmica (Odell et al, 2003). De modo informal, a classificao
dinmica corresponde aplicao de regras ou classificaes dinamicamente a
entidades, fazendo com que estas possuam diferentes comportamentos e possam ser
utilizadas em diferentes contextos.
Desta maneira, em um exemplo prtico do dia-a-dia (Odell et al, 2003), pessoas podem
ser empregadas ou no, e se empregadas podem ocupar diferentes cargos. Neste caso, a
pessoa corresponde a uma entidade e o status de empregabilidade e cargo, a uma
classificao. Mais que isso, o status pode mudar, ao se despedir, promover ou rebaixar
um funcionrio. Isso altera a classificao da entidade, ou, em outras palavras, o tipo do
objeto, considerando-se que a entidade um objeto e a classificao um tipo. Com isso
o tipo do objeto adaptativo passa a ser o tipo formado pelo conjunto das suas partes.


74
Ator
Objeto CamadaAdaptativa
ParteB
Objeto Adaptativo
Mtodo A
Extensor

Figura 28 Representao do mecanismo de extenso de tipo - adaptada de (Odell, 2003)

Assim, a mesma notao utilizada para a classificao dinmica, pode ser usada para
representar os tipos dinmicos decorrentes da tecnologia adaptativa. Desta forma, a
representao de um mecanismo de extenso de tipo pode ser comparada classificao
(por exemplo, a promoo do funcionrio), e representado como mostrado na Figura 28.
Diferente da representao de classificao, a extenso de tipo se inicia no dispositivo
adaptativo e no em um elemento qualquer do diagrama. O objeto adaptativo
considerado como um conjunto formado pelo objeto original, o dispositivo adaptativo e
as variaes que nele ocorram.
De modo anlogo comparao entre o mecanismo de extenso e a classificao, pode-
se aplicar a representao de uma desclassificao para o mecanismo de reduo de tipo,
conforme mostrado na Figura 29. Da mesma forma que o extensor de tipo, a figura
mostra que o dispositivo adaptativo causa a eliminao de uma parte do objeto, de modo
que o objeto adaptativo passa a pertencer ao tipo das partes restantes.


75

Figura 29 Representao do mecanismo de reduo de tipo adaptada de (Odell, 2003)
Por fim, faz-se a analogia entre o mecanismo de transformao de tipo com a
reclassificao para represent-lo conforme a Figura 30. Neste caso, o Transformador
aplicar duas aes: eliminar o tipo original e criar o tipo de destino. Desta maneira,
para o usurio, o objeto adaptativo est tendo o seu tipo trocado.

Figura 30 Representao do mecanismo de transformao de tipo adaptada de (Odell, 2003)
Com esta representao possvel ressaltar a variao de tipos proveniente da aplicao
dos mecanismos adaptativos. Entretanto ela no suficiente, por si s, para indicar a
existncia de uma nica entidade, pois esta representao sugere que, ao se trocar um
tipo, criada uma nova instncia, diferente da instncia original, quando na realidade a


76
aplicao da tecnologia adaptativa faz com que a mesma instncia tenha seu tipo
alterado.
Por isso, utiliza-se o conceito de pacote da UML (OMG, 2005) para agrupar as
diferentes partes que formam o objeto adaptativo. Desta forma, um pacote representa
uma instncia de um objeto adaptativo, formado por uma parte representando o
dispositivo adaptativo, e outra representando a camada subjacente.

Figura 31 Diagrama de seqncia do reconhecedor de um a, um b e um c.
Assim, um exemplo de um diagrama de seqncias para um objeto adaptativo pode ser
mostrado na Figura 31. A figura representa o diagrama de seqncias para um
reconhecimento de uma cadeia vlida (bac), como no exemplo do prottipo.
importante ressaltar a ao de trs mecanismos adaptativos adaptativos (RedutorB,
RedutorA e RedutorC) no dispositivo adaptativo, excluindo os reconhecedores de a, b e
c na medida que um caractere reconhecido e consumido. Assim, num primeiro
momento, o reconhecedor adaptativo do tipo ReconhecedorABC, para depois de


77
consumir um b se tornar num ReconhecedorAC, e assim por diante, at se tornar um
reconhecedor de cadeia nula e reconhecer a entrada.
Com isso o diagrama representa o que cada objeto ter que fazer para realizar uma
funo do sistema, incluindo possveis aes adaptativas. Este modelo, diferente do de
classes, dinmico (no sentido adaptativo), sendo alterado por aes adaptativas. Assim,
de acordo com a ordem da aplicao dos mecanismos adaptativos, um novo
comportamento ocorre, fazendo com que o diagrama de seqncia tenha vrias
possibilidades de descrio do comportamento de um objeto num certo contexto. Note
que, diferente dos outros modelos estudados na Tecnologia Adaptativa que apresentam
todo tipo de alterao no modelo, este modelo apenas representa alteraes no
comportamento do sistema.
importante ressaltar que este diagrama representa um possvel caso para um objeto
adaptativo, que est em um determinado contexto e tem um determinado histrico.
Diferentes objetos em diferentes contextos poderiam se comportar de maneira diferente
da apresentada, e precisariam de outro diagrama de seqncias para a representao de
seu comportamento. De qualquer modo, a representao de um comportamento com o
uso de mecanismos adaptativos simples, apresentando o comportamento adaptativo de
maneira adequada.
5.5.3 DIAGRAMA DE TIPOS ADAPTATIVOS
O diagrama de tipos adaptativos tem por objetivo mostrar como as aes adaptativas
agem sobre o objeto em que atuam, representando as possibilidades de tipos que um
objeto pode assumir durante seu ciclo de vida. Desta maneira, possvel ter uma noo
de como as mudanas de tipo causadas pelos mecanismos adaptativos ocorrem no ciclo
de vida de um objeto.
Para a representao dos tipos no ciclo de vida de um objeto sero utilizadas duas
entidades da UML 2.0:
Tipo, como a principal entidade no diagrama. Apesar de o Tipo ser definido na UML
2.0, no existe uma representao especfica para esta entidade, aparentemente pelo


78
fato de a UML representar linguagens baseadas em classes que possuem
relacionamento unrio com tipos e, portanto, a representao de tipos e classes pode
ser a mesma. Para o presente trabalho no ser proposto nenhuma nova representao,
sendo utilizada a representao clssica de classe com o esteretipo <<type>>
correspondente.
Associao, como base para a criao de um esteretipo para representar uma troca de
tipo, indicando qual mecanismo adaptativo do tipo original responsvel pela
mudana para o tipo de destino.
metaclass
UMLDiagram
TiposAdaptativos
metaclass
Class
Tipo
TransformaoTipo
metaclass
Association
tipoDestino
tipoOrigem
extends
extends
extends

Figura 32 Perfil UML do Diagrama de Tipos Adaptativos
Assim, o perfil UML para o diagrama de tipos pode ser visualizado na Figura 32. Nela
pode-se perceber a criao de um novo diagrama como extenso da meta-classe
UMLDiagram, denominado TiposAdaptativos, um esteretipo para classe representando
os tipos de um objeto (Tipo) e um esteretipo de transformao de tipo
(TransformaoTipo). Tipo uma extenso da meta-classe Class e TransformaoTipo
uma extenso da meta-classe UML Association.


79
Deste modo pode-se criar um diagrama como o apresentado no item 5.4, na Figura 25,
para representar os tipos do ciclo de vida de um reconhecedor de uma cadeia com um a,
um b e um c.


80
6 CONCLUSES E TRABALHOS FUTUROS
A aplicao da tecnologia adaptativa no foi realizada em sua completude, pois no foi
aplicada em um formalismo. Algumas de suas idias foram utilizadas para criar um
arcabouo com funes simulando as caractersticas do dispositivo adaptativo. Mesmo
assim a tecnologia adaptativa mostrou-se muito til na criao deste arcabouo,
simplificando em alguns aspectos a construo de sistemas com caractersticas
adaptativas em relao, por exemplo, ao Modelo Adaptativo de Objetos.
Por ter sido uma aplicao prtica de parte dos conceitos da tecnologia adaptativa, no
possvel tirar concluses mais slidas sobre a aplicao do dispositivo adaptativo em um
formalismo com tipos, como ocorrido. Entretanto, a idia mostrou-se vivel, medida
que o arcabouo construdo apresentou-se funcional para a construo de um exemplo
em que as aes adaptativas so utilizadas.
Deve-se ressaltar que a presente soluo no completa, sendo vlida apenas no escopo
do exemplo apresentado e poder ser funcional para a construo de alguns outros
sistemas citados no texto. Isso ocorre porque a soluo baseou-se em um estudo prtico
e as limitaes impostas pela soluo, como a criao de mecanismos adaptativos,
devem ser melhor analisadas quando do estudo da extenso do formalismo de objetos
com o dispositivo adaptativo.
Desta forma, um importante trabalho futuro a ser feito a extenso de um formalismo de
objetos com o dispositivo adaptativo, com o tratamento apropriado da questo dos tipos
e procurando uma soluo completa para a extenso do conceito de objetos com o
dispositivo adaptativo. Para isso, vale lembrar que alguns aspectos de como isso pode
ser feito est destacado no item Erro! Fonte de referncia no encontrada., e um
estudo aprofundado da teoria de objetos apresentada em (ABADI; CARDELLI, 1996) e
outros formalismos de objetos necessrio para tal trabalho. Alm disto, alguns aspectos
da tecnologia adaptativa no foram tratados com sua devida importncia, como a
questo do indeterminismo sugerido por ela, sendo necessrio um estudo bem detalhado
das caractersticas do dispositivo adaptativo (NETO, 2001) para que ele seja aplicado
corretamente ao formalismo de objetos que for estendido.


81
Em relao ao Modelo de Objetos Adaptativos (AOM), possvel dizer que os objetos
adaptativos apresentam ganhos significativos em relao ao seu uso. A encapsulao dos
seus principais padres de projeto em um arcabouo, por exemplo, simplifica a tarefa de
construo de um sistema com caractersticas adaptativas, j que boa parte da
programao necessitada pelo AOM est pronta para ser utilizada.
Outra vantagem dos objetos adaptativos em relao ao AOM a simplificao da
abstrao. Enquanto no AOM, um objeto adaptativo simulado atravs de um conjunto
de instncias de diferentes classes, o arcabouo torna isso transparente ao programador,
que passa a se preocupar como uma nica entidade.
Alm do encapsulamento de boa parte dos padres de projeto e da simplificao da
abstrao, este trabalho apresentou uma simplificao para a representao de
caractersticas adaptativas em alguns diagramas UML. Como o AOM est fundamentado
em padres de projeto, que normalmente so solues estruturais em diagramas de
classes, a representao se torna complexa conforme aumenta o nmero de
caractersticas adaptativas de um sistema e o de padres de projeto da soluo. Com o
uso de perfis UML e da noo de mecanismos adaptativos foi possvel simplificar a
representao de caractersticas adaptativas em diagramas de classe. Desta forma, uma
das vantagens da tecnologia adaptativa foi obtida neste caso: os modelos tornaram-se
mais expressivos. Para representar o mesmo comportamento adaptativo, um diagrama de
classes do AOM precisa de um conjunto maior de classes do que na representao
criada, em que a uma classe pode apresentar as caractersticas adaptativas necessrias.
A representao do comportamento foi outro ganho em relao ao AOM. Enquanto os
trabalhos do Modelo Adaptativo de Objetos no fazem meno representao do
comportamento, este trabalho procurou evidenciar o comportamento atravs do uso dos
diagramas de seqncia que, com a utilizao de alguns conceitos trazidos da
classificao dinmica, foi suficiente para representar o comportamento adaptativo de
maneira adequada.
Outro aspecto interessante foi a criao de um novo diagrama, para representar o aspecto
dinmico dos tipos. Como a UML separa a modelagem orientada a objetos em diferentes


82
vises, com diferentes diagramas para cada aspecto do sistema, foi necessria a criao
de um novo diagrama para representar a questo das alteraes do tipo de um objeto em
seu ciclo de vida.
Como dito, apenas alguns diagramas da UML foram revistos para a representao do
comportamento adaptativo. Assim, outro trabalho futuro interessante o estudo de como
esse comportamento deve ser representado nos diagramas no estudados, de forma que a
modelagem de um sistema com caractersticas adaptativas possa ser feita inteiramente e
de maneira adequada, com os diagramas da UML.
Outra limitao da presente soluo a questo do desempenho do dispositivo
adaptativo. Apesar de no ter sido medido o desempenho do dispositivo, possvel se
afirmar que o seu desempenho no o melhor possvel pois se trata de uma soluo
baseada em meta-modelos necessitando de interpretadores, que causam uma sobrecarga
desnecessria de processamento. Assim, um outro trabalho a ser realizado, visando obter
melhor desempenho dos objetos adaptativos poderia ser a criao de uma mquina
virtual orientada a objetos adaptativos, ou a extenso de uma mquina virtual orientada a
objetos existente, como a Mquina Virtual Java ou a Mquina Virtual .NET, da
Microsoft.
Outra possibilidade para um melhor aproveitamento de recursos a construo de um
sistema com adaptatividade baseada em classes, como sugerido nos itens 5.1.2.2 e 5.3.2.
Porm, a representao aqui tratada ter que ser revista, uma vez que este tipo de
adaptatividade traz mudanas estruturais, no tratadas pelas extenses da UML descritas
neste texto. Esta soluo deve ser mais adequada para um conjunto de problemas que a
apresentada por este trabalho sendo um estudo de grande importncia.


83
REFERNCIAS BIBLIOGRFICAS
Abadi, M., Cardelli, L., A Theory of Objects (monographs in computer science).
Springer-Verlag New York, Inc., 1996.
Arsanjani, A. Rule Object Pattern Language. Proceedings of PLoP2000. Technical
Report #wucs-00-29, Dept. of Computer Science, Washington University
Department of Computer Science, October 2000.
Chiba, S. Javassist --- A reflection-based programming wizard for Java. In
Proceedings of the ACM OOPSLA98 Workshop On Reflective Programming in
C++ and Java. October, 1998.
Dantas, A., Yoder, J.W., Borba, P., Johnson, R. Using Aspects to Make Adaptive
Object-Models Adaptable. Workshop Position Paper; ECOOP 04. Oslo Norway.
2004.
Dony, C., Malenfant, J., Cointe, P. Prototype-based languages: From a new
taxonomy to constructive proposals and their validation. Procedings of the ACM
Conference on Object-Oriented Programming Systems, Languages, and
Applications; pp. 201-217. 1992.
ECMA International. Standard ECMA-335. Common Language Infraestructure
(CLI) Particions I to IV. June, 2006.
Forman, I. R., Forman, N. JAVA Reflection IN ACTION. Manning Publication Co.,
Greenwich, CT, 2005.
Foote, B., Yoder, J.W.. Metadata and Active Object Models. Proceedings of Plop98.
Technical Report #wucs-98-25, Dept. of Computer Science, Washington University
Department of Computer Science, October 1998. URL:
http://jerry.cs.uiuc.edu/~plop/plop98.
Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design patterns: elements of reusable
object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston,
MA, 1995.


84
Golm, M. e Kleinder J. MetaJava-A Platform for Adaptable Operating-System
Mechanisms, Tech. Report TR-I4-97-12, Universitt Erlangen-Nrnberg: IMMD
IV, Aug. 1997; Presented at the ECOOP 97 Workshop on Object-Orientation and
Operating Systems, June 10, 1997, Jyvskyl, Finland.
Herrington, J. Code Generation In Action. Manning Publications. July, 2003.
Iwai, M. K. Um formalismo gramatical adaptativo para linguagens dependentes de
contexto. Tese de Doutorado, USP, So Paulo, 2000.
Iwai, M. K. e Neto, J. J. Introduo s Gramticas Adaptativas. Boletim Tcnico,
PCS-POLI-USP, So Paulo, Brasil, 2000.
Jacobson I. Object-Oriented Sotware Engineering. Addison Wesley Publishing
Company, 1992.
Jacobson I., Booch G., and Rumbaugh J. The Unified Software Development Process.
Addison Wesley Publishing Company, 1999.
Johnson, R., Woolf, B. Type object. Pattern languages of program design 3.
Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1998.
Junior, J. R. A. Stad: uma ferramenta para representao e simulao de
sistemas atravs de statecharts adaptativos. Tese (Doutorado). Escola Politcnica,
Universidade de So Paulo, So Paulo, Brasil, 1995.
Kiczales, G. Aspect-Oriented Programming. ACM SIGPLAN Notices, Vol. 28, n. 4,
December, 1996.
Liskov, B. H., Guttag, J. Abstraction and specification in program development.
MIT Press. 1987.
Milner, R. A theory of type polymorphism in programming. Journal of Computer and
System Sciences 17(3); pp. 348-375. 1978.
Milner, R., Tofte, M., Harper, R. The definition of Standard ML. MIT Press. 1989.


85
NCITS. ANSI/INCITS 319-1998: Programming Language Smalltalk. InterNational
Committee for Information Technology Standards (formerly NCITS). 01-jan-1998.
Neto, J. J. Adaptive Rule-Driven Devices - General Formulation and Case Study.
Lecture Notes in Computer Science. Watson, B.W. and Wood, D. (Eds.):
Implementation and Application of Automata 6th International Conference, CIAA
2001, Vol.2494, Pretoria, South Africa, July 23-25, Springer-Verlag, 2001, pp. 234-
250.
Neto, J. J. Solving Complex Problems With Adaptive Automata. Lecture Notes in
Computer Science. S. Yu, A. Paun (Eds.): Implementation and Application of
Automata 5th International Conference, CIAA 2000, Vol.2088, London, Canada,
Springer-Verlag, 2000, pp.340.
Neto, J. J. Adaptive Automata for Context -Sensitive Languages. SIGPLAN
NOTICES, Vol. 29, n. 9, pp. 115-124, September, 1994.
Neto, J. J. e Basseto, B. A. A Stochastic Musical Composer Based on Adaptative
Algorithms. Proceedings of the 6th Brazilian Symposium on Computer Music -
SBC&M99, Rio de Janeiro, 1999.
Neto, J. J.; Junior, J. R. A. Modeling adaptive reactive systems. In: International
Conference on Applied Modelling and Simulation. Cairns, Australia: [s.n.], 1999.
Neto, J. J.; Junior, J. R. A. Using adaptive models for systems descripton. In:
International Conference on Applied Modelling and Simulation. Cairns, Australia:
[s.n.], 1999.
Neto, J. J.; Junior, J. R. A.; Santos, J. M. N. dos. Synchronized statecharts for reactive
systems. In: Proceedings of the IASTED International Conference on Applied
Modelling and Simulation. Honolulu, Hawaii: [s.n.], 1998. p. 246.251.
Neto, J. J. e Magalhes, M. E. S. Reconhecedores Sintticos - Uma Alternativa
Didtica para Uso em Cursos de Engenharia. XIV Congresso Nacional de
Informtica, pp. 171-181, So Paulo, 1981.


86
Neto, J. J., Moraes, M. Using Adaptive Formalisms to Describe Context-
Dependencies in Natural Language. Lecture Notices in Artificial Intelligence. N.J.
Mamede, J. Baptista, I. Trancoso, M. das Graas, V. Nunes (Eds.): Computational
Processing of the Portuguese Language 6th International Workshop, PROPOR 2003,
Volume 2721, Faro, Portugal, June 26-27, Springer-Verlag, 2003, pp 94-97.
Neto, J. J., Pariente, C. B. and Leonardi, F. Compiler Construction - a Pedagogical
Approach. Proceedings of the V International Congress on Informatic Engineering -
ICIE 99, Buenos Aires, Argentina, 1999.
Odell J., Parunak H., Brueckner S., Sauter J. Changing Roles: Dynamic Role
Assignment. In Journal of Object Technology, vol 2, no. 5, September-October
2003, pp. 77-86.
OMG - Object Management Group. Unified Modeling Language: Superstructure.
August, 2005
Opperman, R.; Rashev, R.; Kinshunk. Adaptability and Adaptivity in Learning
Systems, Knowledge Transfer, V. 2, 1997.
Ortin, F., Redondo, J.M. Designing an Adaptable Heterogeneous Abstract Machine
by means of Reflection. Elsevier Information and Software Technology, Volume
47, Issye 2, pp. 81-94. February 2005.
Ortin, F., Redondo, J. M., Vinuesa, L., Cueva, J. M. Adding Structural Reflection to
the SSCLI. Journal of .Net Technologies, Volume 3, Numer 1-3, pp. 151-162. May
2005.
Parnas, D. L. On the criteria to be user in decomposing systems into modules.
Communications of the ACM 15(12); pp. 1053-1058. 1972.
Pistori, H. Tecnologia Adaptativa em Engenharia de Computao: Estado da arte e
aplicaes. Tese (Doutorado) Edio Revisada. Escola Politcnica, Universidade
de So Paulo, So Paulo, Brasil, 2003.


87
Pistori, H.; Martins, P. S.; Pereira, M. C.; Castro JR., A.A.; Neto, J.J. SIGUS
Plataforma de Desenvolvimento de Sistemas para Incluso Digital de Pessoas
com Necessidades Especiais. IV Congresso Iberdiscap: Tecnologias de Apoio a
Portadores de Deficincia, Vitria, Fevereiro 20-22, 2006.
Pistori, H., Neto, J. J. An Experiment on Handshape Sign Recognition using
Adaptive Technology: Preliminary Results. XVII Brazilian Symposium on
Artificial Intelligence - SBIA'04. So Luis, September 29 - October 1, 2004 [SBIA
Website] (to appear in Springer-Verlag Lecture Notes)
Pistori, H.; Neto, J. J. AdapTree - Proposta de um Algoritmo para Induo de
rvores de Deciso Baseado em Tcnicas Adaptativas. Anais Conferncia Latino
Americana de Informtica - CLEI 2002. Montevideo, Uruguai, Novembro, 2002.
Rocha, R. L. A. Uma proposta de uso de tecnologia adaptativa para simulao de
redes neurais em um dispositivo computacional. In: IX Encuentro Chileno de
Computacin 2001, Punta Arenas. Proceedings of the Encuentro Chileno de
Computacin. Punta Arenas: Universidad de Magallanes, v. CD-ROM, p. 1-9, 2001.
Rocha, R. L. A. e Neto, J. J. Autmato adaptativo, limites e complexidade em
comparao com mquina de Turing. In: Proceedings of the second Congress of
Logic Applied to Technology - LAPTEC'2000. So Paulo: Faculdade SENAC de
Cincias Exatas e Tecnologia, p. 33-48, 2001.
Santos, J. M. N. d. Um formalismo adaptativo com mecanismo de sincronizao
para aplicaes concorrentes. Dissertao (Mestrado). Escola Politcnica,
Universidade de So Paulo, So Paulo, Brasil, 1997.
Souza, M. A. A., Hirakawa, A. R. Robotic mapping and navigation in unknown
environments using adaptive automata.Proceedings of Internacional Conference
on Adaptive and Natural Computing Algorithms ICANNGA 2005, Coimbra,
march 21-23, 2005.


88
Souza, M. A. A., Hirakawa, A. R., Neto, J. J. Adaptive Automata for Mobile Robotic
Mapping. Proceedings of VIII Brazilian Symposium on Neural Networks -
SBRN'04. So Lus/MA - Brazil. September 29 - October 1, 2004.
Taivalsaari, A. Kevo, a prototype-based object-oriented language based on
concatenation and module operations. Report LACIR 92-02. University of
Victoria. 1992.
Wirth, N. Programming in Modula-2. Springer-Verlag. 1983.
Yoder, J.W., Balaguer, F., Johnson, R. Architecture and design of adaptive object-
model. ACM SIGPLAN Notices, Vol. 36, n. 12, pp. 50-60, December, 2001.
Yoder, J.W., Johnson, R. The adaptive object-model architectural style. Proceedings
of the IFIP 17
th
World Computer Congress TC2 Stream / 3
rd
IEEE/IFIP
Conference Of Software Architecture: System Design, Development and
Maintenance, p.3-27, August 25-30,2002.
Zuffo, F., Pistori, H. Tecnologia Adaptativa e Sntese de Voz: Primeiros
Experimentos. Anais do V Workshop de Software Livre - WSL. Porto Alegre, , 2-5
de Junho, 2004.
PGINAS DE INTERNET
Microsoft Rotor. http://msdn.microsoft.com/netframework/programming/clr/ ltimo
acesso em junho de 2006

Você também pode gostar