A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra.

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra."— Transcrição da apresentação:

1 Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra

2 Apresentação do Palestrante Eduardo Guerra guerraem@gmail.com Formado em Engenharia de Computação pelo ITA em 2002. Mestre pelo ITA, no curso de Engenharia Eletrônica e Computação, na área de Informática em 2005. Faz o curso de Doutorado no ITA com previsão de término para 2010. Professor da Graduação do ITA e da pós-graduação ITA-Stefanini. Possui as certificações da Sun: SCJA, SCJP, SCWCD, SCBCD (1.3 e 5.0), SCJWSD, SCMAD e SCEA. Possui experiência como Arquiteto de Software nas plataformas Java SE, Java EE e Java ME. Editor-chefe e autor de vários artigos da revista MundoJava. Administrador dos projeto open-source SwingBean e Esfinge.

3 Objetivo Apresentar os principais conceitos relacionados com o desenvolvimento de frameworks e componentes baseados em metadados, mostrando o que já existe e o que ainda precisa ser desenvolvido nesta área.

4 Um Ambiente de Negócio Dinâmico Utilizando Metadados Casos de Sucesso de Uso de Metadados Formas de Armazenar Metadados Componente Baseado em Metadados Geração de Código Baseada em Metadados Estudos de Caso: SwingBean e Esfinge O que ainda falta ser estudado? Considerações Finais Agenda da Apresentação

5 Ambiente de Negócio Dinâmico As regras de negócio das aplicações mudam cada vez mais depressa, o que implica nas aplicações precisarem ser desenvolvidas rapidamente e de forma flexível. FlexibilidadeProdutividade Componentes extremamente flexíveis podem atrasar o desenvolvimento desnecessáriamente gerando perda na produtividade. Para obter produtividade podem ser construídos componentes muito amarrados gerando um alto custo para qualquer modificação.

6 Produtividade e Flexibilidade Padrões de Projeto: estruturas consagradas para solução de problemas recorrentes no desenvolvimento de software. Refatoração: reestruturação do código de forma a aumentar sua clareza sem alterar seu comportamento. Desenvolvimento Orientado a Testes: criação de testes de unidade antes do código de produção, visando um código objetivo e seguro. Programação Orientada a Aspectos: separação de interesses em componentes, visando uma melhor divisão do código. Ferramentas IDE: ferramentas que facilitam o desenvolvimento, tornando-o mais visual e automatizando tarefas. Geração de Código: ferramentas que geram parte do código da aplicação a partir de algum input. MDA: uma abordagem de desenvolvimento onde o código da aplicação é gerado por modelos, normalmente em UML. Componentes Baseados em Metadados: utilização de componentes e frameworks nos quais o comportamento é configurado por metadados.

7 Uso de Metadados Os metadados podem ser da aplicação (onde eles configuram características dos componentes na aplicação) ou de objetos (onde eles configuram as características de cada objeto em uma aplicação). Metadados Componente Baseado em Metadados Classes da Aplicação Descreve o comportamento que componente deve ter para cada classe Utiliza os metadados inerentes a classe (métodos, atributos e etc...) ‏ Se baseia nos metadados para a adequação do comportamento.

8 Exemplo: Comparador Em uma aplicação onde vários objetos precisam ser comparados, seguindo a abordagem tradicional, seria necessária a criação de vários comparadores, um para cada objeto devido ao algoritmo de comparação ser diferente. Pouco produtivo, pois o código de comparação é muito braçal e uma mudança generalizada demanda uma alteração em muitas classes.

9 Exemplo: Comparador Utilizando metadados existe um descritor com os metadados de comparação de cada classe e um único componente realiza a comparação de quelaquer classe a partir do descritor. Com o uso de metadados somente as excessões precisam ser configuradas, o que torna o desenvolvimento produtivo e o comportamento fácil de ser alterado.

10 Vantagens na Utilização de Metadados É possível personalizar o comportamento de um componente ou framework de acordo com as necessidades da aplicação. Aumento de reuso do componente que utilizar os metadados, devido a possibilidade de ser configurado. Diminuição de código repetitivo e braçal, o que diminui a possibilidade de defeitos muitas vezes difícies de serem encontrados. Aumento da produtividade da equipe, pois a programação declarativa por metadados é muito menos trabalhosa do que criar a mesma lógica de forma imperativa para várias classes. Aumenta a flexibilidade da aplicação devido ao caráter configurável do componente. Dependendo da forma que os metadados forem armazenados, eles podem ser alterados sem a necessidade de recompilar o código fonte.

11 Frameworks Baseados em Metadados Hibernate: uso de metadados para mapear o paradigma orientado a objetos para o paradigma relacional, provendo um componente genérico para o acesso a dados. Spring: um framework baseado em metadados para o gerenciamento da injeção de dependência e inversão de controle em uma aplicação. EJB 3: Uso de metadados para gerenciamento do ciclo de vida, controle de transações, segurança, injeção de dependência e outras coisas... JAXB: Uso de metadados para o mapeamento entre documentos XML e uma estrutura de classes. Hibernate Validator: Uso de anotações para a validação de objetos de uma classe segundo o negócio da aplicação Genesis: Uso de metadados para ligar os métodos de uma classe em ações de componentes gráficos.

12 Armazenamento de Metadados Metadados Implícitos: são utilizadas interfaces de marcação e padrões de nomenclatura para agregar metadados às classes. Definição Programática: um código cria um descritor de metadados inserindo programaticamente as informações no mesmo. Arquivos Externos: a aplicação lê um arquivo externo, normalmente em XML, e cria os metadados. Anotações: são utilizadas anotações nas próprias classes para a definição dos metadados. Banco de Dados: os metadados são armazenados em bancos de dados que possibilitam um acesso transacional aos mesmos. As diferentes formas de armazenamento devem ser utilizadas de acordo com a adequabilidade das mesmas a aplicação

13 Componentes Baseados em Metadados Esta é uma estrutura padrão de um componente ou framework baseado em metadados O componente genérico é quem possui a lógica de adaptação do algoritmo segundo os metadados de cada objeto, resultando em um maior reuso.

14 Criação dos Metadados Criando um descritor de metadados e uma interface para a fábrica, é possível criar uma estrutura onde seja possível utilizar diversas formas diferentes de criação dos metadados.

15 Geração de Código Desvantagem Vantagem Os metadados muitas vezes são utilizados para gerar código, ao invés de configurar dinâmicamente o comportamento. Caso seja necessária uma alteração existirão duas opções: gerar o código novamente e perder as alterações realizadas ou editar o código manualmente perdendo produtividade. O gerador de código não precisa suportar todas as possibilidades, bastando que o desenvolvedor faça as alterações necessárias no código gerado. ** Existem alguns geradores mais espertos que disponibilizam um espaço para a edição manual do código que é mantida entre as gerações

16 Estudo de Caso: SwingBean O SwingBean utiliza metadados em arquivos XML para gerar tabelas e formulários em Swing para representar objetos de uma determinada classe. Os metadados também são utilizados para fazer a recuperação e inserção dos objetos nos componentes gráficos. O framework também faz a validação de objetos e coloca restrições nos componentes de acordo com os metadados. O framework utiliza diversos metadados inerentes a própria classe, como tipo e nome dos atributos, para a definição dos componentes. O SwingBean se encontra bem maduro: já foi utilizado em sistemas em produção e sua última versão ultrapassou 1400 downloads. http://swingbean.sf.net

17 Estudo de Caso: Esfinge O Esfinge provê uma estrutura genérica para camada de negócios e interface de persistência de um sistema, que pode ser configurada como desejado utilizando anotações. Existem DAOs genéricos utilizando Hibernate e iBatis (futuro: prevayler e JPA), mas o DAO de uma classe pode ser alterado utilizando uma anotação. As regras de negócio são implementadas através de comandos genéricos, que também podem ser alterados a partir de anotações. Existem camadas que implementam de forma transparente remoting, segurança, notificação de alterações, controle de workflow e logging (futuro: cache, validação e tratador de exceções), deixando a arquitetura flexível e configurável. Já foi utilizado em projetos em produção e teve seu código aberto a pouco tempo. Ainda está com documentação deficiente e ainda não foi “formalmente” apresentado a comunidade. http://esfinge.sf.net

18 O que ainda falta ser estudado? Criação de uma técnica para identificar funcionalidades onde o uso de metadados seria adequado e para modelar e/ou refatorar o componente e os metadados que seriam utilizados. Identificação de padrões de projeto, baseado nos frameworks já existentes, para a solução de problemas recorrentes com a utilização de metadados. Estudar mais a fundo a aplicabilidade e adequabilidade das diferentes formas de armazenamento de metadados em diferentes cenários. Estudar a criação de aspectos baseados em metadados e sua aplicabilidade em diversos contextos. Como não existe ainda muita pesquisa em cima de modelagem com a utilização de metadados, existem várias linhas de pesquisa a serem exploradas.

19 Considerações Finais Os frameworks e APIs baseados em metadados são a chave da produtividade em diversos sistemas atuais e a tendência é que sejam cada vez mais adotados. Apesar da experiência mostrar que eles funcionam bem na prática, existe muito pouco estudo a respeito de como eles devem ser modelados e estruturados. O desenvolvimento de técnicas e a identificação de padrões de projeto que facilitem o desenvolvimento de componentes e frameworks baseados em metadados, certamente será de grande ajuda para os desenvolvedores que utilizarão esta técnica no futuro.

20 Frase Final Um framework não é bom pelo que ele faz, mas quando pode ser utilizado para aquilo que ele não faz.


Carregar ppt "Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra."

Apresentações semelhantes


Anúncios Google