• Nenhum resultado encontrado

7.1 Desenvolvimento do sistema multiplataforma

7.1.1 Análises do sistema multiplataforma

O sistema multiplataforma concebido para esta tese forneceu base para a estru- turação da abordagem, que possui o potencial de automatizar grande parte do processo de desenvolvimento e avaliar as 7 contribuições detalhadas na Tabela 6. Foi estimado que cerca de 79% do sistema desenvolvido na prova de conceito é baseado em funções que podem ser automatizadas para o domínio de comércio eletrônico. Essa estimativa foi re- alizada através da análise do código fonte, onde foram separadas as funções comuns para o domínio abordado e as regras de negócio específicas.

As funções comuns são consideradas os recursos fundamentais aos sistemas do do- mínio de comércio eletrônico. Tais funções podem possuir variações entre as realidades operacionais de cada organização, como exemplo, diferenças nas propriedades das entida- des usuários, produtos, vendas. Essas diferenças podem dificultar o reaproveitamento de código fonte entre sistemas do mesmo domínio em um processo de desenvolvimento ad-

hoc, devido ao alto número de alterações que devem ser feitas, em diferentes plataformas

e linguagens. Além de, manter o processo de desenvolvimento propenso a erros de criação e manutenção. Já as funções específicas (regras de negócio e detalhes de interfaces) são importantes para a adequação do sistema à realidade operacional de cada organização e são mais difíceis de se reaproveitar, sendo necessária especificá-las em cada projeto.

O motivo da separação do sistema entre funções comuns e específicas foi avaliar a quantidade de esforço necessário para se desenvolver um sistema para este domínio. As funções comuns representam tal esforço pelo fato de serem consideradas em sua maior parte essenciais para o domínio e, que podem ser reduzida consideravelmente com o uso da abordagem. A abordagem proposta tem o potencial de criar as funções comuns, iden- tificadas no sistema, de forma genérica. O segundo motivo da separação foi analisar o reaproveitamento das funções comuns especificadas através da GPL em um sistema pre- viamente desenvolvido para um novo sistema, alterando tais especificações na abordagem.

A Tabela 7 apresenta os detalhes dos cálculos de linhas de códigos (LOC) co- muns ao domínio e linhas com regras específicas de negócio. A versão móvel representa as plataformas Android e iOS, junto com a versão web e RA, totalizando as 4 plata- formas usadas no estudo. Nessa tabela, os elementos considerados comuns são: classes POJO2 (Plain Old Java Objects) e DAO3 (Data Access Object), Controladores (MVC)

que representam a ponte de comunicação entre as camadas de modelos e visualização do estilo arquitetural MVC, Especificidades das Plataformas e Interface. Especificidades de plataformas são detalhes técnicos comuns ao domínio de comércio eletrônico em cada plataforma, como controle de sessão, responsável por transferir dados entre páginas web e recursos de páginas nos dispositivos móveis (Activity/android e ViewController /iOS). Interface representam os códigos padrões para a camada de visualização em um sistema de comércio eletrônico. Como exemplo, podemos citar: exibição de produtos, campos de busca, organização do carrinho de compras e menu de navegação.

Tabela 7 – Detalhamento dos cálculos das funções comuns e específicas ao domínio do sistema multiplataforma abordado.

Elementos Versão Web Versão Móvel Versão RA

POJO 15 arquivos (LOC: 2700) 4 arquivos (LOC: 640) 1 arquivo (LOC: 34)

DAO 13 arquivos (LOC: 6222) 2 arquivos (LOC: 480)

Controladores (MVC)

4 arquivos (LOC: 2100) 1 arquivo (LOC: 2100) LOC: 179

Regras Especí- ficas

LOC: 490 4 arquivos (LOC: 928) LOC: 320

Interface LOC: 2520 LOC: 2078 LOC: 226

Detalhes de In- terface

LOC: 830 LOC: 630 LOC: 150

Especificidades das Platafor- mas

Controle de Sessão (LOC: 45) Pagamento (LOC: 133) Activity/ViewController 9 (LOC:3600) Adapters 2 (LOC: 150) Mapeamento (LOC: 65) Projetor (LOC: 817)

O restante do sistema é composto de Regras Específicas e Detalhes de Interface

2 POJO é uma sigla comumente utilizada pela comunidade Java, para se referir a uma classe que tem

apenas propriedades, funções de acesso (getters e setters) e construtores, sem regras de negócio mais complexas.

com o usuário. Na Tabela 7, as Regras Especificas são responsáveis por adequar o sistema ao modelo de negócio seguido pela empresa, como parcelamento para compras acima de determinado valor. Já os Detalhes de Interface são códigos usados para adequar a interface a identidade visual da organização. Esses dois elementos representam cerca de 21% do sistema desenvolvido, os detalhes desse cálculo são mostrados na Tabela 8.

A Tabela8apresenta o total de linhas de códigos comuns (coluna “Comum (LOC)”) ao domínio e linhas com regras específicas de negócio (coluna “Específico (LOC)”). Nessa tabela, os elementos “Regras Específicas” e “Detalhes de Interface” (mostrados na Tabela 7) entram no cálculo das linhas de códigos específicos, o restante entra no cálculo dos códigos comuns ao domínio. A coluna Percentual da Tabela 8 representa a relação entre os códigos considerados específicos (“Específico (LOC)”) e o LOC restante do sistema (coluna “Comum (LOC)”). A diferença no número de LOC entre as plataformas (coluna “Comum (LOC)” e “Específico (LOC)”) representa a necessidade de diferentes funciona- lidades entre as plataformas. A plataforma web contém um número maior de funcionali- dades, mostrando a importância da distribuição de funcionalidades provido pelo modelo de deploy da abordagem. Outra informação importante mostrada na Tabela 8 é o LOC comum (coluna “Comum (LOC)”) para o domínio de comércio eletrônico, muitas vezes feito de forma manual. A última linha da tabela mostra o percentual médio de LOC es- pecífico (média simples entre os valores da coluna “Percentual”) usado para desenvolver o sistema multiplataforma, considerando todas as plataformas.

Tabela 8 – LOC total representando o código comum e específico no domínio de comércio eletrônico.

LOC Versão Web Versão Móvel Versão RA

Comum (LOC) 13720 8898 1321

Específico (LOC) 1320 1558 470

Percentual 9,60% 17,50% 35,50%

Média Geral 21%

As técnicas de geração de código e desenvolvimento de software dirigido por mo- delos (DSDM) ajudam a reduzir esse esforço que é comum dentro do domínio e dentro de uma mesma plataforma. No entanto, para esta tese é interessante analisar também a quantidade de esforço comum entre as diferentes plataformas, pois esta é uma das contri- buições desta tese.

Como neste caso as versões web, móvel e RA utilizam linguagens diferentes (HTML, CSS, JavaScript, Java, Swift e C#), não existem linhas de código (LOC) que são exa- tamente as mesmas para todas as plataformas. Mas existe similaridade no código. Por exemplo, existe uma versão diferente da entidade Product nas três plataformas. Essas versões são diferentes do ponto de vista sintático, mas do ponto de vista conceitual elas são similares.

Para verificar essa similaridade, foi feita outra análise manual do código desenvol- vido, em busca das classes comuns entre as plataformas. A Tabela 9 resume o resultado dessa análise, apresentando o número de LOC que possuem um correspondente similar em outra plataforma.

Tabela 9 – Análise das linhas de código em comum nas diferentes classes.

Plataformas LOC Classes comuns

Web e móveis 3658 Order, Product, User, OrderFinalized, OrderDAO, Pro- ductDAO, UserDAO, OrderFinalizedDAO

Web and RA 643 Product, ProductDAO

Móveis e RA 1139 Product, ProductDAO, TCPUser e TCPServer Web, móveis e RA 924 Product, ProductDAO

Foi constatado que as classes Order, Product, User e OrderFinalized e suas respectivas classes DAO são conceitos usados nas plataformas web e móveis (Android e iOS). Isso significa que, apesar das diferenças sintáticas, trata-se da mesma classe. Esse foi o ponto de partida da abordagem desenvolvida: conceber uma maneira de possibili- tar que o desenvolvedor trate-a de fato como como uma única classe. Para comprovar essa contribuição, essas classes foram incluídas no estudo da próxima seção, assim como outras classes e funções importantes para uma análise consistente das contribuições da abordagem.