• No results found

4. Hvordan bør kompensasjonen gis?

4.9 Departementets vurdering

Um Software Development Kit (SDK) representa um conjunto de ferramentas de

desenvolvimento com uma estrutura bem definida, e permite o desenvolvimento de software para um determinado sistema operativo, consola, dispositivo móvel, ou qualquer outra plataforma similar. Um SDK, normalmente, tem um IDE (Integrated Development Environment) associado que ajuda os programadores no desenvolvimento de software com maior qualidade dado que inclui funcionalidades como debug e validação sintática e semântica em tempo de desenvolvimento. As ferramentas incluídas num SDK devem ser suficientes para permitir criar, depurar, manter, testar e suportar as aplicações desenvolvidas.

São, normalmente, produtos de software extremamente robustos e escaláveis compostos por diferentes camadas de abstração. O número de camadas e a sua divisão depende muito do contexto de desenvolvimento e do tipo de SDK. Tipicamente, existe uma camada de baixo nível que funciona como elemento de ligação a diversos ambientes (p.e. base de dados), uma camada responsável por conter todas as bibliotecas passíveis de serem utilizadas pelo mesmo (p.e. JFace e SWT) e uma camada responsável por lidar com os eventos do utilizador e produzir as respostas adequadas [20].

A maior parte das empresas disponibilizam os SDK’s de forma totalmente gratuita, já que o grande objetivo é conseguir que programadores externos desenvolvam aplicações com qualidade de forma a enriquecer a plataforma (p.e. Google PlayStore). Tendo em conta que

Integração de Aplicações de Terceiros

todos os SDK’s são diferentes, é importante garantir um repositório de documentação alargado, bem como uma linguagem/metodologia de fácil aprendizagem e utilização.

Com o aparecimento dos smartphones (Android e iPhone), houve a necessidade de criar uma comunidade de utilizadores de forma a que estes pudessem colmatar as suas necessidades da melhor forma possível e partilhar essas soluções com o mundo. Esta proliferação de aplicações e a sua consequente necessidade de distribuição levou à definição de novos modelos de negócio materializados no conceito de loja online, como por exemplo, os mercados aplicacionais da Apple (AppStore) e da Google (PlayStore) [17]. Ambas as entidades, disponibilizaram um SDK que possibilita o desenvolvimento de aplicações que, para além de potenciar o crescimento da comunidade, representa uma grande parte dos seus lucros. A AppStore, por exemplo, iniciou a sua atividade em Julho de 2008 e em Janeiro de 2011 atingiu a marca de 10 biliões de aplicações descarregadas. Durante este período de tempo houve inúmeras aplicações a surgir diariamente e muitas se afirmaram como necessárias, fazendo agora parte do nosso quotidiano. A loja da Apple, é reconhecida e disponibilizada em todo o mundo e a luta para o desenvolvimento de um aplicação inovadora e com sucesso é tanta que no ano 2010 a Apple arrecadou cerca de 250 milhões de dólares com o seu mercado virtual. A Google é outro caso de sucesso, com 300 milhões de dispositivos ativos e mais de 450 000 aplicações disponíveis [17].

Estes números continuam a crescer e a procura de aplicações para satisfazer as necessidades diárias é cada vez maior, o que leva a que muitas empresas se especializem no ramo do desenvolvimento de aplicações para dispositivos móveis.

No caso da Apple e da Google, é necessário garantir que os utilizadores têm acesso a uma ferramenta de desenvolvimento com uma linguagem definida (quando se refere a linguagem, entende-se também padrões de desenvolvimento, como por exemplo o Model-View-Controller) com uma arquitetura bastante robusta, onde todos os testes e desenvolvimentos podem ser executados através de emuladores. O resultado destas ferramentas de desenvolvimento são pacotes de software como jogos ou aplicações que, depois de validados, são integrados no mercado e disponibilizados a todos os utilizadores de forma gratuita ou não. É neste casos que os SDK’s se afirmam em relação às restantes abordagens como a grande opção de desenvolvimento de aplicações por parte de terceiros.

Integração de Aplicações de Terceiros

30

Desenvolvimento baseado em Plug-Ins

Por último, existe também a possibilidade de o desenvolvimento das aplicações ser feito com base em plug-ins, ou seja, os programadores desenvolvem software para adicionar funções muito especificas a uma determinada plataforma. Os plug-ins são normalmente pacotes de software pequenos e leves a nível computacional que são escolhidos e instalados pelos utilizadores de forma a colmatar as suas necessidades e, normalmente, não requerem qualquer tarefa de configuração [21].

Quando uma plataforma suporta o desenvolvimento baseado em plug-ins (host/core

application), esta fornece os serviços que podem ser utilizados pelo plug-in e garante um mecanismo de gestão dos mesmos (Figura 23). Assim, um plug-in não é um componente isolado e o seu ciclo de vida depende, inteiramente, da host application [21].

Figura 23 – Visão Geral de uma Arquitetura Orientada a Plug-Ins

Algumas das razões, mais fortes, que impulsionam o desenvolvimento de uma arquitetura com suporte ao desenvolvimento de plug-ins são [22]:

 A possibilidade de programadores externos aumentarem as funcionalidades da aplicação;

 Possibilidade de os programadores internos adicionarem funcionalidades ao core aplicacional sem comprometer a plataforma já existente;

 Fácil adição de funcionalidades e alta escalabilidade (facilidade de evolução);

 Separar o core aplicacional de funcionalidades extra (diminuir o tamanho da aplicação).

Integração de Aplicações de Terceiros

O desenvolvimento baseado em plug-ins é uma abordagem bastante comum no mundo da informática. Foi utilizada pela primeira vez num editor de texto (EDT) e, atualmente, é utilizada para as mais variadas operações (p.e. programas de edição gráfica, como o Photoshop, utilizam plug-ins para suportar novos tipos de imagens e os browsers utilizam plug-ins para disponibilizar novas funcionalidades aos seus utilizadores).

O Eclipse (IDE desenvolvido em Java) é uns dos mais interessantes casos de sucesso quando se pensa no ramo de desenvolvimento baseado em plug-ins. Devido a um grande número de programadores, o Eclipse oferece uma extensa biblioteca de plug-ins e suporta uma grande variedade de linguagens de programação [23]. Devido a esta flexibilidade, e tendo em conta o sucesso e crescimento atingido a nível mundial, o Eclipse será utilizado como objeto de estudo de forma a serem entendidos os seus componentes e conceitos principais.

O principais componentes da arquitetura do Eclipse são o workbench e o workspace. O workbench é a entidade responsável pela interface gráfica da ferramenta e pela gestão das janelas [24]. O workspace funciona como um sistema de ficheiros responsável por criar, guardar e editar ficheiros, diretórios e projetos (Figura 24) [23].

Os plug-ins, no contexto do Eclipse, são programas que são carregados e conectados através de pontos de extensão (extension points) e expõem as funcionalidades do sistema [24]. É possível que plug-ins distintos se conectem entre si para aumentar o leque de funcionalidades. (Figura 24) [21].

Figura 24 – Visão Geral da Arquitetura do Eclipse [20]

Integração de Aplicações de Terceiros

32

poucos ou nenhuns conhecimentos técnicos conseguissem desenvolver um web site funcional e apelativo com os conteúdos desejados. Existem na web diversas abordagens e soluções para o fazer, cada uma delas com as suas vantagens e desvantagens. Uma das formas de desenvolvimento que surgiu nesse contexto, foi o desenvolvimento baseado em plug-ins e associado a Content Management Systems (CMS) (p.e. Wordpress, Joomla e DotNetNuke) [25] [26].

O uso de CMS’s traz grandes vantagens pois permite a criação rápida e eficaz de um web site completamente funcional. Os CMS’s possibilitam a fácil alteração de conteúdos, garantem um nível de segurança relativamente elevado e disponibilizam, no seu core, funcionalidades base muito utilizadas (p.e. sistema de gestão de mensagens e de utilizadores). São os chamados sistemas “easy to use, hard to master” [25]. Em contrapartida, os CMS’s, são sistema pesados que necessitam de bastantes recursos a nível de hardware e constantes upgrades ao nível de software [27].

O desenvolvimento de plug-ins enquadra-se no contexto do desenvolvimento de CMS’s, pois

estes permitem acrescentar funcionalidades ao sistema base de forma a melhor corresponder às necessidades dos utilizadores [27].

O Joomla!, em consistência com o Wordpress, é um dos CMS’s mais conhecidos e mais utilizados a nível mundial, sendo constituído por dois conjuntos de librarias base: o primeiro conjunto são as librarias mantidas por programadores do Joomla; o segundo são as librarias mantidas por programadores externos (Third Party Developers). No topo das librarias base do CMS existe uma camada de abstração, responsável por fazer a ponte entre os plug-ins desenvolvidos (por terceiros ou até mesmo pelos próprios programadores do Joomla) e as librarias acima apresentadas (Figura 25) [28].

Figura 25 – Arquitetura Geral da Plataforma Joomla [28]

O desenvolvimento baseado em plug-ins garante a extensibilidade da aplicação (constante desenvolvimento de novas funcionalidades), permite o desenvolvimento em paralelo (os plug-

Integração de Aplicações de Terceiros

ins são componentes isolados) e, pelo facto de um plug-in normalmente representar uma funcionalidade específica, o seu desenvolvimento é focado não existindo over-development [25]. Apesar de ser uma abordagem extremamente flexível e que garante um alto nível de escalabilidade é, de todas as abordagens apresentas, aquela que possivelmente traz mais complexidade e riscos associados. A complexidade deste tipo de aplicação cresce exponencialmente com o número de plug-ins desenvolvidos e, com isso, aumenta a dificuldade de gestão e probabilidade de conflitos entre os mesmos. Uma das dificuldades associadas a este tipo de abordagem é a de garantir a gestão e compatibilidade entre diferentes versões do mesmo plug-in [22].

É ainda necessário que exista um mecanismo que valide o conteúdo dos plug-ins

desenvolvidos, para que estes não interfiram no bom funcionamento do core aplicacional e um mecanismo que garanta a integração dos mesmos com o core aplicacional.

Avaliação das Possibilidades

5 Avaliação das Possibilidades

Derivado do estudo previamente efetuado e no sentido de identificar quais as abordagens mais utilizadas de forma a permitir o desenvolvimento de Third Party Applications, é necessário avaliar e mapear estas abordagens no contexto aplicacional e arquitetural da plataforma Vortal Next>. Por cada abordagem, é avaliado o seu impacto na arquitetura atual e a facilidade de desenvolvimento quer na perspetiva do utilizador final quer na perspectiva da complexidade da solução. Questões relacionadas com a performance e interoperabilidade da solução serão também avaliadas e, por último, será avaliada a abordagem a nível de time-to-market e vantagem competitiva para o negócio atual da Vortal.