Aplicação de Reverse Engineering: Java para UML
|
|
- Maria do Pilar Campos Palmeira
- 8 Há anos
- Visualizações:
Transcrição
1 Aplicação de Reverse Engineering: Java para UML Luís Ramos e Pedro Strecht Faculdade de Engenharia da Universidade do Porto, Rua Dr. Roberto Frias, s/n, Porto, Portugal {lramos, pstrecht}@fe.up.pt Abstract. Este documento descreve o desenvolvimento de uma aplicação web de reverse engineering que disponibiliza o serviço de conversão de código-fonte Java para a sua representação em UML através do dialecto XML Metadata Interchange (XMI). A aplicação efectuará a conversão sucessiva de documentos em vários formatos até obter o formato pretendido. O código-fonte Java é transformado em JavaML; os documentos JavaML são transformados em documentos XMI sem informação de visualização através de uma XSLT e a informação de visualização é acrescentada ao XMI por um módulo que utiliza DOM para navegar e alterar a estrutura do documento XMI. O trabalho consiste essencialmente no desenvolvimento de uma XSLT de conversão de JavaML em XMI e na implementação de um modelo de objectos (baseado em DOM) dos documentos XMI. Pretende-se que este modelo de objectos permita a implementação confortável de algumas heurísticas de construção do layout dos diagramas. Adicionalmente é feito um esforço de integração destes componentes numa aplicação web. 1. Introdução É habitual que elementos de equipas que iniciam um projecto de software transitem para outros projectos, originando a que a equipa responsável pela sua manutenção já não coincida com a que o desenvolveu. Para uma manutenção eficaz das aplicações do projecto, é necessário compreender todo o código já desenvolvido, sendo esta uma tarefa penosa, normalmente dificultada pela inexistência de documentação. As técnicas de reverse engineering aplicadas à engenharia de software tentam facilitar esta tarefa através da produção de informação (recorrendo a modelos ou outras representações) que permitam detectar a arquitectura de um sistema, fornecendo uma visão num nível de abstracção superior ao do código-fonte. A colocação deste tipo de ferramentas na internet vem aumentar a disponibilidade, a facilidade e a rapidez no uso de técnicas de reverse engineering. Para além disso, a aplicação descrita neste documento pode ser utilizada para desenvolvimento e teste de heurísticas de layout automático de diagramas. 1.1 Objectivos Pretende-se desenvolver uma aplicação web de reverse engineering que disponibilize o serviço de conversão de código-fonte Java na sua representação em Unified Modelling Language (UML), nomeadamente diagramas de classes. A representação desses diagramas é feita no dialecto da extensible Markup Language (XML): XML Metadata Interchange (XMI), mais precisamente o UML Diagram Interchange. A aplicação web basear-se-á na transformação da informação entre os formatos XML: Java Markup Language (JavaML) e XMI. Para efectuar esse processamento serão utilizadas as tecnologias XML: extensible Stylesheet Language Transformations (XSLT) e Document Object Model (DOM). A aplicação recebe como entrada de dados ficheiros com código-fonte em Java. As saídas são documentos XMI que possam ser importado por ferramentas CASE (Computer Aided Software Engineering) ou, em alternativa, um documento Scalar Vector Graphics (SVG) que permite a visualização directa num browser com um plug-in específico. O trabalho consistiu essencialmente no desenvolvimento de uma stylesheet de conversão de JavaML em XMI e na implementação de um modelo de objectos (baseado em DOM) dos documentos XMI. Pretende-se que este modelo de objectos permita a implementação confortável de algumas heurísticas de construção do layout dos diagramas. Adicionalmente foi feito um esforço para a integração destes componentes numa aplicação web.
2 2 Luís Ramos e Pedro Strecht 1.2 Estado da Arte Uma das formas de reverse engineering é a produção de diagramas UML a partir de código-fonte. O UML é um standard da Object Management Group (OMG) para modelação de sistemas de software. Este standard, cuja última versão 2.0 foi lançada em 2003, é o mais usado em todo o mundo para modelação. Nesta última versão do UML foram introduzidos novos diagramas e foi aumentada a complexidade dos já existentes. No surgimento do UML, em 1997, não existia nenhum formato para troca de modelos entre ferramentas CASE, tendo cada uma o seu próprio formato. Era possível efectuar reverse engineering destes formatos, no entanto, os resultados podiam ser imprevisíveis, já que estes não tinham sido concebidos para esse fim. O dialecto XMI foi criado para uniformizar um formato livre de constrangimentos impostos pelas ferramentas CASE e que pudesse ser conhecido por todas, independentemente do seu âmbito. As técnicas de reverse engineering têm assumido uma importância cada vez maior na manutenção de software, tendo-se tornado um requisito praticamente obrigatório nas ferramentas CASE. Existem actualmente dezenas de ferramentas CASE comerciais que produzem diagramas de classes a partir de código-fonte de linguagens orientadas a objectos. As mais populares são o Rational Rose (IBM) [1], o Together Control Centre (Borland) [2] e o Poseidon for UML (Gentleware) [3]. Estas ferramentas suportam mecanismos de importação e/ou exportação de diagramas para o formato XMI. Normalmente as ferramentas tratam o XMI como um formato externo, que pode ser importado ou exportado, no entanto, algumas como o Poseidon ou o ArgoUML [6], utilizam-no como formato nativo. É frequente também verificar que os documentos XMI gerados por diferentes ferramentas são incompatíveis entre si, pelo que é uma área em que ainda se aguarda alguma maturação. Para além de reverse engineering, as ferramentas também dão suporte a operações de forward engineering (tipicamente geração automática de código a partir de modelos de objectos) e round-trip engineering [4]. O Rational Rose tem a funcionalidade interessante de publicação de diagramas UML em páginas web como imagens, permitindo a distribuição fácil dos mesmos, sem obrigar que se instale a ferramenta. Esta funcionalidade pode ser encarada como um extensão ao trabalho descrito neste documento. O Poseidon, devido às suas origens no projecto opensource ArgoUML, oferece uma versão livre para utilização individual [5]. O Oracle JDeveloper 10g [11], Integrated Development Environment (IDE) da Oracle oferece capacidades notáveis de round-trip engineering: permite em qualquer momento a visualização do modelo de classes do código em desenvolvimento e também fazer alterações ao diagrama que se reflectem automaticamente no código. Para além disto, esta ferramenta suporta alguma interoperabilidade através de XMI, mas de forma unidireccional, ou seja, suporta apenas operações de importação. Resumindo uma análise feita a outras ferramentas CASE (Visual Paradigm [7], Eclipse [8], etc.), pode afirmar-se que quase todas têm um subconjunto das características oferecidas pelas principais ferramentas, e embora sejam boas para desenho de diagramas, nem sempre implementam as funcionalidades de reverse engineering ou importação/exportação de projectos em formato XMI. Verifica-se também que a maioria das ferramentas não implementa uma versão correcta do UML, nem oferece algoritmos de layout automático de diagramas com resultados satisfatórios [9]. Algumas ferramentas implementam um subconjunto do UML, restringindo a sua utilização e o nível de abstracção pretendido. Por outro lado, a falta de robustez dos algoritmos de layout automático obrigam o utilizador a ter de efectuar ajustes manuais ao diagrama, consumindo tempo útil para outras tarefas e pondo em causa o automatismo do processo. Para facilitar a interoperabilidade, muitas ferramentas, para além de gerarem os seus próprios formatos nativos, trabalham também com a descrição dos seus diagramas de classes em formato XMI. A tendência será para que este formato seja suportado por todas as ferramentas CASE, como mecanismo de troca de metainformação [10]. 1.3 Trabalhos Relacionados Foram efectuados estudos da análise de alterações no código-fonte e propagação das mesmas para o modelo de classes [12]. As técnicas de reverse engineering são as que tornam mais fácil fazer alterações ao código-fonte e propagá-las directa e automaticamente para o modelo. Este processo alivia o programador da tarefa de actualizar os modelos sempre que necessita de efectuar uma rápida alteração no código-fonte, e reduz as hipóteses de ele ser tentando a não fazer essa alteração no modelo. Um exemplo de operações de reverse engineering é o projecto Chava, que analisa e anota as alterações efectuadas em applets Java. Uma applet Java é um pequeno programa em Java que pode ser
3 Aplicação de Reverse Engineering: Java para UML 3 embebido numa página HTML. A informação é extraída directamente a partir do código-fonte em Java e organizada numa base de dados relacional [13]. Uma utilização alternativa deste sistema é a comparação entre documentos gerados por versões diferentes do Java Development Kit (JDK) para realçar as diferenças e avaliar o impacto que estas possam ter nos programadores. Na realização da sua tese de mestrado, Osvaldo Pinali, desenvolveu uma ferramenta de reverse engineering de Java para UML, uma vez que concluiu que as ferramentas existentes não satisfaziam as suas necessidades [14]. No âmbito da análise que fez sobre detecção de padrões em código-fonte em Java, pretendia gerar informação detalhada sobre o código-fonte, ter suporte em UML e ser customizável. São conhecidas várias representações XML de outras linguagens de programação para além do Java, como, por exemplo, a representação XML de ANSI C [15]. O objectivo dos principais trabalhos feitos nesta área é gerar representações de código-fonte independentes da linguagem [16], [17]. A Gentleware apoiou um projecto que consistiu no desenvolvimento de uma stylesheet de transformação de XMI em SVG, da autoria de M. Jeckle, D. Boicourt e B. Stritt [18]. Esse apoio consistiu na implementação da norma UML 2.0, o que implica que o Poseidon seja a única ferramenta que exporte XMI capaz de produzir bons resultados em SVG. Neste trabalho, essa stylesheet é utilizada para gerar os resultados em SVG a partir dos documentos XMI. No trabalho descrito neste documento, foram utilizados o conversor de código-fonte Java em JavaML desenvolvido por G. Badros (secção 2.1) e a stylesheet de conversão de XMI em SVG referida. 1.4 Plano de Trabalho O trabalho foi desenvolvido em sete etapas: 1. Estudo e aprofundamento de conhecimentos nos dialectos XML e tecnologias envolvidas; 2. Instalação e configuração do conversor de código-fonte Java em JavaML; 3. Desenvolvimento da XSLT de conversão do JavaML em XMI; 4. Desenvolvimento do módulo de cálculo do layout dos diagramas; 5. Desenvolvimento da interface web para o utilizador; 6. Integração dos vários componentes; 7. Testes e avaliação dos resultados. 2. Dialectos 2.1 JavaML Java Markup Language (JavaML) [19] é um dialecto XML de representação de código-fonte Java. Este dialecto reflecte a estrutura do código-fonte respectivo através de elementos XML. Para além da simples representação, o JavaML permite também registar ligações entre classes (registo da estrutura em grafo do programa) através dos atributos XML: ID e IDREF. Por exemplo, é possível, num documento JavaML, ligar a definição de um método à sua invocação. O JavaML foi desenvolvido por Greg Badros [20], existindo um conversor implementado e disponibilizado pelo autor no seu web site, que funciona como um patch ao Jikes. O Jikes é o compilador opensource de Java da IBM. O JavaML é considerado a melhor representação de código-fonte Java em XML [21]. Domínio da Aplicação. O domínio de aplicação do dialecto JavaML é a engenharia de software, principalmente a área de reverse engineering. Outra utilização do JavaML é, por exemplo, a edição e documentação de código-fonte [22]. Esquema de dados. Apresenta-se um pequeno exemplo de código-fonte em Java seguido da respectiva representação em JavaML. import java.applet.*; import java.awt.*; public class MyClass extends Applet { public Object obj;
4 4 Luís Ramos e Pedro Strecht } public void painted( Graphics g ) { g.drawstring( "MyClass", 25, 50 ); } O JavaML equivalente gerado pelo Jikes é o seguinte: <?xml version="1.0" encoding="utf-8"?> <java-source-program> <java-class-file name=" java-ml-windows/windows/myclass.java"> <import module="java.applet.*"/> <import module="java.awt.*"/> <class name="myclass" visibility="public"> <superclass name="applet"/> <field name="obj" visibility="public"> <type name="object"/> </field> <method name="painted" visibility="public" id="myclass:mth-20"> <type name="void" primitive="true"/> <formal-arguments> <formal-argument name="g" id="myclass:frm-18"> <type name="graphics"/> </formal-argument> </formal-arguments> <block> <send message="drawstring"> <target> <var-ref name="g" idref="myclass:frm-18"/> </target> <arguments> <literal-string value="myclass"/> <literal-number kind="integer" value="25"/> <literal-number kind="integer" value="50"/> </arguments> </send> </block> </method> </class> </java-class-file> </java-source-program> Este exemplo, apesar de usar apenas um conjunto mínimo de elementos do dialecto JavaML, mostra que o mapeamento entre os dois formatos é relativamente directo e fácil de compreender. O conversor funciona como um compilador em que o output é, em vez do bytecode, o ficheiro JavaML. É fornecido pelo autor do JavaML uma Document Type Definition (DTD) que define o esquema de dados completo do dialecto. A figura 1 apresenta um diagrama com o modelo de dados do dialecto JavaML. Neste diagrama são indicados os elementos, os seus atributos e as relações entre os elementos.
5 Aplicação de Reverse Engineering: Java para UML 5 Fig. 1. Modelo de Dados do Dialecto JavaML 2.2 XMI O XML Metadata Interchange (XMI) [23] é um standard da OMG que permite representar metainformação sobre modelos em formato XML. Exemplo dessa metainformação representada pelo XMI são as extensões a modelos, documentação, diferenciação de versões, representação de modelos incompletos, ligação entre elementos do modelo, etc. O XMI, dadas as vantagens de ser um dialecto XML, foi concebido essencialmente para troca dessa metainformação entre ferramentas, repositórios e aplicações. O XMI não é um formato de leitura fácil por um humano e mesmo pequenos modelos podem dar origem a ficheiros grandes e bastante verbosos. A grande vantagem do XMI reside precisamente no facto de ser XML e, portanto, haver um grande leque de aplicações disponíveis para o seu tratamento. O modelo estrutural dos documentos XMI é uma instância do Meta Object Facility (MOF) [24]. O MOF é outro standard da OMG usado para descrever modelos de objectos nos mais variados domínios. Mais genericamente, MOF é uma tecnologia que permite definir e gerir metainformação. Por outro lado, o XMI não está preso ao MOF pois permite serializar e trocar objectos genéricos que não obedeçam ao modelo MOF. Domínio da Aplicação. O dialecto XMI é usado em variadas aplicações, designadamente, de análise (UML, para o qual foi inicialmente concebido [12]), de componentes (EJBs, IDLs, etc.) e de bases de dados (CWM).
6 6 Luís Ramos e Pedro Strecht Uma aplicação do XMI é o Common Warehouse Metamodel (CWM) [25] que é usado para trocar metainformação entre tecnologias ligadas aos domínios dos armazéns de dados, da gestão de conhecimento e dos portais. Outra aplicação interessante do XMI é o Software Process Engineering Metamodel (SPEM) [26] para a representação de modelos de processos de desenvolvimento de software. Tanto o CWM como o SPEM são standards da OMG e ambos interligam o XMI e os modelos MOF. O XMI pode também ser usado juntamente com o UML para a serialização de modelos UML. Esta combinação é frequentemente usada para a troca de modelos UML entre ferramentas CASE (secção 1.2). Existem especificações de metamodelos (representados por XML Schemas ou DTDs) que definem a forma de incluir elementos UML nos documentos XMI. Este esquema é também usado para as três aplicações já referidas: o CWM, o SPEM e o UML. Para tal, é definido como parte da especificação UML 2.0 [27] o UML Diagram Interchange [27] que consiste no formato XMI com suporte para UML. Enquanto que em versões anteriores dos standards XMI e UML (UML 1.4 Metamodel Interchange) não era possível registar a representação gráfica dos diagramas UML, nas versões XMI 2.0 e UML 2.0 foi acrescentada essa funcionalidade através da especificação do UML 2.0 Diagram Interchange. Enquanto que para o UML 1.4 Metamodel Interchange foi disponibilizado pela OMG um DTD oficial, para o UML 2.0 Diagram Interchange não foi encontrado nenhum DTD. Esquema de dados. No trabalho descrito neste documento só são utilizadas algumas das potencialidades do XMI (UML+DI) pelo que se dará mais ênfase à apresentação das características mais ligadas ao mesmo, nomeadamente as capacidades de representação de diagramas de classes. Considerando um exemplo simples de um metamodelo como o seguinte: Modelo Negócio Classe Cliente Atributo ID e Operação update. Uma representação possível deste modelo em UML Metamodel Interchange versão 1.4 (que não inclui informação de visualização) seria: <XMI> <XMI.header> </XMI.header> <XMI.content> <UML:Model xmi.id="a1" name= Negócio > < UML:visibility xmi.value="public"/> <UML:Namespace.ownedElement> <UML:Class xmi. id="a7" name= Cliente > <UML:Classifier.feature> <UML:Attribute name= ID > <UML:multiplicity> <XMI.field>1</ XMI.field> < XMI.field>1</ XMI.field> </UML:multiplicity> <UML:type>< DataType href= a247"/></uml:type> </UML:Attribute> <UML:Operation name= update > <scope xmi.value="instance"/> </UML:Operation> </UML:Classifier.feature> </UML:Class> </UML.NamespaceownedElement> </UML:Model> </XMI.content> </XMI> Os elementos essenciais do metamodelo são mostrados a cheio.
7 Aplicação de Reverse Engineering: Java para UML 7 Na versão do XMI (UML) usada neste trabalho (UML 2.0 Diagram Interchange) foi acrescentada ao documento XMI a parte da representação gráfica dos modelos. O elemento UML:Diagram contém a representação em grafo de todos os elementos do diagrama. Na figura 2 mostramos o essencial do modelo de dados desta parte do XMI (retirado da especificação do UML 2.0 Diagram Interchange). Fig. 2. Modelo de Dados do Dialecto XMI Neste diagrama apresentamos apenas os elementos fundamentais do dialecto. A representação em grafo dos diagramas é feita através dos elementos GraphNode (representa cada um dos nós do grafo) e GraphEdge (cada uma das ligações entre nós). O elemento Diagram representa cada um dos diagramas e o elemento SemanticModelBridge destina-se a fazer a ligação entre o modelo semântico e o de layout. O elemento GraphElement representa um elemento genérico do grafo que contém GraphConnectors. Fig. 3. Exemplo da estrutura XMI A figura 3 apresenta a estrutura básica em termos de elemento XMI de um diagrama com duas classes e com uma associação entre elas. Podemos ver neste diagrama que os GraphConnectors servem para fazer a ligação entre GraphNodes e GraphEdges. Na figura 4 apresenta-se a estrutura básica de representação interna de uma classe com 2 atributos. Podemos ver que a classe (caixa) é dividida em compartimentos e cada compartimento contém os seus elementos.
8 8 Luís Ramos e Pedro Strecht Fig. 4. Exemplo da estrutura XMI De seguida apresenta-se um exemplo da parte da representação gráfica de um documento XMI (versão 2) do metamodelo apresentado como exemplo neste ponto. <?xml version="1.0" encoding="utf-8"?> <XMI xmi.version="1.2" timestamp="sun Oct 31 14:52:46 GMT 2004" xmlns:uml="org.omg.xmi.namespace.uml"> <XMI.header> <XMI.documentation> <XMI.exporter>Netbeans XMI Writer</XMI.exporter> <XMI.exporterVersion>1.0</XMI.exporterVersion> </XMI.documentation> </XMI.header> <XMI.content> <UML:Diagram xmi.id="di$b3f9b8: e35:-7fc1" isvisible="true" name="class Diagram_1" zoom="1.0"> <UML:GraphElement.position> </UML:GraphElement.position> <UML:GraphNode.size> </UML:GraphNode.size> <UML:Diagram.viewport> <XMI.field>0.0</XMI.field> <XMI.field>0.0</XMI.field> </UML:Diagram.viewport> <UML:GraphElement.semanticModel> <UML:SimpleSemanticModelElement xmi.id="di$b3f9b8: e35:-7fc0" presentation="" typeinfo="classdiagram" /> </UML:GraphElement.semanticModel> <UML:GraphElement.contained> <UML:GraphNode xmi.id="di$b3f9b8: e35:-7fbf" isvisible="true"> <UML:GraphElement.position> </UML:GraphElement.position> <UML:GraphNode.size> </UML:GraphNode.size> <UML:GraphElement.semanticModel> <UML:Uml1SemanticModelBridge xmi.id="di$b3f9b8: e35:-7fbe" presentation=""> <UML:Uml1SemanticModelBridge.element> <UML:Class xmi.idref="sm$b3f9b8: e35:-7fbd" /> </UML:Uml1SemanticModelBridge.element> O XMI é uma linguagem muito verbosa (a representação completa deste simples metamodelo ultrapassa as 200 linhas).
9 Aplicação de Reverse Engineering: Java para UML 9 3. Aplicação 3.1 Arquitectura A arquitectura do sistema encontra-se esquematizada na figura 5. Fig. 5. Arquitectura do Sistema A aplicação consiste numa página web que solicita a inserção de um ou vários ficheiros com código-fonte Java ao utilizador. Esse código é convertido num documento JavaML através do conversor disponibilizado por G. Badros (secção 2.1). Para obter um documento XMI, o documento JavaML é processado por uma XSLT. O documento XMI obtido não inclui informação de visualização, consistindo somente na tradução da representação das classes em JavaML para XMI. O cálculo da informação de visualização dos diagramas, por ser bastante complexo, não foi efectuado por uma XSLT, mas por um módulo desenvolvido em Microsoft C#.NET que recebe o documento XMI e acrescentar-lhe informação de visualização, utilizando para tal a implementação DOM incluída na framework Microsoft.NET. A saída de dados da aplicação é um documento XMI com a representação do diagrama de classes (gerado pelo módulo.net) ou um documento SVG com o desenho do diagrama de classes (gerado através da XSLT de transformação de XMI em SVG desenvolvida por M. Jeckle [18]). Os documentos XMI podem ser importados por uma ferramenta CASE que permite visualizar os diagramas construídos, mas podem surgir problemas de compatibilidade já referidos (secção 1.2). O Poseidon for UML, por ser considerado uma implementação correcta da norma XMI 2.0, é utilizado para este fim. Os documentos SVG podem ser visualizados directamente num browser com um plug-in SVG.
10 10 Luís Ramos e Pedro Strecht 3.2 Tecnologias Para além do XML, são utilizadas as seguintes tecnologias: - XSLT [29], standard de transformação de documentos XML; - DOM [30], [31], interface independente de plataformas e linguagens que define um standard de representação, acesso e manipulação de objectos que fazem o mapeamento da estrutura de um documento XML; - C#.NET, a conhecida linguagem de programação da Microsoft. - ASP.NET, liguagem de desenvolvimento de páginas web de fácil integração com C#.NET. - Jikes, compilador de Java opensource da IBM que é usado para a geração dos documentos JavaML. A utilização de XSLT simplifica a conversão de JavaML para XMI porque, embora os dialectos sejam extremamente diferentes na sintaxe, têm bastantes semelhanças a nível de estrutura. Este tipo de conversões são extremamente trabalhosas em DOM. A utilização de uma linguagem imperativa como o C#.NET usando DOM para fazer os cálculos da representação gráfica dos modelos apresentou-se como a opção mais natural pois grande parte destes algoritmos é de natureza imperativa. Por exemplo, a implementação de heurísticas para identificação de pseudo-hierarquias nos modelos seria de uma complexidade muito superior utilizando uma linguagem funcional como o XSLT. 3.3 Implementação A implementação do trabalho divide-se essencialmente em três partes: a construção da transformação (XSLT) de JavaML em XMI, o módulo de cálculo automático do layout dos diagramas e a integração das partes numa página web. Interface Web. A interface web consiste numa simples página que permite o upload de ficheiros com código-fonte Java e a definição do tipo de output: XMI ou SVG. Após clicarmos no botão Gen Diagram da página, é apresentada outra página com o output do processo de reverse engineering no formato seleccionado. Inicialmente, todos os ficheiros de código-fonte são processados para um único ficheiro em JavaML. Este ficheiro é transformado num ficheiro XMI pelos dois componentes descritos a seguir. Se o output desejado for XMI o documento produzido é apresentado, se for SVG, é usada adicionalmente a XSLT de transformação de XMI em SVG. O SVG é enviado directamente para o browser. Fig. 6. Interface da Aplicação Web
11 Aplicação de Reverse Engineering: Java para UML 11 Transformação de JavaML para XMI. Após a conversão do código-fonte Java em JavaML, este é transformado num diagrama de classes em XMI através de uma XSLT. O documento XMI a gerar é composto por um modelo semântico e por um modelo de layout. O modelo semântico descreve, classifica e hierarquiza os elementos do modelo de classes, nomeadamente classes, atributos, tipos, operações e associações. Os elementos são organizados numa semantic-tree e são-lhes atribuídos identificadores. O modelo de layout descreve todos os elementos gráficos que constituem o diagrama, nomeadamente coordenadas de posição do diagrama, tamanho, janela de visualização, compartimento de nome da classe, compartimento de atributos, compartimento de operadores, separadores, associações, indicadores de multiplicidade das associações, etc. O mapeamento de alguns elementos de JavaML para elementos de XMI no modelo semântico é directo, como é exemplificado na tabela 1: Tabela 1. Mapeamento de elementos de JavaML em XMI. JavaML class field method XMI UML:Class UML:Attribute UML:Operation e UML:Method Foi necessário efectuar a detecção de atributos simples, que são de tipo primitivo (nativos do Java, como int, char, string), de atributos de tipo objecto, ou seja, cujo tipo é uma classe também presente no documento JavaML. Neste último caso, em vez de ser criado um atributo na respectiva classe, é criado uma associação entre classes. As associações entre classes são elementos do modelo semântico que são criadas fora das classes, envolvendo sempre duas classes. Muitos dos elementos do documento XMI têm que ter um identificador único de tipo alfanumérico. A ferramenta CASE de teste utilizada, o Poseidon, gera identificadores num formato próprio que não faz parte da norma. A sua existência é necessária por um lado para identificar univocamente um elemento e por outro para possibilitar a associação entre elementos do modelo semântico e elementos do modelo de layout. Um dos maiores problemas durante a criação da XSLT foi a geração destes identificadores, e a correcta referência de elementos do modelo semântico em elementos do modelo de layout. Convencionou-se que os elementos do modelo semântico têm como prefixo mod e os elementos do modelo de layout têm como prefixo diag. Apresenta-se, a seguir, um exemplo da geração de um identificador para um elemento UML:Class do XMI extraído da XSLT desenvolvida. <xsl:variable name="pos_class"> <xsl:value-of select="position()"/> </xsl:variable> <UML:Class xmi.id="mod:class:{$pos_class}" > Neste exemplo, o elemento UML:Class tem um identificador (atributo xmi.id) que refere que o elemento em causa é do modelo semântico (prefixo mod), é uma classe (indicação de class), seguida da sua posição no documento (variável pos_class). A variável pos_class é definida no início da criação do elemento UML:Class, e é reutilizada noutros pontos do documento. A esta variável é atribuída a posição da classe no documento através da função position(). Para cada classe do documento JavaML é criado um elemento UML:Class com identificador mod:class:1, mod:class:2, etc. Estas classes podem ser referenciadas a partir do seu identificador em elementos do modelo de layout, através do atributo xmi.idref, como mostra o seguinte exemplo: <UML:Uml1SemanticModelBridge xmi.id="diag:cd:usmb:c{$pos_class}" presentation=""> <UML:Uml1SemanticModelBridge.element> <UML:Class xmi.idref="mod:class:{$pos_class}"/> </UML:Uml1SemanticModelBridge.element> </UML:Uml1SemanticModelBridge> Durante o desenvolvimento da XSLT, o Poseidon foi uma ferramenta essencial para importar e validar os documentos XMI que iam sendo produzidos. Através da representação do ficheiro nessa ferramenta foi possível avaliar a qualidade do XMI gerado. O Poseidon é particularmente exigente no que diz respeito à verificação de erros no XMI, produzindo um relatório de erros com as anomalias detectadas. As anomalias mais frequentes foram a repetição do mesmo identificador para diferentes elementos.
12 12 Luís Ramos e Pedro Strecht Fig. 7. Ficheiro XMI na ferramenta CASE Poseidon for UML O documento XMI produzido inclui também toda a estrutura de layout, no entanto, esta informação é intencionalmente deixada a zero. O problema de posicionamento dos elementos gráficos do diagrama é resolvido por outro módulo da aplicação que colocará nos elementos de layout os valores respectivos. Cálculo automático de layout dos diagramas. O módulo que processa o XMI produzido na fase anterior usa a interface DOM para calcular automaticamente o layout dos diagramas. Este módulo processa o ficheiro XMI e constrói uma estrutura de objectos que, não fazendo o mapeamento directo do XMI, permite navegar no modelo UML. Dada a extensão e o nível de encapsulamento do XMI é impraticável editar/navegar os objectos directamente mapeados do XMI. Foi necessário implementar uma camada de abstracção que permite pensar no modelo de objectos não como um documento XMI mas como um diagrama de classes. A escolha do nível de abstracção desta representação do XMI é fundamental para o conforto posterior na implementação de algoritmos de layout. A arquitectura deste módulo assenta nas classes UmlDiagram, UmlClass e UmlAssociation. O objectivo é permitir a utilização de métodos muito genéricos para desenhar os diagramas, como por exemplo, umlclass.layout() para fazer o layout automático interno da classe, isto é, para redistribuir os componentes da classe, como atributos e métodos, pela caixa que representa a classe. Para o layout dos diagramas foram implementados métodos como umldiagram.layout() e umlassociation.layout(). O excerto de código seguinte mostra a implementação da função umldiagram.layout() que distribui as classes pelo diagrama: // faz o layout das classes foreach( UmlClass classe in classes ) { classe.position = new Point( ((x==0)?(x=400):(x=0)), ((x==0)?(y):(y+=300)) ); classe.layout(); } ( ) // calculo das coordenadas máximas (maxx e maxy) // faz o layout das associações foreach( UmlAssociation assoc in associations ) assoc.layout(); // define o tamanho do diagrama this.size = new Point( maxx, maxy ); O método de layout das associações utiliza a informação dos GraphConnectors dos GraphEdges para obter a localização das classes e definir os pontos da associação. Foi implementado um método de layout para os elementos GraphNode, isto é, cada um dos tipos de GraphNodes (AttributeCompartment, OperationCompartment, AssociationEnd, etc.) tem um método de layout específico. Para o layout interno de uma classe basta chamar o método UmlClass.layout() que, por sua vez, chama recursivamente o método layout para os seus constituintes. Por razões de espaço não detalhamos a implementação destes métodos.
13 A figura 5 apresenta um modelo de classes simplificado deste módulo: Aplicação de Reverse Engineering: Java para UML 13 Fig. 8. Modelo de dados do módulo de cálculo automático de layout Este módulo usa a implementação da interface DOM da framework Microsoft.NET o que facilita bastante o trabalho, como se apresenta a seguir: // define um novo conteúdo do campo dado public void setgraphnodeelement( XmlNode node, string elementname, Point newvalue ) { node.selectsinglenode( "./UML:" + elementname + "/XMI.field[1]", XmiDoc.nsMgr ).InnerText = newvalue.x.tostring(); node.selectsinglenode( "./UML:" + elementname + "/XMI.field[2]", XmiDoc.nsMgr ).InnerText = newvalue.y.tostring(); } Este código define as coordenadas de um nó na árvore DOM do documento XMI através da utilização da função SelectSingleNode da classe.net XmlNode que aceita uma expressão XPath. Este é apenas um exemplo do esquema usado para a alteração do documento XMI. 4. Testes e Avaliação Foram efectuados testes à aplicação para avaliar o seu desempenho relativamente ao tempo de execução, à qualidade do documento XMI produzido e do layout do diagrama de classes. Para o efeito foram escritas algumas classes de teste em Java que foram submetidas à aplicação. Para avaliar se as transformações de JavaML para XMI são correctamente efectuadas, criaram-se classes com diferentes estruturas, ou seja, com número variável de atributos e métodos. Foi de particular interesse o teste das associações entre classes, pelo que alguns atributos tinham como tipo classes também submetidas à aplicação. Efectuaram-se testes com diferentes combinações de associações. Foi possível a partir dos testes efectuados, para cada um dos parâmetros referidos, obter as seguintes conclusões: Tempo de execução. A aplicação fornece os resultados de forma rápida, verificando-se tempos de execução da ordem dos três a cinco segundos. O tempo de execução varia com o tamanho dos ficheiros de código e da complexidade das associações entre as classes.
14 14 Luís Ramos e Pedro Strecht Qualidade do documento XMI produzido. Para validar a qualidade do documento XMI produzido foi utilizado o Poseidon. Sempre que existe algum erro no documento XMI o Poseidon não apresenta o diagrama e regista num ficheiro de erros os detalhes dos erros detectados. Os erros mais frequentes durante o desenvolvimento da XSLT de transformação de JavaML para XMI foram a repetição de identificadores para os mesmos elementos. À medida que o desenvolvimento decorria, esses erros foram sendo eliminados. Para os testes efectuados na fase final, não foram detectados quaisquer erros no XMI, uma vez que o Poseidon foi sempre capaz de apresentar o diagrama. Conclui-se que os documentos XMI produzidos são válidos. Layout do diagrama de classes. A validação e teste da qualidade do layout dos diagramas de classes só pode ser feita através da sua visualização. Para tal foi utilizado o Poseidon, importando o documento XMI produzido. Em alternativa, é possível definir o SVG como formato de saída de dados da aplicação que mostra o documento SVG gerado directamente no browser. O algoritmo de layout desenvolvido produz bons resultados no posicionamento das classes no diagrama. As classes são posicionadas de forma adjacente entre si e nunca são sobrepostas. As associações entre as classes são correctamente representadas através de linhas entre a classe de origem e a classe destino. Foi detectado que por vezes, as associações entre duas classes são desenhadas por cima de uma terceira classe. Isto acontece porque o algoritmo de layout das associações simplesmente não contempla este problema. 5. Conclusões 5.1 Satisfação dos Objectivos Podemos concluir que os principais objectivos deste trabalho foram alcançados. O objectivo central de gerar um diagrama a partir do código-fonte em Java foi completamente atingido. Conforme previsto no início do trabalho foram deixadas de fora algumas situações, como por exemplo, a representação de heranças. Foi atingido o objectivo de gerar documentos XMI 2.0 válidos e compreensíveis tanto pela ferramenta CASE Poseidon (única no mercado que implementa a norma) como pela XSLT de geração de SVGs [18]. A qualidade do layout dos diagramas gerados não é uma métrica de sucesso fundamental do trabalho dado que, neste aspecto, o objectivo do trabalho era somente demonstrar as potencialidades da arquitectura do sistema. De notar finalmente que foi possível neste trabalho construir uma camada de abstracção sobre o XMI que nos permitiu implementar um esquema que facilitasse o desenho dos diagramas. 5.2 Trabalho Futuro Uma das possibilidades de trabalho futuro, é o acrescento à aplicação de outras linguagens de programação, para além do Java, como entrada de dados. Este trabalho poderia basear-se, por exemplo, na construção de uma transformação XSLT entre a representação XML do código-fonte da nova linguagem em JavaML. Apesar de para efeitos de conversão de código-fonte entre várias linguagens esta tarefa ser muito complicada, para efeitos de representação UML esta transformada não necessitaria de ser muito completa para se obterem bons resultados ao nível dos diagramas. A geração de código-fonte a partir de diagramas UML poderia ser implementada através do esquema inverso ao usado neste trabalho. Isto é, uma XSLT de conversão de XMI em JavaML e por sua vez em código-fonte Java (XSLT já disponibilizada pelo autor do JavaML). Adicionalmente poderiam ser usados os mecanismos do XMI para guardar código-fonte que permitissem implementar um sistema de roundtrip engineering totalmente baseado em XML. A disponibilização num web service do serviço implementado neste trabalho poderia ser interessante para, por exemplo, ferramentas de documentação que utilizassem o serviço remoto de reverse engineering. Igualmente interessante seria a disponibilização em forma de biblioteca da API de acesso ao XMI desenvolvida que permite o fácil desenvolvimento de heurísticas de desenho dos diagramas.
15 Aplicação de Reverse Engineering: Java para UML 15 Referências [1] Rational Rose web site. [2] Together Control Centre web site. [3] Poseidon for UML web site. [4] Anders Henriksson, Henrik Larsson. A Definition of Round-trip Engineering. [5] Developer.com, UML Tools. [6] ArgoUML web site. [7] Visual Paradigm web site. [8] Plataforma Eclipse. [9] H. Eichelberger, J. Gudenberg. UML Class Diagrams State of the Art in Layout Techniques. [10] J. Michaud., M.-A. Storey, H. A. Müller. Integrating Information Sourced for Visualizing Java Programs. [11] Oracle JDeveloper 10g IDE. [12] Perdita Stevens. Small-Scale XMI Programming: A Revolution in UML Tool Use? [13] Jeffrei Korn, Yih-Farn Chen, Eleftherios Koutsofios. Chava: Reverse Engineering and Tracking of Java Applets. [14] Osvaldo Pinali Doederlein. Design Pattern Extraction for Software Documentation. [15] Mammas, E. and Kontogiannis, C., "Towards Portable Source Code Representations using XML", 7th Working Conference on Reverse Engineering WCRE.Australia, [16] Maletic, J.I., Collard, M., Marcus, A. Source Code Files as Structured Documents", 10th IEEE International Workshop on Program Comprehension IWPC, [17] Raihan Al-Ekram and Kostas Kontogiannis. An XML-based Framework for Language Neutral Program Representation and Generic Analysis. [18] M. Jeckle, D. Boicourt e B. Stritt. Projecto UML2SVG. [19] G. J. Badros. JavaML: A Markup Language for Java Source Code. International World Wide Web Conference (WWW9) [20] G. J. Badros. JavaML page. [21] Chu Tommy, Wong Ken. Benchmarking on Java XML Transformers. [22] Ademar Aguiar. XSDoc - an Extensible Infrastructure for Framework Documentation. [23] Object Management Group. XML Metadata Interchange (XMI) v [24] Object Management Group. Meta Object Facility (MOF) v1.4, [25] Object Management Group. Common Warehouse Metamodel (CWM), v1.1, [26] Object Management Group. Software Process Engineering Metamodel, v1.0, [27] Object Management Group. Unified Modeling Language (UML), v1.4, [28] Object Management Group. UML Diagram Interchange, v2.0, [29] J. Clark. XSL Transformations (XSLT) v1.0. W3C Recommendation, [30] DOM Level 2 Core v1.0, W3C Recommendation, [31] A. Le Hors et al. Document Object Model (DOM).
A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO
DOMINE A 110% ACCESS 2010 A VISTA BACKSTAGE Assim que é activado o Access, é visualizado o ecrã principal de acesso na nova vista Backstage. Após aceder ao Access 2010, no canto superior esquerdo do Friso,
Leia maisOdyssey-MDA: Uma Ferramenta para Transformações de Modelos UML
Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML Natanael E. N. Maia, Ana Paula B. Blois, Cláudia M. Werner COPPE/UFRJ Programa de Engenharia de Sistemas e Computação Caixa Postal 68.511
Leia maisUniversidade da Beira Interior
Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação
Leia maisEngenharia de Software Sistemas Distribuídos
Engenharia de Software Sistemas Distribuídos 2 o Semestre de 2009/2010 FEARSe Requisitos para a 1 a entrega 18 de Março de 2010 1 Introdução O projecto conjunto das disciplinas de Engenharia de Software
Leia maisWebSphere_Integration_Developer_D_Jan06 Script
WebSphere_Integration_Developer_D_Jan06 Script 1a Nesta demonstração, Will Dunlop, um programador de integração da JK, utiliza o IBM, [ IBM], ou WID para construir um novo serviço orientado para os processos
Leia maisTECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO
TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO CONCEITOS BÁSICOS 1 Necessidade das base de dados Permite guardar dados dos mais variados tipos; Permite
Leia maisTECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO
TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ACCESS 2010 Conceitos Básicos Ficha Informativa Professor : Vanda Pereira módulo didáctico Conceitos Básicos Necessidade das base de dados Permite guardar dados
Leia mais6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes
6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes A ferramenta MAS-ML Tool surgiu com o objetivo de viabilizar o processo de desenvolvimento proposto na Seção anterior, implementando
Leia maisEngenharia Informática
Escola Superior de Ciência e Tecnologia Engenharia Informática Análise de Sistemas Informáticos 3º ano Exame 12 de Julho de 2006 Docentes: José Correia e João Paulo Rodrigues Duração: 90 m; Tolerância:
Leia maisGUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL
GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL Versão: 1.0 Data: 05-06-2009 Índice Acesso e estados dos Formulários... 3 Escolha do Formulário e submissão... 4 Bases para a navegação
Leia maisEngenharia de Software. Enunciado da Primeira Parte do Projecto
LEIC-A, LEIC-T, LETI, MEIC-T, MEIC-A Engenharia de Software 2 o Semestre 2014/2015 Enunciado da Primeira Parte do Projecto 1. Primeira Parte do Projecto ES Este enunciado descreve o trabalho a realizar
Leia maisRock In Rio - Lisboa
Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem
Leia maisUFG - Instituto de Informática
UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services
Leia maisJSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem
1 JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem orientada a objectos. Tal como em ASP e PHP, os ficheiros
Leia mais1.2.4. Organizar a estrutura do site
1.2.4. Organizar a estrutura do site 1 Organizar a estrutura do site A organização da estrutura do site passa pela definição das ligações entre as páginas que o compõem Esta organização deve ser intuitiva
Leia maisDesenvolvimento de uma Aplicação WEB para monitorização de BD Oracle
Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle Luís Filipe Borges Pinto Resumo: Este projecto consiste na implementação de uma aplicação WEB para monitorização
Leia maisManual do GesFiliais
Manual do GesFiliais Introdução... 3 Arquitectura e Interligação dos elementos do sistema... 4 Configuração do GesPOS Back-Office... 7 Utilização do GesFiliais... 12 Outros modos de utilização do GesFiliais...
Leia maisMAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS
Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Sistemas de Informação RENATO SULZBACH MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES
Leia maisFaculdade de Ciências da Universidade de Lisboa CURSO DE GPS. Módulo x. (Aula Prática) Reliance - Ashtech. Suas Aplicações Em SIG.
Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS Módulo x (Aula Prática) Reliance - Ashtech e Suas Aplicações Em SIG (Carlos Antunes) INTODUÇÃO O Sistema Reliance baseia-se na utilização do
Leia maisAprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.
Omondo EclipseUML Ricardo Rodrigues Lecheta Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte. Introdução Neste tutorial será apresentado
Leia maisGereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios
Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de
Leia maisOntologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem
Ontologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem Luiz Cláudio Hogrefe Orientador: Prof. Roberto Heinzle, Doutor Roteiro Introdução Fundamentação teórica
Leia maisSISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl
SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo
Leia maisManual de Administração Intranet BNI
Manual de Administração Intranet BNI Fevereiro - 2010 Índice 1. Apresentação... 3 2. Conceitos... 5 3. Funcionamento base da intranet... 7 3.1. Autenticação...8 3.2. Entrada na intranet...8 3.3. O ecrã
Leia mais3.1 Definições Uma classe é a descrição de um tipo de objeto.
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:
Leia maisCurso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:
Trabalho elaborado por: Carlos Palma nº5608 Curso de Eng. Informática Linguagens de Programação C Sharp University Data Processing (C Sharp Universidade de Processamento de Dados) Docente: José Jasnau
Leia maisGestão de projectos na Web
Gestão de projectos na Web Relatório de desenho de alto nível Versão 1.0, 5 de Maio de 2003 Telmo Pedro Gomes Amaral (mee02013@fe.up.pt) (Grupo 15) Aplicações na Web Mestrado em Engenharia Electrotécnica
Leia maisIntrodução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional
Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens
Leia maisMicrosoft Office FrontPage 2003
Instituto Politécnico de Tomar Escola Superior de Gestão Área Interdepartamental de Tecnologias de Informação e Comunicação Microsoft Office FrontPage 2003 1 Microsoft Office FrontPage 2003 O Microsoft
Leia maisEspecificação do 3º Trabalho
Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,
Leia maisArquitecturas de Software Licenciatura em Engenharia Informática e de Computadores
UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores Primeiro Teste 21 de Outubro de 2006, 9:00H 10:30H Nome: Número:
Leia maisParadigmas da Programação Netbeans 6.7.1 UML
Paradigmas da Programação Netbeans 6.7.1 UML Nelson Freire (ISEP DEI-PPROG 2010/11) 1/31 UML Tópicos Referências Instalação Netbeans 6.7.1 Instalação Plugin UML Criação Diagrama de Classes: Novo Projecto
Leia maisPrática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Leia maisSemântica para Sharepoint. Busca semântica utilizando ontologias
Semântica para Sharepoint Busca semântica utilizando ontologias Índice 1 Introdução... 2 2 Arquitetura... 3 3 Componentes do Produto... 4 3.1 OntoBroker... 4 3.2 OntoStudio... 4 3.3 SemanticCore para SharePoint...
Leia maisINTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF
INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF Guilherme Macedo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil guilhermemacedo28@gmail.com, jaime@unipar.br Resumo.
Leia maisDOCUMENTAÇÃO DO FRAMEWORK - versão 2.0
DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando
Leia maisExemplo de aplicação Car Parking 1in1out
Animator Exemplo de aplicação Car Parking 1in1out Neste documento será apresentado um exemplo de aplicação de um parque de estacionamento com uma entrada, uma saída, e três lugares livres de estacionamento.
Leia maisTarefa Orientada 16 Vistas
Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um
Leia maisGeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código
GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código Igor Steinmacher 1, Éderson Fernando Amorim 1, Flávio Luiz Schiavoni 1, Elisa Hatsue Moriya Huzita 1 1 Departamento de Informática
Leia maisSuporte à Engenharia Reversa para o ambiente SEA
Otavio Pereira Suporte à Engenharia Reversa para o ambiente SEA Orientador: Ricardo Pereira e Silva Universidade Federal de Santa Catarina - UFSC Departamento de Informática e Estatística - INE Florianópolis
Leia maisEsta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi
5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem
Leia maisTrabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores
Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação
Leia maisGuião de Introdução ao Eclipse IDE Índice
Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.
Leia maisConceito. As empresas como ecossistemas de relações dinâmicas
Conceito As empresas como ecossistemas de relações dinâmicas PÁG 02 Actualmente, face à crescente necessidade de integração dos processos de negócio, as empresas enfrentam o desafio de inovar e expandir
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisDe Arte a Ciência: Regras para o Desenho de Software
De Arte a Ciência: Regras para o Desenho de Software Neste artigo é apresentado um conjunto de regras de desenho um padrão de desenho universal associado ao princípio fundamental e aos requisitos axiomáticos.
Leia maisFerramentas de Engª de Requisitos
Análise e Conc epç ão de Sist em as de Inform aç ão )HUUDPHQWDVGH(QJ GH5HTXLVLWRV Carla Ferreira carla.ferreira@dei.ist.utl.pt Ferramentas Genéricas Ferramentas Especializadas Ferramenta (lider de mercado)
Leia maisFranklin Ramalho Universidade Federal de Campina Grande - UFCG
Agenda Meta-modelos Franklin Ramalho Universidade Federal de Campina Grande - UFCG - Arquitetura MDA - Meta-modelo - Conceitos - Características - - XMI - Pacotes - Meta-modelo 2.0 - Alinhamento entre
Leia maisDesenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA
Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos
Leia maisSIQuant GeoQuality DGNToShapefile Converter
SIQuant GeoQuality DGNToShapefile Converter v.1.2.1.0 Manual do Utilizador 2005-2007 Copyright SIQuant 2005, 2006, 2007. Todos os direitos reservados. O sistema SIQuant GeoQuality é licenciado pela empresa
Leia maisEngenharia de Software
Engenharia de Software 2º Semestre de 2006/2007 Terceiro enunciado detalhado do projecto: Portal OurDocs ic-es+alameda@mega.ist.utl.pt ic-es+tagus@mega.ist.utl.pt 1. Introdução O terceiro enunciado do
Leia maisModelo Cascata ou Clássico
Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação
Leia maisPlataforma de Gestão de Actualizações de Software Descrição do Problema
Plataforma de Gestão de Actualizações de Software Descrição do Problema Pedro Miguel Barros Morgado Índice Introdução... 3 Ponto.C... 4 Descrição do Problema... 5 Bibliografia... 7 2 Introdução No mundo
Leia maisDesenvolvimento de aplicação web com framework JavaServer Faces e Hibernate
Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade
Leia maisTarefa Orientada 2 Criar uma base de dados
Tarefa Orientada 2 Criar uma base de dados Objectivos: Criar uma base de dados vazia. O Sistema de Gestão de Bases de Dados MS Access Criar uma base dados vazia O Access é um Sistema de Gestão de Bases
Leia maisSuporte Técnico de Software HP
Suporte Técnico de Software HP Serviços Tecnológicos HP - Serviços Contratuais Dados técnicos O Suporte Técnico de Software HP fornece serviços completos de suporte de software remoto para produtos de
Leia maisTransição de POC para SNC
Transição de POC para SNC A Grelha de Transição surge no âmbito da entrada em vigor, no ano de 2010, do Sistema de Normalização Contabilística (SNC). O SNC vem promover a melhoria na contabilidade nacional,
Leia maisEscola Superior de Tecnologia de Setúbal. Projecto Final
Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Projecto Final Computação na Internet Ano Lectivo 2002/2003 Portal de Jogos Executado por:
Leia maisPHC Serviços CS. A gestão de processos de prestação de serviços
PHC Serviços CS A gestão de processos de prestação de serviços A solução que permite controlar diferentes áreas de uma empresa: reclamações e respectivo tratamento; controlo de processos e respectivos
Leia maisDirecção Regional de Educação do Algarve
MÓDULO 1 Folha de Cálculo 1. Introdução à folha de cálculo 1.1. Personalização da folha de cálculo 1.2. Estrutura geral de uma folha de cálculo 1.3. O ambiente de da folha de cálculo 2. Criação de uma
Leia maisPLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016
PLANIFICAÇÃO MODULAR ANO LECTIVO 2015 / 2016 CURSO/CICLO DE FORMAÇÃO Técnico de Eletrotecnia e Técnico de Gestão de Equipamentos Informáticos / 2015/2018 DISCIPLINA: Tecnologias da Informação e Comunicação
Leia maisGereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática
Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/10 GereComSaber Ana Duarte, André Guedes, Eduardo
Leia maisPACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR
MANUAL DO UTILIZADOR Versão 1.3 ÍNDICE 1. INTRODUÇÃO 2 2. INSTALAÇÃO E CONFIGURAÇÃO 3 2.1 INSTALAÇÃO 3 Instalar o Pacweb 3 Alterar o Ficheiro Default.htm 3 Criar um Virtual Directory 3 2.2 CONFIGURAÇÃO
Leia maisRequisitos para a Federação de um serviço web. Serviço Utilizador RCTS Janeiro de 2010
Requisitos para a Federação de um serviço web Serviço Utilizador RCTS Janeiro de 2010 15 de Janeiro de 2010 Requisitos para a Federação de um serviço web Serviço Utilizador RCTS Janeiro de 2010 EXT/2010/Serviço
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisMANUAL DO UTILIZADOR
MANUAL DO UTILIZADOR Versão 1.6 PÁGINA DE PESQUISA A página principal do PacWeb permite a realização de um número muito variado de pesquisas, simples, ou pelo contrário extremamente complexas, dependendo
Leia maisESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado
Leia maisManual do Gestor da Informação do Sistema
Faculdade de Engenharia da Universidade do Porto Licenciatura Informática e Computação Laboratório de Informática Avançada Automatização de Horários Manual do Gestor da Informação do Sistema João Braga
Leia maisXHTML 1.0 DTDs e Validação
XHTML 1.0 DTDs e Validação PRnet/2012 Ferramentas para Web Design 1 HTML 4.0 X XHTML 1.0 Quais são os três principais componentes ou instrumentos mais utilizados na internet? PRnet/2012 Ferramentas para
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisReferencial do Módulo B
1 Referencial do Módulo B Liga, desliga e reinicia correctamente o computador e periféricos, designadamente um scanner; Usa o rato: aponta, clica, duplo-clique, selecciona e arrasta; Reconhece os ícones
Leia maisFase 1: Engenharia de Produto
Fase 1: Engenharia de Produto Disciplina: Análise de Requisitos DURAÇÃO: 44 h O objetivo principal da disciplina é realizar uma análise das necessidades e produzir um escopo do produto. Representará os
Leia maisENGENHARIA DE SOFTWARE
ENGENHARIA DE SOFTWARE PARTE 2 LINGUAGEM DE MODELAÇÃO UML CAP. 8 UML MODELAÇÃO DA ARQUITETURA Tópicos Conceito de Diagramas Físicos Fundamentos dos Diagramas de Componentes componentes interface quando
Leia maisManual de Utilizador Carregamento e Processamento de Ficheiros via Internet Banking. Português - V1
Manual de Utilizador Carregamento e Processamento de Ficheiros via Internet Banking Português - Índice Introdução... 2 Capitulo I... 3 1.1 Localização da funcionalidade... 3 1.2 Tipo de Ficheiros... 3
Leia maisUNIVERSIDADE. Sistemas Distribuídos
UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação
Leia maisFerramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl
Ferramenta de apoio a gerência de configuração de software Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Gerência de Configuração
Leia mais2 Engenharia de Software
20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite
Leia maisConceitos básicos de programação
O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro
Leia maisConteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de
Leia maisSoftware PHC com MapPoint
Software PHC com MapPoint A análise de informação geográfica A integração entre o Software PHC e o Microsoft Map Point permite a análise de informação geográfica, desde mapas a rotas, com base na informação
Leia maisGestão Pessoal. Relatório Único. Manual preparação do software para o relatório único
Gestão Pessoal Relatório Único Manual preparação do software para o relatório único Wincode, 30 Março de 2011 Introdução Este manual tem como principal objectivo ajudar o utilizador a preparar o software
Leia maisCriação de Páginas Web - MS Word 2000
Gestão Comercial e da Produção Informática I 2003/04 Ficha de Trabalho N.º 9 Criação de Páginas Web - MS Word 2000 1. Criação de uma página Web (HTML): Escreva o seu texto e introduza as imagens pretendidas
Leia maisEscola Secundária de Camarate
Escola Secundária de Camarate Ano Lectivo 2014/2015 Planificação da Disciplina de Tecnologias da Informação e Comunicação Curso Profissional de Técnico Auxiliar de Saúde e Técnico de Restauração e Bar
Leia maisAplicações de Escritório Electrónico
Universidade de Aveiro Escola Superior de Tecnologia e Gestão de Águeda Curso de Especialização Tecnológica em Práticas Administrativas e Tradução Aplicações de Escritório Electrónico Microsoft Word Folha
Leia maisMicrosoft Word 2007. Vantagens
Microsoft Word 2007 Vantagens Vantagens A versão 2007 do Microsoft Word permite elaborar documentos com um aspecto muito profissional. Para tal, esta versão utiliza um conjunto de ferramentas (novas e/ou
Leia maisEDUTec Learning. José Paulo Ferreira Lousado
EDUTec Learning MANUAL DO UTILIZADOR José Paulo Ferreira Lousado Índice Página Principal... ii Página de Desenvolvimento de Conteúdos... iii Página de Comunicações...iv Página de Transferência de Ficheiros...vi
Leia maisGEADA. Gerador de Expressões Algébricas em Digrafos Acíclicos. para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa
GEADA Gerador de Expressões Algébricas em Digrafos Acíclicos para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa 1 1 Introdução O GEADA (Gerador de Expressões Algébricas em Digrafos Acíclicos)
Leia maisGerador de Web Services para cadeias de tranformações de documentos XML
Gerador de Web Services para cadeias de tranformações de documentos XML José Carlos Ramalho, Pedro Taveira, Ricardo Ferreira e Vasco Rocha DI/UM jcr@di.uminho.pt pjstaveira@netcabo.pt ricardomiguel@myrealbox.com
Leia maisUniversidade do Minho Licenciatura em Engenharia Informática
Universidade do Minho Licenciatura em Engenharia Informática Disciplina de Desenvolvimento de Sistemas de Software Trabalho Prático Fase 1 Ano Lectivo de 2009/10 GereComSaber Grupo 15 Cláudio Manuel Rigueiro
Leia maisLaboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9
Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através
Leia mais5. Métodos ágeis de desenvolvimento de software
Engenharia de Software 5. Métodos ágeis de desenvolvimento de software Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Desenvolver e entregar software o mais rapidamente possível é hoje em dia um dos
Leia maisAcronis Servidor de Licença. Manual do Utilizador
Acronis Servidor de Licença Manual do Utilizador ÍNDICE 1. INTRODUÇÃO... 3 1.1 Descrição geral... 3 1.2 Política de licenças... 3 2. SISTEMAS OPERATIVOS SUPORTADOS... 4 3. INSTALAR O SERVIDOR DE LICENÇA
Leia maisAMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
Leia maisDIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling
DIMENSIONANDO PROJETOS DE WEB-ENABLING Uma aplicação da Análise de Pontos de Função Dimensionando projetos de Web- Enabling Índice INTRODUÇÃO...3 FRONTEIRA DA APLICAÇÃO E TIPO DE CONTAGEM...3 ESCOPO DA
Leia maisVM Card. Referência das Definições Web das Funções Avançadas. Manuais do Utilizador
VM Card Manuais do Utilizador Referência das Definições Web das Funções Avançadas 1 Introdução 2 Ecrãs 3 Definição de Arranque 4 Informações de Função Avançada 5 Instalar 6 Desinstalar 7 Ferramentas do
Leia maisARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X
ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta
Leia maisBase de Dados para Administrações de Condomínios
Base de Dados para Administrações de Condomínios José Pedro Gaiolas de Sousa Pinto: ei03069@fe.up.pt Marco António Sousa Nunes Fernandes Silva: ei03121@fe.up.pt Pedro Miguel Rosário Alves: alves.pedro@fe.up.pt
Leia mais