Você está na página 1de 1

Universidade Federal de Pernambuco (UFPE)

Centro de Informática (CIn)

Coordenação de Pós-Graduação em Ciência da Computação

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.

Você também pode gostar