Access Violation

terça-feira, janeiro 11, 2005

Metadados
  1. O que é?

    Do ingles,

    metadata
    n. data about data, information known that makes it easy to access and use the data (e.g.: library catalog card, which includes information about the nature and location of a book); (Computers) descriptive information about data and documents (such as origin, size, formatting or different characteristics of a data)


    Até pouco tempo, ao compilar um programa fonte obtínhamos como resultado o programa final (binário), pronto para ser executado, a partir do qual, pouco podia-se inferir a respeito do programa fonte original (por exemplo, não havia como descobrir os tipos definidos, informações sobre segurança, documentação, etc).

    Apesar destas ?limitações? acredito que este modelo seja satisfatório para programas monolíticos, contudo, com a evolução do processo de desenvolvimento e conseqüente componentização do software, estas deficiências ficaram evidentes e as novas tecnologias passaram a incorporar mais informações (metadados) a respeito do programa fonte.



  2. Utilidade

    Até recentemente, a utilização de metadados podia ser observada principalmente na área de Gerenciadores de Banco de Dados; por exemplo, os servidores SQL disponibilizam informações a respeito do banco de dados através da própria linguagem SQL (por exemplo no SQL Server pode-se obter informações a respeito de uma tabela tais como lista de campos, índices, etc. utilizando o comando SQL: sp_help nome_tabela).

    Contudo os desenvolvedores notaram que esta técnica poderia simplificar o desenvolvimento e/ou permitir a criação de programas mais flexíveis, assim passaram a adotá-la. Por exemplo, C++ possui o conceito de RTTI (ou run time type information) que podemos entender como uma forma primária de metadados. A tecnologia COM (Component Object Model) da Microsoft utiliza typelibraries, ou bibliotecas de tipos, para descrever as classes (ou melhor, CoClasses), interfaces, etc. implementadas em um determinado componente.

    Um dos exemplos mais utilizados sobre a utilização de metadados é a criação de Object Browsers; implementar tal tipo de programa para linguagens que não suportam metadados representa um processo intrinsecamente complexo, exigindo, na maior parte dos casos parses para a linguagem em questão. Por outro lado, a implementação para linguagens que suportam este conceito, como Java, C#, VB.Net, etc. é bastante simplificada.

    Outro tipo de ferramenta que se beneficia da existência de metadados para um programa são os geradores automáticos de documentação, testes unitários, etc.

    Também, ao incluir um componente em uma aplicação COM+ este procura na typelib do componente por uma propriedade específica que defina o comportamento transacional do componente; se esta propriedade existir o administrador do sistema não terá que configurar o componente manualmente, diminuindo a chance de erros.

    Todas estas aplicações se tornaram viáveis e/ou de implementação mais simples através da utilização de metadados, contudo as possibilidades de utilização são inúmeras. No próximo post descreverei a o processo, conhecido como reflection, de navegação pelos metadados, gerados pelo compilador da linguagem Java.

[+/-] mostrar/esconder este post