Titulo Estágio
RAIL 4.5
Área Tecnológica
Engenharia de Software
Local do Estágio
Laboratórios de “Software and Systems Engineering – CISUC”
Enquadramento
Um aspeto comum aos programas desenvolvidos em linguagens de programação modernas é serem compilados para uma linguagem intermédia e posteriormente executados por um runtime. Isto significa que antes do código entrar verdadeiramente em execução, terá de ser carregado em memória pelo ambiente de execução. Desta forma, surge a possibilidade de realizar modificações ao código original dos programas durante a fase de carregamento, antes mesmo de entrarem em execução. Considerando que o código só será carregado em memória quando é efetivamente necessário, o momento para realizar a instrumentação deste poderá acontecer quando o programa já se encontra em execução há algum tempo, quando muito mais informação está disponível sobre o programa e a sua execução.
As bibliotecas necessárias para realizar este tipo de transformação em Java já existem há diversos anos (e.g., BCEL, Javassist), mas em 2003 não existia nenhuma biblioteca com o mesmo propósito para a plataforma .NET. O projeto RAIL (Runtime Assembly Instrumentation Library) veio colmatar esta lacuna. Este projeto foi desenvolvido no Grupo de Sistemas Confiáveis do DEI entre 2003 e 2005 e foi parcialmente financiado por duas bolsas ROTOR* da Microsoft Research, tendo sido o único projeto Português e dos poucos a nível internacional a vencer duas vezes o concurso.
O impacto do RAIL a nível internacional foi evidenciado pelos inúmeros projetos de investigação que o empregaram como ferramenta de desenvolvimento. Nomeadamente, projetos relacionados com AOP, monitorização de execução, recolha de dados, análise estática de código, entre outros. O interesse por parte da comunidade cientifica e até empresarial ficou demonstrado pelos mais de 600 downloads realizados do código fonte da biblioteca entre Outubro de 2003, altura em que o código foi colocado on-line, e Junho de 2005. Durante o mesmo período de tempo, o site do projeto teve uma média mensal de 200 acessos.
O desenvolvimento da biblioteca parou na versão 2.0 da plataforma .NET, mas desde então os pedidos de suporte continuam a chegar regularmente à lista de e-mail do projeto. Este é um sinal claro que ainda não existe uma alternativa viável ao RAIL no universo .NET. Assim, existe uma oportunidade real para o desenvolvimento de uma nova versão da biblioteca, que poderá gozar da mesma popularidade que as suas antecessoras.
* ROTOR = SSCLI = Share Source Common Language Infrastructure – iniciativa da MS Research para desenvolvimento de uma versão open source da plataforma .NET
Objetivo
O objetivo deste estágio é desenvolver uma nova versão da biblioteca RAIL para a plataforma .NET 4.0. Além da adequação à nova versão da plataforma, esta nova versão da biblioteca deverá apresentar um API redesenhado para melhorar a sua utilização e aumentar a produtividade dos seus utilizadores. Deverá também ser pensada em termos de rapidez e performance nas operações de instrumentação de código e geração de novos assemblies, para isso será necessário projetar e desenvolver novos padrões de instrumentação de código capazes de operar em tempo de execução.
Um segundo objetivo, transversal a este estágio, é desenvolver os esforços necessários para a criação de uma comunidade on-line de utilizadores e programadores que assegure o futuro do RAIL como um projeto de código fonte aberto e de livre utilização.
Plano de Trabalhos - Semestre 1
(ID da tarefa / Identificação / Duração (horas) / Dependências)
(1 / Integração na equipa / 5 / -)
(2 / Aprendizagem das metodologias de desenvolvimentos e processos relacionados / 16 / 1)
(3 / Aprendizagem das tecnologias e ferramentas a utilizar / 16 / 1,2)
(4 / Estudo da literatura, enquadramento e objetivos do projeto / 32 / 1)
(5 / Identificação de requisitos / 16 / 4)
(6 / Planeamento do API / 32 / 5)
(7 / Sprint 1 / 32 / 6)
(8 / Sprint 2 / 32 / 7)
(9 / Sprint 3 / 32 / 8)
(10 / Publicação on-line e desenvolvimento de comunidade / 5 / 9)
(11 / Escrita do relatório intermédio e preparação da apresentação / 16 / 8)
(12 / Preparação de demonstração / 10 / 10)
Plano de Trabalhos - Semestre 2
ID da tarefa / Identificação / Duração (horas) / Dependências)
(13 / Integração dos dados recolhidos na apresentação intermédia no planeamento do estágio e na preparação do relatório final / 20 / -)
(14 / Sprint 5 / 80 / 10,13)
(15 / Sprint 6 / 80 / 14)
(16 / Escrita de documentação / 40 / 15)
(17 / Preparação de testes e demonstração / 40 / 15)
(18 / Sprint 7 / 80 / 15,16,17)
(19 / Sprint 8 / 80 / 18)
(20 / Escrita de documentação / 40 / 19)
(21 / Preparação de testes e demonstração / 40 / 19)
(22 / Sprint 9 / 80 / 19,20,21)
(23 / Sprint 10 / 80 / 22)
(24 / Escrita de documentação / 40 / 23)
(25 / Preparação de testes e demonstração / 40 / 23)
(26 / Escrita do relatório final e preparação da apresentação / 30 / 21)
Condições
Estágio não remunerado.
Observações
Os candidatos deverão apresentar (preferencialmente) um bom currículo académico nas áreas relacionadas com o projeto. Nomeadamente: programação orientada aos objetos; e engenharia de software. A aprovação final de um candidato será realizada pelo PI do projeto. Mais informação disponível em: http://rail.dei.uc.pt
Orientador
Bruno Cabral
bcabral@dei.uc.pt 📩