Pontifícia Universidade Católica do Paraná - PUCPR. Mestrado em Informática Aplicada Curitiba, 29 de Março de 2006. Equipe: Daniel Brizuena Arsie Proposta de Projeto de Modelagem Um ativo de T.I. pode ser qualquer elemento, físico ou lógico, previamente definido, que esteja contido no ambiente computacional, independente da plataforma ou sistema operacional. Por exemplo: Ativos Físicos (Hardware): Desktops, Servidores e Elementos de Conectividade (Roteadores, Switchs, etc.) Ativos Lógicos (Software): Elementos de Sistemas (Programas, Classes, Métodos, Variáveis), Linguagens de Controle, Estrutura de Banco de Dados, etc. Para desenvolver um software completo para gestão de ativos de T.I. É necessário que o mesmo possua uma ferramenta de busca poderosa e flexível o suficiente para atender o mercado tão heterogêneo da tecnologia. Portanto neste trabalho proponho a modelagem do componente responsável pela execução de uma linguagem própria de busca, baseada em SQL. Este componente recebe do usuário uma consulta nesta linguagem, perfeitamente validada e armazenada em formato XML, um outro documento XML que define os tipos de dados usados na consulta e uma lista de variáveis e seus respectivos valores, caso sejam utilizadas. A partir destes dados iniciais, é preciso identificar cada elemento e executar a consulta solicitada no Banco de dados, onde estão contidos todos os ativos de T.I. da empresa, representados em forma de registros. Explorando apenas os ativos lógicos, podemos ter como exemplos de consulta: Define Target = “Compiled File.jar” Select ** Where “Class” property “Caption” <*> “factory” Na consulta acima seleciona-se em uma pasta de arquivos contendo códigos fontes, quais arquivos jar, possuem uma classe que possua o termo “factory” em seu nome. Este exemplo pode ser realizado por uma ferramenta de busca textual qualquer. Porém trata-se de um exemplo básico. Na consulta a seguir: Select “Method” By Link “Variable” (BOTH) Where “Method” property “Type” == “get” “Variable” property “Type” == “Integer” Selecionam-se todos os métodos do tipo “get” que possuem alguma ligação com o ativo “Variable”, ou seja, que possuem variáveis, porém só as do tipo inteiro. O Item “BOTH” é a direção de uma ligação, no caso de ida ou volta, ou seja, pode ser uma variável de retorno ou passada como parâmetro, caso “BOTH”, fosse substituído, por A, poderiam ser apenas as de retorno, o que não alteraria o resultado, porém supondo que A seja retorno, a direção B, seria parâmetro, portanto o uso de B, não traria resultado algum. Deste ponto em diante as possibilidades são infinitas imaginando que o repositório destes ativos de T.I. (metadados de fontes) carregado com fontes de varias linguagens e projetos diferentes de uma mesma empresa, pode ser usado para qualquer tipo de auditoria, pesquisa ou estudo de impactos. A tarefa do componente abstraída neste texto parece simples, porém é um conglomerado de soluções complexas, que exigem poder de processamento e armazenamento eficientes do sistema computacional, a fim de executar a consulta num tempo mínimo, independente de plataforma operacional, Banco de Dados, ou repositório envolvido. Funcionalidades necessárias ao componente: Identificar cada item importante da consulta; Validar os tipos e variáveis usadas; Executar cada passo da consulta usando os resultados encontrados no próximo passo; Gerenciar dinamicamente o uso de memória, serializando resultados obtidos que possam vir a causar travamento do sistema; Preparar o acesso e a execução de pesquisas no repositório de dados, independente da tecnologia de banco usada; Preparar adequadamente a saída desejada pelo usuário, além de gerenciar a os lotes de resultado, para não sobrecarregar o usuário com dados.