Titulo Estágio
Validação de Inputs em Web Services
Área Tecnológica
Engenharia de Software
Local do Estágio
Grupo de Engenharia de Software e Sistemas do CISUC
Enquadramento
Os web services representam cada vez mais um veículo estratégico para a partilha de dados e distribuição de conteúdos. De facto, os web services representam um componente chave na infra-estrutura de informação de muitas organizações. Muitos sistemas são construídos tendo como suporte uma arquitectura baseada em composições de web services, onde a utilização de um serviço com um baixo nível de robustez pode afectar a robustez de toda a composição.
Um modo eficaz de melhorar a robustez de uma aplicação é fazer uma validação precisa dos seus inputs. Tendo em conta que o aspecto de validação é uma tarefa comum que, muitas vezes, é copiada em múltiplas camadas de uma aplicação (e.g., camada de apresentação, camda de acesso a dados, etc.), surgiu muito recentemente um esforço para definir uma framework de validação em ambientes Java. Esta framework é vista como uma extensão genérica ao modelo de objectos JavaBeans, e como tal espera-se que seja usada como um componente central em muitas outras especificações, tais como JSF, JPA, e Bean Binding. Espera-se também que faça parte do próximo JDK, tornando-se assim num componente essencial em aplicações Java.
Apesar de se poder construir um web service que usa uma implementação desta framework para validar inputs vindos de um cliente, não existe actualmente forma de um cliente saber à partida quais são os domínios de um dado parâmetro, numa dada operação. Note-se que o domínio de um dado parâmetro pode estar dependente dos valores obtidos em runtime para outros parâmetros de entrada da mesma operação.
De facto, é fundamental que um cliente possa consultar a definição do web service e saber com que valores pode invocar um determinado web service, pois isto impede invocações inúteis e é algo que pode ser usado para melhorar a própria robustez do cliente. Adicionalmente, a informação de validação pode ser também explorada para gerar testes de robustez de uma forma automática, contribuindo para melhorar a qualidade da aplicação final. É necessário ter em conta que, para que o cliente possa conhecer os domínios válidos para uma operação, não basta transferir a informação de validação do servidor para o cliente, é preciso fazê-lo de uma forma independente da plataforma e automatizar a sua interpretação.
Objetivo
O objectivo deste trabalho é associar uma implementação de validação baseada na Bean Validation Framework (JSR 303) à tecnologia de web services e implementar um modo de exportar/importar definições completas de validação em web services. A exportação implica anunciar os domínios válidos para cada operação, sendo que a importação consiste em interpretar as definições dos domínios, validando pedidos automaticamente no lado do cliente.
Na prática a solução desenvolvida será integrada numa implementação da Java Architecture for XML Binding (JAXB), esperando-se assim uma solução de grande relevância e enorme impacto na comunidade Java.
É também objectivo do estágio a realização de uma avaliação experimental da ferramenta, estando prevista a escrita e submissão de um artigo científico a uma conferência de topo mundial.
Plano de Trabalhos - Semestre 1
(a) Estudo do JSR 303 (Bean Validation), estado da arte em frameworks de validação (Setembro a Outubro 2009)
(b) Estudo da arquitectura de uma implementação JAXB e das formas de integração da validação. Estudo das formas de importação/exportação das definições de validação (Novembro a Dezembro de 2009)
(c) Escrita e defesa da proposta de dissertação (Dezembro de 2009 e Janeiro de 2010)
Plano de Trabalhos - Semestre 2
(d) Especificação da arquitectura, design, e testes (Janeiro a Março de 2010)
(e) Implementação e avaliação experimental (Fevereiro a Abril de 2010)
(f) Escrita de um artigo científico e submissão a uma conferência de topo mundial (Abril e Maio de 2010)
(g) Escrita e defesa da dissertação (Abril a Julho de 2010)
Condições
Este trabalho será realizado nas instalações do Grupo de Engenharia de Software e Sistemas do CISUC. Será disponibilizado um local de trabalho apropriado e todos os recursos computacionais necessários. Existe a possibilidade de atribuição de uma bolsa de iniciação à investigação científica.
Observações
Este estágio será co-orientado por Nuno Laranjeiro, aluno do 3º ano do programa Doutoral em Ciências e Tecnologias da Informação do DEI.
Orientador
Marco Vieira
mvieira@dei.uc.pt 📩