Baixe o app para aproveitar ainda mais
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:
Compartilhar