Desenvolvimento de Serviços de Publicação de Anúncios Publicitários na Ad8biz - PDF
Desenvolvimento de Serviços de Publicação de Anúncios Publicitários na Ad8biz
Download "Desenvolvimento de Serviços de Publicação de Anúncios Publicitários na Ad8biz"
Manoela Quintanilha da Rocha
1 Desenvolvimento de Serviços de Publicação de Anúncios Publicitários na Ad8biz Roberto André Ferraz de Jesus (Licenciado) Relatório de Estágio Submetido à Universidade da Madeira para a Obtenção do Grau de Mestre em Engenharia Informática Funchal Portugal Junho 2014
3 Orientador: Eduardo Leopoldo Fermé, PhD Professor Associado do C.C. de Ciências Exactas e da Engenharia da Universidade da Madeira Orientador Externo: Hugo Alexandre Teixeira Marques, MsC Diretor de Produção na empresa ad8biz, Ad Infinitum Business S.A. Júri: Karolina Baras, PhD Professora Auxiliar do C.C. de Ciências Exactas e da Engenharia da Universidade da Madeira Leonel Domingos Telo Nóbrega, PhD Professor Auxiliar do C.C. de Ciências Exactas e da Engenharia da Universidade da Madeira Eduardo Leopoldo Fermé, PhD Professor Associado do C.C. de Ciências Exactas e da Engenharia da Universidade da Madeira iii
5 ABSTRACT This report aims to present the project developed and the lived experience during the internship which allowed me to finish the Master in Computer Engineering at University of Madeira. The main purpose was to work on my expertise areas in order to merge theoretical and practical knowledge into a useful tool for professional environments. During this internship, a project of ads serving services was developed for the purpose of implement online advertisement on ad8biz websites. This project approaches advertising methods and techniques as well as a possible implementation making use of Reverse Engineering. While conducting this project, it was also approached areas such as Software Engineering and Project Management due to relevant aspects related to programming best practices, software development methodologies, renegotiation of requirements, and management tasks. v
7 KEYWORDS Software Engineering Project Management Online Advertising Ads vii
9 RESUMO Este relatório pretende apresentar tanto o projeto desenvolvido assim como a experiência vivenciada durante a realização do estágio curricular de conclusão de curso do Mestrado em Engenharia Informática, da Universidade da Madeira. O objetivo de principal foi de desenvolver as minhas áreas de conhecimento, de forma a torna-las em ferramentas úteis para o âmbito profissional. Durante este estágio, foi desenvolvido um projeto de veiculação de anúncios publicitários para toda a rede da empresa ad8biz. Este projeto aborda métodos e técnicas publicitárias assim como, através de Engenharia Reversa, uma possível implementação. Na realização deste projeto foram também abordadas áreas como a Engenharia de Software e Gestão de Projetos, pois foram considerados aspetos relacionados com boas práticas e metodologias de desenvolvimento de software, renegociação de requisitos, e gestão de tarefas. ix
11 PALAVRAS-CHAVE Engenharia de Software Gestão de Projeto Publicidade Online Anúncios xi
13 xiii Aos meus pais.
15 AGRADECIMENTOS A execução deste projeto foi bem-sucedida graças à contribuição de um vasto grupo de pessoas que, direta ou indiretamente, influenciaram positivamente tanto nas minhas decisões como no meu crescimento e desenvolvimento. Exprimo assim os meus sinceros agradecimentos a todos vós. Um especial agradecimento ao meu orientador Professor Doutor Eduardo Fermé e ao Professor Doutor Leonel Nóbrega, pois foram duas pessoas que acreditaram na mais-valia do estágio curricular e, assim, garantiram que este fosse realizado contribuindo também com precioso apoio ao longo deste percurso. Ao Mestre Hugo Marques, Diretor de Produção da ad8biz, que sempre me acompanhou, e através da sua experiencia guiou-me no melhor sentido, principalmente, no tomar decisões. À empresa ad8biz por concordar com a realização deste estágio, e aos seus colaboradores, nomeadamente, ao Paulo Caldeira, Fábio Menezes e Vítor Nóbrega. Estes, com distinção, através da partilha de experiencias, momentos, discussões, contribuíram ativamente no projeto apoiando-me sempre no meu trabalho. Agradeço a todos os meus colegas de curso e amigos, pois estes garantem o equilíbrio emocional que tem um papel tão importante no dia-a-dia. E, para finalizar, o meu maior agradecimento aos meus pais e namorada pela paciência demonstrada e por garantirem sempre o foco neste projeto, tornando real a concretização dos meus objetivos. xv
17 ÍNDICE I. Introdução 1 Apresentação... 2 Contexto do Estágio... 3 Contexto Institucional... 5 I.3.1. Descrição da Empresa... 5 I.3.2. Localização... 6 I.3.3. Estrutura interna e Organigrama... 7 Problemática Contextual... 9 I.4.1. Portal 8xbiz... 9 I.4.2. WESHHA... 9 I.4.3. GESTPUB Um Gestor de Publicidade para a ad8biz II. Estado da Arte 13 Metodologia de trabalho e ferramentas de apoio II.1.1. Metodologias Ágeis II.1.2. As 5 dimensões de um projeto de software II.1.3. Ferramentas de relatório de erros e gestão de projeto II.1.4. Sistema de controlo de versões Publicidade Online Métodos, Técnicas e Fundamentos II.2.1. Métodos e Técnicas de apresentação II.2.2. Modelos de Compensação II.2.3. Benefícios e Preocupações Serviços publicitários existentes II.3.1. Google AdWords II.3.2. BuySellAds O distribuidor de anúncios publicitários II.4.1. Como funciona um serviço distribuidor de anúncios de terceiros II.4.2. Tecnologias para implementação Conclusões III. Desenvolvimento do sistema 31 Requisitos III.1.1. Requisitos Funcionais III.1.2. Requisitos Não-funcionais xvii
18 Casos de utilização III.2.1. Caso de Utilização da aplicação de gestão de anúncios III.2.2. Caso de Utilização do sistema de apresentação de anúncios Arquitetura Diagrama entidade-relação Interface do utilizador III.5.1. Interface de apresentação de anúncios III.5.2. Interface de administração do Gestor de Publicidade III.5.3. Interface de contratação de anúncios IV. Implementação 50 Tecnologias utilizadas IV.1.1. PHP, Apache HTTP Server e MySQL IV.1.2. Yii Framework IV.1.3. JavaScript e jquery IV.1.4. NivoSlider Funcionalidades implementadas IV.2.1. Requisitos não implementados IV.2.2. Requisitos implementados parcialmente IV.2.3. Requisitos implementados em pleno IV.2.4. Descrição técnica do Dispatcher implementado Software Testing IV.3.1. Test-Driven Development (TDD) IV.3.2. Testes de Usabilidade Conclusão V. Outros projetos 63 Trabalhos realizados no Projeto WESHHA e Portal 8xbiz VI. Conclusão e trabalho futuro 66 Apreciação crítica do projeto desenvolvido Perspetivas futuras Considerações pessoais do estágio VII. Referências 76 Anexos 81 Anexo A Organigrama geral da ad8biz Anexo B Diagramas entidade-relação Anexo C - Tabela comparativa de frameworks Anexo D Documentação da carga de produtos xviii
19 ÍNDICE DE FIGURAS Figura 1 - Logotipo da empresa ad8biz... 6 Figura 2 - Entrada da sede da empresa... 7 Figura 3 - Organigrama simplificado da ad8biz... 8 Figura 4 - Logotipo 8xbiz... 9 Figura 5 - Logotipo WESHHA Figura 6 - As 5 dimensões de um projeto de software [11] Figura 7 - Exemplo de diagrama de flexibilidade Figura 8 - Diagrama de Flexibilidade do gestor de publicidade GESTPUB Figura 9 - Receitas relevantes à publicidade online em 2011 e 2012 [20] Figura 10 - Top de benefícios da publicidade online vs. offline [23] Figura 11 - Diagrama de comunicação de um serviço distribuidor de anúncios de terceiros. Adaptado de [29] Figura 12 - Diagrama de casos de utilização da aplicação de gestão de anúncios Figura 13 - Diagrama de casos de utilização do sistema de apresentação de anúncios Figura 14 - Diagrama de dependências do padrão Lookup [34] Figura 15 - Diagrama de sequência das interações entre os participantes na arquitetura do servidor de anúncios Figura 16 Diagrama de comunicação do utilizador com o sistema de apresentação de publicidade GESTPUB. Adaptado de [29] Figura 17 - Estilo arquitetural MVC, presente na arquitetura da Yii Framework [36] Figura 18 - Diagrama Entidade-Relação versão Figura 19 - Interface de apresentação de anúncios - megabanner Figura 20 - Mockup do Gestor de Publicidade Figura 21 - Ecrã de listagem de anúncios Figura 22 - Interface de contratação de publicidade Figura 23 - Ecrã de contratação de publicidade Figura 24 - Exemplo de um carrossel com NivoSlider Figura 25 - Diagrama de flexibilidade após renegociação de prioridades Figura 26 - Taxa de cliques em banners do tipo carrossel com rotação automática. Adaptado de [53] Figura 27 - Organigrama geral da empresa ad8biz Figura 28 - Diagrama Entidade-Relação versão Figura 29 - Diagrama Entidade-Relação versão Figura 30 - Tabela comparativa de frameworks PHP xix
20 ACRÓNIMOS API - Application Programming Interface CMS Content Management System CPA - Cost per Action CPC - Cost per Click CPM - Cost per Mille / Cost per thousand impressions CRM - Customer Relationship Management CSS Cascading Style Sheets CV Curriculum Vitae CVS Concurrent Version System DOM - Document Object Model DVCSs - Distributed Version Control Systems ecpm - effective Cost per Mille / effective Cost per thousand impressions HTML - HyperText Markup Language HTTP HyperText Transfer Protocol I18N Internacionalização JS JavaScript L10N Localização MVP Minimum Viable Product PHP - Hypertext Preprocessor PM Project Manager px Pixéis SMS Short Message Service (Mensagem de Texto) SSo Single Sign-on SVN Apache Subversion TIC Tecnologias de Informação e Comunicação URL - Uniform Resource Locator xx
21 I. INTRODUÇÃO How long before a fool can no longer afford to pay for his foolishness? Autor Desconhecido 1
22 APRESENTAÇÃO O relatório que se segue é apresentado no âmbito da conclusão do 2º Ciclo, nomeadamente do Mestrado em Engenharia Informática, na Universidade da Madeira. Este é então fruto de um projeto desenvolvido na empresa ad8biz (ad infinitum bussiness) onde valorizo a experiência de trabalho adquirida, pois foi sem dúvida uma mais-valia para a minha carreira profissional. É da responsabilidade de cada um procurar desenvolver a sua área de conhecimento, de forma a tornar-se um profissional especializado. E numa área onde a evolução é de tal forma descontrolada, a aprendizagem torna-se extremamente especializada devido ao conhecimento estar cada vez mais fragmentado, observa Japiassu [1]. Em seguimento desta observação tomei a liberdade de satisfazer as minhas necessidades de desenvolver e expandir ainda mais o meu conhecimento e experiência profissional. Esta experiência vem trabalhar o que é considerado os pontos mais fracos do ambiente académico, nomeadamente capacidades de trabalho em equipa para um todo comum e consolidação das partes do conhecimento fragmentado de forma a tornar possível o desenvolvimento da carreira profissional [2]. 2
23 CONTEXTO DO ESTÁGIO O estágio curricular, previsto pelo plano de estudos do Mestrado em Engenharia Informática na Unidade Curricular Dissertação, Trabalho de Projeto ou Estágio, surge na tentativa de contextualizar o conhecimento e experiência académica adquirida em uma ferramenta que possibilite materializar a um nível profissional e não apenas meramente académico. Segundo Roesch [3], o conhecimento é algo que se constrói e o aluno, ao levantar situações problemáticas nas organizações, propor sistemas (soluções), avaliar planos ou programas, bem como testar modelos e instrumentos, está também ajudando a construir conhecimento. Assim surgiu a necessidade de procurar um estágio, visto que a Universidade da Madeira aparenta não possuir uma rede de contactos que facilite a incubação dos seus alunos noutro ambiente que não o académico, desta feita, apenas foi-nos proposto Trabalhos de Projeto e temas de Dissertação. Estes últimos não eram definitivamente a minha opção tendo em conta as vantagens que o estágio curricular apresenta. Após algum tempo de procura, surge a oportunidade para uma experiência profissional por parte de uma empresa sediada no Funchal, onde sugeri então a realização deste estágio. Esta sugestão foi bem aceite pela administração da respetiva empresa e foi-me dada então a possibilidade de incorporar num ambiente de desenvolvimento profissional e colaborativo. Durante o período de participação na empresa ad8biz como membro estagiário, proporcionou-me viver diversas situações reais do quotidiano da organização em questão como por exemplo [4]: 3
24 Uma oportunidade para refletir, sistematizar e testar conhecimentos teóricos e instrumentos/ferramentas discutidos(as) durante o curso; Complementar e confrontar matéria teórica com a realidade, podendo confirmar pensamentos e hipóteses, resolver paradigmas e sofisticar conhecimentos; Afirmar a minha inclinação para determinada área diante das possibilidades apresentadas pela Engenharia Informática; Experimentar uma outra aprendizagem fora do ambiente académico; Avaliar o mercado de trabalho; Dar início a uma rede de contactos e relacionamentos profissionais que será importante no mercado de trabalho; Ampliar a minha visão acerca do mundo profissional, nomeadamente no desenvolvimento de software em âmbito empresarial. Apoiado na investigação realizada por Vieira, Caires e J. Coimbra que veio reforçar a pertinência dos estágios como uma via de articulação entre o espaço formativo e o espaço profissional, o qual, a par de promover o desenvolvimento vocacional dos estudantes, potencia o sucesso na transição para trabalho [5], torna-se claro que esta opção foi tomada com objetivo de preparação e aproximação ao mercado e mundo do trabalho numa época em que a situação económica não é de certa forma a mais confortável. 4
25 CONTEXTO INSTITUCIONAL A organização selecionada para a realização deste estágio, como abordado previamente, surge através de uma oferta de emprego onde sugeri para uma primeira fase a realização do estágio curricular e posteriormente, caso fosse minha vontade e da direção, continuar como trabalhador a contrato na respetiva empresa. Na verdade, entre diversas organizações contactadas a nível nacional e europeu, esta foi a única que não mostrou desinteresse por aceitar um funcionário estagiário. A necessidade espontânea de Engenheiros de Software e programadores residentes na Região Autónoma da Madeira (RAM) deverá ter sido o motivo pela qual a proposta sugerida foi bem aceite, não desvalorizando de qualquer forma outro princípio ou opinião de recrutamento da respetiva organização. A dificuldade para encontrar uma instituição que aceite integrar estagiários no ambiente profissional, deve-se segundo Cabral-Cardoso [2], a uma forte identificação com os valores e os interesses profissionais da comunidade científica por parte dos académicos em detrimento dos valores do mundo dos negócios. I.3.1. Descrição da Empresa A ad8biz, legalmente formalizada como Ad Infinitum Business, S.a., é uma empresa dedicada a várias atividades dentro do sector das TICs, especial- 5
26 mente da Web. Entre estas atividades, designadamente na sociedade de informação, redes e serviços de comunicações eletrónicas, destacam-se as seguintes [6]: Criação, gestão, manutenção e exploração de portais web; Ferramentas Publicitárias orientadas à Web; Software de gestão e exportação Web; Atividades de processamento de dados, domiciliação de informação e atividades relacionadas; Consultoria, estudos de mercado e sondagens de opinião; Figura 1 - Logotipo da empresa ad8biz I.3.2. Localização A ad8biz possui instalações tanto no Funchal como em Lisboa, porém a sua sede localiza-se no Funchal, especificamente, na Rua da Carreira Nº143. 6
27 Figura 2 - Entrada da sede da empresa Possuem ainda um segundo edifício, o Edifício do Jardim, localizado muito próximo à sede da empresa, a cerca de 50 metros de distância. I.3.3.Estrutura interna e Organigrama A estrutura interna da ad8biz está organizada nas seguintes direções: - Direção Administrativa e Financeira; - Direção de Produção; - Direção de Expansão; - Direção de Marketing; - Direção de Desenvolvimento de Produtos; Cabe à Direção Administrativa e Financeira a responsabilidade de planeamento e estratégia da ad8biz. A Direção de Desenvolvimento de Produtos trabalha na definição e especificação do conceito e, em paralelo com a Direção de Produção, desenvolvem um produto ou sistema. A Direção de Expansão e a Direção de Marketing têm como objetivos a aquisição de contactos, a relação com o cliente e estratégia de expansão da empresa. Cada Direção suporta determinados departamentos e são lideradas por um diretor, cada departamento é ainda dividido em pequenas equipas lideradas pelos seus team-leaders. Toda a comunicação entre equipas e departamentos é da 7
28 responsabilidade dos respetivos líderes, evitando assim que sejam adotadas medidas sem o conhecimento de um responsável. No total, a ad8biz conta atualmente com cerca de 150 colaboradores divididos entre os vários departamentos, de forma a possibilitar o desenvolvimento dos projetos e manter a sua atividade. A estrutura pode ser visualizada no seguinte organigrama: Figura 3 - Organigrama simplificado da ad8biz detalhe. No Anexo A é possível visualizar uma versão do organigrama com mais 8
29 PROBLEMÁTICA CONTEXTUAL I.4.1. Portal 8xbiz O portal 8xbiz pretende ser uma plataforma na World Wide Web, apresentando ao seu utilizador formas de pesquisa, consulta e comunicação do mais completo e abrangente possível em termos técnicos e de conteúdos. O 8xbiz nasce da ideia de negócios infinitos. Esta é a marca de um portal que assume a ambição de reunir e centralizar num mesmo espaço todas as áreas de negócio que atualmente se encontram dispersas por várias plataformas. O 8xbiz é, para as empresas, um portal onde para além de anunciarem os seus negócios, podem também construir um micro-site para divulgação de conteúdos, e obter acesso a ferramentas de gestão de publicidade, CRM e gestão operacional. Para o utilizador comum, o portal 8xbiz proporciona uma experiência de navegação intuitiva, uma pesquisa eficiente e uma oferta comercial ímpar no mesmo website, dividida por países, região, cidade e organizada em categorias. Figura 4 - Logotipo 8xbiz I.4.2.WESHHA O WESHHA é uma plataforma de rede social e profissional associada ao portal 8xbiz. É onde os utilizadores do portal se registam e guardam as suas informações e preferências, listas de compras, registos de transações, etc. 9
30 Também é onde as empresas e profissionais carregam os seus novos websites de negócio e gerem as atividades, graças à ferramenta ad8tools software de Gestão Operacional e Financeira. O WESHHA é então o instrumento que permite a todos os utilizadores do portal 8xbiz recomendar ou deixar testemunhos sobre os produtos e serviços que se encontram listados no portal. Mas, não é apenas um sistema de Single Sign-on 1 para o portal 8xbiz, o WESHHA é também uma plataforma que pretende avaliar as capacidades dos seus utilizadores. Um Curriculum Vitae (CV) passa a ter uma dimensão quantitativa, isto é, os CVs são classificados automaticamente com base num sistema numérico que permite uma pesquisa comparativa entre indivíduos com características semelhantes e/ou candidatos para a mesma posição. Desta forma, a triagem de currículos passa a ser mais fácil, pois em vez da leitura dos descritivos de experiências profissionais e académicas dos candidatos, o paradigma é alterado para uma análise quantitativa baseada num sistema de matching, que promove eficiência e objetividade, poupando tempo e recursos às organizações. Figura 5 - Logotipo WESHHA I.4.3.GESTPUB Um Gestor de Publicidade para a ad8biz O GESTPUB, projeto do qual fiquei encarregado como líder de equipa, caracteriza-se por uma plataforma de automatização de contratação de publicidade para todas as soluções Web oferecidas pela empresa ad8biz. Pretende-se que esta 1 Single Sign-on (SSo) é uma propriedade de controlo de acesso para múltiplos sistemas de software, que apesar de independentes, estão relacionados entre si. O conceito é de um utilizador necessitar apenas de uma autenticação para aceder a uma série de sistemas relacionados, evitando assim processos de autenticação exclusivos para cada sistema. 10
31 solução seja baseada em tecnologias open-source e, só em caso excecional, eventualmente em algumas soluções comerciais. A plataforma desenvolvida será integrada através de uma ferramenta na área de administração disponível para todos os utilizadores da plataforma 8xbiz e WESHHA, tornando possível a contratação e gestão de campanhas publicitárias. Esta será então uma aplicação centralizada com acesso ao portal 8xbiz, a todos os micro-sites e ainda à rede social/profissional em desenvolvimento pela ad8biz. Num estágio de desenvolvimento futuro, pretende-se também que o GES- TPUB aceda e interaja com aplicações móveis, pois o desenvolvimento de sistemas e aplicações móveis é no momento uma prioridade devido à sua forte influência e importância no mercado. Esta plataforma funcionará como um sistema independente às outras soluções Web da empresa, à qual estará associado um domínio próprio. Pretendese ainda que a presente ferramenta atinja os seguintes objetivos e funcionalidades: Gerir a publicação independente de anúncios em banners (blocos publicitários) de uma certa posição, e em vários websites; Administrar a publicidade de um portal de vendas Web; Gerir conteúdo por área de mercado e região geográfica; Gerir publicidade de micro-sites (sites independentes com categorias distintas de publicidade); Possibilitar a inserção de conteúdos e campanhas multi-idioma; Suportar diferentes tipos de utilizadores com respetivas permissões de acesso distintas; 11
32 Gerir publicidade em várias aplicações e soluções da ad8biz, incluindo aplicações móveis; Integração com plataforma de pagamentos online da ad8biz; Possuir uma interface de administração que ofereça controlo de toda a plataforma GESTPUB; Desta forma, é possível através da plataforma de gestão de publicidade GESTPUB, oferecer não só aos utilizadores das soluções ad8biz mas também à própria equipa da ad8biz, uma ferramenta robusta para administração das respetivas campanhas e blocos publicitários. 12
33 II. ESTADO DA ARTE I find that a great part of the information I have was acquired by looking something up and finding something else on the way. Franklin P. Adams 13
34 METODOLOGIA DE TRABALHO E FERRAMENTAS DE APOIO Como boas práticas de desenvolvimento de Software, a este projeto foi devotado um processo de desenvolvimento de software com objetivo de obter melhores resultados em termos de custos, qualidade do software e cumprimento de deadlines [7]. Assim, através de alguma pesquisa e do conhecimento adquirido em outras disciplinas do plano curricular, foi tentado perceber qual a metodologia adequada ao projeto e à equipa [8]. No entanto, apesar deste contributo, o Diretor de Produção era ainda quem detinha o poder de decisão final. II.1.1. Metodologias Ágeis As metodologias ágeis aparecem no sentido de melhorar a qualidade de software sugerindo uma mudança nas então metodologias tradicionais e modelos clássicos de desenvolvimento de software. Estas reforçam a importância dos indivíduos e iterações ao invés de processos, favorece o software executável em vez da documentação, colaboração com o cliente ao invés da negociação de contratos, e respostas rápidas a mudanças ao contrário do seguimento de planos [7]. Como tal, uma metodologia para ser realmente considerada, deve aceitar a mudança ao invés de tentar prever o futuro. A mudança em si nem é o problema, até porque esta ocorrerá de qualquer forma. O desafio é mesmo como receber, avaliar e responder às mudanças, sendo este o verdadeiro problema. Por exemplo, as aplicações orientadas à Web são com certeza melhor modeladas usando metodologias ágeis, uma vez que o ambiente Web é muito dinâmico [7]. No caso de uma metodologia clássica, Pressman estima que uma alteração na fase dos requisitos tem como custo 1x, enquanto na fase de implementação esta terá um custo de 60x a 100x superior [7, 9]. Logo, como a ad8biz atua na Web, num ambiente de desenvolvimento dinâmico onde as mudanças podem ser constantes, as metodologias tradicionais 14
35 orientadas à documentação não são tão adequadas quanto as metodologias ágeis [7]. Mas por pensarmos ser o mais adequado não invalida que um método clássico por qualquer questão não seja, afinal de contas, o mais eficaz [8]. Foi então que baseado nos princípios base das metodologias ágeis, elaborou-se uma planificação de projeto favorecendo os seguintes pontos: Iteração de ciclos de desenvolvimento; Resultados através de versões executáveis; Reuniões de progresso (diárias) avaliação das tarefas do dia anterior e delineação das tarefas para esse dia. Reuniões de coordenação (semanais) discussão e apresentação dos resultados da semana anterior, coordenação do trabalho e planificação dos trabalhos da semana subsequente; Além destes, outros pontos como calendarização, documentação e até mesmo a elaboração de um plano sólido (comum em metodologias clássicas) foram tidos em consideração mas com menos importância. II.1.2.As 5 dimensões de um projeto de software A gestão de projetos mostra que cada projeto é executado e entregue sob certas restrições. Estas restrições são tradicionalmente o escopo, tempo e orçamento, e são úteis para escolher intencionalmente as tendências de um projeto, ou simplesmente analisar os seus objetivos [10]. Na gestão de projetos de software, existem então cinco dimensões a ter em conta: funcionalidade, qualidade, custo, tempo, e equipa (Figura 6). Estas dimensões não são independentes, e adquirem um dos seguintes papéis num dado projeto: restrição (constraint), controlador (driver), ou grau de liberdade (degree of freedom) [11]. 15
36 Figura 6 - As 5 dimensões de um projeto de software [11] A restrição é um fator limitador que não está sob controlo do líder de projeto. Por exemplo, quando um projeto é atribuído a uma equipa de tamanho fixo, a dimensão equipa é uma restrição. O controlador é o objetivo principal do projeto, é exemplo as aplicações de processamento de texto que são maioritariamente desenvolvidas com a funcionalidade como controlador. As outras dimensões que não são nem restrição nem controlador são automaticamente graus de liberdade, isto porque permitem que o líder de projeto ajuste estas dimensões de forma a atingir os objetivos globais do projeto [11]. Um aspeto importante deste modelo não é saber quais dimensões serão restrições, controladores ou graus de liberdade, mas sim a negociação antecipada das prioridades relativas de cada dimensão. Nem todas as cinco podem ser controlador nem restrição, este processo de negociação ajuda então a definir as regras e limites do projeto [11]. As dimensões são classificadas tendo em conta a flexibilidade que o líder de projeto tem sobre estas. Uma restrição não oferece qualquer flexibilidade ao líder de projeto, um controlador oferece pouca flexibilidade, já um grau de liberdade fornece flexibilidade suficiente para equilibrar com as restantes dimensões. Esta classificação é então feita numa escala de 0 a 10, em que 0 significa completamente restringido e 10 totalmente flexível. O resultado é representado grafica- 16
37 mente num diagrama de Kiviat, onde cada eixo representa o nível de flexibilidade que o líder de projeto tem sobre a dimensão a que corresponde, e por este último motivo, são chamados diagramas de flexibilidade (Figura 7 - Exemplo de diagrama de flexibilidade) [11]. Figura 7 - Exemplo de diagrama de flexibilidade A forma do polígono resultante fornece uma indicação visual dos aspetos importantes de cada projeto. E ao redefinir uma dimensão alterando o seu valor no eixo, obriga a um eventual ajuste compensatório das restantes dimensões, tudo tem o seu preço. Este modelo é particularmente interessante quando existem mudanças no âmbito do projeto, pois sendo árdua a tarefa de ajustamento das dimensões, faz com que a renegociação dos objetivos seja honesta resultando daí um plano de desenvolvimento realista. O certo é que nem todos os stakeholders ficarão contentes, no entanto têm que acordar porque quanto mais realista for o planeamento menos probabilidade de deceções futuras existirá [11]. É nesta sequência que, como líder de projeto, apresento o diagrama de flexibilidade do gestor de publicidade GESTPUB. Na Figura 8 - Diagrama de Flexibilidade do gestor de publicidade é possível observar que a única restrição era o tempo de entrega e que o custo era pouco flexível pois teríamos de utilizar sempre fer- 17
38 ramentas e tecnologias com poucos custos adicionais. Quanto ao resto, tinha liberdade em selecionar as funcionalidades assim como requisitar membros extra para a equipa em caso de muita necessidade. Figura 8 - Diagrama de Flexibilidade do gestor de publicidade GESTPUB Apesar de geralmente atendermos apenas às funcionalidades e datas de entrega, tudo tem o seu peso, e tanto os administradores como o departamento de marketing teriam que compreender que não podiam ter todas as funcionalidades, sem defeitos, a curto-prazo, barato, e com uma equipa reduzida. II.1.3. Ferramentas de relatório de erros e gestão de projeto As ferramentas de relatório de erros são ferramentas essenciais para o desenvolvimento e evolução de um projeto de software. Os benefícios que estas trazem, quando aplicadas corretamente ao projeto, são de tal forma vastos que estes se tornaram indispensáveis no desenvolvimento de software. Em suma, estes sistemas fornecem uma visão clara e centralizada do desenvolvimento (incluindo tanto bugs como melhorias). No ambiente profissional, são comummente usados para a criação de listas de prioridades (usualmente chamado de backlog) e relatórios de produtividade dos programadores na resolução de erros. As ferramentas de gestão de projetos são igualmente indispensáveis num ambiente corporativo onde o sucesso depende da qualidade do projeto. Estas 18
39 permitem que os project managers (PMs) e stakeholders (participantes no projeto) controlem aspetos como custos, gestão de orçamentos, tempo, gestão da qualidade e documentação. Podem ser usadas também como ferramenta de administração e trabalho colaborativo [12]. As ferramentas de relatório de erros são muitas vezes incorporadas nas ferramentas de gestão de projetos. Isto permite que a gestão de erros se aproxime do processo de desenvolvimento do projeto em geral. Um exemplo disso é o JIRA, uma ferramenta comercial de rastreio de erros e acompanhamento de questões (bug tracking e issue tracking), e também de gestão de projetos [13]. O JIRA foi a solução usada pelo Diretor de Produção da ad8biz para a gestão dos projetos. II.1.4. Sistema de controlo de versões Outra ferramenta essencial ao desenvolvimento de software, é o sistema de controlo de versões. Esta permite principalmente manter diferentes versões dos ficheiros, e desta forma, manter sempre versões estáveis como backup enquanto o programador trabalha numa cópia local (working copy). Esta permite ainda repartir um projeto em partes e, consequentemente, fornecer a cada programador um ambiente de desenvolvimento em paralelo. Das várias soluções tanto comerciais como open-source que existem no mercado, o Subversion (conhecido como SVN) desenvolvido pela Apache, foi a escolhida pela ad8biz. É uma solução eficaz apesar de, no momento, ser inferior quando comparada com outras soluções como Git e Mercurial, sendo estas últimas, soluções mais recentes conhecidas como DVCSs 2 [14, 15]. 2 Distributed Version Control Systems (DVCSs) Ao contrário dos sistemas centralizados (exemplo: SVN e CVS), onde existe um único repositório comum, estas atribuem um repositório local a cada utilizador permitindo assim commit mesmo em modo offline [15]. 19
40 PUBLICIDADE ONLINE MÉTODOS, TÉCNICAS E FUNDAMENTOS A rentabilização através da Publicidade Online é um dos pilares que suporta tanto o projeto WESHHA como o portal 8xbiz. Este pilar é, na prática, o gestor de publicidade da ad8biz (ou GESTPUB). Sendo assim, para o desenvolvimento do GESTPUB foi necessário adquirir conhecimento de publicidade online e de online marketing destacando-se aspetos como behavioral targeting, métodos de apresentação, modelos de compensação, benefícios e preocupações a ter em conta. II.2.1. Métodos e Técnicas de apresentação Os métodos e técnicas de apresentação são na realidade as formas de como o anúncio é entregue ao público-alvo. Existem cada vez mais diversas formas de o fazer online, mas apenas destaco as que foram consideradas realmente úteis e necessárias para o desenvolvimento do GESTPUB. Web Banner Advertising São anúncios baseados em imagens e conteúdo média. Este método possibilita aos anunciantes uma forma de baixo custo de anunciar os seus produtos e serviços em diversos websites, o que o torna numa das técnicas mais populares [16]. Mobile Advertising No sentido cru, é a apresentação de anúncios publicitários no telemóvel ou com o telemóvel. É usualmente associado ao marketing através de SMS s, mas com o crescimento dos smartphones está também presente nas aplicações móveis e webapps [17]. Pesquisa Patrocinada Refere-se aos anúncios que são identificados e apresentados dependendo de certas pesquisas e palavras-chave introduzidas pelo utilizador. É comum em websites com muito tráfego como por exemplo em motores de busca. 20
41 Anunciantes Diretos - É uma técnica onde os anunciantes normalmente comunicam diretamente com o dono ou gestor do website em questão. Por isto é uma técnica usada comumente por bloggers em pequenos nichos como blogs e páginas pessoais, pois garante maior rentabilização que outros métodos. [18]. Behavioral Targeting Esta técnica faz uso, geralmente autorizado, de informações colecionadas sobre o comportamento de navegação de um utilizador, tais como pesquisas efetuadas ou mesmo o histórico do navegador web, e desta forma selecionar quais os anúncios a mostrar para esse utilizador. Em poucas palavras, é normalmente usado para melhorar a influência da publicidade online, apontando os utilizadores mais relevantes para os anúncios que estão sendo apresentados e vice-versa [19]. No gráfico da Figura 9 é possível identificar os métodos que ofereceram maiores receitas em 2011 e 2012: Figura 9 - Receitas relevantes à publicidade online em 2011 e 2012 [20] É de salientar o crescimento das receitas em dispositivos móveis (Mobile) do ano 2011 para No entanto anúncios destinados às pesquisas são ainda o líder em receitas, ainda que esta percentagem não distinga a pesquisa em dispositivos fixos para dispositivos móveis [20]. Anúncios apresentados em forma de 21
42 banner, que por sua vez, foi o principal método adotado pela ad8biz para distribuição de anúncios, garantem ainda uma percentagem de receitas muito favorável aos seus anunciantes. II.2.2. Modelos de Compensação Os modelos de compensação são a forma como o anunciante pode ser cobrado pelos anúncios que publicita. Existem quatro modelos principais [21]: CPM (Cost per Mille) paga pelo número de visualizações, per mille significa por mil visualizações. CPC (Cost per Click) modelo mais comum e paga quando alguém clica no anúncio. CPA (Cost per Action) paga quando o clique efetuado no anúncio retorna em alguma compra real. Custo Fixo o anunciante paga um custo fixo para apresentação de anúncios, está geralmente limitado a um período de tempo. Apesar dos modelos mais utilizados no último ano pelos distribuidores de serviços publicitários terem sido o CPM e CPC [20], a estratégia da ad8biz passa pela aposta num modelo low cost baseado no modelo Custo Fixo. II.2.3.Benefícios e Preocupações Estes métodos e técnicas de publicitar online oferecem aos anunciantes outros benefícios que a publicidade tradicional não consegue. Em detalhe são apresentados alguns destes benefícios, considerados os mais relevantes: Medição - Uma vantagem da publicidade online é que o efeito das campanhas publicitárias pode ser medido de forma rápida e fácil, pois quando um visitante do website clica num anúncio, o resultado pode ser monitorizado instantaneamente [21]. 22
43 Formatação Os anúncios podem ser de um vasto tipo de formatações desde o tamanho (em pixéis) e conteúdo multimédia até anúncios que requerem a interação do utilizador como formulários ou mesmo pequenos jogos. Custo Este tipo de anúncio é geralmente muito mais barato que um anúncio tradicional, e além disso, oferece a possibilidade de se aproximar ao mercado mundial devido às vantagens que a própria Internet dispõe. Público-alvo Escolher o público-alvo para os anúncios é sem dúvida uma grande vantagem, isto permite apresentar o anúncio ao utilizador certo através da sua geolocalização, do seu comportamento ou do contexto [21]. Além destes benefícios, ainda se pode salientar a facilidade de lançar uma campanha online, existem atualmente recursos que tornam esta tarefa possível em uns míseros minutos. Mas como não poderia deixar de ser, nem tudo o que reluz é ouro, isto é, apesar dos benefícios a publicidade online também traz consigo algumas questões que podem provocar alguma preocupação para atingir os seus objetivos. Na verdade, os utilizadores estão cada vez mais habituados aos blocos de publicidade e, como consequência, ignoram-nos [22]. Outro grande problema é a questão da privacidade pois métodos de apresentação mais recentes aproveitamse, muitas vezes, de dados privados dos utilizadores violando assim políticas de privacidade acordadas. Além disto, destaca-se ainda o facto do utilizador por algum motivo não estar recetivo e disposto a receber anúncios, acabando por usar software conhecido como ad-blocking que o ajuda a bloquear campanhas publicitárias. 23
44 SERVIÇOS PUBLICITÁRIOS EXISTENTES Antes de mais, comecemos por analisar o resultado de um pequeno estudo realizado pela Marin Software onde se tentou aprimorar os benefícios da publicidade online em relação à offline (ou tradicional). Foram questionados 104 conceituados marketers norte-americanos sobre quais os três principais benefícios da publicidade online quando comparados com a publicidade tradicional. Neste estudo conduzido pela Forrester Consulting [23], 23% dos questionados defendem que o benefício mais importante é o facto de online, ser possível atingir o públicoalvo com mais precisão [23]. Na Figura 10, é apresentado o gráfico da marketingcharts.com com os restantes resultados. Figura 10 - Top de benefícios da publicidade online vs. offline [23] Posto isto, são demonstrados dois serviços publicitários bem-sucedidos com características diferentes. 24
45 II.3.1. Google AdWords O serviço publicitário amplamente conhecido do Google que em conjunto com o Google AdSense, fornece uma plataforma completa para anunciantes e afiliados. Esta plataforma permite ao anunciante tirar partido das pesquisas efetuadas pelos utilizadores do motor de busca. Este ao submeter um anúncio ou campanha define qual o conteúdo relevante para apresentação do anúncio. Isto é, o anunciante define quais as palavras-chave de pesquisa relevantes ao produto aumentando a visibilidade do seu negócio. Assim, o motor de busca apresenta não só os resultados da pesquisa como também os anúncios mais relevantes para um certo utilizador. Mas esta não é a única forma de apresentação de anúncios, pois através do Google AdSense, estes anúncios são também apresentados em páginas de afiliados com conteúdo idêntico e/ou relevante ao produto anunciado [24]. Quanto aos métodos e técnicas de apresentação, esta plataforma dispõe principalmente de Pesquisa Patrocinada. No entanto, as técnicas de behavioral targeting, geo-targeting, e mobile advertising são também vastamente exploradas [25, 26]. Quanto aos modelos de compensação, este serviço é tradicionalmente usado com o modelo de CPC. No entanto, outros modelos como CPM, ecpm e CPA estão disponíveis [27]. No sentido prático, o anunciante deposita um valor monetário na sua conta AdWords, e configura um anúncio ou campanha assim como o modelo de compensação. Os anúncios são posteriormente apresentados tanto pelo motor de busca como pelas páginas web dos afiliados, e aquando dos resultados, é debitado no saldo do anunciante. II.3.2. BuySellAds Este serviço fornece ao anunciante um marketplace onde este seleciona quais os afiliados a que pretende comprar publicidade. Num modelo muito mais 25
46 simples que o anterior Google AdWords, o BuySellAds utiliza na sua génese uma variação do método de Anunciantes Diretos, em que através de um processo totalmente automatizado, consegue-se a compra direta de publicidade num determinado website sem existir, na prática, a comunicação direta entre as partes (anunciante e publicador) [28]. O modelo de compensação é baseado no modelo CPM ou no custo fixo, dependendo neste último de um período de tempo associado [28]. Na prática, o anunciante seleciona, através das categorias disponibilizadas, um website alvo para o seu anúncio. São disponibilizadas algumas opções de tamanhos para o anúncio, assim como o número de impressões estimadas. Finalmente é possível carregar o conteúdo e efetuar o pagamento do valor associado ao anúncio. Estando o anúncio ou campanha em andamento, é-lhe disponibilizado um backoffice que complementa a gestão dos mesmos assim como, a visualização de dados e estatísticas relacionadas [28]. 26
47 O DISTRIBUIDOR DE ANÚNCIOS PUBLICITÁRIOS Nesta secção, será demonstrado passo-a-passo como é que a maioria destes sistemas funciona desde a chamada inicial do navegador web até à representação do conteúdo publicitário. II.4.1. Como funciona um serviço distribuidor de anúncios de terceiros De forma a facilitar a compreensão deste processo, a leitura deverá acompanhar o diagrama proposto pela Figura 11 através dos números em parêntesis que identificam cada passo. Imaginemos então um utilizador da Internet a carregar uma página web (1). O navegador web recebe uma porção de código HTML (2) contendo a localização do conteúdo (3) e respetiva formatação. Uma parte desse código (4) irá conter um endereço http conhecido como ad tag (etiqueta do anúncio). Este endereço-etiqueta tem o objetivo de apontar o navegador web ao servidor do publicador (5) e terá o seguinte aspeto [29]: O servidor do publicador, que normalmente pertence a uma empresa separada, é encarregue da entrega dos anúncios e posterior rastreio. Este servidor, poderoso, tem também a tarefa complicada de selecionar o anúncio apropriado para este pedido através de complexos algoritmos de seleção. Após uma decisão tomada de qual o anúncio a apresentar, este servidor responde com outra ad tag (6) que aponta para o servidor do marketer. Estes redireccionamentos são do tipo http código 302, indicando ao navegador que a página foi temporariamente movida. Isto permite que neste momento o servidor do publicador incremente uma impressão do determinado anúncio (no diagrama: estrela) e carregue o conteúdo de outro servidor externo. No caso de não existir um servidor do marketer, o processo acaba neste momento evitando assim os passos 7, 8, 11 e 12, e o conteúdo é então devolvido pelo servidor do publicador [29]. 27
48 O navegador web chama o servidor do marketer (7), que é agora redirecionado para uma rede ou servidor de conteúdo (8) usualmente tirando partido de soluções Cloud Computing, pois seria demasiada sobrecarga incluir este conteúdo dos anúncios no servidor do marketer [29]. O servidor do marketer, além de redirecionar o navegador para o endereço do recurso relevante ao conteúdo do anúncio (9), também adiciona um redireccionamento (10) para ele próprio de forma a quando este for corretamente carregado pelo navegador web do utilizador (11), poder somar uma impressão (no diagrama: quadrado) no respetivo anúncio [29]. Numa tentativa de clarificar as partes intervenientes neste processo, relacione-se então com o sistema publicitário do Google: Publisher Web Server - representa os servidores dos websites associados aos utilizadores do serviço Google Adsense. Publisher Ad Server análogo ao serviço Google Adsense. Marketer Ad Server e Content Distribution Network análogos ao serviço Google Adwords. Figura 11 - Diagrama de comunicação de um serviço distribuidor de anúncios de terceiros. Adaptado de [29] 28
49 II.4.2.Tecnologias para implementação Quanto às tecnologias usadas para implementação destes serviços podemos segmentar em duas partes fundamentais: lado cliente e lado servidor. No lado cliente, onde é carregado o anúncio, é comummente usado Javascript de forma a efetuar tanto os pedidos HTTP como também a manipulação do DOM. Em alguns casos, principalmente devido às vantagens da implementação das políticas Cross-Domain Origin Policy, são usadas técnicas com a tag iframe do HTML ao invés de JS tags para apresentação de anúncios [30]. O conteúdo destes anúncios pode variar entre simples banners até elementos HTML5 ou Adobe Flash [31]. No lado servidor, diversas tecnologias podem ser utilizadas para implementar o servidor do publicador, do marketer e distribuição de conteúdo. De entre as possibilidades, o recurso ao OpenSource tem-se revelado a melhor opção tendo em conta custos reduzidos associados e a vasta comunidade de suporte que este possui. Serve como exemplo o PHP, Javascript, MongoDB, Nginx e Apache HTTP Server, pois são tecnologias extremamente desenvolvidas que permitem implementar eficientemente os servidores mencionados. 29
50 CONCLUSÕES Foi observado neste capítulo que as metodologias de desenvolvimento de software são deveras importantes ao ponto de influenciar o sucesso de um projeto. Quanto aos métodos e técnicas de apresentação de anúncios, é possível verificar que existem várias formas de oferecer, e cada vez com mais precisão, os anúncios e campanhas publicitárias ao público-alvo desejado. Os modelos de compensação são também robustos possibilitando, aos anunciantes, uma melhor otimização das suas campanhas publicitárias. Um sistema que combine, estrategicamente, estes métodos de apresentação com os modelos de compensação, consegue oferecer ferramentas que possibilitam aos anunciantes aplicar eficazmente, as suas estratégias de marketing. Assim, os anunciantes usufruem dos benefícios que a publicidade online lhes proporciona. Relativamente aos sistemas publicitários existentes, foi importante perceber como estes funcionavam e através de engenharia reversa tentou-se perceber os seus princípios tecnológicos. Esta pesquisa permitiu então extrapolar algumas funcionalidades para o posterior desenvolvimento de um sistema distribuidor de publicidade. No próximo capítulo é demonstrado todo o desenvolvimento do sistema desde os seus requisitos às suas interfaces de utilização. 30
51 III. DESENVOLVIMENTO DO SISTEMA "Everything not saved will be lost." - Nintendo Quit Screen message 31
52 REQUISITOS Em seguimento da proposta de projeto que me foi atribuído pelo Hugo Marques, diretor de produção na empresa ad8biz, neste capítulo serão abordados os requisitos funcionais e não-funcionais do Gestor de Publicidade, ou simplesmente, GESTPUB. III.1.1. Requisitos Funcionais RF1: O utilizador deve ser capaz de carregar o seu conteúdo para os slides a serem colocados nas zonas de banner da rede 8xbiz. vídeo. RF2: O conteúdo publicitário poderá ser do tipo imagem, animação Adobe Flash ou RF3: O utilizador deve ser capaz de configurar uma ou mais áreas de mercado correspondentes ao seu anúncio. RF4: relevantes ao seu anúncio. O utilizador deve ser capaz de selecionar uma ou mais localizações geográficas RF5: do anúncio. O utilizador deverá selecionar um pacote de 3, 6, 9 ou 12 meses na configuração O utilizador deverá configurar parâmetros extra como nome e descrição do conteúdo. RF6: RF7: O utilizador deverá inserir o endereço de redireccionamento sendo este obrigatório a todos os anúncios, podendo ainda depender do idioma. RF8: O sistema deve calcular o valor associado ao tempo de campanha, às áreas e localizações selecionadas. RF9: O sistema deve apresentar ao utilizador o valor associado ao seu anúncio aquando da compra de publicidade. RF10: O sistema deve possibilitar a inserção de conteúdos multi-idioma. RF11: anúncio/campanha. Quando necessário, o sistema deve permitir o cancelamento ou suspensão de um 32
53 RF12: O utilizador através de um backoffice deverá ser capaz de atualizar o seu anúncio. RF13: O sistema deve ser integrado com a plataforma de pagamentos online da ad8biz a fim de possibilitar o pagamento referente ao anúncio. RF14: O administrador tem acesso a todos os anúncios. RF15: O administrador deve ser capaz de apagar qualquer anúncio a qualquer instante. RF16: O administrador tem a capacidade de alterar qualquer anúncio. RF17: O sistema deve suportar diferentes tipos de utilizadores autenticados com permissões de acesso distintas. RF18: O sistema deve estar apto de forma a suportar anúncios para diferentes serviços, nomeadamente, os micro-sites da plataforma WESHHA, publicidade para aplicações móveis e outras eventuais soluções/serviços da ad8biz. RF19: geográfica. Um banner é caracterizado por um serviço, uma zona comercial e uma localização anúncio. RF20: Cada banner é constituído no máximo por 12 slides, cada slide representa um RF21: O sistema deve impedir o registo (ou compra) de anúncios para um banner quando este já se encontra indisponível. RF22: O sistema deve apresentar os anúncios tendo em conta o serviço, área comercial, localização geográfica e idioma do visitante. RF23: o anúncio no idioma padrão. Quando o idioma do visitante não está disponível, o sistema deverá apresentar RF24: O sistema deverá contabilizar os cliques e impressões relevantes a um anúncio. III.1.2. Requisitos Não-funcionais RNF1: O sistema deverá ser implementado com tecnologias web OpenSource. Tecnologias propostas: PHP, Javascript, HTML5 e CSS3. RNF2: O conteúdo publicitário do slide tem exatamente a dimensão de 640x275 pixéis. 33
54 RNF3: O Sistema Gestor de Bases de Dados deverá ser MySQL. RNF4: O sistema deverá ser acedido por qualquer navegador web, independentemente do sistema operativo instalado. 34
55 CASOS DE UTILIZAÇÃO Os casos de utilização são representados através de diagramas que identificam como o sistema se comporta em diversas situações no decorrer da sua operação. Estes descrevem o sistema, o seu ambiente e suas relações. É de facto, um guia indispensável aos stakeholders de um projeto de software pois relata como é que os atores 3 interagem com o proposto sistema, respondendo a questões como Qual é o âmbito?, Quem quer o quê?, Como obtêm isso? e Que mais pode acontecer?. O Gestor de Publicidade é composto por dois elementos: uma aplicação de gestão de anúncios e um webservice fornecedor de anúncios aos visitantes do portal 8xbiz. É então neste contexto que são apresentados os casos de utilização, seus atores e respetivos papéis do Gestor de Publicidade. III.2.1. Caso de Utilização da aplicação de gestão de anúncios A aplicação gestora de anúncios é caracterizada pelos seguintes atores: Anunciante um cliente que pretenda inserir anúncios no portal 8xbiz ou WESHHA. Administrador um colaborador da ad8biz com privilégios de administração a fim de gerir esta plataforma. Plataforma de Pagamentos plataforma da empresa ad8biz que está responsável pelo processo de faturação. Sistema WESHHA o sistema WESHHA é responsável pela gestão dos utilizadores de todas a rede ad8biz e respetiva autenticação. 3 Um ator pode representar um ser humano ou sistema que invoca o sistema proposto para aceder a um dos seus serviços [32]. 35
56 Segue-se o diagrama de casos de utilização onde é representada a interação dos atores na aplicação de gestão de anúncios: Figura 12 - Diagrama de casos de utilização da aplicação de gestão de anúncios III.2.2. Caso de Utilização do sistema de apresentação de anúncios Este caso de utilização representa a interação de um visitante no portal 8xbiz ou em qualquer website da rede ad8biz com os anúncios do Gestor de Publicidade. Neste caso, existe apenas um ator que é o utilizador web visitante do portal 8xbiz ou WESHHA. 36
57 Figura 13 - Diagrama de casos de utilização do sistema de apresentação de anúncios 37
58 ARQUITETURA O software é, hoje em dia, de tal forma predominante que acaba por ser a causa de muitos dos problemas encontrados nos sistemas atuais. A qualidade e longevidade destes sistemas de software são determinadas pela sua arquitetura. A arquitetura de software de um sistema computacional é então a estrutura ou estruturas do sistema, que incluem elementos de software, propriedades externas desses elementos, e as relações entre eles [33]. Para este projeto, foi desenvolvida uma arquitetura orientada a recursos baseada no padrão arquitetural Lookup. Este padrão descreve como encontrar e aceder a recursos, sejam estes locais ou distribuídos, usando um serviço de pesquisa como mediador [34]. É de certa forma, idêntico ao mais conhecido padrão arquitetural Broker, que é caracterizado pela estruturação de sistemas de software distribuídos com componentes dissociados que interagem por invocações remotas a serviços [35]. O padrão acima referido estrutura quatro participantes: Utilizador do Recurso Recurso Fornecedor de Recursos Serviço de Pesquisa O utilizador do recurso depende dos restantes três participantes: do serviço de pesquisa que lhe garante um fornecedor de recursos, do fornecedor que lhe garante um recurso, e do recurso em si para aceder-lhe [34]. Serviço de Pesquisa Utilizador do Recurso Fornecedor de Recursos Recurso Figura 14 - Diagrama de dependências do padrão Lookup [34] 38
59 Através da aplicação deste padrão, os seguintes participantes foram descritos: User-Agent como utilizador de recursos Dispatcher como serviço de pesquisa Serviço como fornecedor de recursos Conteúdo Mídia como recurso Para a apresentação de anúncios, demonstra-se então o seguinte cenário onde o User-Agent recebe acesso ao recurso após tê-lo requisitado ao serviço de pesquisa (Dispatcher): 1. O User-Agent pergunta ao Dispatcher por um determinado recurso fornecendo-lhe propriedades específicas como localização, áreas, tipo de serviço, etc. 2. O Dispatcher reencaminha o pedido para o serviço que lhe permite adquirir a referência do recurso apropriado. 3. O User-Agent usa a referência obtida para aceder ao conteúdo mídia a apresentar. Figura 15 - Diagrama de sequência das interações entre os participantes na arquitetura do servidor de anúncios 39
60 Em suma, podemos admitir que a arquitetura desenvolvida aproxima-se à dos sistemas de distribuição publicitária de terceiros. Desta feita, o funcionamento assemelha-se então ao sistema previamente descrito no ponto II.4.1, se bem que apresenta a diferença da inexistência do servidor do marketeer. Neste caso, o servidor publicador adquire dupla função, sendo este responsável pela tanto pela publicação como pela apresentação. A esta simbiose denominada de GESTPUB Ad Server e pode ser observada na Figura 16, onde é também possível observar, da mesma forma que na figura 11, a sequência de passos desde o pedido de uma página web à apresentação do anúncio. Figura 16 Diagrama de comunicação do utilizador com o sistema de apresentação de publicidade GESTPUB. Adaptado de [29] Para a aplicação de gestão dos anúncios, implementada recorrendo à Yii Framework, a arquitetura já estava bem definida e ao estilo arquitetural Model- View-Controller (MVC) [36]. 40
61 Figura 17 - Estilo arquitetural MVC, presente na arquitetura da Yii Framework [36] 41
62 DIAGRAMA ENTIDADE-RELAÇÃO Este subcapítulo demonstra o diagrama entidade-relação da base-de-dados criada para suporte dos anúncios publicitários assim como de toda a estrutura do Gestor de Publicidade GESTPUB. Este diagrama representa a versão número 3 do modelo entidade-relação, as versões anteriores podem ser consultadas no Anexo B. Segue-se a descrição de cada entidade, representadas na figura 18: idioma Contém o nome dos idiomas e respetivos códigos pela norma ISO banners Contém as informações gerais do anúncio. Campos como nome, descrição, datas e estado caracterizam um anúncio. O campo idweshha e idutilizadores caracterizam relações para outras entidades. banneridioma Entidade responsável pelo idioma do anúncio, localização dos recursos conteúdo do seu URL de redireccionamento. clicks Responsável pelo armazenamento dos cliques efetuados nos anúncios. categorias Entidade que contém as áreas, categorias e sub-categorias comerciais onde os anúncios podem ser colocados. categorias_tem_banners Relação de muitos-para-muitos entre as entidades categorias e banners. utilizadores Contém informação de autenticação para o gestor de publicidade GESPUB. encomenda Regista a referência da base de dados payments de cada compra de publicidade efetuada. encomenda_tem_banners Relação de muitos-para-muitos entre as entidades encomenda e banners, pois uma encomenda pode possuir vários anúncios e um anúncio pode estar associado a recorrentes compras. schedule Esta entidade é responsável pelo agendamento de cada anúncio nas posições contratadas. zona Entidade que contém todas as zonas geográficas onde é possível inserir anúncios. zona_tem_banners Relação de muitos-para-muitos entre as entidades zonas e banners. services Entidade que contém os serviços disponibilizados pelo gestor de publicidade. Cada serviço funciona como um plano onde o campo maxvalue representa o máximo de anúncios para esse plano. 42
63 wsuser_has_services Todos os utilizadores WESHHA que utilizem funcionalidades do gestor de publicidade GESTPUB são armazenados nesta entidade. Contém também informação do serviço selecionado e corrente quantidade de anúncios. Figura 18 - Diagrama Entidade-Relação versão 3 43
64 INTERFACE DO UTILIZADOR É sabido que a interface do utilizador é fulcral no desenvolvimento de qualquer sistema. Ian Sommerville, em Engenharia de Software [37], menciona que a interface de utilizador deve ser desenhada de forma a combinar as capacidades, experiência e espectativas dos seus utilizadores futuros. Sommerville refere ainda que estes utilizadores muitas vezes julgam o sistema pela sua interface, e não pela funcionalidade. Assim, uma interface pobre pode permitir que o utilizador cometa erros catastróficos e, consequentemente, deixar de usar esse software ou sistema. No gestor de publicidade GESTPUB podemos identificar três interfaces de utilizador distintas: Interface de apresentação de anúncios Interface de administração do Gestor de Publicidade Interface de contratação de anúncios III.5.1. Interface de apresentação de anúncios O desenho da interface de apresentação de anúncios foi desenvolvido pela Direção de Marketing com base no plano estratégico da empresa, motivo pela qual expresso-me apenas com a opinião crítica construtiva. Como mencionado pelo RNF2, os anúncios seriam apresentados na forma de banner com 640px de largura e 275px de altura. O conteúdo terá, efetivamente, de se adaptar a estas dimensões pré-definidas. Isto é de facto um problema, pois este tamanho não pertence aos standards do IAB 4, e em consequência, o anunciante terá que adaptar o seu conteúdo mídia. Refira-se que esta adaptação pode ainda arrecadar custos extra aos anunciantes. 4 O Interactive Advertising Bureau (IAB) é a organização que se responsabiliza pela pesquisa e padronização na indústria da publicidade online [38]. Os formatos standards podem ser encontrados em 44
65 Os anúncios são apresentados em carrossel no topo das páginas da rede 8xbiz, seguidos do cabeçalho e alinhados à margem direita (representado na figura 19 pela letra A), e denominados no seu conjunto como megabanner. É possível notar a ordem do carrossel no canto superior direito de cada anúncio através da bola salientada a cinzento (figura 19, letra B). Figura 19 - Interface de apresentação de anúncios - megabanner. III.5.2. Interface de administração do Gestor de Publicidade Esta interface, numa fase inicial, seria usada apenas por colaboradores internos da ad8biz pelo que não era um requisito dedicar demasiado esforço no desenvolvimento desta. Sendo assim foi elaborado um simples mockup na forma de wireframe como base para toda a ferramenta: 45
66 Figura 20 - Mockup do Gestor de Publicidade Segue-se o wireframe do ecrã Listar Banners, onde são destacados alguns aspetos relevantes aos anúncios mas não todos, pois trata-se de uma página de listagem de anúncios: Figura 21 - Ecrã de listagem de anúncios 46
67 III.5.3. Interface de contratação de anúncios Tal como a interface de apresentação de anúncios, esta interface foi inicialmente desenvolvida pela ad8biz, nomeadamente, pelo Departamento de Arte e Design em cooperação com a Direção de Marketing. Figura 22 - Interface de contratação de publicidade No entanto, devido a algumas lacunas de interação que encontrei na proposta da figura 22, propôs as seguintes modificações de forma a corrigir estas falhas: 47
68 Alteração de algumas etiquetas dos campos como por exemplo Checkout passou a Pagar ; Adicionada a possibilidade de alterar/remover o conteúdo mídia do slide; Adicionados os campos para inserção de descrição e URL de redireccionamento destino; A data de fim de publicação é agora automática após a seleção de um Pacote de Dias, impossibilitando o utilizador de alterar esta data manualmente; Na zona de exposição o tipo de entrada do País como da Área foi alterado de dropdown para uma árvore de checkbox de forma a possibilitar múltipla escolha. Após estas alterações, segue-se a versão final da interface de contratação de publicidade: 48
69 Figura 23 - Ecrã de contratação de publicidade 49
70 IV. IMPLEMENTAÇÃO The only thing you can do with an F-22 that does not require software is take a picture of it. Lt. Gen Fain 50
71 TECNOLOGIAS UTILIZADAS Quando um projeto é desenvolvido desde a sua forma embrionária como é o caso de toda a infraestrutura do projeto 8xbiz, é necessário um estudo e pesquisa das tecnologias que existem no mercado de forma a avaliar quais serão as melhores opções. Por um lado, Matt Aimonetti, comenta no seu blogue [39] que acredita que uma ideia inovadora pode ser construída com base em qualquer tecnologia, e que o sucesso ou fracasso do projeto tem mais a ver com a visão, liderança, execução, e mercado do que com escolhas tecnológicas. No entanto, Aimonetti afirma que as decisões técnicas têm impacto direto na cultura da empresa [39]. Sabendo então que diferentes tecnologias trazem-nos diferentes culturas [39], é importante perceber qual a cultura a que melhor nos adaptamos e que desejamos seguir. Entretanto, o diretor de produção Hugo Marques havia já decidido algumas das tecnologias a ter como referência no desenvolvimento do projeto, definidas pelos RNF1 e RNF3. Quanto a outras tecnologias, a ideia era, sempre que possível, recorrer a licenças OpenSource com objetivo de diminuir custos de produção. Assim, tive a liberdade de avaliar e selecionar quais as ferramentas e tecnologias a utilizar. Detalho então, sucintamente, as tecnologias usadas para o desenvolvimento do Gestor de Publicidade GESTPUB. IV.1.1. PHP, Apache HTTP Server e MySQL O PHP é uma linguagem de scripting de uso generalizado, que é especialmente adequada para desenvolvimento web. Está presente nas aplicações do lado-servidor gerando conteúdo dinâmico para a web. É rápida, flexível e pragmática, tornando-se uma excelente opção tanto para um pequeno blogue como para websites populares [40]. 51
72 O PHP pode ser instalado em praticamente qualquer sistema operativo, e neste caso, foi usada uma máquina UNIX 5. Após instalado, é usualmente executado como um módulo do Apache HTTP Server [41]. Este Apache HTTP Server é, como o nome indica, um servidor HTTP e possui atualmente a maior quota de mercado [42, 43]. O MySQL é o sistema gestor de bases de dados usualmente associado a aplicações desenvolvidas em PHP, isto devido a ambas as tecnologias apresentarem-se extremamente fiáveis e usufruírem de licenças livres que permitem o desenvolvimento de aplicações com menores custos. IV.1.2. Yii Framework A Yii é uma framework de alto rendimento desenvolvida em PHP num estilo arquitetural MVC. Baseada em componentes, permite a máxima reutilização de código, acelerando significativamente o processo de desenvolvimento de software [36]. Optou-se por esta framework devido a esta oferecer uma combinação de fortes características de elevada importância ao gestor de publicidade GESTPUB não fornecidas pela maioria das restantes opções disponíveis [36]: Comunidade possuindo vários fóruns, inclusive em diversas línguas, torna o suporte muito mais acessível ao desenvolvedor; Webservice request handling suporte e gestão de webservices, útil para os serviços que recebem o pedido para apresentação de anúncios; Component-based sob o princípio da reutilização de código, permite acelerar o desenvolvimento; 5 UNIX foi um sistema operativo criado no fim da década de 1960, num esforço para fornecer um sistema multiutilizador e multitarefa essencialmente para programadores. Atualmente é o sistema preferencial utilizado como programa de controlo mestre (ou sistema operativo) em servidores e workstations. O The Open Group, um consórcio formado por empresas de informática, é o atual proprietário da marca UNIX [44, 45]. 52
73 Recursos robustos e abundantes possuindo recursos como manipulação de objetos de bases de dados, caching, acesso controlado por cargos (role-based access control), I18N/L10N, tratamento e registo de erros, medidas de segurança, entre outros, permite que a plataforma de gestão para os anúncios possa ser desenvolvida no mesmo ambiente que o serviço de apresentação de anúncios. No Anexo C, podemos observar uma tabela comparativa de frameworks PHP onde são observáveis as características aqui destacadas desta framework em relação às mais usuais. IV.1.3. JavaScript e jquery O JavaScript é uma linguagem de scripting que permite executar código no navegador do cliente sem que haja a necessidade de comunicar com o servidor [46]. O jquery é uma biblioteca JavaScript que foi desenvolvida com o intuito de simplificar todos os scripts que interagem com o HTML. A manipulação do DOM é um destes exemplos onde o recurso à biblioteca jquery é muito comum [47]. IV.1.4. NivoSlider O NivoSlider é um plugin para jquery que dinamiza um website possibilitando a criação de um carrossel para apresentação de imagens [48]. Apesar de este plugin focar-se apenas em imagens, foi na mesma selecionado tendo em conta a sua popularidade e funções de slider. O objetivo seria então estender o plugin para aceitar outros tipos de conteúdo mídia provenientes do gestor de publicidade GESTPUB. 53
74 Figura 24 - Exemplo de um carrossel com NivoSlider. 54
75 FUNCIONALIDADES IMPLEMENTADAS No decorrer da implementação deste projeto, existiram algumas renegociações das funcionalidades a implementar. O principal motivador destas renegociações era principalmente o fator tempo, pois funcionalidades consideradas mínimas teriam prioridade e tinham que estar implementadas o quanto antes. Perante estas renegociações, alguns requisitos acabaram por não serem implementados, ou foram implementados parcialmente em favorecimento da implementação dos requisitos prioritários. No entanto, encarrega-se o capítulo seguinte de abordar fatores que influenciaram o desenvolvimento do projeto. IV.2.1. Requisitos não implementados Os requisitos que acabaram por não obter qualquer implementação ou que a funcionalidade era mínima foram os RF12 - o utilizador deverá ser capaz de atualizar o seu anúncio através de um backoffice - e RF17 - o sistema deve suportar diferentes tipos de utilizadores autenticados com permissões de acesso distintas. De notar que o backoffice referido por RF12 foi construído, mas o anunciante não tinha forma de se autenticar, pois este foi direcionado apenas para o administrador da ad8biz. Quanto ao RF17, acontece o mesmo que com RF12. O sistema permitia a autenticação no backoffice do Gestor de Publicidade apenas a administradores da ad8biz. Não suportava no momento diferentes tipos de utilizadores. IV.2.2. Requisitos implementados parcialmente Destacam-se os requisitos que apresentam funcionalidades parciais, ou seja, que não foram totalmente implementados ou possuem funcionalidade limitada: RF2 O conteúdo publicitário poderá ser do tipo imagem, animação Adobe Flash ou vídeo. 55
76 RF7 - O utilizador deverá inserir o endereço de redireccionamento sendo este obrigatório a todos os anúncios, podendo ainda depender do idioma. RF10 O sistema deve possibilitar a inserção de conteúdos multi-idioma. RF18 - O sistema deve estar apto de forma a suportar anúncios para diferentes serviços, nomeadamente, os micro-sites da plataforma WESHHA, publicidade para aplicações móveis e outras eventuais soluções/serviços da ad8biz. RF24 O sistema deverá contabilizar os cliques e impressões relevantes a um anúncio. O requisito RF2 foi implementado apenas para suportar conteúdo do tipo imagem (tipos de ficheiro: jpg, png e gif), definido pela Direção de Produção como funcionalidade mínima. Os requisitos RF7 e RF10 estão relacionados pois tratam essencialmente das funções multi-idioma do Gestor de Publicidade. O sistema permitia sim a inserção de anúncios direcionados a multi-idiomas mas se inseridos por um administrador autenticado no backoffice. Ao utilizador 8xbiz, de momento, não lhe era concedida essa funcionalidade, motivo pelo qual este requisito é considerado parcialmente implementado. O requisito RF18 foi parcialmente implementado visto que o sistema estava arquitecturalmente preparado para implementação de n serviços mas apenas um foi implementado em pleno. Quanto ao requisito RF24, o sistema contabilizava apenas os cliques efetuados nos anúncios mas não contabilizava as impressões. 56
77 IV.2.3. Requisitos implementados em pleno Assume-se que os restantes requisitos que não foram mencionados nos subtítulos anteriores estão plenamente implementados. Com outro olhar, podemos admitir que estes requisitos foram definidos através de renegociação como prioritários pela Direção de Produção. Em suma, as funcionalidades desenvolvidas para o anunciante foram a inserção e configuração de anúncios, visualizar o montante e posterior pagamento. Para o administrador do Gestor de Publicidade, estavam disponíveis as funcionalidades de inserção de novos anúncios, gestão de anúncios de toda a rede, e remoção definitiva de anúncios. Para o utilizador web da rede 8xbiz, a visualização de anúncios dependente do idioma, zona geográfica e área comercial estava operacional para o Portal 8xbiz assim como a possível visita às landing pages dos anúncios. IV.2.4. Descrição técnica do Dispatcher implementado Neste ponto são descritas algumas especificações e técnicas que foram desenvolvidas para implementação do desenho do sistema proposto no capítulo III, nomeadamente, a descrição técnica da API disponibilizada pelo Dispatcher com objetivo de devolver anúncios publicitários. A API para carregamento de anúncios era caracterizada da seguinte forma, através de um pedido http do tipo GET: O endereço acima referido é construído através de um snippet em Javascript que é executado após o DOM ter sido carregado com sucesso. Este snippet avalia então a página web em que o utilizador se encontra e, constrói o respetivo URI com os parâmetros area e zona. Após a criação deste URI, o snippet usa a técnica da tag iframe para carregar o conteúdo mídia apontando o atributo src 57
78 deste iframe para o referido URI. Outros parâmetros como geolocalização e idioma eram obtidos automaticamente com recurso ao pedido http. Os anúncios eram então carregados em carrossel, usando o já referido NivoSlider, e devolvidos ao navegador web. Neste momento, o navegador web carrega os URLs referentes aos recursos mídia (ficheiros do tipo jpg, png e gif). O anúncio depois de carregado, possui uma hiperligação que aponta para: ahr0cdovl3d3dy5legvtcgxvlmnvbq== É neste momento que é contabilizado um clique respetivo ao anúncio identificado pelo parâmetro id. O parâmetro to contém a informação da landing page respetiva a esse mesmo anúncio. Note-se que ambos os parâmetros são codificados por razões de segurança. Quanto à contratação de publicidade, esta era efetuada na plataforma WESHHA através do carregamento de um iframe com atributo src apontando para: O parâmetro service identifica para que serviço é destinado esta contratação de publicidade. Relembre-se que apenas um serviço foi implementado, mais propriamente, o serviço de publicidade para o portal 8xbiz. Desta forma, este parâmetro pode ser, neste momento, considerado inútil mas no futuro seria claramente necessário. 58
79 SOFTWARE TESTING O Software Testing ou Teste de Software em Português, é o processo de avaliação de um software a fim de detetar diferenças entre um certo input e o esperado output. É um processo que avalia a qualidade de software e deve ser feito durante o processo de desenvolvimento. Este processo divide-se em duas partes: a verificação e a validação. A verificação garante que o produto satisfaz as condições de desenvolvimento e funciona da forma que nós, desenvolvedores, queremos. A validação assegura que o produto satisfaz os requisitos e funcione como o cliente espera [49]. No âmbito de desenvolvimento ágil, o processo de desenvolvimento do gestor de publicidade GESTPUB também implementava métodos de agile testing, nomeadamente, o desenvolvimento orientado a testes (test-driven development, ou TDD) [50, 51]. IV.3.1. Test-Driven Development (TDD) Com o TDD, o programador escreve primeiro um teste para uma pequena funcionalidade, testa e observa-o falhar, escreve depois o código que torna este teste bem-sucedido, e por fim continua para a próxima pequena funcionalidade [50]. Os testes podem ser de vários tipos mas foram apenas utilizados testes de unidade, visto que a própria Yii Framework já integra uma framework externa para este efeito facilitando consideravelmente o esforço dedicado aos testes. Os testes de unidade são escritos essencialmente para que o desenvolvedor perceba se aquela unidade de código está efetuando o pressuposto. Neste caso, os métodos públicos da aplicação desenvolvida sob a Yii Framework eram as unidades a serem testadas e não podiam depender de outras classes ou objetos, pois o objetivo é testar uma unidade de código singular [51]. 59
80 Estes testes são escritos em PHP, estendendo a classe CTestCase da Yii, e guardados no diretório protected/tests/unit/. A framework PHPUnit é a responsável pela execução do teste. No entanto, devido à pressão para cumprir prazos extremamente limitados, o esforço dedicado aos testes foi prontamente suspenso com objetivo de apressar o desenvolvimento de funcionalidades. Uma decisão tomada pela empresa que na minha opinião afeta diretamente a qualidade do software. Como existiu aqui uma renegociação das prioridades, refez-se o diagrama de flexibilidade segundo as 5 dimensões de um projeto de software. Neste novo diagrama demonstrado na figura 25, é possível observar que a flexibilidade decai sobre as funcionalidades e ascende na qualidade. No sentido prático, foram definidas quais seriam as funcionalidades prioritárias, e tendo em conta os prazos reduzidos, a decadência da qualidade era quase inevitável. Figura 25 - Diagrama de flexibilidade após renegociação de prioridades IV.3.2. Testes de Usabilidade Os testes de usabilidade são a melhor forma de perceber como é que os utilizadores reais irão interagir com o produto desenvolvido. Estes testes consistem em identificar um público-alvo e fornecer-lhes tarefas de forma a realizarem certas tarefas. Todo este processo deve ser anotado, e se necessário, usar software para gravação da webcam, da voz e da atividade no ecrã. 60
81 Geralmente, não eram efetuados testes sérios de usabilidade nos projetos da ad8biz. Após um ciclo de desenvolvimento, fazíamos sim alguns testes de usabilidade mas com colegas e colaboradores. De seguida, era então feito o lançamento ou atualização do software. No caso da aplicação de gestão dos anúncios, como numa primeira fase seria apenas para administração interna, não exigia na prática grandes testes de usabilidade. Pelo que, após reunião com o Diretor de Produção, optou-se apenas pela documentação de como interagir com este gestor. Contudo, a qualidade do sistema sem estes testes diminui indubitavelmente. 61
82 CONCLUSÃO Este capítulo detalhou principalmente as tecnologias utilizadas para implementação deste projeto e as funcionalidades implementadas assim como as não implementadas. Relativamente às tecnologias utilizadas, é possível constatar que o opensource foi vastamente explorado tendo sempre como objetivo a redução de custos. Contudo, a qualidade dessas ferramentas e tecnologias não deverá ser questionada pois apresentam provas de excelente qualidade. As funcionalidades implementadas ficaram aquém do inicialmente previsto, porém através da renegociação das funcionalidades e prioridades, atingiuse um consenso obtendo-se então um produto MVP (Minimun Viable Product). Quanto ao Software Testing, refira-se que este pode ser considerado inexistente no desenvolvimento deste projeto. 62
83 V. OUTROS PROJETOS 63
84 TRABALHOS REALIZADOS NO PROJETO WESHHA E PORTAL 8XBIZ Na ad8biz, todos os projetos estavam inter-relacionados tornando estes projetos em partes interdependentes que formam um sistema unitário, realizando assim os objetivos pretendidos pela empresa. Assim, tal como a liberdade que me foi concedida de requisitar membros para o desenvolvimento do Gestor de Publicidade em caso de necessidade, os team-leaders dos outros projetos também disponham de tal liberdade. Foi neste sentido que participei também no desenvolvimento de algumas funcionalidades do projeto WESHHA e do portal 8xbiz. A minha participação nos projetos referidos acima foi exatamente com a função de interligá-los entre si, integrando a carga de produtos do portal 8xbiz no sistema WESHHA. A necessidade era que um utilizador, após ter efetuado o login no WESHHA, fosse capaz de inserir produtos no portal 8xbiz. Como o WESHHA já possuía uma estrutura de navegação bem definida, tornou-se relativamente fácil a integração desta nova funcionalidade no seu contexto. Esta funcionalidade foi então conseguida através da implementação de uma área para inserção de produtos, onde o utilizador através de um assistente orientado por passos configurava todos os detalhes referentes ao produto a inserir no Portal 8xbiz. Desta forma, a gestão do portal 8xbiz passou a ser gerida através do sistema WESHHA em vez do seu próprio administrador do CMS Joomla 6. Neste momento, a documentação revelou-se fundamental no desenvolvimento de software, pois tendo noção de que, a qualquer momento, a participação num determinado projeto pode estar comprometida, é necessário que outros desenvolvedores entendam a respetiva implementação e, possam trabalhá-la no sentido de modificar ou mesmo incrementar funcionalidades. Foi neste sentido que, sabendo também que a participação neste projeto era de curto prazo, foi 6 Note-se que a génese do portal 8xbiz era baseada em uma rede de portais, onde cada portal era implementado como uma instalação independente do CMS Joomla. 64
85 privilegiada a escrita da documentação. Como exemplo, poderá consultar no Anexo D a documentação relevante ao caso de necessidade de expandir a carga de produtos para novas áreas de mercado. Ainda neste projeto, atuei como consultor interno pois encarreguei-me de selecionar tecnologias e apresentar soluções que respondessem aos propósitos da empresa. Como exemplo menciono a Yii Framework já que além de satisfazer as necessidades do Gestor de Publicidade também satisfez as do projeto WESHHA. Foi neste seguimento que tornei-me também um interveniente neste projeto, nomeadamente, nas tecnologias para implementação do sistema. Além do já mencionado, o ambiente a que estávamos sujeitos, exigia todos os dias cooperação com os nossos colegas nas mais diversas áreas. A boa disposição e vontade de contribuir convertia-se na participação ativa em todos os projetos desenvolvidos na ad8biz, mesmo quando não solicitada esta participação. Assim, de forma presunçosa, pratiquei diversas funções e realizando diversos trabalhos na empresa como consultor tecnológico interno, líder de equipa e Engenheiro de Software. 65
86 VI. CONCLUSÃO E TRABALHO FUTURO 66
87 APRECIAÇÃO CRÍTICA DO PROJETO DESENVOLVIDO A intenção da realização de um projeto no âmbito profissional foi sem dúvida vantajosa para a minha carreira pois permitiu uma aprendizagem que, só com a experiência é que podemos adquiri-la. Os métodos de trabalho e as relações criadas entre colaboradores com objetivo comum definido por um plano estratégico são aspetos que geralmente não existem no âmbito académico e, apenas agora, apareceram no desenvolvimento de um projeto. Este plano estratégico ou plano empresarial é o que define o negócio que se quer iniciar, geralmente sendo uma representação executável do modelo de negócio. A dificuldade de um académico responder à demanda exigida tanto pela administração de uma empresa como pelo seu plano estratégico é desleal, mas também natural, pois o indivíduo adquire agora funções em vez de as nomear. Daí, o estágio vem como preparação para esta situação e posterior emprego, sendo também uma forma de evitar, no futuro, maus profissionais. O projeto desenvolvido, assim como qualquer projeto da empresa ad8biz, era ambicioso e motivante. No entanto, o plano estratégico da empresa não favoreceu o seu desenvolvimento devido à adoção de estratégias medíocres e irrealistas. Numa análise aprofundada, destaco certas particularidades acerca dos anúncios em questão no Gestor de Publicidade: - A opção de um megabanner, de tamanho 640x275 pixéis, não é um formato standard IAB, e sabendo que a técnica de Web Banner é das mais antigas, levanta no mínimo suspeitas de pouca credibilidade pois inovação não é com certeza. - A posição do dito megabanner também não seria a melhor devido ao tempo de retenção do utilizador no topo da página ser, efetivamente, demasiado curto. Este megabanner, ao ocupar demasiado espaço, obriga a que o utilizador 67
88 desloque a página à procura do conteúdo perdendo assim de vista todos os anúncios. - A permissão de até 12 anúncios por megabanner era também um exagero, pois diminuía ainda mais a probabilidade de um utilizador visualizar os anúncios colocados nas últimas posições. No entanto, o valor cobrado a estes anúncios era o mesmo. As posições neste megabanner eram definidas por ordem de chegada da compra de anúncios, isto é, as primeiras posições eram dadas aos anúncios mais antigos. - A compra de publicidades em níveis intermédios, isto é, em subcategorias e regiões geográficas específicas, apresentava menos visualizações que a publicidade apresentada em níveis superiores como em áreas de mercado e países. A razão deve-se ao facto destes níveis apresentarem, em média, números inferiores de visualizações de páginas (pageviews). De notar que, novamente, estes fatores não influenciam o preço na contratação de anúncios. - O uso de um banner em formato carrossel é na minha modesta opinião uma má decisão, e segundo gurus em usabilidade, é uma técnica pouco efetiva. Tim Ash, chefe executivo da Site Turners, diz ainda que banners rotativos são absolutamente maus e deviam ser removidos imediatamente [52]. Outro artigo da autoria de Erik Runyon aborda este assunto com dados estatísticos adquiridos no último trimestre do ano 2012 [53]. Runyon conclui que apenas 8.8% dos visitantes clicam num slide de um banner em carrossel, e que 40% destes cliques são normalmente no primeiro slide [53]. Na figura 26, a vermelho, é possível observar estes valores em gráfico. De notar também que este artigo apresenta dados para banners com 5 posições, enquanto o carrossel pretendido pela ad8biz propõe 12 posições. 68
89 Figura 26 - Taxa de cliques em banners do tipo carrossel com rotação automática. Adaptado de [53] Os cinco tópicos mencionados em cima, demonstram pela minha visão crítica, a elaboração de um plano estratégico sem domínio da matéria. Dito isto, foi da minha responsabilidade alertar para eventuais problemas relacionados com este plano, e com o intuito de salvaguardar o sucesso do projeto e da empresa, e evitar assim algum possível descontentamento por parte dos clientes. Por este motivo, dirigi-me então ao gabinete do Chefe Executivo com intenção de expressar o meu ponto de vista acerca de algumas estratégias já mencionadas. Após um breve diálogo, foi-me dado a entender que a minha principal função era desenvolver software. Desta feita, apesar da consequente perda de motivação e confiança, limitei-me a cumprir as funções que a mim tinham sido atribuídas, evitando assim confrontos devido ao plano estratégico da empresa. Contudo, após a realização deste projeto, podemos concluir que apesar das funcionalidades não terem sido implementadas totalmente, o gestor de publicidade GESTPUB garantia, ainda assim, os requisitos mínimos para ser lançado no Portal 8xbiz. Este, respondeu então às espectativas definidas inicialmente, distribuindo publicidade na rede 8xbiz. Ademais, com o desenvolvimento deste projeto vimos que a publicidade online é um mercado enorme, que tem crescido à custa de existir cada vez mais 69
90 tecnologia que permite o acesso online. A vertente móvel é por isto a que apresenta maior crescimento e daí, a atenção virar-se para dispositivos móveis. Além disto, as várias técnicas aplicáveis pelos sistemas distribuidores de publicidade, permitem cada vez mais direcionar campanhas publicitárias para um públicoalvo pretendido. 70
91 PERSPETIVAS FUTURAS É importante que, quando retratamos as nossas perspetivas, tenhamos em conta não só o futuro do projeto como também as competências adquiridas para o futuro da nossa própria carreira. Relativamente à perspetiva do projeto, é sabido que nem todas as funcionalidades foram implementadas, pelo que o futuro passaria numa primeira instância pela continuação do desenvolvimento destas funcionalidades, e num segundo tempo, pelo amadurecimento destas funcionalidades, quer sejam melhoramentos, ou até mesmo, novos requisitos. Posto isto, passo a enumerar algumas características e funcionalidades que, neste momento, não fazem parte do Gestor de Publicidade GESTPUB mas que considero indispensáveis, pois os sistemas publicitários mais robustos já apresentam a maioria delas: Anúncios orientados ao utilizador o objetivo seria captar mais algumas informações do utilizador para selecionar anúncios ainda mais relevantes a este. Eis duas técnicas para direcionar anúncios automaticamente: o Geo-targeting base na localização geográfica do utilizador web, através do Protocolo de Internet (IP) deste. o Behavioral targeting base no comportamento do utilizador (websites visitados e pesquisas efetuadas). Mediação a contagem de impressões dos anúncios é, sem dúvida, uma funcionalidade indispensável e obrigatória para o crescimento do projeto. Integração no WESHHA integrar o Gestor de Publicidade GESTPUB na plataforma WESHHA, possibilitando todos os utilizadores da rede 71
92 8xbiz que, através de um painel de controlo nesta plataforma, tenham acesso às informações relacionadas com o Gestor de Publicidade. A existência destas perspetivas fazem-me sentir que o projeto é imaturo. Mas, segundo Popper [54], é natural porque enquanto nele trabalhei, aprendi o suficiente para o achar imaturo no momento em que me afastei. Foi neste momento que, terminado o estágio curricular, afastei-me da empresa e consequentemente, do projeto. No entanto, todo este trabalho permitiume perspetivar novos objetivos para a minha carreira. Adquiri competências que me permite sentir muito mais à vontade num ambiente profissional, não só a nível de conhecimento tecnológico como também a nível de relacionamento pessoal, de hierarquia institucional, capacidade de comunicação, trabalho em equipa, liderança, capacidades empreendedoras, e mesmo, aquisição de contactos interessantes. E por isto, nas perspetivas pessoais pretendo ingressar novos projetos ambiciosos, ser empreendedor e sobretudo, sentir-me realizado nesses empreendimentos. 72
93 CONSIDERAÇÕES PESSOAIS DO ESTÁGIO É neste subcapítulo que, finalmente, impõe-se o dever de refletir sobre esta experiência. Assim sendo, considerarei todos os aspetos que para mim foram relevantes, e de forma sucinta, descrevo a influência que cada um teve no decorrer deste estágio. Tal como exposto no subcapítulo I.2 deste relatório, a opção por um estágio curricular surge na tentativa de contextualizar a experiência académica adquirida numa ferramenta útil para um ambiente profissional. A aproximação ao mundo do trabalho foi sempre o objetivo, sendo esta uma opção própria totalmente intencional, e não, resultado de uma seleção banal da qual os alunos estão sujeitos à continuação no ambiente académico. A esta opção advém ainda uma motivação acrescida para a realização desta experiência. O decorrer deste estágio caracteriza-se por um percurso oscilante entre fases motivantes assim como períodos de total desânimo. Logo no início, quando contactada a entidade de acolhimento, fui selecionado após a realização de um teste de aptidão onde prevaleciam questões acerca de tecnologias orientadas à Web. Sem muitas dificuldades fui selecionado e seguidamente negociado um acordo de intenções. Este acordo consistia, a par do estágio curricular, na remuneração após seis meses de trabalho, sendo as horas de trabalho destes primeiros meses não remunerados contabilizadas para posterior devolução na forma de quotas da empresa. Este acordo que, no momento, parecia fidedigno e significava uma motivação extra não foi cumprido ao fim do prazo estabelecido. Quanto às condições de trabalho, admito que inicialmente eram excelentes existindo uma secretária para cada colaborador. No entanto, com a admissão de novos colaboradores, foi necessário partilhar o espaço de trabalho, inclusive requisitar cadeiras pois não existiam as suficientes, e algumas das que existiam não eram apropriadas para um dia de trabalho pois eram provenientes de um infantário e desenhadas para crianças de 5 ou 6 anos. Relativamente à alimentação 73
94 nunca existiu problema, assim que tínhamos direito a almoço e, em caso de necessidade de alongar-se até mais tarde, tínhamos também direito a jantar pago pela empresa. Já o transporte não era suportado sendo este totalmente por nossa conta. Outro aspeto importante foi, como referido no subcapítulo anterior, a reação dos superiores hierárquicos na empresa, aquando do meu parecer sobre o plano estratégico. Esta reação demonstrava, de certa forma, pouco domínio sobre o mercado que estavam a tentar atingir, adicionado de uma pitada de arrogância do superintendente. Por momentos, pensei que não se lembrava das condições a que me tinha sujeitado mas, para a conclusão do estágio curricular, abordei sempre como uma aprendizagem. Destaco também o facto do ambiente colaborativo em que trabalhávamos constatar-se muito enriquecedor pois não eramos unicamente desenvolvedores ou programadores, este ambiente misto de colaboradores pertencentes a diferentes áreas possibilitava que sempre que existiam dúvidas ou que desconhecêssemos alguma particularidade, havia sempre alguém que saberia esclarecer, poupando assim algum precioso tempo. Este ambiente facilitava também a troca de pensares, beneficiava a comunicação e favorecia as relações interpessoais na empresa. Foi assim que, após este estágio, adquiri contactos de enorme importância não só para a minha carreira profissional como também para a vida. No que concerne aos processos de desenvolvimento de software da ad8biz, segundo o Capability Maturity Model [55], esta situa-se claramente no nível 1 de maturidade, pois os processos eram geralmente caóticos e o sucesso dependia da competência e heroísmo dos seus colaboradores em vez do uso de processos comprovados. Daí, nestas organizações situadas no nível 1, os produtos muitas vezes funcionam, mas excedem no orçamento e prazos. Apesar de tudo, esta experiência revelou-se extremamente importante no meu autodesenvolvimento e crescimento como profissional. Foi uma constante aprendizagem que, além de proporcionar a aplicação prática do conhecimento adquirido nas unidades curriculares académicas, permitiu-me perceber diversas 74
95 peculiaridades tais como entender a responsabilidade entre diferentes funções na hierarquia organizacional e limitar-me às próprias competências, amadurecer a capacidade de análise e potencialidade de um projeto proposto, adquirir competências pessoais e interpessoais, e melhorar a capacidade de adaptação a novas tecnologias sabendo que, na Informática, estas evoluem de forma quase descontrolada não permitindo a um curso universitário incluir todos os conteúdos essenciais no mundo laboral. E para finalizar, friso novamente a importância que este estágio significou pois com ele apercebi-me que todo o conhecimento teórico assimilado durante o curso carece de uma experiência profissional, e desta feita, respeitando todas as opiniões, considero a opção pelo estágio muito mais enriquecedora que qualquer outra opção disponibilizada. 75
96 VII. REFERÊNCIAS 76
97 [1] JAPIASSU, H. [2006] O sonho transdisciplinar e as razões da filosofia. Rio de Janeiro: Imago. [2] CABRAL-CARDOSO, C. [2001] Demasiados Académicos para o Mundo Real? Doutorados e suas Perspectivas de Carreira no Sector Empresarial. RAC, Edição Especial 2001 [3] ROESCH, Sylvia M.A.; BECKER, Grace Vieira; MELLO, Maria Ivone. [1999] Projetos de estágio e de pesquisa em administração: guia para estágios, trabalhos de conclusão, dissertações e estudos de caso. 2 Ed. São Paulo: Atlas, [4] COSTA, Gardênia F.V.M. [2005] O estágio curricular e sua eficácia na Educação Superior. Revista Gestão Universitária Ed. 79 [5] VIEIRA, Diana A.; CAIRES, S.; COIMBRA, J.L. [2001] Do ensino superior para o trabalho: Contributo dos estágios para inserção profissional. Revista Brasileira de Orientação Profissional Vol. 12, No. 1, [6] Ad Infinitum Business S.a., acedido em 16 de Agosto, Portugalio.com. [7] SOARES. M. [2004] Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software. Unipac - Universidade Presidente Antônio Carlos. [8] FARRELL, A. [2007] Selecting a Software Development Methodology based on Organizational Characteristics. Athabasca University. [9] PRESSMAN, R. [2001] Software Engineering: A Practitioner's Approach. 5 th Edition, McGraw- Hill Education. [10] Bethke, E. [2003] Game Development and Production, Wordware Publishing. Chapter 6. [11] Wiegers, K. [1997] Standing on Principle, The Journal of the Quality Assurance Institute, Julho de [12] JANSSEN, C. What is Project Management Software? - Definition from Techopedia, acedido em 22 de Agosto, Janalta Interactive Inc. [13] Issue & Project Tracking Software, https://www.atlassian.com/software/jira, acedido em 22 de Agosto, Atlassian. [14] BEATTIE, R. [2007] Distributed Revision Control Systems: Git vs. Mercurial vs. SVN, em 27 de Agosto, [15] DRIBIN, D. [2007] Choosing a Distributed Version Control System, acedido em 27 de Agosto,
98 [16] HOWE, S. Getting Started with Banner Advertisements, acedido em 28 de Agosto, A Smashing Media Company. [17] LAKE, L. Mobile Marketing - Getting a Grasp on the Basics, acedido em 28 de Agosto, About.com. [18] LEMOS, M. [2012] Como conquistar anunciantes diretos. Revista Blogosfera.com.br Ed. 5, Ano 2, [19] Yan, J; Liu, N; Wang, G; Zhang, W; Jiang, Y; Chen, Z. [2009] How much can Behavioral Targeting Help Online Advertising? Track: Internet Monetization, Session: Web Monetization, WWW 2009 Madrid. [20] IAB internet advertising revenue report: 2012 full year results, Pricewaterhouse- Coopers, Internet Advertising Bureau. Abril, [21] BEST, S. Types of Online Advertising Techniques, acedido em 28 de Agosto, HubPages Inc. [22] Lee, JooWon; Ahn, Jae-Hyeon. [2012] Attention to Banner Ads and Their Effectiveness: An Eye- Tracking Approach. International Journal of Electronic Commerce, Fall 2012, Vol. 17 Issue 1, p119. [23] Revenue Outcomes Matter To Online Advertisers, Forrester Consulting. Janeiro, [24] O que é o AdWords?, acedido em 09 de Abril, Google Inc. [25] SCHWARTZ, Barry. [2009] Google Gets Into Behavioral Targeting, Launches Interest-Based Advertising, , acedido em 09 de Abril, Third Door Media, Inc. [26] Target ads to geographic locations, https://support.google.com/adwords/answer/ , acedido em 09 de Abril, Google Inc. [27] KIM, Larry. What Is Google AdWords? How the AdWords Auction Works, acedido em 09 de Abril, WordStream. [28] BSALove s Advertisers, em 09 de Abril, BuySellAds.com. [29] HOW DOES AD SERVING WORK?, acedido em 11 de Abril, Adopsinsider.com. 78
99 [30] Iframe Vs Jscrip Tags, acedido em 14 de Abril, knowonlineadvertising.com. [31] Políticas e Princípios Publicidade, acedido em 14 de Abril, Google Inc. [32] Rawsthorne, D. [2004] Writing Effective Use Cases. Net Objectives. [33] Bass, L.; Clements, P.; Kazman, R. [2003] Software Architecture in Practice. 2 nd Edition, Addison-Wesley. [34] Kircher, M.; Jain, P. [2004] Pattern-oriented software architecture: Patterns for Resource Management. John Wiley & Sons, Volume 3, Chapter 2. [35] Architectural Patterns: Broker, acedido em 06 de Maio, OpenLoop Technologies, Inc. [36] Features of Yii, acedido em 29 de Abril, Yii Software LLC. [37] SOMMERVILLE, I. [2004] Engenharia de Software. Addison Wesley, 7th Edition. Chapter 16. [38] About the IAB, acedido em 9 de Junho, Interactive Advertising Bureau. [39] Aimonetti, M. [2013] What Technology Should My Startup Use?, acedido em 24 de Abril, [40] PHP: Hypertext Preprocessor, acedido em 29 de Abril, The PHP Group. [41] PHP Manual, acedido em 29 de Abril, The PHP Group. [42] About the Apache http Server Project, acedido em 29 de Abril, The Apache Software Foundation. [43] April 2014 Web Server Survey, acedido em 29 de Abril, NETCRAFT Ltd. [44] A Basic UNIX Tutorial - Section 1: What Is UNIX?, acedido em 29 de Abril, [45] Definition of: Unix, acedido em 29 de Abril, PCMag Digital Group. [46] FLANAGAN, D.; FERGUSON, P. [2002] JavaScript: The Definitive Guide. 4 th Edition. O'Reilly & Associates. [47] What is jquery, acedido em 29 de Abril, The jquery Foundation. 79
100 [48] Nivo Slider, acedido em 29 de Abril, Dev7studios. [49] Zafar, R. [2012] What is software testing? What are the different types of testing?, acedido em 08 de Maio, CodeProject.com [50] Crispin, L; Gregory, J. Agile Testing: A Pratical Guide for Testers and Agile Teams. Addison- Wesley. [51] Winesett, J. [2010] Agile Web Application Development with Yii 1.1 and PHP5. Packt Publishing Ltd. [52] Ash, T. [2012] Rotating Banners? Just Say No!, acedido em 11 de Junho, Incisive Interactive Marketing LLC. [53] Runyon, E. Carousel Interaction Stats, acedido em 9 de Junho, WeedyGarden.net. [54] Popper, K. [1963] Conjectures and Refutations: The Growth of Scientific Knowledge. Routledge Classics. [55] Humphrey W.S.; Kitson D.H. & Kasse T.C. [1989]; The State of Software Engineering Practice: a preliminary report. Proc. IEEE 11th International Conference on Software Engineering, pp , IEEE CS Press. 80
101 ANEXOS 81
102 ANEXO A ORGANIGRAMA GERAL DA AD8BIZ Figura 27 - Organigrama geral da empresa ad8biz 82
103 ANEXO B DIAGRAMAS ENTIDADE-RELAÇÃO Segue-se o diagrama Entidade-Relação da base de dados versão 1: Figura 28 - Diagrama Entidade-Relação versão 1 As diferenças entre a versão 1 e versão 2 são: Generalização das entidades Regiões e Locais numa única entidade Zonas; Nova relação muitos-para-muitos entre Banners e Zonas; Nova entidade Encomenda para registar as compras de publicidade; Relação de muitos-para-muitos entre Banners e Encomenda; Segue-se o diagrama Entidade-Relação da base de dados versão 2: 83
104 Figura 29 - Diagrama Entidade-Relação versão 2 Relembra-se que a versão 3 do diagrama Entidade-Relação é que representa o atual modelo relacional da base de dados. As alterações entre a versão 2 e a versão 3 são: Adicionado um campo data_ins na entidade Banners, difere a data de inserção da data de publicação (campo data_pub ); Adicionado campo alt à entidade Banneridioma, objetivo de guardar uma breve descrição do anúncio; Nova entidade clicks regista os cliques efetuados num anúncio; Nova entidade schedule regista a ocupação dos banners. Novas entidades services e wuser_has_services, registam e relacionam serviços do GESTPUB com utilizadores WESHHA. 84