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.
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.
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.
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).
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.
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.
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