RESUMO: Este trabalho apresenta a desenvolvimento de uma aplicao real de um instituio de ensino superior pblica, usando ferramenta Grails de desenvolvimento gil para web, uso do conceito de modelo Orientado a Objeto e modelo de dados Entidade Relacional, aplicando a abordagem de mapeamento objeto relacional ORM, apresentar como feito o mapeamento entre os objetos e entidades. Palavras-chaves: Grails, mapeamento objeto relacional, modelagem de dados. 1 - Introduo Objetivo do estudo elaborar um aplicao utilizando uma ferramente de desenvolvimento gil. O Grails ser a ferramenta utilizada para desenvolvimento gil, esta ferramente atua sobre a linguagem Groovy.A linguagem Groovy desenvolvida sobre java, ela facilita o desenvolvimento de aplicaes, simplificando comandos e estruturas que em java normalmente so complexas. Grails a prxima gerao de Java framework de desenvolvimento web que gera grandes ganhos de produtividade atravs da confluncia de uma linguagem dinmica(Grails in Action, 2009,PG 3) No estudo aplica-se o paradigma Orientado a Objeto, e modelagem de dados, Entidade Relacional. Dessa forma feito abordagem MOR ou ORM, Mapeamento Objeto Relacional, (do ingls Object Relational Maping), A qual o principal objetivo do estudo, mostra como feito esse mapeamento. Essa abordagem consistem em mapear os objetos de um modelo OO
2 com as entidades do modelo ER. A utilizao da ferramente Grails permite gera um mtodo de construo GORM (Grails In Action,G. SMITH,PETER LEDBROOK,Manning,2009), baseado em um aplicao real, foi modelado as classes do modelo OO(Orientado a Objeto) e suas respectivas entidades do modelo relacional do schema do banco de dados. O estudo tambm aborda a forma que a linguagem SQL (do ingls Structured Query Language), aplicada na construo e utilizao do banco de dados MySQL(gerenciador de banco de dados) . As ferramentas utilizada para o desenvolvimento foi NetBeans 6.9.1 (IDE- integrated Development Environment ou Ambiente Integrado de Desenvolvimento), pluing Grails para Netbeans, workbeanch MySQL (ferramenta de modelagem de Schema), MySQL(gerenciado de banco de dados ou SGBD) e Astah (ferramenta de modelagem UML).
2 - Apresentao do domino da aplicao GINFO O domnio que ser usado para estudo uma instituio de ensino superior pblica onde a carreira de professor estruturada em classes e nvel, e os integrantes de carreira docente, tero promoo de classe e ascenso de nvel. O pedido de promoo de classe dever ser formalizado, na Pr-Reitoria de Recurso Humanos Comunitrio (PRRHC), mediante requerimento devidamente protocolizado, junto com Memorial Descritivo, documentao necessria conferida com os originais. A aplicao tem que gerenciar as informaes do currculo do professor, detalhar todas as atividades exercidas, como assim seus perodos, quantidade. As classes e nveis so dividas conforme segue: a) Professor Auxiliar (nveis A, B, C e D); b) Professor Assistente (nveis A, B, C e D); c) Professor Adjunto(nveis A,B,C e D); d) Professor Associado (nveis A, B e C). O professor ascender ao nvel consecutivo de sua classe aps interstcio de dois anos mediante avaliao de desempenho. O Professor Auxiliar ascender ao nvel consecutivo de sua classe mediante a comprovao do grau de Especialista, independentemente do interstcio, interferindo na sua data base. Toda ascenso reinicia um novo interstcio. O Professor Assistente e o Professor Adjunto tero direito avaliao de desempenho
3 para ascenso de nvel quando comprovarem possuir, respectivamente, os graus de Mestre e de Doutor. O professor ser comunicado a respeito do vencimento do interstcio pela PRH, com antecedncia de 60 dias. O professor pode requerer a ascenso de nvel, em protocolizado a partir de 45 dias antes do trmino do perodo de vencimento do interstcio. A avaliao do memorial descritivo dever ser feita com base na tabela de pontuao. A avaliao acontece mediante defesa em sesso pblica do Memorial Descritivo, ser realizada por uma comisso designada pelo departamento. A comisso ser composta por trs membros e um suplente, todos docentes da mesma classe ou superior do candidato. A sesso de defesa dever ser marcada em um prazo mximo de trinta dias, a contar da data da constituio da comisso. O roteiro para a elaborao do Memorial Descritivo contm os dados do Professor e sua situao atual(nome, matrcula, regime de trabalho, classe/nvel, unidade e perodo) e as atividades agrupam-se em 6: atividades de ensino, produo acadmica, capacitao do professor, orientao, atividades administrativas e outras atividades. As tabelas a seguir completam a infraestrutura de mecanismos para proceder a avaliao do memorial.
No ANEXO os grupos de atividades necessrio para o desenvolvimento da aplicao. 3 - Modelo Orientado a Objetos A orientao a objetos uma abordagem para desenvolvimento de software que organiza os problemas e suas solues como um conjunto de objetos distintos(Pflleger,Shari,Eng. de software.:teoria. e prtica., 2. ed.SP, 2005, pg. 210). A abordagem OO usada para identifica e analisado os objetos no mundo da aplicao(domnio do problema). Na aplicao a se desenvolvida existem entidades. O professor entidade do domnio, um professor tem que se relacionar com outras entidades, atividade,nvel,classe so outras entidades do domnio desse mundo, a partir disso comear a desenvolver a estrutura inicial do mundo onde esses objetos trocaram mensagem. Um relacionamento entre objetos e dada pelo troca de mensagens (Sommerville Eng.Software, 8.edi Pearson Addison Wesley,2007, pg. 120) .
5 Um professor contm um nvel e uma classe(essa classe referencie a o professor, no classe do paradigma orientado a objeto, como exposto adiante) para representar esse contexto aplicado no OO, usa-se diagramas UML que demostra todas as classes(conjunto de objetos em comum) e seus relacionamentos no domnio dado nome de diagrama de classes para essa representao.
A representao do relacionamento tem que mostra a carnalidade entre as entidades, tanto o objeto Classe como Nvel, tem se o relacionamento 1:1(um para um) com Professor, Figura 3, Figura 4.
As carnalidades podem ser 1:1(um para um), 1:N(um para muitos) ou M:N(muitos para muitos). No domnio um professor ou mais professores solicitar promoo de nvel para Pr-Retoria Recursos Humanos Assuntos Comunitrios. Ento neste caso encontra-se a carnalidade de N:1(muitos para 1 ou 1 para muitos) , a ordem de chama um ou muitos depende da forma que se deseja representar a troca de mensagem.
No mundo OO tem um conceito chamado herana onde um objeto filho herda algumas caractersticas do objeto pai. O objeto Atividades tem algumas caractersticas que so compartilhadas com todos grupos de atividades, mas cada grupo de atividades tem suas caractersticas nicas.
Na Figura 7 representada a forma mais abstrata de um diagrama de classe, da aplicao GINFO. Nesse modelo apresenta simplificado as principais classe do domnio da aplicao GINO e seus relacionamentos, com esse diagrama j possvel comear a estrutura um modelo de dados, que ira representar a estrutura lgica do banco de dados (schema).
4 - Modelo Entidade Relacionamento Como lembra Ramakrishnan e Gehrke(Sistemas de Gerenciamento de Banco de Dados,2008, 3.ed.)O principal caracterstica para representar os dados do modelo relacional a relao. No domnio existe as entidades que precisa se relacionar com as outras entidades, as entidade so a representao das tabelas no schema e cada entidade tem conjuntos de atributos que so a representao dos campos das tabelas. Assim como no modelo OO, existem carnalidades entre as relaes das entidade no modelo ER, ela pode ser igual ao modelo OO, 1:1, 1:N ou M:N.
8 Cada entidade precisa se nica, no existem duas pessoas com a mesa impresso digital ou cpf,como no mundo real as entidades no podem existir a mesma no mesmo espao ele precisa se nica,cada instancia de um entidade(objeto),representa um registro em uma tabela, que precisa ser identificado como nico. No modelo ER para identificar uma entidade como nica, selecionado um atributo que mostra essa caracterstica de unicidade, esse atributo aplicado a chave primaria, a chave primeira que garante que aquele registro nico. Na entidade Professor no GINFO foi adotada como chave primaria a matricula, considerar que cada professor tem seu nico cdigo de matricula. Ento um professor tem uma classe, para entidade classe considerar com chave primaria idclasse. Para obter essa o relacionamento no modelo ER entre professor e classe, usa ser as chave primaria das duas entidade, matricula e idclass , o relacionamento entre essas duas entidades como pode ver na Figura 8, cria-se um atributo chamado classe_idclasse dentro classe , do mesmo tipo da chave primaria da entidade classe ao inserir um registro na tabela professor tem que se adicionar uma valor em classe_idclasse que a ponta para um registro da classe, que indicar qual classe o professor pertence. O atributo classe_idclasse caracterizado como uma chave estrangeria na entidade professor, pois ela uma chave primaria da entidade classe.
A entidade atividades ela esta relacionada com o grupo de atividade assim tem um relacionamento um para muitos Figura 10.
No caso estudado entidade atividades tem uma relao com professor e tambm com os grupos de atividades, gerando assim um relao ternria onde cada entidade do grupo de atividades(produo acadmica, ensino, administrativas, capacitao docente, orientao e outras) um atividade filha . Logo uma entidade professor tem um relao com o grupos de atividade. Ao associa um busca da chave estrangeira de professor na entidade atividade poder associa um chave estrangeira de algum grupo de atividade(professor->atividade<-grupos de atividades). A entidade atividade no modelo ER ela representa uma relao com atributos. O
10 modelo ER do GINFO mostra como so a estrutura bsica do schema lgico, para um banco de dados. A partir desse schema lgico, pode-se gerar o schema fsico usado pelo SGBD.
5 - Grails ferramenta gil desenvolvimento O Grails uma ferramenta muito poderosa pois nela esta compilado alguns framework mais usados para desenvolvimento de aplicaes web, e como ela trabalha sobre a linguagem Groovy que uma forma facilitada da linguagem java, contm os mesmos recursos, mas com uma implementao simplificada, faz com que o processo de desenvolvimento ganhei produtividade e agilidade, framework contido no Grails: a) Model-view-controller (MVC) uma arquitetura que busca separa o a lgica de negcios da viso da aplicao. b) Hibernate- mapeamento e persistncia de objetos. c) Ajax- sincronismo javascript e xml, interao entre componentes . d) Spring- injeta dependncias (IoC). O Grails tem seu foco em manter uma alta qualidade do software, nele pode desenvolve e aplicar os testes unitrios e de integrao, esse teste so importantes para manter um software de qualidade.
5.1 - Criando a estrutura da aplicao Criar um projeto no Grails usa o comando no terminal grails create-app <nome_do_projeto> com esse comando o Grails criar todas estruturas necessrias para uma aplicao funciona, a estrutura do grails j vem com diretrio separados como MVC(model view controller ou modelo viso controle). No ambiente Netbeans, esse comando omitido, no lugar cria-se um novo projeto Groovy. O netbeans solicitar ao framework Grails para executar o comando create-app, assim gerar toda a estrutura para inicializar aplicao.
11
12
O Grails estrutura os pacotes(pastas) de forma que organiza a aplicao seguindo o conceito de MVC. Controladores, Classes do domnio e Visualizaes, so as principais pastas que utilizar na aplicao: a) Controladores- onde contm os Controles(MVC) da aplicao ele que fazer a transio de Viso para o Modelo. b) Classe do domnio- onde contm os Modelos(MVC) da aplicao onde fica as classes do projeto para usar na persistncia de dados e as regras do negcio. c)Visualizaes e laytouts- onde contm as Vises(MVC), todas representaes dos Modelos ficam localizado neste pacote. 5.2 - Grails e Datasource
No Grails possvel trabalha com vrios tipo de SGBD(sistema gerenciado de banco de dados), graa a o hibernate que esta acoplado ao Grails, dentro do pacote Configuraes esta as configuraes necessria para aplicar na aplicao,algumas configuraes como
13 inicializar o servidor, qual webservice deve se utilizado,qual banco de dados deve se usado e outras. Na pasta configuraes o arquivo DataSource.groovy esta os dados para fazer as conexes com SGBD.Os atributos driverClassName , username e password, indica qual driver do SGBD deve se usado e com qual usurio e senha ele utiliza nas conexes do banco. O plugin do driverClassName tem que esta disponvel no diretrio bin da aplicao que para fazer corretamente a conexo com banco de dados.
No Ginfo o SGBD usado MySQL, na linha 4 da Figura 15, o driverClassName receber o driver com.mysql.jdbc.Driver, esse driver tem todos comando necessrio para criar a conexo com MySQL. O username receber 'root', esse usurio de acesso ao banco de dados que gerado o Ginfo, o password esta em branco, pois no foi definido nenhuma senha para o usurio root. A configurao de qual schema usado na aplicao tambm definida nesse arquivo, o Grails j vem disponvel trs ambientes da aplicao, development,test e production(desenvolvimento,teste e produo). A varivel dbCreate definir o que o Grails ter que fazer quando conectar com dataSource, as opes so create, create-drop e update: a)Create- criar um todas tabela do banco de dados baseado na classe do domnio. b)Create-Drop- derruba(deleta) o banco e recriar novamente. c)Update- atualizar o banco quando necessrio. A varivel url, ela define qual dataSource(schema) tem que se usado, na aplicao do Ginfo, nos trs ambientes usado um nico schema GINFO, mas o ideal cada ambiente ter um dataSource diferente. Com essas configuraes j possvel utilizar o banco de dados para criar, inserir,atualizar,deleta ou consultar. Figura 16.
14
5.3 - Modelando o domino do GINFO O diretrio Classes do domnio contm todas classes gerado no modelo OO, nesse local que define as classes da aplicao. Modelando a classe Professor Figura 17. Adicionar todos o atributos e mtodos da classe conforme foi efetuado no modelo OO, no Grails(Groovy) no necessitar colocar ponto e vrgula no final de uma linha. Dentro do bloco static constraints, adicionado restries dos campos(atributos), por exemplo campos no pode ser em branco, o valor tem que se nico, limita tamanho ou caracteres aceitos.
15
5.3.1 Relacionamentos GORM O relacionamento de Professor e Nivel 1:1(um para um) ento o atributo nivel(ver Figura 17) contem o identificado do Nivel. Na classe Nvel aplicado o ligao ao Professor, belongsTo, comando que informar o GORM que existe uma relao entre Professor e Nivel de 1:1(um para um) ver Figura 18.
16 comando belongsTo em Atividade criar um ponteiro(ligao) para o professor e na classe Professor usa hasMany que informar GORM um professor tem muitas atividades ver Figura 19.
5.3.2 - Mapeamento objetos e tabelas GORM Se no Grails, nas configuraes do DataSource estive definido a varivel dbCreate com create, a o iniciar o GINFO, ele criar as tabelas os campos, restries e seus relacionamentos de acordo como foi implementadas nas Classe de domnio da aplicao j criar se o GORM,faz-se o relacionamento objetos e entidades do banco. Mas no caso do GINFO se as tabelas j existem no banco de dados necessrio fazer o mapeamento dessa tabela para a aplicao funciona. Dentro do bloco static mapping, declara-se qual tabela a classe pertence, os atributos se relaciona com quais campos dessa tabela,no caso de Professor mapeado para tabela professores
17
Considerando que nessa caso a tabela e o campos tem o mesmo nome no existi necessidade de se fazer esse processo de mapeamento, o prprio Grails criaria o mapeamento objeto relacional, isso no GORM, ganhado grande produtividade para aplicaes novas. Se existir no schema lgico uma tabela com o mesmo nome da classe de domnio o prprio Grails realiza a abordagem ORM, no necessitando que o desenvolvedor criar o mapeamento. 5.4 - SQL e Grails O SQL no Grails omitido no desenvolvimento inicial da aplicao, ao declara um classe do domnio o GORM, criar o mapeamento, ento a o manipular classe o Grails faz a manipulao adequada na tabela do banco de dados, sem a necessidade de interverso direta do programado, gerado mas segurao, por exemplo na Figura 21 representa a classe Professor ao gerar essa classe o Grails passa a seguinte instruo SQL: CREATE TABLE IF NOT EXISTS `GINFO`.`professor` ( `matricula` INT NOT NULL , `classe_idclasse` INT NOT NULL , `nivel_idnivel` INT NOT NULL , `nome` VARCHAR(250) NULL , `regime_de_trabalho` VARCHAR(45) NULL , `unidade` VARCHAR(250) NULL , `periodo` DATE NULL , `memorial_idmemorial` INT NOT NULL , PRIMARY KEY (`matricula`, `classe_idclasse`, `nivel_idnivel`, `memorial_idmemorial`) , INDEX `fk_professo_classe` (`classe_idclasse` ASC) , INDEX `fk_professo_Nivel1` (`nivel_idnivel` ASC) , INDEX `fk_professor_memorial1` (`memorial_idmemorial` ASC) , CONSTRAINT `fk_professo_classe` FOREIGN KEY (`classe_idclasse` ) REFERENCES `GINFO`.`classe` (`idclasse` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_professo_Nivel1` FOREIGN KEY (`nivel_idnivel` ) REFERENCES `GINFO`.`nivel` (`idnivel` ) ON DELETE NO ACTION ON UPDATE NO ACTION,
18 CONSTRAINT `fk_professor_memorial1` FOREIGN KEY (`memorial_idmemorial` ) REFERENCES `GINFO`.`memorial` (`idmemorial` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; Isso tudo omitido para ganha produtividade tornado o desenvolvimento gil.
6 Concluses A construo de projeto de software de qualidade exige a modelagem do domnio, com isso aplica-se atualmente o paradigma orientando a objeto. Mas a os SGBD em sua grande maioria usado o modelo entidade relacional, com isso o software necessita fazer o mapeamento dos objetos relacional. A ferramenta Grails se torna uma grande aliada para o desenvolvimento gil. Tendo como objetivo hoje em dia que software sejam feito com alta qualidade e em pouqussimo tempo, Grails constri facilmente um ORM, omitir funcionalidades complexa, e deixar o desenvolver focado nas regras de negcio. Com isso a transio entre a estrutura de objeto e dados no banco ficam mais fcil de trabalha. Essa duas grandes vantagem do Grails,agilidade e qualidade faz dele uma tima opo para ambientes de desenvolvimento.
19
7 Referncias Pfleeger, Shari Lawrence. Engenharia de software: teoria e prtica,traduo: Dino Franklin. 2 ed. So Paulo, PEARSON Prentice Hall, 2004 Sommerville, Ian. Engenharia de software, traduo: Selma Shin Shimizu Melnikoff,Reginaldo Arakai, Edlson de Andrade Barbosa, 8 ed. So Paulo, Pearson Addison-Wesley,2007 Ramkrishnan,Raghu; Gehrke, Johannes,Sistema de bancos de dados, traduo Acauan Pereira Fernandes; Celia Taniwaki; Joo Tortello, reviso tcnica Elaine Barros Machado de Sousa. 3. ed.--So Paulo:McGraw-Hill, 2008. Smith, Glen; Lebrook, Peter, Grails in Action, Greenwich , Manning,2009
Disponvel em <http://www.itexto.net/devkico/?p=73> Acesso em: 16 jul. 2011
ANEXOS ANEXO A
20
21