Um Método para Desenvolvimento de Abordagens Generativas com Composição de Linguagens Específicas de Domínio
engenharia de software automatizada; desenvolvimento generativo; composição de linguagens específicas de domínio; engenharia de linha de produto de software.
A utilização de linguagens específicas de domínios para o desenvolvimento de sistemas de software tem se tornado cada vez mais comum. Elas propiciam um aumento da expressividade do domínio, elevando o seu nível de abstração através de facilidades para geração de modelos ou códigos de baixo-nível, que aumentam assim a produtividade do desenvolvimento de sistemas. Como consequência, métodos para o desenvolvimento de linhas de produtos de software e famílias de sistemas também têm proposto a utilização de linguagens específicas de domínio (domain-specific language – DSLs). Estudos recentes têm investigado os limites de expressividade do modelo de features, e propondo o uso de DSLs em sua substituição ou complemento. Contudo, em projetos complexos, uma única DSL muitas vezes é insuficiente para representar as diferentes visões e perspectivas do desenvolvimento, sendo necessário trabalhar com múltiplas DSLs. Com isso surgem novos desafios, tais como a gerência de consistência entre as DSLs, e a necessidade de métodos e ferramentas que ofereçam suporte ao desenvolvimento com múltiplas DSLs. Ao longo dos últimos anos, diversas abordagens têm sido propostas para o desenvolvimento de abordagens generativas, entretanto, nenhuma delas considera questões relacionadas a composição de DSLs. Assim, visando abordar tal problemática, os principais objetivos desta dissertação são: (i) investigar a adoção do uso integrado de modelos de features e DSLs tanto na engenharia de domínio quanto de aplicação de desenvolvimento de abordagens generativas; e (ii) investigar e avaliar o uso de tecnologias modernas de engenharia dirigida por modelos na implementação de estratégias de integração entre modelos de features e composição de DSLs. Como resultado, é proposto um método para o desenvolvimento de abordagens generativas com composição de DSLs que parte da junção de abordagens existentes. Um estudo exploratório foi realizado para avaliar o método proposto para o domínio de engenharia de software experimental. Também foram feitas análises comparativas entre o método proposto e outras abordagens existentes.