Buscar

Programação Orientada a Linguagens [The Rise of Orpheus Project]

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal de Pernambuco (UFPE) 
Centro de Informática (CIn) 
 
 
 
Tema para Pré-Projeto de Mestrado 
Linha de pesquisa: Engenharia de Software e Linguages de Programação 
Título: Programação Orientada a Linguagens [The Rise of Orpheus Project] 
Proponente: Henrique Rebêlo (hemr at cin.ufpe.br) 
 
Descrição: 
 
No mundo real da programação, programadore usam o que chamamos de mainstream programming language 
para trabalhar em um domínio geral. Entretanto, essas linguagens de propósito geral podem nao oferecer algum 
mecanismo que seja necessário o uso de uma linguagem de domínio específica [domain specific language]. 
 
Por exemplo, a linguagem mainstream Java não oferece um mecanismo expressive para trabalhar com contratos 
(do inglês: Design by Contract (DbC)) [1], na qual é um método de desenvolvimento de software como meio de 
construir sistemas orientado a objetos mais confiáveis. Portanto, faz-se necessário a inclusão de uma linguagem 
de domínio específica para resolver esse problema, como JML ou AspectJML [3, 4]. Outro exemplo, Java não 
oferece suporte para modularização de feature entrecortantes (do inglês: crosscutting), sendo assim espalhados 
e entrelaçados por vários módulos de um sistema. A programação orientada a aspectos (POA) [2], proposta na 
segunda metade dos anos 90, surgiu como uma forma de modularizar conceitos entrecortantes, como tratamento 
de erros, logging, transação, etc. Sendo assim, outra DSL tem de ser incluida para dar suporte a POA, e assim 
por diante. 
 
Dada a questão acima, este projeto tem por objetivo explorar a ideia emergente de programação orientada a 
linguagens (do inglês: language oriented programming, or LOP), na qual, o programador possa desenvolver 
uma linguagem que ofereça um projeto orientado a linguagens; ou seja, que facilite a inclusão ou extensão de 
uma nova linguagem DSL. Nessa direção, temos um projeto chamado Orpheus que seguirá as premissas de um 
projeto LOP bem conhecido, chamado Racket [https://racket-lang.org/]. A linguagem base para o Orpheus será 
a linguagem AspectJML [5], na qual, dentre várias outras coisas, acrescenta a Java uma forma de 
desenvolvimento modular de contratos de software de forma a obter um aumento significativo de produtividade. 
 
Requisitos importante para o trabalho iniciado em AspectJML Online [http://aspectjml.cin.ufpe.br/]: 
- Front-end: Angular JS, CodeMirror, JQuery 
- Back-end: Ruby on Rails 
- Container: Docker 
 
Referências Bibliográficas: 
 
1. Bertrand Meyer. Object-Oriented Software Construction, 2nd ed. 
2. Gregor Kiczales et al. Aspect-Oriented Programming. In Proc. European Conference on Object-Oriented 
Programming, páginas 220-242, Junho 1997. 
3. Henrique Rebêlo, Ricardo Lima, and Gary T. Leavens. Modular Contracts with Procedures, Annotations, 
Pointcuts and Advice. In Proc. of the XV Brazilian Symposium on Programming Languages (SBLP 
2011), São Paulo, Brazil, September 29-30, 2011. 
4. Henrique Rebêlo etal. Quantifying the Effects of Aspectual Decompositions on Design By Contract 
Modularization: A Maintenance Study. International Journal of Software Engineering and Knowledge 
Engineering, World Scientific Publishing Company, 2014. 
5. Henrique Rebêlo etal. AspectJML: Modular Specification and Runtime Checking for Crosscutting 
Contracts. In Proc. of the 13th International Conference on Modularity (Modularity 2014), Lugano, 
Switzerland, April 22-26, 2014. 
 
Coordenação de Pós-Graduação em Ciência da Computação 
https://racket-lang.org/%5d
http://aspectjml.cin.ufpe.br/
	Descrição:
	Referências Bibliográficas:

Continue navegando

Outros materiais