Você está na página 1de 11

RESENHA CRTICA

Nome: Carlos Henrique Pereira de Almeida. Matricula: 1124986 Curso: Gesto da Tecnologia da Informao. Perodo: 1 semestre/2011 Data: 05/10/2011.

1. REFERNCIA BIBLIOGRFICA

Viana, Euriclia; Borba, Paulo. Integrando Java com bancos de dados relacionais. III Simpsio Brasileiro de Linguagens de programao; paginas 77-91. 5 a 7 de Maio de 1999. Porto Alegre, Brasil.

2. APRESENTAO

Paulo Henrique Monteiro Borba, com Graduao e Mestrado em Cincias da Computao pela Universidade Federal de Pernambuco (UFPE), e Doutorado em Computing pela Universidade de Oxford, Inglaterra, atualmente professor titular de graduao e ps-graduao do CIM Centro de informtica, da Universidade Federal de Pernambuco, e atualmente realiza trabalhos visando o fortalecimento da pesquisa e a consequente insero internacional como participante do Software
Productivity Group (SPG), estabelecendo importantes cooperaes internacionais;

coordena, em particular, o projeto PROBRAL de cooperao com o grupo da Professora Mira Mezini (Darmstadt University of Technology, Alemanha), liderana conhecida na rea de Orientao a Aspectos; inclusive, devido ao reconhecimento pelo trabalho realizado, tem atrado pesquisadores de outros pases ao seu trabalho junto ao SPG. Tambm colaborou com a comunidade nacional de Engenharia de Software, como Presidente da Comisso Especial de Engenharia de Software (CEES) da Sociedade brasileira de Computao (SBC), no perodo de Novembro de 2009 a Outubro de 2010.

3. DIGESTO:

O presente artigo, intitulado Integrando Java com Bancos de Dados Relacionais dos autores Euricelia Melo Viana e Paulo Borba apresentam no resumo a proposta de utilizao de APIs (Application Programming Interfaces) para integrar a Linguagens de Programao Orientadas a Objetos (LPOO) Java com Banco de Dados Relacionais (BDR), esclarecendo que seu uso deve ser feito com cautela e com o devido critrio de escolha, para no ocorrer prejuzo devido perda dos benefcios da utilizao da orientao a objetos (OO). Na introduo, os autores comparam um projeto orientado a objeto numa implementao no-persistente a outra persistente a fim de evidenciar a necessidade de integrar LPOO com algum mecanismo de persistncia, como BDR; comenta que so vrias as APIs que permitem integrao, mas que necessitam obedecer certas diretrizes, para manter os benefcios da Orientao a Objetos (OO) e do Banco de Dados Relacional (BDR), e alerta que no caso de se utilizar de ferramentas e mtodos em ambientes de desenvolvimento como DelphiTM, JBuilderTM e Visual CafTM, que tornam a integrao de LPOO com BDR quase automtica, existe ausncia de preocupao em obedecer os critrios que garantam continuidade e reversibilidade da implementao em relao ao projeto OO, e dessa forma o mapeamento das classes de anlise ou projeto OO para tabelas do BDR ocasionam problemas tais como a falta de encapsulamento, information hiding e modularizao, violando os princpios bsicos da OO. Os autores mencionam que Bancos de Dados Orientados a Objetos (BDOOs) diminuem os problemas, fornecendo homogeneidade ao processo de

desenvolvimento e facilitando a integrao com LPOOs, pois ambos manipulam objetos; contudo, menciona que BDOO no a tecnologia de BDs dominante no mercado, logo sendo justificvel realizar a integrao de LPOO com BDR desde que feito de forma adequada; eles indicam qual foi o objetivo do trabalho que formalizar as diretrizes para integrao de LPOO com BDR, atravs de uma arquitetura que integra Java com BDR utilizando API JRB (Java Relational Binding), o que ir garantir os benefcios de ambas as tecnologias utilizadas para atender aos fatores de qualidade no desenvolvimento de software, tais como reusabilidade,

extensibilidade e eficincia.

A seo Princpios para a Integrao iniciada com a abordagem sobre como o modelo de objetos criado pela analise e projeto OO serve de base para gerar as tabelas do BDR ou qualquer estrutura de armazenamento, obtendo-se a implementao que apesar de utilizar uma linguagem OO no uma implementao pura, pois omite a definio de objetos de negcio, e mesmo que houvesse essa definio, a falta de diretrizes adequadas na estruturao da implementao pode resultar na presena de cdigo de dados nos objetos de negcio, o que mostra uma falta de preocupao em garantir a extensibilidade e a reusabilidade; explicam a soluo a implementar com a proposta da criao de uma arquitetura com uma camada de software transparente tratando do armazenamento e manipulao dos objetos no BDs, fortalecendo o isolamento das classes de acesso ao mecanismo de persistncia, e com isso aplicado o princpio de independncia dos objetos de negcio do mecanismo usado para garantir a persistncia, obtendo-se objetos de negcio reusveis. Analisam que o sistema se compe de uma camada de acesso a dados e de outras camadas negcios, GUI e comunicao que evoluem com o processo de desenvolvimento; apresentam uma ilustrao do sistema, onde foi acrescentada uma camada de dados contendo o cdigo de manipulao de dados persistentes na atividade de implementao, a fim de no impactar na camada de negcios, e com essa insero minimiza o impacto nessa camada para atender a outro princpio que reduzir o impacto causado, permitindo a introduo da camada de dados com o BDs de forma a afetar o mnimo possvel na camada de negcio, em pontos especficos. Na seo Integrao ad hoc esclarece a diferena entre a Integrao ad hoc muito usada em ambientes de desenvolvimento e a integrao a ser proposta, fornecem um exemplo de uma aplicao bancria e do seu diagrama de classes; explicam que devido a ter sido realizado uma implementao simples baseada na Integrao ad hoc, com a inexistncia de diretrizes para efetuar a integrao com o BD, o cdigo de armazenamento e acesso tabela do BDs termina sendo inserido diretamente na classe, mas que algumas classes do diagrama de classes no so implementadas como classes de Java, pois so representadas por tabelas do BDR, onde os valores dos atributos de um objeto da classe correspondem a um registro da tabela, logo os dados a serem inseridos

atuam diretamente no mtodo que realiza a atualizao correspondente no registro do BDs. Na seo Deficincias da Integrao ad hoc realizada uma anlise do exemplo inicial, alertando para a falta de encapsulamento e information hiding que so princpios bsicos da OO, evidenciando a falta de preocupao em relao estruturao da implementao que fica resumida pelas tabelas do BDs com atributos que podem ser modificados indiscriminadamente por qualquer parte do sistema, causando impacto direto no cdigo do sistema, ficando comprometidas a reusabilidade e extensibilidade por essa integrao, devido a no haver distino entre cdigo de negcio (que possui suas regras e objetos de negcio) e o cdigo de dados, e vo mais alm, demonstrando atravs de um exemplo que se ocorrer a necessidade de adaptao desse sistema para utilizar outro mecanismo de persistncia ou se ocorrer a necessidade de trabalhar com outro esquema de dados, dever ser desenvolvido um novo sistema, devido a falta de isolamento do cdigo de negcio e desta forma no poder ser reutilizado. Ressaltam que a falta de diretrizes de integrao obriga o programador a assumir a responsabilidade em estruturar toda a implementao do sistema e mesmo com a utilizao de ambientes como JBuilder que contem componentes para encapsulamento das operaes bsicas da camada de acesso a dados no ir resolver, pois preciso definir como e onde sero requisitados os servios desses componentes, o que refora a necessidade de se ter uma arquitetura que defina tais aspectos. Na seo Variaes da Integrao ad hoc fica relatada que a falta de encapsulamento um problema identificado no exemplo inicial e que pode ser resolvido se programadores usarem de disciplina para restringir a manipulao da tabela utilizada no exemplo a uma classe respectiva, e em seguida apresenta um cdigo escrito atendendo a soluo dada, comentam que apenas sero feitas chamadas para operaes com contas feitas pelos mtodos da prpria classe, possuindo atributos e mtodos de negcios e cdigo de dados; esclarecem que a soluo deve solicitar um mecanismo garantindo a consistncia entre objetos na memria principal com as tabelas em memria secundria, e que isso necessita usar uma API de mais alto nvel do que java.sql, como API JRB que implementa uma cache para controlar a transferncia de dados dos objetos Java na heap para os BDs e vice-versa; e ressaltam a soluo proposta pelo cdigo em Java apresentado,

onde os comandos implementados contendo os mtodos de acesso a dados ficam declarados na interface dada, alm da exceo inserida pelo mtodo e que a atualizao ser um mtodo automaticamente gerado pelas ferramentas que acompanham a JRB e que serve para requisitar ao BDR a atualizao, sendo que, alm desse mtodo sero gerados outros que fazem a manipulao direta dos dados persistentes. Os autores finalizam essa seo, aludindo que ser possvel obter variaes diversas da integrao ad hoc, porm sem resolver os problemas j identificados no exemplo inicial, pois todas possuem deficincias, sendo que estas sero analisadas na prxima seo. A seo Deficincias das Variaes da Integrao ad hoc eles comparam a mudana com o exemplo inicial, indicando o ganho no encapsulamento, ganhos em continuidade e reversibilidade do processo de desenvolvimento, j que as classes do projeto sero refletidas nas classes de implementao, entretanto permanece a deficincia da independncia de persistncia, e como exemplo apresenta a classe de negcio afetada que depende de operaes de acesso a BDs devido ao mtodo, e mesmo usando a API de mais alto nvel, no caso de se mudar o mecanismo de persistncia, isso ir provocar uma mudana do cdigo de negcio prejudicando a extensibilidade; alm disso, evidenciam tambm que no se pode ter o mesmo cdigo de dados usando formas diferentes de armazenar os objetos persistentes, pois a dependncia entre cdigo de dados e cdigo de negcio impede a reusabilidade das classes de negcio que so integrantes fortes de uma biblioteca de classes reusveis, sendo que reusar o conceito de conta bancria no caso apresentado implica em reusar tambm a forma de armazenar as contas de forma persistente. Na seo Integrao Objeto-Relacional expem que evitar a mistura do cdigo de armazenamento e recuperao de dados com o cdigo de operaes e objetos do negcio a ideia bsica da integrao objeto-relacional, atravs da priorizao do encapsulamento com a separao das classes utilizadas na implementao do sistema em dois tipos, sendo o primeiro tipo a das classes que descrevem os objetos de negcio obtidos pela modelagem do domnio do problema e o segundo tipo a das classes para manipulao e armazenamento de dados, e realizar a comunicao entre as classes por meio de interfaces a fim de permitir maior independncia do cdigo de negcio em relao forma efetiva da

implementao das operaes de persistncia, dando como exemplo o acesso ao BDs ou outro mecanismo como arquivos; em seguida os autores fornecem a principal motivao para realizar essa mudana que a de minimizar o impacto causado por modificaes no sistema tanto de requisitos funcionais como a introduo de novos servios, quanto para requisitos no-funcionais como no caso de adaptao do sistema para utilizao de outro mecanismo de persistncia ou melhora de performance de consultas, e vai mais alm, afirmando que fazendo isso tambm se consegue resolver outros problemas da integrao ad hoc; explicado que, dessa forma, obtm-se implementao modular que se dividir em camadas independentes, tais como classes contendo cdigo de negcio compondo a camada de negcios, as de cdigo de dados contendo camada de dados, as de cdigo de comunicao entre subsistemas contendo a camada de comunicao, e as de cdigo de interface com usurio, contendo a camada de interface. Ao final desse tpico, fornecida a arquitetura a ser utilizada para integrao que melhor elucida os aspectos levantados, que ser apresentado nas prximas sees e, no final, ser dada uma descrio grfica completa da soluo. A seo Classes Bsicas e Classes cadastro os autores esclarecem que na integrao objeto-relacional a implementao espelha mais o projeto OO, pois a classe que define um conjunto de objetos diferente da classe que define um tipo especfico de objeto e exemplifica remetendo ao exemplo inicial onde os conceitos de duas classes esto misturados; logo em seguida, ele explica que as classes de negcio so subdivididas em dois tipos: as classes bsicas e as classes cadastro, sendo que classes bsicas so objetos bsicos de negcio e classes cadastro so agrupamentos dos objetos bsicos de negcio contendo operaes tais como a insero, busca e excluso de elementos, verificaes ou testes de pr-condies de tais manipulaes e outras operaes que remetem a operaes bsicas dos objetos de negcio, e a seguir esclarecem no exemplo inicial quais so as classes bsicas e qual ser a classe cadastro. Na seo Classes Bsicas eles seguem a linha adotada para a integrao objeto-relacional, esclarecem mais as classes bsicas dada no exemplo inicial, explica qual delas pode ser considerada extensvel e reusvel, que se aproxima da forma mais fiel ao resultado do projeto OO. Ainda seguindo o exemplo, realizam a anlise identificando qual a classe conter o mtodo de um cdigo de negcio e que

no recorre a mtodos de armazenamento de dados, fazendo uma chamada aos mtodos gerados automaticamente pelas ferramentas de JRB, tornando-a dependente dessa API, porm esta poro de cdigo de dados dependente da API pode ser removida, pois no ir gerar impacto na camada de negcio, j que o cdigo de dados no invocado pelos mtodos de negcio, e continuando a anlise fornece outro exemplo de uma classe que na verdade contm um cadastro de contas como atributo, sendo que essa classe apenas invoca os mtodos dos cadastros que contm, onde as excees so oriundas do mtodo, indicando que o repositrio utilizado para armazenar as contas no est disponvel. Na seo Classes Cadastro eles realizam a analise do exemplo inicial da classe cadastro que contem o atributo repositrio, que foi passado como argumento para o construtor, na qual as implementaes utilizam diferentes mecanismos para armazenamento de dados, onde esto o cdigo de negcio dos mtodos de um cadastro e a interface que define as operaes implementadas pela camada de dados e outros mtodos (atualizao, procura e o comando do mecanismo de persistncia para o estado do objeto), sendo essa classe responsvel pelo teste de validade do objeto e de invocar o mtodo da interface repositrio, responsvel pela insero do valor do objeto na estrutura de armazenamento. Constatam que, tanto o mtodo insere quanto o mtodo procura, o servio solicitado a um objeto de uma classe que implementa um repositrio e por essa anlise, esclarecem que s possvel manter a modularidade e separao entre camadas somente se as classes de camada de dados forem implementadas com detalhes da estrutura e operaes de acesso e armazenamento, sejam para BDRs, arquivos, estruturas volteis na memria principal ou mesmo BDOOs; elucidam que para ter uma classe cadastro independente da estrutura de armazenamento, dois componentes so importantes, em primeiro lugar as classes repositrio da camada de dados e em segundo lugar as interfaces entre classes da camada de dados (classes repositrio) e camada de negcios (classes cadastro), sendo realizado o seu detalhamento na prxima seo. A seo Interfaces Repositrio se inicia com a declarao de que classes repositrio possuem sempre um perfil especfico, contendo os mtodos de manipulao dos objetos na estrutura de armazenamento e ento propem a definio de interfaces repositrio, para estabelecer um padro de comunicao entre objetos das classes cadastro e os objetos das classes repositrio por meio de

assinaturas de mtodos para insero, atualizao, consultas e excluso nos repositrios, pois a utilizao da interface ir proporcionar extensibilidade, com qualquer estrutura de armazenamento utilizada, onde a camada de negcio necessitar apenas das operaes declaradas na interface para implementar em uma classe repositrio; em seguida eles retomam o exemplo inicial, onde fornecem o cdigo onde a classe cadastro ficar livre da tarefa de manipulao de dados e que os objetos de repositrio passaro a assumir tais tarefas, e outro cdigo com a modificao, com a observao de que, nesse caso, foi implementado o mtodo atualiza que s faz sentido em implementaes persistentes, devido a garantir que o estado do objeto na memria principal ser atualizado na estrutura de armazenamento utilizada; e ao final do tpico, ressaltam a importncia de haver flexibilidade, porque na fase de otimizao ser possvel identificar operaes crticas e program-las de forma diferenciada, se for necessrio, alm de dispor de operaes para consultas sequenciais objeto a objeto, e fornecem um exemplo de cdigo escrito para essa operao. A seo Eficincia relembrada que um dos requisitos bsicos da arquitetura para integrao objeto-relacional deve atender a eficincia, com uma soluo atrelada aos princpios de OO e que no comprometa o desempenho, somente possvel pela implementao de BDRs, pois a interface repositrio deve receber operaes para consultas mais especficas, porm ser mais eficiente se realizada com consulta SQL do que comandos Java. Na seo Classes Repositrio so comentadas que as classes repositrio esto no nvel mais baixo da arquitetura proposta, os quais possuem o cdigo de manipulao da estrutura de armazenamento (tabelas do BDR objeto desse artigo), classes que reconhecem a estrutura de armazenamento e so dependentes dela, de tal forma que mudanas nelas causam impacto nestas classes, que ficam isoladas de outras camadas do sistema, e a seguir explicam a funo da classe repositrio do exemplo inicial e como ser seu comportamento; em seguida, apresentado o diagrama de classes com a interface e a classe repositrio da soluo implementada, que especifica como a classe repositrio ficar definida e as finalidades dos comandos definidos para esta classe. feita a explicao da classe repositrio onde estaro informaes sobre conexo com base de dados a ser acessada, a classe de JRB que implementar operaes de banco de dados (abrir,

fechar, conectar e desconectar) e que recebe argumentos a serem lidos de um arquivo de configurao e passados pela classe fachada classe cadastro e desta a classe repositrio, e um desses argumentos indicar se o BD utilizado ser Oracle, Sybase ou acesso via JDBC, e concluem afirmando que mudanas na camada de dados somente tero impacto nesta classe. A seo Viso Geral da Arquitetura da Integrao Objeto-Relacional, eles apresentam o agrupamento de todos eles sob a forma grfica por meio de notaes de pacotes de UML (Unfiled Modeling Language). Na seo Concluses, reafirmam a arquitetura do sistema a fim de obter camadas independentes de cdigo, separando o cdigo de negcio do cdigo de dados, enumeram as vantagens obtidas, que a classificao das classes do sistema, e a delimitao do escopo de servios implementados em cada uma das classes, permitem projeto e construo de mtodos e ferramentas que orientam e automatizam parte do trabalho do programador na implementao de sistemas persistentes, e os exemplos apresentados ilustram a arquitetura utilizando a linguagem Java, porm sendo essa arquitetura bem genrica, podendo ser aplicada a outras linguagens de programao OO, com os benefcios j citados; apesar do objetivo inicial ser integrar Java com BDR, isso resolve parte dos problemas do uso de Java com BDOO, arquivos indexados e outros mecanismos de persistncia. Afirmam que essa proposta foi testada em vrias aplicaes prticas, onde sistemas foram desenvolvidos utilizando a arquitetura proposta, porm aperfeioada a fim de atender aos problemas que foram identificados, e finalizam, apresentando as aplicaes realizadas. Ao final do trabalho, fazem os agradecimentos queles que ajudaram no entendimento e identificao dos problemas encontrados na aplicao de uma verso da arquitetura.

4. REFLEXO CRTICA SOBRE O ARTIGO A obra fornece subsdios nossa pesquisa cientfica, medida que trata do mtodo cientifico aplicado aos conceitos fundamentais de Banco de Dados Relacionais e Linguagem Java, reportando-se a esclarecimentos mais distantes sempre que necessrio.

Com estilo claro e objetivo, os autores do esclarecimentos sobre a utilizao de Banco de Dados e Linguagem de Programao, exemplificando, impulsionando a crtica e discusso terica sobre fundamentos bsicos de Bancos de Dados e Linguagem Java, auxiliando sobremaneira a incurso das pesquisas nessa rea. uma leitura que exige conhecimentos prvios para ser entendida, alm de diversas releituras e pesquisas quanto a conceitos e contextos apresentados. Atravs da metodologia cientfica com uma abordagem realizada sob a forma de anlise intensiva do assunto e da releitura e intensa pesquisa bibliogrfica dos conceitos apresentados, os autores recorrem aos conceitos fundamentais de Banco de Dados Relacionais e da Linguagem Java, onde realizam passo a passo, a identificao dos pontos chaves que implicam na ocorrncia de falhas na implementao de um programa Java com utilizao de Bancos de Dados Relacionais, e fornecem um mtodo para realizar essa integrao, refutando a integrao ad hoc porque ignora detalhes fundamentais que interferem com os conceitos primordiais da utilizao de Banco de Dados Relacionais com a perda das vantagens da utilizao da Linguagem de Programao Orientada a Objetos, dessa forma, conduzem a uma soluo adequada para aplicao prtica na elaborao de uma integrao isenta dessas falhas. Os exemplos citados amplamente nos auxiliam na compreenso da atividade cientfica e nos possibilitam analisar e confrontar vrias ideias, expondo qual a melhor soluo a ser implementada. Fica evidente a imensa possibilidade de trabalhos que podem ser realizados na rea de Desenvolvimento de Software e Tecnologia da Informao, alm de nos encaminhar para exposies mais detalhadas a respeito de determinados tpicos especficos. Ao final do estudo dessa obra, podemos amadurecer mais na aceitao e realizao de uma crtica rigorosa, que muito pode enriquecer nosso trabalho.

5. INDICAOES

Nesse artigo discutem-se alternativas e so oferecidas sugestes para estudantes universitrios, pesquisadores e profissionais da rea de

Desenvolvimento de Software e Tecnologia da Informao, a fim de poder realizar, planejar e desenvolver suas prprias pesquisas, seja na graduao e psgraduao, assim como na soluo de problemas encontrados nas atividades profissionais, utilizando-se do rigor necessrio produo de conhecimentos confiveis. de grande auxilio, principalmente, queles que desenvolvem trabalhos acadmicos na rea de Engenharia de Software e Sistemas da Informao. Nesse trabalho, objeto desse resumo crtico, so apresentados os fundamentos necessrios compreenso da rea de TI, e no de um simples manual, com passos a serem seguidos, contendo diretrizes operacionais que contribuem para o desenvolvimento da atitude crtica necessria ao progresso do conhecimento.