• Nenhum resultado encontrado

Plataformas móvel, web, interoperabilidade e desktop

3.1 Resultados

3.1.3 Plataformas móvel, web, interoperabilidade e desktop

Para atender um sistema multiplataforma na essência do termo é necessário uma abordagem que ofereça uma visão holística de todo o processo, isto é, um ambiente único de modelagem que permita a especificação de todas as plataformas: móvel, web, desktop e a comunicação entre elas. Abordagens com essa visão holística são mais difíceis de encontrar.

HAXE24 é uma linguagem de código aberto que garante alto nível de abstração,

usada para compilar código para várias plataformas distintas. HAXE suporta a geração de nove linguagens: JavaScript, Neko, PHP, Python, C++, C#, Java, ActionScript 3 e Flash, a partir de um código base. É uma linguagem muito popular para a produção

23 www.w3.org/TR/soap/ 24 haxe.org/

de jogos, devido à sua diversidade de bibliotecas, curva de aprendizado rápido e o fator multiplataforma. Porém a linguagem gera bytecode para algumas plataformas, não per- mitindo a extensão do fonte, além de comprometer a independência de plataforma de desenvolvimento pelo fato do alto custo em estender a linguagem. Embora HAXE possa gerar código para várias plataformas, ele não gera de forma automática a interoperabi- lidade entre as aplicações criados por ele, mas oferece uma base para o desenvolvimento manual através de web request e um JSON parser25. A linguagem não foi projetada para

desenvolver um sistema multiplataforma e sim gerar código para plataformas de forma individual. Nesse caso, a abordagem completa utiliza o metamodelo KDM (Knowledge

Discovery Metamodel) para transcrever um sistema legado para a linguagem de mode-

lagem KDM, na sequência é realizado a transformação para a linguagem de modelagem HAXE através de técnicas M2T (MARTINEZ; PEREIRA; FAVRE, 2017). O HAXE faz uso do framework Acceleo (ACCELEO,2010) para geração de código nativo para as pla- taformas alvo, incluindo: Android, iOS, BlackBerry, além de aplicações desktop e web.

KOTLIN26 é uma linguagem de programação estaticamente tipada, criada para o

reaproveitamento de código, permitindo que grande parte do código usado em um pro- duto ou plataforma seja utilizado em outro. KOTLIN foi lançada em 15 de fevereiro de 2016 e é considerada linguagem oficial para a plataforma Android, junto com o Java. Atualmente, ela pode ser usada para o desenvolvimento web através da linguagem JavaS-

cript (client-side e server-side), desktop e nativamente para o desenvolvimento Android,

além de prover base para a comunicação de dados entre as plataformas através do REST-

ful. KOTLIN está desenvolvendo a tecnologia Kotlin/Native que permitirá a geração de

executáveis nativos para rodar em outras plataformas que não utilizam o JVM, assim como iOS. Parte do Kotlin/Native já está disponível e suporta o desenvolvimento para as seguintes plataformas: Windows, Linux, MacOS, iOS e Android. O fato de ser uma lin- guagem de caráter universal, atribui a ela as mesmas características da linguagem HAXE: compromete a independência de plataforma, faz a geração de bytecode, não permitindo a extensão do código fonte, e substitui uma linguagem por outra, não elevando de forma considerável o nível de abstração.

A ferramenta IBM RATIONAL RHAPSODY27 possibilita o desenvolvimento de

sistemas embarcado, sistema de tempo-real e software comerciais através de uma lingua- gem de modelagem visual baseado na UML ou Systems Modeling Language (SysML). Os modelos podem ser simulados para realizar testes e usados para gerar códigos. Também é possível sincronizar alterações nos modelos com a geração de códigos e vice-versa. A ferramenta gera códigos para as linguagens C, C++, Ada, Java e C Sharpe, atendendo às plataformas móveis, web e desktop. A política usada pela ferramenta é manter todo

25 api.haxe.org/haxe/Json.html 26 kotlinlang.org

o desenvolvimento e manutenção do software diretamente no ambiente de modelagem, não recomendando a extensão do código fonte gerado, uma vez que afetará a função de reengenharia e engenharia avante para futuras manutenções. O único ponto não previsto pela ferramenta é o tratamento da comunicação de dados entre os aplicativos gerados. Assim como o HAXE, o IBM RATIONAL RHAPSODY compromete a independência de plataforma de desenvolvimento e limita o desenvolvedor às funcionalidades previstas na ferramenta.

O GENEXUS28 é uma ferramenta comercial que usa o conceito do DSDM para modelar de forma visual sistemas complexos. GENEXUS trabalha com o conceito de

Model First, com a definição prévia da base de dados, seguido pela geração automática

das operações do tipo CRUD para cada entidade. Em seguida a modelagem do sistema é definida em um ambiente visual de forma modularizada, onde, para cada componente de interface adicionado na modelagem. Pode-se especificar regras de negócio e controlar o comportamento através de uma linguagem generativa disponibilizada pela ferramenta. Com os conceitos do domínio expressos através da modelagem a definição das plataformas para geração de código fonte pode ser selecionado. O GENEXUS oferece suporte para muitas plataformas. Para as plataformas móveis são suportadas a geração de código nativo para Android, BlackBerry, iOS e windows phone. Para a geração da plataforma web é suportado Ruby, Java e .Net, além das tecnologias de interface responsiva (HTML5, CSS e JS). Para os sistemas desktop a ferramenta oferece a geração de código em C# ou Java. Além dessa diversidade de linguagens suportadas, o serviço de comunicação entre as plataformas pode ser especificados através da modelagem e gerados de forma automática nos padrões SOAP ou REST, tornando a ferramenta mais completa investigada por esta pesquisa.

Embora a ferramenta GENEXUS apresente um perfil holístico de desenvolvimento, combinando com a definição dos conceitos de um sistema multiplataforma efetivamente em um único ambiente, ele apresenta alguns pontos a serem considerados. O fato da ferramenta ser comercial e usar o padrão caixa preta, não permite a extensão para suporte a outras funções além das pré-estabelecidas pela ferramenta, limitando o comportamento das funcionalidades que os aplicativos poderão oferecer. Os códigos-fonte gerados pela ferramenta não são legíveis, dificultando a adição de funcionalidades não disponíveis pela ferramenta ao produto final, além de ser uma prática não recomendada pois a extensão do código pode inviabilizar a manutenção do software. Outro ponto negativo relacionado à manutenção é o fato que o desenvolvedor fica dependente do sistema de modelagem interpretado unicamente pelo GENEXUS. Portanto, tanto na expansão tecnológica quanto na independência de evolução tecnológica o usuário fica perigosamente preso a ferramenta.