2. Migração de Sistemas OO para OA

Tamanho: px
Começar a partir da página:

Download "2. Migração de Sistemas OO para OA"

Transcrição

1 Uma Abordagem para Reengenharia de Sistemas implementados em Java para AspectJ Daniel Kawakami 1, Ricardo Argenton Ramos 2, Rosângela Ap. Penteado 1 1 Departamento de Computação Universidade Federal de São Carlos (UFSCar) 2 Centro de Informática - Universidade Federal de Pernambuco (UFPE) Abstract. The concern with the improvement of systems is constant by the developers. This work presents a method of reengineering of systems written in Java to AspectJ language. The identification of crosscutting concerns of persistence and logging, existing in Java code, is performed using an Indication model based on syntax analyses. Both identification and reorganization of code to AspectJ use a computational support, named ReJAsp, developed as a plug-in belonging to Eclipse environment. Studies of observation are presented in order to demonstrate method importance. Resumo. A preocupação com a melhoria de sistemas é constante por parte dos desenvolvedores. Este trabalho apresenta uma abordagem de reengenharia para sistemas implementados em Java para AspectJ. A identificação de indícios de interesses transversais de persistência e de logging, existentes no código Java é realizada por meio de um Modelo de Indícios com base em análise sintática. Tanto a identificação quanto a reestruturação do código para AspectJ utilizam um apoio computacional, ReJAsp, desenvolvido como um plug-in do ambiente Eclipse. Estudo de observação são apresentados para ilustrar a abordagem apresentada.

2 1. Introdução O paradigma de orientação a objetos permite a separação clara de interesses primários (core concerns). Entretanto, alguns problemas ainda persistem como, por exemplo, a não separação de interesses transversais (crosscutting concerns) que se apresentam espalhados e misturados por diversos módulos do sistema. Exemplos desses são: persistência em banco de dados, tratamento de exceção, controle de concorrência, rastreamento, autenticação, controle de acesso, entre outros. Os interesses transversais, quando espalhados e entrelaçados são difíceis de serem localizados e alterados, tornando o sistema complexo e reduzindo sua qualidade quanto à adaptabilidade, manutenibilidade e reusabilidade [Satiroğlu 2004]. A Programação Orientada a Aspectos (POA) [Kiczales et al 1997] é uma forma para tratar os interesses transversais por meio da especificação de aspectos, isto é, mecanismos para a localização de expressões que contêm interesses transversais e a separação desses dos interesses primários (core concerns). Os principais benefícios da POA são: a construção de sistemas mais modulares e reutilizáveis, maior legibilidade do código-fonte e, conseqüentemente, aumento da manutenibilidade. O Desenvolvimento de Software Orientado a Aspectos (DSOA) [AOSD ] é uma opção para que engenheiros de software organizem melhor os artefatos produzidos desde o documento de requisitos [Rashid et al 2002] até a implementação [Kiczales et al 1997] e testes de software [Elrad et al 2001]. Por ser uma linha de pesquisa ainda em evolução, a maioria dos esforços está concentrado na fase da implementação e projeto. Atualmente, a linguagem de POA mais popular e consolidada é a AspectJ sendo empregada em projetos reais para a otimização de plataforma middleware, monitoramento e melhoria de desempenho, adição de interesses de segurança em aplicações existentes e implementação de Integração de Aplicação Coorporativa (Enterprise Application Integration) [Laddad 2003]. Todos esses projetos evidenciam a redução da quantidade de linhas de código e do tempo necessário para a elaboração de produtos. Reengenharia de software pode ser aplicada para realizar manutenção preventiva de sistemas [Pressman 2006]. Assim, sistemas Orientados a Objetos (OO) com problemas inerentes de espalhamento e entrelaçamento de interesses transversais podem ser migrados para um novo sistema Orientado a Aspectos. O comportamento externo do sistema resultante deve ser equivalente ao original, mas sua legibilidade e manutenibilidade são melhoradas, devido à centralização de código-fonte pertencente a um mesmo interesse transversal, antes espalhada por todo o sistema. Para viabilizar a reengenharia desses sistemas é necessária a existência de métodos e ferramentas que o apóiem. Nesse sentido, Aspecting [Ramos 2004] surgiu como uma abordagem sistemática para auxiliar engenheiros de software na identificação de candidatos a aspectos, denominados de indícios e implementação dos interesses transversais de modo modular. Para isso, a abordagem requer a execução de um conjunto de diretrizes pelo engenheiro de software, tendo como entrada um sistema escrito em Java, gerando outro equivalente implementado na linguagem AspectJ.

3 Este artigo apresenta aprimoramentos da abordagem Aspecting, por meio da definição do Modelo de Indícios e de diretrizes de identificação de indícios e de reestruturação de código-fonte, baseadas neste modelo. Essa nova representação de indícios facilita a construção de um apoio computacional que automatize parte das atividades executadas na abordagem Aspecting, favorecendo a reengenharia de um sistema legado implementado em Java para AspectJ. A Seção 2 discute questões referentes à migração de sistemas OO para OA com o uso da abordagem Aspecting. Na Seção 3 os aprimoramentos realizados na Aspecting são comentados. Na seção 4 são feitas considerações quanto à forma de busca utilizada pela abordagem Aspecting e aos aprimoramentos nela realizados. Essas considerações justificam a criação de um apoio computacional que utiliza o Modelo de Indícios e as diretrizes para identificação e reestruturação de sistemas. Na Seção 5 um apoio computacional, denominado ReJAsp (Reengenharia de sistemas Java para AspectJ) é descrito. A avaliação do ReJAsp, realizada por estudos de observação, é apresentada na Seção 6. Alguns trabalhos relacionados são comparados com ReJAsp na Seção 7 e as considerações finais estão na Seção Migração de Sistemas OO para OA A abordagem Aspecting [Ramos 2004, Ramos et al 2004] auxilia na identificação de alguns interesses transversais que se apresentam espalhados e entrelaçados em diversos módulos de um sistema escrito em Java e, em seguida, possibilita sua implementação em AspectJ. Para o entendimento da funcionalidade do sistema OO são usados diagramas de casos de uso e de classes de projeto. Os interesses existentes são descobertos com o uso da Lista de Indícios (Tabela 1) e, posteriormente, são modelados como aspectos em um diagrama de classes de projeto. A Aspecting tem 3 passos: 1) A criação de diagrama de casos de uso e de diagrama de classes de projeto, caso não exista, para representar a funcionalidade do sistema legado; 2) O tratamento dos interesses que pesquisa, em cada classe implementada no código legado, a existência de possíveis indícios de interesses transversais. Para cada indício encontrado, o trecho deve ser marcado no código fonte e adicionado um número seqüencial que indica a ordem em que esse trecho aparece na classe. No diagrama de classes de projeto o interesse relacionado ao indício encontrado é adicionado e, posteriormente, deve ser feita a sua implementação em AspectJ, seguindo diretrizes elaboradas para esse fim; 3) A comparação do sistema OO com o OA é realizada utilizando os casos de uso inicialmente construídos para garantir que a funcionalidade original do sistema foi preservada. Alguns sistemas simples foram utilizados para validação das diretrizes da Aspecting quando da realização de reengenharia manual [Ramos et al 2004]. Sistemas de maior complexidade demandam maior esforço e não há garantias que o código produzido em AspectJ seja totalmente isento de interesses transversais espalhados entre as classes, se um apoio computacional não for utilizado durante o processo. Com esse objetivo algumas modificações foram realizadas na Aspecting, principalmente em relação à criação do Modelo de Indícios, e são comentadas a seguir.

4 Tabela 1 Lista Parcial de Indícios criada na Aspecting [Ramos, 2004] Interesse Indícios 1)Persistência em <i.persistencia.bd> = 'Connection' <statements> 'Connection'<statements><SQL> Banco de Dados <SQL><statements>'Connection' 'PreparedStatement'<statements> 'PreparedStatement' <statements> <SQL> <SQL><statements>'PreparedStatement' 'ResultSet'<statements> 'ResultSet' <statements> <SQL> <SQL> <statements> 'ResultSet' 2) Persistência em memória temporária (Buffering) <i.persistência.mem.temp> = 'BufferredReader' <statements> 'new' 'BufferredReader' '(' <statements> ')' 'StringBuffer' <statements> 'new' 'StringBuffer' '(' <statements> ')' 'BufferedInputStream' <statements> 'new' 'BufferedInputStream' '(' <statements> ')' 3. Aprimoramento da abordagem Aspecting A Lista de Indícios apresenta uma característica em comum nas gramáticas livre de contexto (GLC) para os interesses de persistência em banco de dados e de persistência em memória temporária: a utilização de tipos (classes e interfaces) de pacotes específicos da API do JDK, Java 2 Platform Standard Edition Development Kit [Java Technology 2007]. Para que esses tipos possam ser utilizados corretamente em um apoio computacional há necessidade de incluir também suas instruções de importação na Lista de Indícios. O Modelo de Indícios extensão da abordagem Aspecting, Figura 1, é aplicado ao tratamento de indícios relacionados à importação, declaração e uso de variáveis de um conjunto de tipos. Com base nesse modelo foram criadas diretrizes específicas de identificação e de reestruturação o que possibilita melhor precisão nos resultados, com o uso de análise sintática do código, diferindo-se da Abordagem Aspecting que apenas verifica o conteúdo léxico. Além disso, o maior nível de detalhamento das diretrizes propostas, quando comparado com as diretrizes originais, torna a reengenharia mais disciplinada e menos propensa a erros cometidos pelo engenheiro de software. Na Aspecting são definidas diretrizes específicas para cada interesse transversal tratada por esta abordagem. Por outro lado, as diretrizes propostas neste trabalho são sempre as mesmas, independente do interesse transversal tratado. Isso acontece porque as diretrizes processam informações contidas no Modelo de Indícios. Desde que os interesses transversais estejam devidamente representados no Modelo de Indícios, as diretrizes aplicadas não variam. Alguns dos tipos indicados na Lista de Indícios foram identificados e formatados segundo o Modelo de Indícios e novos tipos foram incorporados. Para os indícios de persistência em banco de dados foram incluídos tipos pertencentes ao pacote java.sql além dos tipos já existentes: Connection, PreparedStatement e ResultSet. Originalmente os indícios de interesse de memória temporária estavam relacionados à declaração e à alocação de objetos do tipo BufferedReader, StringBuffer e BufferedInputStream. O primeiro e terceiro tipo podem ser utilizados no código-fonte mediante a importação do pacote java.io da API do JDK e o outro tipo é pertencente ao pacote java.lang. Entretanto, Deursen et al (2003) afirmam que o tipo FileOutputStream, pertencente ao pacote java.io, também é utilizado para a

5 implementação de persistência em memória temporária. Por esse motivo, esse tipo foi incorporad o ao Modelo de Indícios de persistência em memória temporária. Figura 1. Modelo de Indícios Por outro lado, o interesse de Logging, ausente da Aspecting original, foi acrescentado ao Modelo de Indícios, sendo associado à coleta de informações referentes aos eventos ocorridos durante a execução de um sistema, registrando datas e/ou horas de eventos. Pode auxiliar na realização de testes ou no diagnóstico de falhas de sistema. Essas informações, normalmente, encontram-se espalhadas pelos vários módulos do sistema e entrelaçadas com outros interesses, caracterizando-as como interesse transversal. A linguagem Java permite a utilização de tipos com o mesmo nome desde que pertençam a pacotes diferentes, o que pode levar à seleção de falsos indícios na abordagem Aspecting. Por exemplo, uma implementação de um sistema desktop que faça sincronização de dados com um dispositivo embarcado possui o tipo Connection associado às conexões estabelecidas com esse dispositivo, induzindo aos falsos indícios de persistência em banco de dados, visto que Connection também é o nome do tipo existente na API do JDK, responsável por estabelecer conexão com um banco de dados. Uma maneira encontrada para contornar a identificação desses falsos indícios é a associação de tipos aos seus pacotes, permitindo diferenciar tipos distintos com mesmo nome. Por esse motivo, o Modelo de Indícios relaciona os tipos identificados por IndicationType na Figura 1, com pacotes representados por IndicationPackage, tornando o mecanismo de identificação mais confiável. A Lista de Indícios original da abordagem Aspecting [Ramos 2004] sugere buscas por meio de análise léxica, que consiste em realizar uma varredura pelo código até encontrar um conjunto / padrão de caracteres, que inclui os caracteres pertencentes às palavras reservadas da linguagem, comentários, nomes e valores de variáveis, entre outros. Dessa forma, pode-se obter quantidade elevada de falsos indícios de aspectos considerando que as buscas incluem comentários aos resultados, mesmo que esses não interfiram na execução do programa. Outro ponto é quanto a buscas em conteúdos de variáveis de cadeia de caracteres (strings), que na maioria das vezes não traz pistas significativas de aspectos.

6 A melhoria do processo de identificação de indícios pode ser viabilizada pela utilização de um mecanismo baseado em análise sintática do código-fonte. Para isso, o Modelo de Indícios foi criado e proporciona a função de armazenamento de informações de indícios usadas para realizar a mineração de aspectos, de modo a facilitar as buscas por análise sintática do código, a fim de que novas ferramentas possam implementar o mecanismo de identificação de interesses transversais. Na Figura 1, o Modelo de Indícios, representado por um diagrama de classes em UML, especifica: a) Indication, a classe principal que representa um conjunto de indícios referentes a um mesmo interesse transversal; b) IndicationPackage, pacote contido em cada conjunto de indícios (Indication); c) IndicationClass, armazena informações de classes cuja declaração e uso de seus objetos são considerados indícios; d) IndicationInterface, aplicável a interfaces que representem indícios; e) IndicationException são classes especializadas do tipo Exception e usadas no tratamento de exceção das operações realizadas por objetos com indícios; e) MatchText armazena algumas regras de buscas que apóiam as identificações de padrões de cadeias de caracteres. 4. Abordagem de Reengenharia de Java para AspectJ A abordagem de reengenharia aqui proposta é iterativa e consiste na identificação de interesses transversais e posterior implementação do sistema legado para uma linguagem que permita especificar aspectos, neste caso AspectJ. Os interesses transversais contemplados pelo Modelo de Indícios são: persistência em banco de dados, logging e persistência em memória temporária. Um apoio computacional, denominado ReJAsp (Reengenharia de sistemas Java Para AspectJ)[Kawakami 2007] foi criado usando esse modelo e será apresentado na seção seguinte. Na primeira etapa de reconhecimento de tipos, cada instrução de importação de tipo existente no código é verificada, sendo que os tipos usados e seus respectivos pacotes são obtidos. Cada tipo importado é, comparado com os tipos e pacotes existentes no Modelo de Indícios. Os tipos importados encontrados no Modelo de Indícios são posteriormente usados na etapa de identificação de indícios. A etapa de reconhecimento de tipos permite que apoios computacionais apresentem melhor desempenho, pois, ao invés de fazer a busca de todos os tipos existentes no Modelo de Indícios no código, apenas o subconjunto de tipos identificados na importação são considerados. Além disso, essa etapa é fundamental na determinação de falsos indícios de tipos que apresentem o mesmo nome daqueles existentes no Modelo de Indícios, porém localizados em pacotes diferentes. A melhoria de desempenho se torna mais evidente para sistemas que apresentem grande quantidade de arquivos. Caso nenhum tipo importado exista no Modelo de Indícios durante a primeira etapa, os passos da etapa posterior não são executados. Dentre esses passos, a construção da AST (Abstract Syntax Tree árvore abstrata sintática) é aquele com maior consumo de processamento. Para cada classe e interface, uma AST é gerada e percorrida, ainda na identificação de indícios. Assim, indícios são buscados nos ramos da árvore com declaração de objetos (declaração de atributos, de constantes e de variáveis locais) e em

7 instruções em código. Em seguida, os indícios são agrupados em instruções e cadastrados para posteriormente serem tratados. Cada indício identificado é analisado pelo engenheiro de software, para classificá-lo como um falso indício ou um aspecto propriamente dito. Para esse segundo caso, diretrizes de reestruturação de código-fonte devem ser aplicadas. Essas diretrizes têm o objetivo de gerar sugestões de implementação, para transferir os aspectos encontrados no código Java para um módulo de aspectos apropriado, em AspectJ. Para isso, a introdução de atributos e de métodos pode ser feita a partir de declarações intertipos e as instruções podem ser separadas por conjuntos de junção e adendos. 5. Apoio Computacional para a Reengenharia Proposta A reengenharia manual de sistemas Java para AspectJ consome muitos esforços mesmo seguindo as diretrizes apresentadas na seção anterior. Assim, um apoio computacional para automatizar parte dessas atividades foi idealizado na tentativa de minimizar os estorços e os erros inseridos pelos próprios engenheiros de software. Esse apoio computacional é denominado ReJAsp (Reengenharia de sistemas Java para AspectJ), desenvolvido com o modelo de processo de prototipação, com duas iterações, sendo esta segunda implementada como um plug-in do ambiente Eclipse [Eclipse 2007]. O mecanismo de identificação de indícios utiliza as bibliotecas do plug-in JDT, que permite a navegação e manipulação do código-fonte por meio de uma estrutura de dados similar à AST. As diretrizes propostas são possíveis de serem executadas de modo parcialmente automatizado. Os resultados da identificação de indícios são mostrados na visão de árvore de indícios, apresentada na Figura 2. (1) Raiz: é o nó principal da árvore de indício cujo rótulo identifica o nome do projeto selecionado; (2) Códigos-base ("Base Codes"): tem a função de agregar os pacotes, os arquivos escritos em "java" e os indícios de aspecto; (3) Aspecto ("Aspect"): possibilita o acesso a arquivos de aspecto e aos pacotes que contém tais arquivos; (4) Pacotes: correspondem a nós agregados dos de códigos-base e dos de aspectos. Representam os pacotes utilizados na linguagem Java ou em AspectJ. Devido à possibilidade de um mesmo diretório conter arquivos de classes (".java") e de Figura 2. Árvore de indícios aspectos (".aj"), um nó de pacote pode

8 coexistir tanto no nó de códigos-base quanto no nó de aspectos; (5) Pacotes vazios: posteriormente podem ser compostos por arquivos de extensão "java" ou "aj". Nesse caso, sua categoria passa de pacote vazio para simplesmente pacote; (6) Arquivos Java: podem ou não conter outros nós de indícios, (7) Arquivos de Aspecto: arquivos de aspecto (".aj") do sistema, podem estar contidos no nó de aspectos ou em um de seus pacotes. Esses nós não apresentam nós agregados; (8) Indícios: instruções ou trechos de instruções que contém indícios (candidatos) de aspectos. Estão diretamente relacionados com os nós de arquivos Java, mas não agregam outros nós. Antes de iniciar a reengenharia, é possível verificar no ReJAsp quais modos de reestruturação de código são mais apropriados para serem aplicados ao indício: a) introdução de atributos, b) introdução de métodos, c) extração de início de método e d) extração de fim de método. Em trabalhos anteriores Ramos et al (2004) e Binkley et al (2006) usaram desenvolvimento por c) e d). Essa tarefa é realizada com assistentes (wizard) do apoio computacional, sendo que ajustes manuais no código-fonte podem ser necessários. A seguir, estudos de observação envolvendo ReJAsp são descritos e seus resultados discutidos. 6. Estudos de Observação Para que o ReJAsp possa ser avaliado qualitativamente foram conduzidos estudos de observação utilizando sistemas de informação de pequeno porte implementados em Java. Esse estudo foi divido em duas etapas: uma em que os desenvolvedores realizaram a reengenharia manualmente e outra em que utilizaram o apoio computacional ReJAsp. O objetivo dos estudos foi observar a usabilidade do apoio computacional e a possível redução de tempo na reengenharia com o seu uso. Para a formação dos grupos foram aplicados questionários elaborados a fim de obter informações quanto ao conhecimento de cada desenvolvedor em relação à linguagem Java, programação orientada a aspectos, AspectJ, Eclipse. Os estudos de observação foram realizados por 4 grupos de 3 a 4 desenvolvedores com conhecimentos intermediários em Java e básico em POA. Paralelamente, dois outros desenvolvedores com conhecimento avançados em Java e em POA também participaram do estudo, entretanto, realizaram as tarefas individualmente. Essa atividade ocorreu como parte de uma disciplina de pós-graduação em que o tema Aspectos foi um entre os vários apresentados durante o semestre. Para a avaliação da usabilidade do ReJAsp, eficácia do identificador de indícios, praticidade de assistentes, utilidade do visualizador de indícios e da documentação para uso 1 foi elaborado um questionário e distribuído aos grupos e aos desenvolvedores isolados logo no início do estudo. Uma planilha também foi preenchida pelos desenvolvedores registrando os tempos gastos com a reengenharia realizada tanto de 1 Guia do usuário disponível em

9 modo manual e quanto assistida pelo apoio computacional ReJAsp. Esses tempos incluem a quantidade de horas usadas para o entendimento do código do sistema legado e também o de implementação em AspectJ do sistema. 6.1 Resultados Obtidos com os Estudos de Observação As respostas obtidas a partir da aplicação dos questionários aos desenvolvedores, que participaram dos estudos de observação, indicaram como um ponto forte a visualização dos indícios do apoio computacional. Os assistentes de reestruturação de código foram usados na maioria das vezes e foram classificados como fáceis de usar pela maioria dos desenvolvedores. A idéia inicial de comparar o tempo gasto entre o processo de reengenharia manual e com apoio computacional foi possível somente para um dos quatro sistemas usados, devido ao insucesso na aplicação reengenharia dos sistemas por alguns grupos. Segundo as respostas ao questionário, pôde-se inferir que o apoio computacional proporciona economia de tempo na atividade de reengenharia de sistemas legados. Entretanto, não foi possível estimar diretamente essa economia com os registros de tempos apresentados nas planilhas confeccionadas pelos grupos, devido ao pouco conhecimento da maioria dos desenvolvedores com desenvolvimento orientado a aspectos e a linguagem AspectJ. Ainda em relação a esse ponto, é interessante notar que de acordo com os dados obtidos, um dos sistemas teve seu tempo menor na reengenharia manual do que utilizando ReJAsp. Esse resultado inesperado é explicado quando a quantidade de indícios coletada das duas formas é comparada. Manualmente, a quantidade de indícios no código base se manteve igual ao do legado, devido à separação de poucos aspectos e com a inserção de novos aspectos pelo grupo. Com apoio computacional, obteve-se maior sucesso na separação de indícios, devido à diminuição da sua quantidade no sistema que passou por reengenharia. Assim, a melhor qualidade do sistema pode justificar o tempo adicional gasto no segundo estudo, sendo que a utilização do ReJAsp, contribuiu para a separação mais efetiva dos aspectos. Os resultados obtidos pelos estudos realizados individualmente não constataram economia de tempo com a utilização do ReJAsp. Com o seu uso foi possível o tratamento de número maior de aspectos e, conseqüentemente, a geração de um sistema mais manutenível. Também nota-se que o tempo gasto para reengenharia de um indício a aspectos é reduzido significativamente quando o apoio computacional é utilizado. Por outro lado, calculando os tempos de reengenharia gastos por indícios, isto é, calculados a partir da divisão do tempo total de reengenharia pela quantidade de indícios tratados, é verificado que os menores tempos estão associadas ao uso do ReJAsp. Outra vantagem observada com a realização desses estudos refere-se à identificação e à visualização de indícios conferida pelo apoio computacional, permitindo que os desenvolvedores estejam cientes dos possíveis candidatos a aspectos. Em contrapartida, o desconhecimento de indícios remanescentes no código contribui para a finalização precoce das atividades de reengenharia do sistema, mantendo grande número de aspectos espalhados e entrelaçados pelo sistema. 7. Trabalhos Relacionados Além da abordagem Aspecting, existem outros trabalhos que auxiliam a identificação de indícios ou candidatos a aspectos (mineração de aspectos). AspectBrowser [Griswold

10 et al 2000] é uma ferramenta desenvolvida como plug-in do ambiente Eclipse e permite a visualização dos indícios no código-fonte, mediante a definição prévia de expressões regulares, definidas pelo usuário no padrão grep. Os resultados são visualizados em barras verticais, assemelhando-se com a representação gráfica da visão Aspect Visualization, contida no plug-in AJDT [AspectJ Development Tools 2007]. O ponto fraco dessa ferramenta é a utilização de buscas léxicas pelo código-fonte, possibilitando a ocorrência de uma quantidade considerável de falsos indícios. A ferramenta AMT, Aspect Mining Tool [Hannemann e Kiczales 2001], emprega duas técnicas distintas: mineração de aspectos baseada em texto e em tipo. A primeira depende da presença de convenções de nomenclaturas de tipos, métodos, variáveis e classes. A outra reconhece a declaração de tipos e seus objetos, não dependendo de convenções de nomes no código. Os tipos analisados na AMT não são associados a pacotes, possibilitando maior ocorrência de falsos indícios, e esse é o diferencial entre ela e o apoio computacional para ReJAsp, aqui apresentado. AMT, também, não é integrada a um ambiente de desenvolvimentos integrado, sendo necessário utilizar uma versão muito antiga do JDK. A navegação e a visualização de indícios no apoio computacional apresentado são realizadas com base na árvore de indícios. Uma alternativa poderia ser o uso de JQuery [Janzen e Volder 2003] que permite a busca de subconjuntos específicos de elementos do código-fonte, inclusive candidatos a aspectos. JQuery combina características de navegadores hierárquicos e exploração do código com a especificação de linguagens de consultas. O ponto negativo dela é sua usabilidade, pois a definição de consultas demanda conhecimento de sua linguagem, dificultando o seu uso. Além disso, Jazen e Volder (2003) afirmam que JQuery não provê apoio direto à manipulação de aspectos. Nesse sentido, a árvore de indícios e os assistentes existentes em ReJAsp apresentam maior facilidade de uso e maior enfoque nas atividades de identificação e reestruturação de aspectos. Breu et al (2006) defendem que os aspectos emergem com o tempo e, para isso, propõem que a identificação de indícios pode ser baseada no histórico do sistema de versões CVS (do inglês, Concurrent Version System), ao invés de apenas uma única versão de software como é observado nos métodos convencionais. O processo de identificação de indícios verifica a freqüência com que a chamada dos métodos é realizada e as mais freqüentes são consideradas indícios. Esse método foi desenvolvido em um protótipo denominado HAM, com a desvantagem de não estar integrado a nenhum ambiente de desenvolvimento. O experimento conduzido pelos autores em sistemas pequenos e com histórico do CVS reduzido obteve baixa precisão, em torno de 60% de acerto. Como não existem garantias de que o sistema legado seja mantido pelo CVS ou que modificações não sejam feitas com freqüência, pode ser discutível a utilização da HAM. Nesse ponto, o apoio computacional apresentado na Seção 5 tem a vantagem de integração com o IDE Eclipse e precisão na identificação de indícios independente da utilização de um sistema de controle de versão e do tamanho do sistema legado. Com o enfoque diferente das demais ferramentas apresentadas, AOP Migrator [Binkley et al 2006] tem o objetivo de refatorar sistemas em Java de modo iterativo. Para isso, contempla o apoio às refatorações de extração de: início/fim de método/tratamento de exceção, início/fim de chamada; condicional, pré-retorno,

11 wrapper e tratamento de exceção. A sua instalação depende de versões antigas do IDE Eclipse e do plug-in AJDT. Em contrapartida, ReJAsp tem a vantagem ser utilizado em versões mais atuais do Eclipse e do AJDT, além de ter a função de identificação de indícios, não contemplada no AOP Migrator. 8. Considerações Finais e Trabalhos Futuros O apoio computacional para reengenharia de sistemas legados, ReJAsp, foi construído como um plug-in para o ambiente opensource Eclipse, com o objetivo de reduzir esforços de manutenção e erros na detecção de indícios de aspectos. Dessa forma, é possível identificar os interesses transversais e implementá-los em AspectJ. As alterações realizadas na Aspecting foram não só quanto à modificação no modo de identificação de indícios da léxica para a sintática, mas também quanto ao detalhamento das diretrizes. Assim, é possível encontrar indícios de forma genérica a partir dos tipos especificados no Modelo de Indícios, enquanto que com a Lista de Indícios existe um algoritmo para cada interesse transversal. Os assistentes de reestruturação de código-fonte desenvolvidos no ReJAsp auxiliam na criação de um novo módulo de aspecto por meio da introdução de atributos e de métodos com indícios para esse módulo ou separação de instruções contidas no início ou final de métodos. Os indícios obtidos são automaticamente reconhecidos pelos assistentes de reestruturação do código-fonte, resultando em economia de tempo. Outras vantagens que se destacam no apoio computacional são: Modelo de Indícios existente contendo três categorias de indícios e persistência das categorias de indícios em arquivo XML, que permite manter cópias de segurança, importação e exportação de categorias de indícios entre ambientes Eclipse diferentes em máquinas distintas. Dentre os trabalhos futuros, destacam-se a adição de novas categorias de indícios; aumento da quantidade de assistentes de reestruturação de código-fonte; cadastro de indícios pelo contexto da árvore de indícios, isto é, via seleção de pacotes, classes ou interfaces a partir da árvore de indícios, de modo a criar ou atualizar uma categoria de indícios rapidamente; inclusão de informações semânticas ao Modelo de Indícios para obtenção de resultados mais precisos; entre outras. Referências Bibliográficas AOSD.06 Home Page (2006). AspectJ Development Tools Home Page (2007). Binkley, D., Ceccato, M., Harman, M., Ricca, F., and Tonella, P. (2006) Tool- Supported Refactoring of Existing Object-Oriented Code into Aspects. In: IEEE Transactions on Software Engineering, vol. 32, nº. 9. Breu, S., Zimmermann, T., and Lindig, C. (2006) "Aspect Mining for Large Systems". In: Companion to the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, Portland, OR, USA. Deursen, A. V., Marin, M., Moonen, L. (2003) "Aspect Mining and Refactoring". In: Proceedings First International Workshop on REFactoring: Achievements, Challenges, Effects (REFACE). University of Waterloo.

12 Eclipse Home Page (2007). Elrad, T., Filman, R., Bader, A. (2001) "Aspect-Oriented Programming". In: Anais do ACM. Griswold, W., Kato, Y., and Yuan, J. (2000) "Aspect Browser: Tool Support for Managing Dispersed Aspects". In: Workshop on Multi-Dimensional Separation of Concerns (ICSE), Ireland.Hannemann, J., and Kiczales, G. (2001) "Overcoming the Prevalent Decomposition in Legacy Code". In: Position paper for workshop on Advanced Separation of Concerns, International Conference on Software Engineering (ICSE). Hannemann, J., Kiczales, G. (2001) "Overcoming the Prevalent Decomposition in Legacy Code". In: Workshop on Advanced Separation of Concerns in Software Engineering at (ICSE), Toronto. Janzen, D., and Volder, K. D. (2003). Navigating and querying code without getting lost. In: Aspect-Oriented Software Engineering, pages ACM. Java Technology Home Page (2007). Kawakami, D. (2007) Um Apoio Computacional para auxiliar a Reengenharia de Sistemas Legados Java para AspectJ. Dissertação de mestrado apresentada ao PPG- CC, UFSCar, Kiczales, G., Lamping, J., Mendhekar, A. (1997) "RG: A Case-Study for Aspect- Oriented Programming". In: SPL97. Xerox Palo Alto Research Center, Technical Report. Laddad, R. (2003) "AspectJ in Action: Pratical Aspect-Oriented Programming". In: Manning Publications Company, Connecticut - USA. 512 p. Pressman, R. S. (2006) "Engenharia de Softawre 6. ed. Brasil, McGraw Hill. Ramos, R. A. (2004) Abordagem Aspecting: Migração de Sistemas OO para Sistemas AO. Mastering Thesis. Departamento de Computação, Universidade Federal de São Carlos. Ramos, R. A., Penteado, R. A. D., Masiero, P. C. (2004) Migração de Sistemas OO para Sistemas OA com a abordagem Aspecting. In: Simpósio Brasileiro de Engenharia de Software (SBES), Brasília DF. Rashid, A., Sawyer, P., Moreira, A. e Araújo, J. (2002) "Early Aspects. A Model for Aspect-Oriented Requirements Engineering". In: Conference on Requirements Engineering, Essen, Germany. Satiroglu, Y. (2004) Aspect-Oriented Evolution of Legacy Information Systems. Mastering Thesis, Departamento de Engenharia de Computação e Instituto de Engenharia e Ciências da Universidade de Bilkent, p

Identificação de Interesses Transversais: Uma Visão Geral

Identificação de Interesses Transversais: Uma Visão Geral Identificação de Interesses Transversais: Uma Visão Geral Paulo Afonso Parreira Júnior paulojunior@jatai.ufg.br 24 de Maio de 2013 Agenda Breve Histórico sobre Desenvolvimento de Software Separação de

Leia mais

Aspect-Oriented Programming AOP. Comentários Sérgio Crespo

Aspect-Oriented Programming AOP. Comentários Sérgio Crespo Aspect-Oriented Programming AOP Comentários Sérgio Crespo Separation of Concerns O princípio de Separation of Concerns já é utilizado por engenheiros de software para o gerenciar a complexidade de sistemas

Leia mais

GeCA: 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 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 mais

Programação Orientada a Aspectos

Programação Orientada a Aspectos Programação Orientada a Aspectos Uma Breve Introdução Universidade Estadual do Oeste do Paraná Centro de Ciências Exatas e Tecnológicas Colegiado de Informática Prof. Luiz Antonio Roteiro Introdução Evolução

Leia mais

Table 1. Dados do trabalho

Table 1. Dados do trabalho Título: Desenvolvimento de geradores de aplicação configuráveis por linguagens de padrões Aluno: Edison Kicho Shimabukuro Junior Orientador: Prof. Dr. Paulo Cesar Masiero Co-Orientadora: Prof a. Dr. Rosana

Leia mais

Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL

Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL Engenharia Reversa para Recuperação de Modelos de Sistemas Desenvolvidos em PL/SQL Rodnei Couto 1, Luana Lachtermacher 1, Soeli Fiorini 1, Akeo Tanabe 1, Gustavo Carvalho 1, Arndt von Staa 1, Ricardo Choren

Leia mais

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software Identificando a Formação de Ilhas de Conhecimento em Projetos de Software Francisco Vanderson de Moura Alves 1, Pedro de Alcântara dos Santos Neto 1, Werney Ayala Luz Lira 1, Ricardo de Andrade Lira Rabêlo

Leia mais

Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software

Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software Ricardo Terra 1 1 Departamento de Ciência da Computação Universidade Federal de Minas Gerais (UFMG) Campus da Pampulha 31.270-010

Leia mais

Separaçã. ção Multi-Dimensional de Interesses

Separaçã. ção Multi-Dimensional de Interesses OD 2002 Uma nova abordagem para modelagem de requisitos Separaçã ção Multi-Dimensional de Interesses Helder da Rocha (helder@acm.org) argonavis.com.br Objetivos 1. Discutir as limitações existentes no

Leia mais

3.1 Baseado em operações

3.1 Baseado em operações 23 3. Estado da Arte Algumas das ferramentas de controle de versão comerciais mais conhecidas atualmente são: Concurrent Version System (CVS) [CEDERQVIST, 1993], Microsoft Visual SourceSafe (MVSS) [MICROSOFT,

Leia mais

2 Medição e Acompanhamento

2 Medição e Acompanhamento 2 Medição e Acompanhamento Para verificar a eficácia da aplicação da técnica de desenvolvimento dirigido por testes, foram usadas algumas métricas para determinar se houve melhoria ou degradação no processo

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE

CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE CASE Orientada a Objetos com Múltiplas Visões e Implementação Automática de Sistemas - MVCASE Tathiana da Silva Barrére Antonio Francisco do Prado Vitor César Bonafe E-mail: (tathiana,prado,bonafe)@dc.ufscar.br

Leia mais

Reuso da Implementação Orientada a Aspectos do Padrão de Projeto Camada de Persistência

Reuso da Implementação Orientada a Aspectos do Padrão de Projeto Camada de Persistência Reuso da Implementação Orientada a Aspectos do Padrão de Projeto Camada de Persistência Copyright 2004, Ricardo Argenton Ramos, 1, Valter Vieira de Camargo, 2 Rosângela Penteado, Paulo Cesar Masiero Permission

Leia mais

Qualidade de Software

Qualidade de Software Qualidade de Software O software é algo abstrato, pois são as instruções que quando executadas atingem o propósito desejado no sistema computacional. (Algoritmo). As principais características são: Complexidade:

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Suporte à Engenharia Reversa para o ambiente SEA

Suporte à 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 mais

Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com

Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com Resumo: Demonstrar de forma clara e prática como a Programação Orientada a Aspectos pode ajudar a

Leia mais

Avaliação de uma Metodologia de Medição da Qualidade em um Documento de Requisitos Orientado a Aspectos

Avaliação de uma Metodologia de Medição da Qualidade em um Documento de Requisitos Orientado a Aspectos Avaliação de uma Metodologia de Medição da Qualidade em um Documento de Requisitos Orientado a Aspectos Ricardo Argenton Ramos / Jaelson F. B. Castro Centro de Informática - Universidade Federal de Pernambuco

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

Desenvolvimento de uma interface extratora de dados genérica e inserção automática de dados em Sistemas de Informação Geográficos

Desenvolvimento de uma interface extratora de dados genérica e inserção automática de dados em Sistemas de Informação Geográficos Desenvolvimento de uma interface extratora de dados genérica e inserção automática de dados em Sistemas de Informação Geográficos Caroline Julliê de Freitas RIBEIRO¹, Vantuil José de OLIVEIRA NETO¹, Gabriel

Leia mais

UM MODELO DE QUALIDADE PARA AVALIAR DOCUMENTOS DE REQUISITOS ORIENTADOS A ASPECTOS

UM MODELO DE QUALIDADE PARA AVALIAR DOCUMENTOS DE REQUISITOS ORIENTADOS A ASPECTOS Desarrollo de Software Orientado a Aspectos, DSOA 2006 Asociado a XV Jornadas de Ingeniería del Software y Bases de Datos J. Araújo, J. Hernández, E. Navarro y M. Pinto (Eds) Sitges (Barcelona), Octubre

Leia mais

Ontologia 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 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 mais

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reuso Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reutilização de Software Na maioria das áreas de engenharia de software, sistemas são desenvolvidos

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

Introdução à Plataforma Eclipse. Leandro Daflon daflon@les.inf.puc-rio.br

Introdução à Plataforma Eclipse. Leandro Daflon daflon@les.inf.puc-rio.br Introdução à Plataforma Eclipse Leandro Daflon daflon@les.inf.puc-rio.br Agenda Introdução Arquitetura da Plataforma Componentes da Plataforma JDT PDE Visão Geral do Projeto Eclipse.org 2 Introdução O

Leia mais

Ferramenta 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 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 mais

Em direção a uma abordagem para separação de interesses por meio de Mineração de Aspectos e Refactoring

Em direção a uma abordagem para separação de interesses por meio de Mineração de Aspectos e Refactoring Em direção a uma abordagem para separação de interesses por meio de Mineração de Aspectos e Refactoring Vinicius C. Garcia 1, Eduardo K. Piveta 2, Daniel Lucrédio 1, Alexandre Alvaro 3, Eduardo S. de Almeida

Leia mais

Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum

Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum Test-Module: uma ferramenta para gerenciamento de testes de software integrada ao FireScrum Audrey B. Vasconcelos, Iuri Santos Souza, Ivonei F. da Silva, Keldjan Alves Centro de Informática Universidade

Leia mais

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Engenharia de Software Introdução Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1 Tópicos Apresentação da Disciplina A importância do Software Software Aplicações de Software Paradigmas

Leia mais

Essencial ao Desenvolvimento de Software

Essencial ao Desenvolvimento de Software Documento de Requisitos Essencial ao Desenvolvimento de Software De que se trata o artigo? Apresenta o documento de requisitos de software, destacando-o como um dos principais documentos pertinentes ao

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

SISTEMA 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 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 mais

Transformação de um Modelo de Empresa em Requisitos de Software

Transformação de um Modelo de Empresa em Requisitos de Software Transformação de um Modelo de Empresa em Requisitos de Software Fábio Levy Siqueira 1 and Paulo Sérgio Muniz Silva 2 1 Programa de Educação Continuada da Poli-USP, São Paulo, Brazil 2 Escola Politécnica

Leia mais

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

AspectJ em 20 minutos

AspectJ em 20 minutos AspectJ em 20 minutos Diogo Vinícius Winck (diogo.winck@gmail.com) Vicente Goetten (goetten@gmail.com) 1. Introdução A Orientação a Objetos está consolidada. Entretanto, nem todas as promessas que este

Leia mais

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com REVISÃO ENGENHARIA DO SOFTWARE Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Software Sequencia de Instruções a serem seguidas ou executadas Dados e rotinas desenvolvidos por computadores Programas

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Engenharia de Software

Engenharia de Software CENTRO UNIVERSITÁRIO NOVE DE JULHO Profº. Edson T. França edson.franca@uninove.br Software Sistemas Conjunto de elementos, entre os quais haja alguma relação Disposição das partes ou dos elementos de um

Leia mais

Softwares de Sistemas e de Aplicação

Softwares de Sistemas e de Aplicação Fundamentos dos Sistemas de Informação Softwares de Sistemas e de Aplicação Profª. Esp. Milena Resende - milenaresende@fimes.edu.br Visão Geral de Software O que é um software? Qual a função do software?

Leia mais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite andreza.lba@gmail.com (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o

Leia mais

Introduçã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 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 mais

Refatorações para Melhoria da Legibilidade de Código Fortran

Refatorações para Melhoria da Legibilidade de Código Fortran Refatorações para Melhoria da Legibilidade de Código Fortran Dionatan K. Tietzmann 1, Gustavo Rissetti 1, Andrea S. Charão 1, Eduardo K. Piveta 1 Adriano Petry 2, Jonas R. de Souza 2 1 Universidade Federal

Leia mais

Um processo para construção de software mais transparente

Um processo para construção de software mais transparente Um processo para construção de software mais transparente Eduardo Almentero 1, and Julio Cesar Sampaio do Prado Leite 1 1 Pontifícia Universidade Católica do Rio de Janeiro, PUC - Rio, Brasil {ealmentero,

Leia mais

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Sobre entidades externas ao sistema Quais sistemas externos devem ser acessados? Como serão acessados? Há integração com o legado a ser feita?

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

Estudo de Caso Sistema de Caixa Automático

Estudo de Caso Sistema de Caixa Automático Estudo de Caso Sistema de Caixa Automático Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Notas de Aula Ulrich Schiel Notas de Aula Ariadne

Leia mais

Introdução à Engenharia de Software

Introdução à Engenharia de Software Introdução à Engenharia de Software Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Imagem Clássica Objetivo da aula Depois desta aula você terá uma visão sobre o que é a engenharia

Leia mais

WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML

WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML Carlos Henrique Pereira WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML Florianópolis - SC 2007 / 2 Resumo O objetivo deste trabalho é especificar

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

SIGECO07 Sistema Integrado de Gestão de Contas Universidade Federal de Lavras PLANO DE PROJETO 23/09/2007 SIGECO07/GERENCIA/PROJETOS/

SIGECO07 Sistema Integrado de Gestão de Contas Universidade Federal de Lavras PLANO DE PROJETO 23/09/2007 SIGECO07/GERENCIA/PROJETOS/ SIGECO07 Sistema Integrado de Gestão de Contas Universidade Federal de Lavras PLANO DE PROJETO 23/09/2007 SIGECO07/GERENCIA/PROJETOS/ ModeloPlanoProjeto_2007_04_24 SIGECO07_PlanoProjeto_2007_09_23 Página

Leia mais

AMiner: Um Framework para Mineração de Dados em um Repositório de Artefatos

AMiner: Um Framework para Mineração de Dados em um Repositório de Artefatos AMiner: Um Framework para Mineração de Dados em um Repositório de Artefatos Tarcísio Steinmetz 1, Silvia Bertagnolli 1 1 Sistemas de Informação Centro Universitário Ritter dos Reis (UniRitter) 90840-440

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 1 Ambiente de desenvolvimento Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 SOBRE O JAVA... 3 AMBIENTE DE DESENVOLVIMENTO... 5 RECURSOS DA FERRAMENTA NETBEANS...

Leia mais

EMENTAS DAS DISCIPLINAS

EMENTAS DAS DISCIPLINAS EMENTAS DAS DISCIPLINAS CURSO EDUCAÇÃO A DISTÂNCIA (EAD) SISTEMAS PARA INTERNET INTRODUÇÃO À COMPUTAÇÃO 68 A disciplina estuda a área da informática como um todo e os conceitos fundamentais, abrangendo

Leia mais

Gerenciamento de Configuração de Software

Gerenciamento de Configuração de Software Gerenciamento de Configuração de Software Prof. Ricardo Argenton Ramos [Baseado na apresentação do prof. Masiero ICMC-USP] Contexto para Gerência de Configuração 2 Problema dos Dados Compartilhados Desenvolvedor

Leia mais

A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models

A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models Universidade Federal do Rio Grande do Norte Departamento de Informática e Matemática Aplicada Natal/RN - Brasil A Semi-Automatic Strategy to Identify Crosscutting Concerns in PL-AOVgraph Requirement Models

Leia mais

MARACATU. A component search tool. Especificação, Projeto e Implementação de uma Arquitetura para um Engenho de Busca de Componentes

MARACATU. A component search tool. Especificação, Projeto e Implementação de uma Arquitetura para um Engenho de Busca de Componentes MARACATU A component search tool Especificação, Projeto e Implementação de uma Arquitetura para um Engenho de Busca de Componentes Vinicius Cardoso Garcia July 29, 2005 Agenda Introdução Especificação

Leia mais

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES 1 BRANCO; Guido Aparecido Junior, 2 TAMAE, Rodrigo Yoshio 1-Discente do Curso Sistemas de Informação FAEG/Garça 2-Docente do Curso Sistemas

Leia mais

7 Trabalhos Relacionados A idéia é tentar dar todas as informações que ajudem os outros a julgar o valor da sua contribuição; não apenas as informações que levem o julgamento a uma direção em particular.

Leia mais

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico Fundamentos de Java Prof. Marcelo Cohen 1. Histórico 1990 linguagem Oak; desenvolvimento de software embutido para eletrodomésticos S.O. para o controle de uma rede de eletrodomésticos o surgimento da

Leia mais

PLATAFORMA URBANMOB Aplicativo para captura de trajetórias urbanas de objetos móveis

PLATAFORMA URBANMOB Aplicativo para captura de trajetórias urbanas de objetos móveis PLATAFORMA URBANMOB Aplicativo para captura de trajetórias urbanas de objetos móveis Gabriel Galvão da Gama 1 ; Reginaldo Rubens da Silva 2 ; Angelo Augusto Frozza 3 RESUMO Este artigo descreve um projeto

Leia mais

Características do Software

Características do Software Questionamentos Por que tanta demora para entregar? Por que os prazos se atrasam? Por que os custos são altos? Por que não achar todos os erros antes de entregar? Por que dificuldade em medir o progresso

Leia mais

ABCTool - Uma Ferramenta para Cooperação Baseada na Arquitetura do Sistema

ABCTool - Uma Ferramenta para Cooperação Baseada na Arquitetura do Sistema ABCTool - Uma Ferramenta para Cooperação Baseada na Arquitetura do Sistema Cynthia Maria Silva de Barros Mestranda do PPGEE-PUC-Minas* cmsbarros@zipmail.com.br Carlos Alberto Marques Pietrobon Professor-Orientador

Leia mais

Programa do Módulo 2. Processo Unificado: Visão Geral

Programa do Módulo 2. Processo Unificado: Visão Geral 9.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) O Processo Unificado (RUP) Processo Unificado: Visão Geral 9.2 Encaixa-se na definição geral de processo:

Leia mais

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software O que é software? Software e Engenharia de Software Programas de computador Entidade abstrata. Ferramentas (mecanismos) pelas quais: exploramos os recursos do hardware. executamos determinadas tarefas

Leia mais

Sistemas Dinâmicos Baseados em Metamodelos

Sistemas Dinâmicos Baseados em Metamodelos Sistemas Dinâmicos Baseados em Metamodelos Diego Moreira 1, Marcelo Mrack 1 1 Setor de Informática Universidade de Santa Cruz do Sul (UNISC) Av. Independência, 2293 Bairro Universitário 96.815-900 Santa

Leia mais

SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS

SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS SISTEMA DE GESTÃO DE PROJETOS DE SOFTWARE - SGPS Lilian R. M. Paiva, Luciene C. Oliveira, Mariana D. Justino, Mateus S. Silva, Mylene L. Rodrigues Engenharia de Computação - Universidade de Uberaba (UNIUBE)

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Uma Implementação do Processo de Garantia da Qualidade usando a Spider-QA, a Spider-CL e o Mantis

Uma Implementação do Processo de Garantia da Qualidade usando a Spider-QA, a Spider-CL e o Mantis Uma Implementação do Processo de Garantia da Qualidade usando a Spider-QA, a Spider-CL e o Mantis Rodrigo Araujo Barbalho 1, Marília Paulo Teles 2, Sandro Ronaldo Bezerra Oliveira 1,2 1 Faculdade de Computação

Leia mais

Spider-PM: Uma Ferramenta de Apoio à Modelagem de Processos de Software

Spider-PM: Uma Ferramenta de Apoio à Modelagem de Processos de Software Spider-PM: Uma Ferramenta de Apoio à Modelagem de Processos de Software Renan Sales Barros 1, Sandro Ronaldo Bezerra Oliveira 1 1 Faculdade de Computação Instituto de Ciências Exatas e Naturais (ICEN)

Leia mais

Uma Ferramenta para Geração Automática de Testes Funcionais e Protótipos de Interface a partir de Casos de Uso

Uma Ferramenta para Geração Automática de Testes Funcionais e Protótipos de Interface a partir de Casos de Uso Uma Ferramenta para Geração Automática de Testes Funcionais e Protótipos de Interface a partir de Casos de Uso Ernesto C. Brasil 1, Thiago C. de Sousa 2 1 Centro de Ensino Unificado de Teresina (CEUT)

Leia mais

Framework para jogos de cartas

Framework para jogos de cartas Framework para jogos de cartas por André Luís Knabben e Thiago Robert Professor Doutor Ricardo Pereira e Silva Orientador Resumo Projetar artefatos de software visando a reusabilidade é uma tarefa complexa.

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

INTERLIMS SISTEMA DE GERENCIAMENTO DE INFORMAÇÕES PARA LABORATÓRIOS DE ANÁLISES DE ÁGUA

INTERLIMS SISTEMA DE GERENCIAMENTO DE INFORMAÇÕES PARA LABORATÓRIOS DE ANÁLISES DE ÁGUA INTERLIMS SISTEMA DE GERENCIAMENTO DE INFORMAÇÕES PARA LABORATÓRIOS DE ANÁLISES DE ÁGUA INTERLIMS SISTEMA DE GERENCIAMENTO DE INFORMAÇÕES PARA LABORATÓRIOS DE ANÁLISES DE ÁGUA O InterLIMS se apresenta

Leia mais

Tópicos. Engenharia de Software: Uma Visão Geral

Tópicos. Engenharia de Software: Uma Visão Geral Tópicos 2 3 Engenharia de Software: Uma Visão Geral SCE 186 - Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002 A importância do Software Software Aplicações

Leia mais

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Sistemas de Informação e Programação II Odorico Machado Mendizabal Sistemas de Informação e Programação II Odorico Machado Mendizabal Universidade Federal do Rio Grande FURG C3 Engenharia de Computação 16 e 23 de março de 2011 Processo de Desenvolvimento de Software Objetivos

Leia mais

Marcus Vinicius Cruz Xavier. Rascunho do trabalho de conclusão de curso

Marcus Vinicius Cruz Xavier. Rascunho do trabalho de conclusão de curso Universidade Federal de Santa Catarina Departamento de Informática e Estatística Curso de Bacharelado em Ciências da Computação Marcus Vinicius Cruz Xavier Rascunho do trabalho de conclusão de curso Título

Leia mais

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm.

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm. J820 Integração Contínua com CVS, CruiseControl, Cruise Control AntHill Gump e Helder da Rocha (helder@acm.org) Integração contínua Um dos requisitos para implementar a integração contínua é ter um sistema

Leia mais

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge. Projeto Demoiselle Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.net Palestrantes: Antônio Carlos Tiboni Luciana Campos Mota 20/07/2009

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS AVANÇADO DE ARACATI PROJETO DE PESQUISA

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS AVANÇADO DE ARACATI PROJETO DE PESQUISA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS AVANÇADO DE ARACATI PROJETO DE PESQUISA IMPLEMENTAÇÃO DE SOLUÇÃO PARA AUTOMATIZAR O DESENVOLVIMENTO DE SOFTWARE UTILIZANDO A LINGUAGEM C#.NET

Leia mais

Unified Modeling Language UML - Notações

Unified Modeling Language UML - Notações Unified Modeling Language UML - Notações Prof. Ms. Elvio Gilberto da Silva elvio@fmr.edu.br UML Ponto de Vista É gerada com propósito geral de uma linguagem de modelagem visual usada para especificar,

Leia mais

Gerência de Configuração de Software. Msc. Ernani Sales Implementador Oficial MPS.BR ernani@webapsee.com

Gerência de Configuração de Software. Msc. Ernani Sales Implementador Oficial MPS.BR ernani@webapsee.com Gerência de Configuração de Software Msc. Ernani Sales Implementador Oficial MPS.BR ernani@webapsee.com Introdução O que é GCS? Terminologia Agenda Modelos, Padrões e Normas Processo de GCS Padrão IEEE

Leia mais

SISTEMAS DE APRENDIZADO PARA A IDENTIFICAÇÃO DO NÚMERO DE CAROÇOS DO FRUTO PEQUI LEARNING SYSTEMS FOR IDENTIFICATION OF PEQUI FRUIT SEEDS NUMBER

SISTEMAS DE APRENDIZADO PARA A IDENTIFICAÇÃO DO NÚMERO DE CAROÇOS DO FRUTO PEQUI LEARNING SYSTEMS FOR IDENTIFICATION OF PEQUI FRUIT SEEDS NUMBER SISTEMAS DE APRENDIZADO PARA A IDENTIFICAÇÃO DO NÚMERO DE CAROÇOS DO FRUTO PEQUI Fernando Luiz de Oliveira 1 Thereza Patrícia. P. Padilha 1 Conceição A. Previero 2 Leandro Maciel Almeida 1 RESUMO O processo

Leia mais

3 Estudo de Ferramentas

3 Estudo de Ferramentas 3 Estudo de Ferramentas Existem diferentes abordagens para automatizar um processo de desenvolvimento. Um conjunto de ferramentas pode ser utilizado para aperfeiçoar o trabalho, mantendo os desenvolvedores

Leia mais

Um Perfil UML para Projeto de Frameworks Transversais

Um Perfil UML para Projeto de Frameworks Transversais Um Perfil UML para Projeto de Frameworks Transversais José Uetanabara Júnior *, Valter Vieira de Camargo # *Centro Universitário Eurípides de Marília UNIVEM Marília São Paulo, Caixa Postal 2041 CEP 17.525-901

Leia mais

Reengenharia de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos

Reengenharia de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos Reengenharia de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos Ricardo Argenton Ramos 1 Anderson Pazin * Rosângela Ap. D. Penteado UFSCar - Universidade Federal de São Carlos, Departamento

Leia mais

Uma Abordagem usando PU

Uma Abordagem usando PU Uma Abordagem usando PU Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Baseada em: Rational Software Corpotation G. Booch, Ivar Jacobson,

Leia mais

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 Processos de Desenvolvimento de Software Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2 A Engenharia de Software Uma Tecnologia em Camadas ferramentas métodos processo foco na qualidade

Leia mais

Automação do Processo de Instalação de Softwares

Automação do Processo de Instalação de Softwares Automação do Processo de Instalação de Softwares Aislan Nogueira Diogo Avelino João Rafael Azevedo Milene Moreira Companhia Siderúrgica Nacional - CSN RESUMO Este artigo tem como finalidade apresentar

Leia mais

GEADA. 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 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 mais

PROFESSOR: CRISTIANO MARIOTTI

PROFESSOR: CRISTIANO MARIOTTI PROFESSOR: CRISTIANO MARIOTTI Conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software; Considerado um dos principais mecanismos para se obter software de qualidade

Leia mais

Ferramenta CORIDORA Web Mapping para Mapeamento de Esquemas em Bancos de Dados Heterogêneos

Ferramenta CORIDORA Web Mapping para Mapeamento de Esquemas em Bancos de Dados Heterogêneos Ferramenta CORIDORA Web Mapping para Mapeamento de Esquemas em Bancos de Dados Heterogêneos Fernando Busanello Meneghetti 1, Fabiano Gama Paes 1, Gustavo Zanini Kantorski 1 Curso de Sistemas de Informação

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

FACULDADE LOURENÇO FILHO ENADE 2011 Prof. Jackson Santiago Engenharia de Software DATA: 29/10/2011

FACULDADE LOURENÇO FILHO ENADE 2011 Prof. Jackson Santiago Engenharia de Software DATA: 29/10/2011 Assunto : Ciclo de vida de software 1. O modelo de ciclo de vida em cascata: a) enfatiza a realização sequencial das atividades do desenvolvimento de um produto de software. b) enfatiza a comunicação estreita

Leia mais

Desenvolvimento de uma Plataforma Gráfica para a Descrição de Modelos de Sistemas Ambientais

Desenvolvimento de uma Plataforma Gráfica para a Descrição de Modelos de Sistemas Ambientais Desenvolvimento de uma Plataforma Gráfica para a Descrição de Modelos de Sistemas Ambientais Tiago F. M. Lima 1,2, Tiago G. S. Carneiro 2, Sérgio D. Faria 3 1 Programa de Pós-Graduação em Análise e Modelagem

Leia mais

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Tiago A. Gameleira 1, Raimundo Santos Moura 2, Luiz Affonso Guedes 1 1 Universidade Federal do Rio Grande do Norte (UFRN)

Leia mais