• Nenhum resultado encontrado

3.1 Resultados

3.1.4 Outras plataformas

O conceito DSDM tem mostrado flexibilidade na geração de código para diversas áreas em diversos ambientes. Para comprovar o potencial do conceito, este tópico apresenta alguns trabalhos com o foco em áreas pouco divergentes com o projeto. Um dos objetivos desta tese é gerar código para novas tecnologias, permitindo a capacidade de expansão e a proposta de uma abordagem atemporal, de forma que o desenvolvedor possa estendê-la para a inclusão de novas tecnologias.

Alguns autores trabalham na geração de código e modelagem, porém não espe- cificamente na área da multiplataforma. Os trabalhos de B¯erziša et al. (2015), Hinkel e GoldSchmidt (2016) e SILABMDD (SILVA et al., 2014) tratam exclusivamente da ques- tão da modelagem. Neste caso, a maior contribuição são modelos com expressividade para tratar em alto nível os dinâmicos ambientes de negócio do mundo corporativo. B¯erziša et al. (2015) propõem o Capability Driven Development (CDD), trata-se de um meta- modelo que considera as mudanças organizacionais de uma empresa e permite com que elas sejam integradas em alto nível aos sistemas de informação gerenciais, de forma que inclua todos os stakeholders do projeto. O objetivo principal é elevar o nível de abstração e disponibilizar um ambiente de modelagem que possa expressar e documentar os concei- tos do domínio, além de facilitar as alterações do sistema. Hinkel e GoldSchmidt (2016) tratam de transformações de modelos usando a linguagem NTL (NMF (.NET Mode-

ling Framework) Transformation Language)) que provê suporte ao DSDM na plataforma

.NET e demonstra sua implementação. Os autores propõem uma ferramenta para mapear modelos em códigos usando a linguagem NTL. A geração de código é realizada através de compiladores desenvolvido como parte do trabalho e não focam em uma plataforma específica. É apresentada a viabilidade em se usar a linguagem NTL frente a outros fra-

meworks DSDM, tratando questões como expressividade da modelagem. SILABMDD é

uma abordagem DSDM que utiliza a linguagem SilabReq para a modelagem de requisitos baseado nas especificações dos casos de uso, disponibilizando uma modelagem textual que permite com que usuários possam definir e gerenciar os requisitos do software (SILVA et al., 2014). O objetivo principal é prover aos desenvolvedores um ambiente de modelagem completa referente à expressividade dos conceitos de um domínio. Nenhum dos autores tratam as questões de geração de código, nem focam em algum tipo de plataforma especí- fica, forçando esforços na documentação, modelagem e concepção em alto nível abstração do software.

Para garantir reúso de código, abstração e encapsulamento de funcionalidades, muitos desenvolvedores criam APIs (Aplications Programming Intefaces) e disponibilizam para o aumento de produtividade. Nesse caso, o DSDM pode ser uma alternativa para a criação de APIs devido a vantagens como: expressividade, manutenção, legibilidade e o fato de ser conciso, além de poder ser melhor adaptado em diferentes ambientes de

desenvolvimento. Nessa linha, a abordagem DSLIT (COSENTINO; TISI; IZQUIERDO, 2015) provê mecanismos para gerar automaticamente DSL externa a partir de uma API orientada a objetos. Para validar a abordagem, a ferramenta DSLIT gera uma DSL textual em Xtext a partir de uma APIs baseada na linguagem Java. A ferramenta é integrada na plataforma Eclipse como um plugin, e utiliza técnicas dirigidas por modelos para representar as APIs em alto nível de abstração através de uma DSL declarativa. Por fim, a transformação da modelagem em código java é feita pela ferramenta Acceleo, que permite inclusive a geração para outras linguagens suportadas pelo gerador.

A flexibilidade do DSDM é comprovada pela apresentação de abordagens que di- vergem do objetivo principal desta tese e apresenta melhoria no processo de desenvolvi- mento, como é o caso da DSL PYTF (HINKEL et al., 2016). Essa DSL é usada para modelar em XML os conceitos da Neuro-Robótica. Uma vez concebida a DSL, é possível gerar códigos Python (linguagem muito usada pela Neuro-robótica) através do gerador

Jinja229. Os componentes utilizados no NRP(Neurorobotics Platform) foram baseados em

C++ e Python e a DSL PYTF é usada para automatizar a geração de parte do código para o domínio de neuro-robótica. O artigo aponta que a neuro-robótica é melhor geren- ciado através de modelos, representando a interconexão entre a parte robótica e as redes neurais. Portanto, para aumentar o nível de abstração foi utilizado DSDM, permitindo especificações em alto nível de abstração. A ideia principal seria a divisão do código em 3 partes: Plataforma, código repetitivo e código individual. Os resultados em se usar uma linguagem com pouco suporte ao DSDM, foram relatadas como válidas, uma vez que foi possível aumentar o nível de abstração na criação dos modelos no contexto na neuro- ciência e gerar códigos usando o gerador Jinja2. Embora o artigo trate as questões do domínio da Neuro-Robótica, ele apresenta desafios similares a multiplataforma, uma vez que precisa lidar com modelagem e geração de códigos distintas das comumente usadas pelo DSDM.

Martinez, Pereira e Favre (2017) descrevem a migração de uma aplicação feita em C/C++ para diferentes plataformas, através do metamodelo KDM (Knowledge Discovery

Metamodel). O KDM faz parte do conjunto de soluções para modernização de software

proposta pela Architecture-Driven Modernization (ADM) e tem o potencial de modelar um software legado com alto nível de abstração. A partir dessa modelagem é possível a geração de código para várias plataformas através de geradores de código. O processo é orientado a modelos, ocorrendo transformações M2M de KDM para a modelagem HAXE, e este por sua vez, utiliza o Acceleo para gerar transformações M2T para código nativo. O KDM é focado em especificar e definir refatorações com o objetivo de auxiliar a modernização de software independente de plataforma ou linguagem de programação. A ideia principal do KDM é a representação de artefatos, associações e elementos de um software com o intuito

de realizar transformações em seu código-fonte, visando a modernização ou alteração da linguagem de programação (PÉREZ-CASTILLO; GUZMAN; PIATTINI, 2011).

O KDM contém meta-classes específicas para representar desde código-fonte até a arquitetura de um determinado software e é focado em reengenharia de software. Isto é, seu objetivo principal seria representar um software legado em uma modelagem baseada no

Meta-Object Facility (MOF) (SON; KIM; KIM,2013). Essa modelagem por sua vez teria a capacidade de troca de metadados entre diversas ferramentas de modernização criadas por engenheiros de software para auxiliar a interoperabilidade e poder gerar a modernização em diferentes ambientes. Porém, o KDM é utilizado para representação de software a partir de seus metamodelos pré-definidos. Pois ele, como padrão, requisita um artefato de entrada para a definição dos conceitos de algum software. Portanto, o KDM não possui a estrutura adequada para o desenvolvimento multiplataforma utilizando um único ambiente, alguns elementos dessa estrutura podem ser: definição de plataformas, configuração da geração de código para a distribuição de funcionalidades e escrita de regras de negócio. Outro aspecto diz respeito a extensão do KDM, isso poderia comprometer a interoperabilidade com outras ferramentas de modernização, pelo fato de alterar o metamodelo KDM. Dessa forma, ele não é utilizado neste trabalho, uma vez que um dos objetivos é desenvolver um metamodelo para engenharia avante, com expressividades para o domínio de sistemas multiplataforma. Espera-se compor na modelagem instrumentos que permitam expressar nas plataformas que serão destinados, certos artefatos de software previamente modelados.