Home - this site is powered by TWiki(R)
Protected > DocumentoPropostaPROBRAL
TWiki webs: Main | TWiki | Sandbox   Hello TWiki Admin Group!

Users | Groups | Offices | Changes | Index | Search | Go

Voltar

Justificativa e caracterização da linha de pesquisa

A produtividade no mercado de software passou a ser a principal preocupação deste setor nos últimos anos. Cada vez mais as empresas percebem o ganho em competitividade que a redução de tempo e custo no desenvolvimento de software pode trazer. Neste contexto, uma das formas mais simples e eficientes de se obter produtividade no desenvolvimento de software é através da automatização de atividades, principalmente aquelas que se mostram trabalhosas e repetitivas, muito comuns nessa área. Estas atividades, quando relegadas à execução puramente manual, costuma ocasionar erros com forte impacto no sistema em desenvolvimento.

Uma atividade que pode ser automatizada total ou parcialmente é a realização de melhorias estruturais no código, amplamente conhecidas como refactorings. Esta é uma atividade já bastante difundida na área de desenvolvimento de software, onde já se pode encontrar diversas ferramentas que possibilitam a automatização da aplicação de refactorings [referencias]. Apesar do considerável grau de maturidade destas ferramentas, novas continuam a surgir para dar suporte a novos refactorings. E este é um processo que tende a se repetir indefinidamente, já que o número de possíveis refactorings é infinito.

Para atender a demanda de usuários que necessitam compor refactorings específicos, algumas propostas de ferramentas vêm surgindo. Estas ferramentas têm eminentemente o propósito de prover ao usuário um meio, independente de programa, para especificar de forma rápida e prática refactorings que atendam a necessidades específicas.

Neste contexto foram desenvolvidos JaTS (Java Transformation System)[referencias], um sistema de transformação de código baseado em templates para a linguagem Java pelo Centro de Informática da Universidade Federal de Pernambuco, e ConTraCT [referencias], um editor de refactorings para a linguagem Java, pelo Instituto de Ciência da Computação da Universidade de Bonn, Alemanha. Ambas as abordagens comungam, em parte, um mesmo objetivo, no que concerne à construção dinâmica de refactorings. As ferramentas se baseiam no princípio da transformação condicional de programas, uma técnica que consiste em validar condições antes de realizar operações sobre o código. Entretanto, apesar da similaridade, estas duas linhas de pesquisa apresentam diferenças significativas. Enquanto JaTS consiste em uma linguagem de templates, onde o usuário tem liberdade para especificar transformações, ConTraCT se baseia na possibilidade de composição de refactorings pré-definidos.

O objetivo principal deste projeto é estabelecer um comparativo profundo entre JaTS e ConTraCT através da cooperação entre as respectivas equipes e desenvolver uma solução única, que agregue as vantagens de cada abordagem.

Fundamentação teórica

Refactoring é uma transformação feita na estrutura interna de um programa que tem por objetivo melhorar a legibilidade, reusabilidade e o design, sem alterar o comportamento do programa.

Atualmente existem um grande número de ferramentas de refactoring. Entretanto as mesmas só dão suporte a um número restrito de refactorings. O objetivo deste projeto é desenvolver uma ferramenta que alie as vantagens de JaTS e ConTraCT, onde seja possível se criar novos refactorings a partir de outros pré-definidos e/ou da livre especificação da transformação do programa pelo usuário.

Um trabalho relacionado propõe leis básicas, que são transformações de programas bidirecionais e de pequena granularidade que preservam comportamento, para Refinement Object-Oriented Language (ROOL)[referencias]. ROOL é uma linguagem de refinamentos orientada a objetos baseada em um subconjunto de Java, só que com semântica de cópia. Um dos resultados deste trabalho é a comprovação de que o conjunto de leis proposto é completo. Ou seja, com este conjunto de leis de programação é possível se derivar um conjunto representativo de transformações de programas.

O JaTS é uma linguagem declarativa que permite a especificação, baseada em templates, de transformações para programas escritos em Java. Um dos objetivos deste projeto é a verificação da possibilidade da ferramenta JaTS expressar todas as leis básicas propostas para ROOL. Tendo em vista o resultado da completude destas leis, esta atividade será importante para a verificação da expressividade da linguagem para especificação de transformações de programas que implementam refactorings. Da mesma forma, pretende-se fazer uso de ROOL para dar suporte à especificação da linguagem de composição de refactorings para ConTraCT.

(Este ultimo paragrafo esta entrando nos objetivos, ou seria soh um gancho?)

Neste projeto pretende-se utilizar as leis propostas para ROOL, que comprovadamente preservam comportamento e definem um conjunto completo para a derivação de novos refactorings [referencias]. Pretende-se utilizar o JaTS, integrado ao ConTraCT, para a especificação das transformações em um editor de refactorings. O principal objetivo desta ferramenta é permitir ao usuário a derivação, através da composição estática de outros refactorings (como as leis propostas para ROOL), um conjunto representativo de novos refactorings.

Objetivo

Este projeto tem como objetivo a melhoria e integração de técnicas e teorias aplicadas ao desenvolvimento de ferramentas direcionadas à aplicação de refactorings avançados. Mais especificamente, o projeto tem como base a comparação entre as abordagens adotadas por cada uma das equipes participantes, identificando a complementaridade entre estas abordagens e entre as ferramentas que as têm como base. Atualmente a abordagem da equipe alemã possibilita a definição de novos refactorings através da composição de transformações pré-definidas. Desta forma, o usuário tem a possibilidade de compor, de forma controlada, seus próprios refactorings. Já a abordagem da equipe brasileira dá suporte à construção de novos refactorings através de especificações de transformações de código com base em templates e construções que permitem manipulação direta de árvores sintáticas. No momento, ambas as abordagens possuem, individualmente, tanto limitações conhecidas quanto vantagens significantes. Para atenuar esta diferença e criar um meio de se conseguir a compatibilidade e futura integração e unificação entre as ferramentas, planeja-se atingir os seguintes objetivos:

(Talvez os objetivos estejam entrando um pouco na metodologia)

I. Melhorias na abordagem adotada na ferramenta ConTRaCT, incluindo o desenvolvimento de uma linguagem para composição de refactorings, melhoria do método de composição e tratamento de condições recursivas durante a composição.

II. Minimização de limitações e avanços na ferramenta JaTS, considerando-se o desenvolvimento de novas construções para a linguagem JaTS que dêm suporte a aplicação de refactorings, extensão da ferramenta para suportar alterações globais no programa em transformação e definição de um sistema de tipos para a linguagem de templates.

III. Proceder com uma comparação entre as abordagens implementando-se diferentes tipos de refactorings e analisando em que casos cada ferramenta melhor se aplica.

IV. Integração e possivelmente unificação das ferramentas.

V. Exercitar as tecnologias envolvidas nas duas ferramentas, aplicando-as em contextos específicos, tais como variações em linhas de produto de software [product lines] e sincronização de refactorings entre modelos e programas.

VI. Desenvolvimento de "leis de programação OO" para dar suporte aos itens I e II, avançando o estudo de completude de leis de programação orientada a objetos [rool].

Fundamentalmente, o objetivo deste projeto é agregar valor mutuamente entre os meios científicos brasileiro e alemão através da troca de conhecimentos entre as equipes que detêm experiência na área de transformação de código. Atualmente estas equipes desenvolvem pesquisas com objetivos comuns e espera-se que através deste projeto de cooperação se obtenham avanços significativos com relação a ferramentas para especificação e aplicação de refactorings.

Sem dúvida, a colaboração entre as equipes brasileira e alemã trará excelentes avanços no campo do desenvolvimento de técnicas e ferramentas para aplicação de refactorings, contribuindo com o meio científico através do avanço e intercâmbio de tecnologias para transformação de código.

Metodologia

Descrevemos nesta seção a metodologia a ser empregada para se alcançarem os objetivos descritos anteriormente.

explicar condicao-nucleo minimal, melhoria de composicao e condicoes recursivas.

A fim de se aperfeiçoar ConTraCT, será definida uma condição-núcleo minimal e uma linguagem de transformação para a composição de refactorings. A primeira é importante para garantir a concisão e a expressividade das pré-condições do refactoring. A segunda estende a amplitude dos refactorings. Adicionalmente, será feita uma melhoria do método de composição e do tratamento de condições recursivas durante a composição.

Similarmente, o avanço em JaTS também exigirá a definição de uma uma condição-núcleo minimal. Além disso, criaremos construções na linguagem que permitam refactoring por template, envolvendo mudanças globais no programa, e a definição de um sistema de tipos para a linguagem de template.

A comparação entre as abordagens envolverá inicialmente uma descrição sumária das características de cada uma e uma enumeração de seus objetivos (facilidade em expressar transformações, completude, extensibilidade e desempenho). Em seguida, serão definidos diferentes tipos de refactorings/transformações em ambas ferramentas e analisaremos, então, a adequação de cada a abordagem a cada situação.

A integração de JaTS e Contract será feita segundo uma aborgadem de compilação: transformações especificadas em JaTS serão traduzidas para uma composição de refactorings em Contract. Esta abordagem será utilizada porque transformações especificadas em JaTS são mais concisas e escritas em uma sintaxe mais próxima da linguagem de programação (Java). Além disso, essa integração será incremental, já que estenderemos as transformações JaTS com com pré/pós condições e, com isso, essas transformações se adequariam mais facilmente na semântica de Contract.

Além de contribuir para a verificação formal de transformações que preservam o comportamento, nosso trabalho anterior sobre leis de programação orientada a objetos pode ser útil para a implementação das ferramentas consideradas nesta proposta. As leis sugerem refactorings essenciais, que devem ser providos por ferramentas tais como ConTraCT, que permite ao usuário compor refactoring existentes para se definirem novos refactorings. Similarmente, linguagens executáveis, tais como JaTS, que especificam novos refactorings a partir do zero , deveriam ser capazes de expressar as leis presentes em tal trabalho. Nós iremos, então, avançar esse trabalho, investigando um resultado de completude mais forte, que sugeriria um conjunto minimal de refactorings a ser implementado pelas ferramentas e construções a serem providas por tais linguagens. Isto poderia levar à criação de ferramentas e linguagens mais simples.

Descrição das metas de formação e capacitação almejadas e das ações para atingí-las

Um dos objetivos deste projeto é complementar a formação de alunos de mestrado e doutorado das duas instituições envolvidas, enriquecendo os resultados científicos de forma cooperativa. Os resultados de formação almejados são descritos a seguir:

  • Percepção da limitação da aplicação manual de transformações como refactorings, além da necessidade de aumento de produtividade no desenvolvimento de software através de ferramentas;

  • Fundamentação teórica aplicada ao desenvolvimento de ferramentas de transformação de programas e refactorings avançados, que pode ser largamente utilizada para enriquecer os resultados científicos de cada grupo;

  • Conhecimento avançado em técnicas de programação e compilação, já que as ferramentas envolvem manipulação direta de programas orientados a objetos;

  • Criação de equipe especializada nas tecnologias envolvidas em ambas as ferramentas, com capacidade de analisar os casos em que cada uma se aplica de forma mais eficiente.

Um mecanismo de gerenciamento será adotado para que estas metas sejam atingidas, definindo as ações a a serem realizadas para atingir as metas de capacitação. Algumas das ações serão as seguintes:

  • Definição das atividades do projeto com interfaces bastante claras;

  • Alocação criteriosa das atividades aos pesquisadores, de acordo com suas qualificações e disponibilidade, onde para cada atividade um líder será definido;

  • Definição de pontos de revisão, de acordo com os objetivos;

  • Planejamento de missões dos respectivos coordenadores e visitas de alunos de mestrado e doutorado das duas instituições;

  • Desenvolvimento de um sítio na web para o projeto, que será constantemente atualizado com publicações, resultados de pesquisa, download de protótipos e subprojetos em andamento.

O plano de visitas foi definido da seguinte forma: uma missão de cada país irá iniciar os trabalhos; nos dois anos de duração do projeto, 4 alunos de cada instituição agendarão visitas, com duração de dois a seis meses, dois alunos por ano. Estes alunos interagirão com a equipe da instituição estrangeira, trazendo capacitação e resultados para a equipe local na ocasião do retorno.

Infra-estrutura disponível e contrapartidas oferecidas

O Centro de Informática (CIn) da Universidade Federal de Pernambuco funciona há mais de 25 anos. O alto nível de seu corpo docente com 46 doutores e cinco mestres, além de sua vasta área de atuação e interesses o tornam um dos melhores centros acadêmicos de informática da América Latina. A Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, que foi criada em 1974 e está credenciada no CFE desde 1986, sendo hoje um dos cinco principais programas de Pós-Graduação na área no Brasil e o único com doutorado no Norte e Nordeste.

O Centro de Informática é formado por 13 laboratórios de ensino e pesquisa, com mais de 300 computadores com sistemas operacionais Windows 2000 e/ou Linux/Unix em laboratórios climatizados. Além destes, os professores, pesquisadores e alunos de doutorado têm suas máquinas individuais, elevando o número total de computadores disponíveis para ensino e pesquisa para cerca de 500. O CIn da UFPE está ligado à Internet através de conexões com a RNP (Rede Nacional de Pesquisa) por um link de 10Mbps e conexão ATM de 155Mbps e também tem acesso a um link Embratel de 8Mbps. Via fibra óptica todos os recursos computacionais da UFPE, instalados no Núcleo de Tecnologia da Informação, estão conectados ao backbone da RNP (Internet) a 10Mbits/s.

A Universidade Federal de Pernambuco, hoje com 56 anos de existência, está entre as melhores instituições de ensino superior da região Norte/Nordeste do Brasil, de acordo com avaliações do Ministério da Educação. O Centro de Informática (CIn) da UFPE oferece os cursos de bacharelado em ciência da computação e de engenharia da computação com 150 novas vagas a cada ano. Estão matriculados no Centro cerca de 600 alunos de graduação, 123 de mestrado, 65 alunos de doutorado e 165 de especialização. A Pós-Graduação do Centro de Informática é atualmente classificada com nível 5 na CAPES.

De fato, o CIn é um dos centros brasileiros de referência nas áreas relacionadas ao projeto: Linguagens de Programação e Engenharia de Software. Além de ter artigos publicados em diversos eventos, chegando às vezes ao número de 40% do total de aceitos, o CIn tem produzido ferramentas que apoio ao desenvolvimento de software, como o JaTS.

O CIn oferecerá toda a instalação física e apoio didático para a realização do projeto, incluindo o acesso à internet e à sua biblioteca. Também será de responsabilidade do Centro de Informática, toda instalação, operação e suporte dos equipamentos que se fizerem necessários à equipe do projeto. Além disto, será permitido o acesso às impressoras, scanners e outros periféricos que se encontram disponíveis nas dependências do Centro.

Identificação das linhas de atuação na área pretendida, após o término do projeto

Este projeto tem como objetivo a melhoria e integração de ferramentas direcionadas à aplicação de refactorings avançados. Com este propósito, identificaremos a complementaridade entre as duas abordagens e entre as ferramentas que as têm como base. Ao final do projeto teremos uma versão conjunta de uma ferramenta de refactorings que inclua os pontos fortes de cada uma das abordagens, resultando em grande utilidade prática para a reestruturação de programas orientados a objetos.

A versão resultante da ferramenta deverá ser distribuída por meio de uma fonte comum, a ser definida em ocasião apropriada (open source???). A manutenção será feita por integrantes das equipes envolvidas, provavelmente de forma conjunta. A aplicabilidade da ferramenta preencherá necessidades de empresas de software de Brasil e Alemanha, podendo também ser amplamente adotada em empresas com problemas semelhantes em outros países.

Cronograma

O projeto está previsto para ser desenvolvido em dois anos. Neste período está planejado que acorram quatro viagens de bolsistas à Alemanha e duas missões de trabalho. Entre outros, foi levado em consideração o critério de que integrantes da equipe brasileira e alemã que trabalharão em um mesmo tema de pesquisa deverão estar no mesmo local no período em que ocorrer os respectivos trabalhos.

- Bolsas de estudo

Planeja-se implementar as primeiras bolsas de estudo após o período inicial do projeto, no qual serão realizadas difinições mais aprofundadas das linhas de trabalho e construção de um arcabolso inicial das tarefas. Sendo assim, a implementação das primeiras bolsas está prevista para o meados de 2006.

Candidato: Vander Ramos Alves
Período: setembro de 2005 a fevereiro de 2006 (6 meses)
Vinculação no projeto: Vander Alves é doutorando em Ciência da Computação, com pesquisa na área de... Enfim, é o danadão. Estará envolvido no processo de melhorias na ferramenta JaTS e fundamentalmente na comparação entre JaTS e ConTraCT, explorando a aplicação das duas abordagens para implementar variações em linhas de produtos de software.

Candidato: Tiago Lima Massoni
Paríodo: setembro de 2005 a fevereiro de 2006 (6 meses)
Vinculação no projeto: Tiago Massoni é doutorando em Ciência da Computação, com pesquisa em transformações de modelos de objetos, em especial o estudo do impacto de restrições dos modelos em transformações de programas que implementam estes modelos. Desenvolverá trabalhos na formalização de refactorings, com o objetivo de exercitar e aprimorar as abordagens das ferramentas, através da relação entre leis de modelagem e de programação.

Candidato: Gustavo Alexandre dos Santos
Paríodo: janeiro de 2006 a junho de 2006 (6 meses)
Vinculação no projeto: Gustavo Santos é mestrando em Ciência da Computação, com dissertação relacionada a geração e transformação de código e modelos. Atuou na definição e implementação da ferramenta JaTS. Gustavo Santos estará fortemente envolvido na extensão da ferramenta JaTS, na comparação entre JaTS e ConTraCT e na integração das duas ferramentas.

Candidato: Rohit Gheyi
Paríodo: setembro de 2006 a janeiro de 2007 (6 meses)
Vinculação no projeto: Rohit Gheyi é doutorando em Ciência da Computação, com dissertação focada em transformação de modelos. Atuará na verificação de refactorings de código e modelos, mostrando como se relacionam e podem ser sincronizados.

- Missões de Trabalho

Candidato: Paulo Henrique Monteiro Borba
Paríodos: abril de 2005 (14 dias) e
abril de 2006 (30 dias) Vinculação no projeto: Paulo Borba é o coordenador deste projeto de pesquisa. É Phd em Ciência da Computação pela Universidade de Oxford, professor e pesquisador sênior no Centro de Informática da UFPE. Estará envolvido em todos os temas relacionados ao projeto, sendo que, na primeira missão de trabalho, atuará na melhoria das ferramentas JaTS e ContTraCT, comparação entre elas e sua integração. Já em sua segunda missão de trabalho terá foco na especificação das leis de programação OO e construção de uma biblioteca de refactorings "provados".

Candidato: André Santos
Paríodo: outubro de 2005 (14 dias) Vinculação no projeto: André Santos é Phd em Ciência da Computação pela Universidade...

Candidato: Augusto Sampaio
Paríodo: junho de 2006 (14 dias) Vinculação no projeto: Augusto Sampaio é Phd em Ciência da Computação pela Universidade...

Orçamento

A seguir são descritas as previsões de despesas para manutenção das atividades da equipe brasileira, separadas por período anual do projeto.

Para execução dos trabalhos, documentação, armazenamento e divulgação do projeto serão necessários os seguintes materiais de consumo:

Período Material de consumo Orçamento
Ano 1 CDs, fitas e disquetes para backups R$ 400,00
  Papel para impressora R$ 500,00
  Cartuchos de toner para impressora R$ 900,00
  Lâmpada para canhão R$ 1.000,00
  Material de escritório em geral* R$ 300,00
Total R$ 3.100,00
Ano 2 CDs, fitas e disquetes para backups R$ 700,00
  Papel para impressora R$ 700,00
  Cartuchos de toner para impressora R$ 900,00
  Material de escritório em geral R$ 600,00
Total R$ 2.900,00

*Este ítem inclui despesas com canetas (comuns e para quadro branco), pastas, caixas-arquivo, envelopes, etc.

Serviços e encargos relacionados a desenvolvimento, divulgação de resultados e troca de correspondências estão detalhados na tabela seguinte:

Período Serviços e encargos Orçamento
Ano 1 Fotocópias e encadernações R$ 400,00
  Correios R$ 300,00
  Transporte de materiais e equipamentos R$ 500,00
  Serviços gerais R$ 600,00
Total R$ 1.800,00
Ano 2 Fotocópias e encadernações R$ 600,00
  Correios R$ 400,00
  Transporte de materiais e equipamentos R$ 300,00
  Serviços gerais R$ 600,00
Total R$ 1.900,00

Com base na previsão descrita, concluimos que o orçamento necessário para o primeiro ano e segundo ano de projeto será:

1° ano 2° ano
R$ 4.900,00 R$ 4.800,00

Voltar

-- TiagoMassoni - 18 Jun 2004

Edit | Attach | Print version | History: %REVISIONS% | Backlinks | Raw View | Raw edit | More topic actions

This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort