Home

Texto integral - Repositório Aberto da Universidade do Porto

image

Contents

1. O Wedit um editor de conte dos web desenvolvido por um grupo de alunos da FEUP no mbito da disciplina de Laborat rio de Gest o de Projectos Nesta disciplina prentendia se que os aluno tivessem contacto com o mundo empresarial desenvolvendo aplica es reais para empresas reais para resolver problemas reais O Wedit foi ent o desenvolvido para a PT Inova o e h um interesse na sua utiliza o uma vez que este foi apenas concebido para gerar conte dos web ficando toda a responsabilidade da l gica subjacente a esses conte dos noutra aplica o a desenvolver Assim o Wedit vai ser usado como o editor de conte dos do Gruki wedit css eder 2 Cell 1 Cell2 Cell 3 Cell 4 USABILIDADE Pr Ha At UHUGSESU Usabilidade um termo usado para definir a facilidade com que as pessoas podem empregar uma fi i i A ts ESTUDOS DE USABILIDADES 3 p 100 Figura 3 5 Modo de edi o de uma p gina com o Wedit Como estamos a falar de cria o de conte dos atrav s de um browser o Wedit tal como os a maioria dos editores existentes foi desenvolvido recorrendo tecnologia JavaScript O Ja vaScript uma linguagem de scripting que executada num browser permitindo a manipula o 24 Estado da Arte Revis o Tecnol gica do Document Object Model uma norma orientada a objectos para representac o de documentos HTML O JavaScript hoje uma das linguagens de programa o com maior cresci
2. lt lt 17 Exemplo de uma p gina criada no Backpack 18 Modo de edi o de uma p gina com o Wedit 24 Arquitectura l gica do Gruki suo 4 ay e oe ee RE SS E a EOS 30 Arquitectura tecnol gica do Gruki lt lt lt lt 31 Modelo de dados do Gruki lt lt lt lt 44 34 Esquema de processamento de um pedido em aplica es Rails 38 A interface do Gruki e respectivas reas l gicas 43 Formul rio de registo de um utilizador no Gruki M Uma p gina em modo de edi o no Gruki 45 1X LISTA DE FIGURAS Lista de Tabelas 2 1 2 2 4 1 4 2 4 3 4 4 4 5 4 6 4 7 Tabela de especifica o e ordena o de requisitos 8 Tabela de especifica o e ordena o de requisitos n o funcionais 10 Especifica o da tabela pages lt lt lt lt 4 44 00000004 2 Especifica o da tabela spaces lt lt lt lt 44 000000 0 35 Especifica o da tabela users lt lt lt lt lt 44 4 36 Especifica o da tabela spaces users lt lt lt lt 44 36 Especifica o da tabela references lt lt lt 36 Especifica o da tabela versions lt lt lt 44 37 Especifica o da tabela invites lt lt lt 44 37 XI LISTA DE TABELAS XII Abreviaturas e S mbolos AJAX CMS CRUD CSS DOM HTML HTTP MVC REST RS
3. Figura 2 1 Casos de Uso do Gruki e Espa o Aberto as p ginas deste espa o podem ser vistas por Visitantes e Utiliza dores mas apenas Utilizadores daquele espa o podem editar e criar p ginas e Espa o Fechado apenas Utilizadores pertencentes ao espa o selecionado podem ver editar e criar p ginas Existe ainda um tipo especial de permiss o que o de Administrador de um Espa o Um Administrador de um Espa o o utilizador que o criou e como tal o nico que pode apagar coisas no Espa o definitivamente sejam p ginas ou o pr prio Espa o O Administrador pode ainda convidar novos utilizadores a juntarem se ao espa o Um Utilizador registado pode criar um espa o novo para o qual poder escolher quais as permiss es que este ter O Utilizador poder igualmente alterar as suas defini es pessoais como o email ou a password com que efectuou o registo Seria interessante tamb m a exist ncia de um dashboard de actividade onde se mostrariam quais as ltimas p ginas editadas nos espa os a que um utilizador pertence Dentro das funcionalidades das p ginas ser tamb m relevante a possibilidade de ver o hist rico de uma p gina e de efectuar o rollback para uma vers o anterior Igualmente Definic o do Problema interessante seria ver uma lista das paginas para as quais a pagina actual possui uma hiperligac o Ao n vel dos espa os as funcionalidades mais relevantes s o as de criar um espa o e definir per
4. o de programas e bibliotecas Estes pacotes denominam se por gems Em http www rubygems org h mais informa es sobre o Ruby Gems e seus pacotes JA palavra inglesa scaffold significa andaime e assim funcionalidades de scaffolding s o funcionalidades de suporte ao desenvolvimento tal com os andaimes na constru o civil 21 Estado da Arte Revis o Tecnol gica e a biblioteca script aculo us A biblioteca Prototype usada essencialmente para o processa mento de chamadas AJAX e manipulac o do DOM de uma p gina Por sua vez a biblitoeca script aculo us usada para animar a interface com o utilizador de forma a tornar a sua experi n cia de utilizac o mais agrad vel Um exemplo cl ssico disto o processamento de uma chamada AJAX As chamadas AJAX permitem que uma pagina envie para o servidor um request sem que o endereco actual da pagina seja alterado e sem que esta seja recebida na sua totalidade A resposta de uma chamada AJAX pode conter varias coisas como HTML ou c digo JavaScript que podem alterar a p gina actual Como estas chamadas s o efectuadas sem que o utilizador se aperceba igualmente f cil que os seus resultados lhe passem despercebidos Assim por um lado a Prototype faz as chamadas AJAX e trata de agir quando recebe uma resposta a script aculo us pode mostrar um efeito de forma a chamar a aten o do utilizador para as altera es efectuadas As utiliza es do AJAX s o extensas e a integra o da Pro
5. o s o os mesmos que os de escrita de forma a que qualquer autor seja ao mesmo tempo editor e organizador Transparente O conte do formatado e impresso deve sugerir qual a sintaxe necess ria para o reproduzir Unificada Os nomes das p ginas dever o pertencer todas ao mesmo conjunto para que n o sejam precisas informa es contextuais para a sua compreens o 12 Estado da Arte Revis o Tecnol gica e Precisa As p ginas dever o ter um t tulo suficientemente preciso para evitar a maior parte da concorr ncia de nomes tipicamente formando sintagmas nominais e Tolerante Comportamentos n o interpret veis mesmo que indesejados s o prefer veis a mensagens de erro e Observ vel A actividade de cada p gina dever poder ser observada e revista por qualquer visitante da p gina e Convergente A duplica o dever ser desencorajada ou removida atrav s da cita o de conte do similar ou relacionado Estes princ pios s o os utilizados originalmente por Ward Cunningham mas n o s o estanques Quest es como a editabilidade por todos os leitores de uma p gina wiki podem provocar actos de vandalismo bastante comuns por exemplo na Wikipedia Outra quest o relevante a necessidade do conhecimento de uma sintaxe adequada para a edi o de uma p gina Este conhecimento pode por vezes limitar a universalidade de acesso a uma wiki pois o tipo de sintaxe apesar de bastante comum e facilmente entend ve
6. uma das grandes vantagens do desenvolvimento de aplica es web em Rails 30 Descric o da Soluc o Utilizador Pedidos HTTP Ruby on Rails Base de Figura 4 2 Arguitectura tecnol gica do Gruki 4 2 Base de dados Os dados da aplica o s o guardados recorrendo a uma base de dados relacional Por defeito o Gruki recorre a uma base de dados MySQL para guardar os dados O Rails facilita toda esta interac o com a base de dados atrav s de uma poderosa abstrac o que conseguida atrav s do sistema de migra es e da biblioteca ActiveRecord Esta abstrac o permite que toda a interac o com a base de dados seja feita sem ter de se recorrer aos mecanismos cl ssicos de gest o de base de dados Numa aplica o Rails necess rio configurar o acesso base de dados fornecendo as in forma es mais comuns necess rias para criar uma conex o base de dados Estas informa es consistem no endere o do servidor no nome da base de dados e no nome de utilizador e respec tiva password que possui acesso base de dados a usar H igualmente necessidade de fornecer uma informa o adicional que a identifica o do adaptador de base de dados a usar Este adap tador consiste numa camada de abstrac o que se coloca entre a aplica o Rails e a base de dados Assim alterando este adaptador podemos facilmente alterar o tipo de base de dados a utilizar passando de MySQL para SQLite Oracle Postgres o
7. Google incentivado o uso de conte dos produzidos noutras aplica es do Google como o Google Docs ou o Google Spreadsheats atrav s de uma integra o nativa do Google Sites com documentos produzidos nestas aplica es Figura 3 2 Exemplo de uma p gina criada com o Google Sites 2http www jot com 16 Estado da Arte Revis o Tecnol gica 3 3 2 Wikispaces Esta aplica o uma das principais influ ncias do Gruki O Wikispaces foi desenvolvido pela Tangient uma empresa de desenvolvimento web sediada em S o Francisco As funcionalidades do Wikispaces s o extensas sendo de destacar a simplicidade que mant m apesar de todas as suas funcionalidades Possui um editor WYSIWYG apesar de tamb m permitir a edi o manual de c digo wiki Possui funcionalidades de hist rico e de diferencian o entre vers es De forma a facilitar a inclus o de conte dos possui um gestor de ficheiros para permitir o upload de imagens e outros tipos de ficheiros Inclui igualmente m todos para fazer backup de um espa o podendo fazer se download das p ginas em vers o HTML Inclui tamb m notifica es de altera es feitas a p ginas via email e via RSS bem como todo um conjunto de funcionalidades adicionais cujo volume seria O Wikispaces oferece a cria o de wikis abertas gratuitamente sendo as op es de wikis pri vadas pagas Oferece cinco tipos diferentes de planos do gratuito com oferta de 2GB de espa o para a
8. Os papeis dos tr s actores presentes no diagrama s o e o Visitante o utilizador n o registado e o Utilizador o utilizador registado e autenticado no sitema pertencente ao espa o selecionado e o Administrador de um Espa o o criador de um espa o o que lhe confere permis s es administrativas O Visitante tem como possibilidades o registo na aplica o fornecendo as informa es que lhe forem pedidas Ap s esse registo o Visitante pode agora autenticar se na aplica o passando a ser um Utilizador Existem tr s casos de uso que s o cruciais para a l gica do Gruki e que est o acess veis ao Visitante Estes casos de uso s o os de cria o edi o e visualiza o de uma p gina Conv m contudo referir que estes casos de uso est o sujeitos ao sistema de permiss es do Espa o em que as p ginas em quest o este jam inseridas Existem tr s tipos de permiss es que passamos a definir e que ajudam a entender como funcionam estes casos de uso e Espa o P blico quer Visitantes quer Utilizadores podem ver criar e editar p ginas Definic o do Problema Convidar utilizadores para um espa o Apagar um espa o X Administrador de um Espaco Remover uma p gina i i Aceitar um convite para se juntar a um espa o Editar dados de um utilizador Criar um espa o Utilizador Selecionar um espa o Editar uma p gina Visualizar uma p gina ua Registar um utilizador Visitante l
9. ao m ximo frustrar o utilizador Boas pr ticas de usabilidade levam a que os componentes de uma p gina sejam evidentes Ao olhar para uma p gina o utilizador dever ser capaz de identificar sem ter de pensar as reas de navega o e de conte dos os s tios onde pode clicar a p gina em que se encontra etc Apesar de por vezes os utilizadores at serem tenazes o suficiente para usar uma aplica o mesmo que esta seja frustrante e dif cil se esta for evidente e auto explicativa toda a aplica o parecer melhor e proporcionar uma consideravelmente mais agrad vel user experience De entre as v rias maneiras de estudar a usabilidade de uma aplica o sem d vida que a mais eficaz o teste da aplica o por utilizadores reais N o dif cil de conceber que para uma equipa de desenvolvimento envolvida desde o in cio num projecto toda a aplica o parecer extrema mente f cil e us vel uma vez que para eles n o haver segredos quanto ao seu funcionamento Assim dando a utilizadores reais da aplica o que n o tiveram contacto anterior com ela uma oportunidade de a usarem podemos adquirir valiosas informa es sobre as dificuldades encontra das por um utilizador ao utilizar a aplica o Existe hoje um paradigma que coloca a responsabilidade da cria o de conte dos para a web nos utilizadores Neste paradigma os wikis t m um papel primordial devido s suas possibilidades de edi o Assim essencial para
10. associada a requisitos cuja implementa o se ria altamente desej vel mas que n o afectam gravemente o funcionamento da aplica o Por fim os requisitos de prioridade Baixa s o os requisitos secund rios que apesar de adicionarem valor aplica o n o s o fundamentais 2 2 Requisitos N o Funcionais Os requisitos n o funcionais s o requisitos que n o estando directamente ligados s funcionalidades que o Gruki suposto conter est o relacionados com depend ncias e reguistos externos aplica o Nesta sec o iremos descrever esses requisitos dentro de v rias reas Primeiramente iremos referir os requisitos ao n vel das interfaces externas e posteriormente os requisitos em termos de usabilidade confiabilidade disponibilidade portabilidade escalabilidade e performance Definic o do Problema 2 2 1 Requisitos de interfaces externas Nesta secc o explico guais as interfaces externas gue s o necess rias para gue o Gruki seja usado Foram exclu das desta lista as interfaces de hardware uma vez que devido a portabilidade da plataforma sobre o qual foi implementado o Gruki n o requer nenhum hardware espec fico Interfaces com o utilizador Sendo uma aplica o web o Gruki dever correr num browser Devido a limita es mo tivadas pelo editor WYSIWYG utilizado a edi o de p ginas no Gruki apenas foi poss vel por limita es de tempo de colocar a funcionar correctamente no b
11. called a space being each space associated with a group of pages that share a certain set of permissions Each space has also a group of associated users that have special privileges in the space To allow an agilization of the Gruki development process and with the objective of exploring the agile methods of software development the framework Ruby on Rails is going to be used This is a framework for web applications development and it s highly oriented for the agile methods of software development This methods are based in a philosophy that states that software development should be and agile and iterative process making it able to adapt easily to change This way this project not only will allow learning on the agile methodologies of soft ware development but will also result in a web application with high value for collabora tive information sharing motivated by it s wiki nature iii iv Agradecimentos Este projecto resultado de varias semanas de trabalho individual mas como sabido nada verdadeiramente feito sozinho Queria agradecer desde logo ao Engenheiro Jos Bonnet da PT Inova o cujas ideias e vis o tornaram o Gruki num desafio que agarrei com vontade e dedica o Para ele o meu muito obrigado Gostaria igualmente de agradecer ao Professor Ademar Aguiar da FEUP pela orienta o concedida em termos acad micos e por todo o conhecimento relacionado com wikis que me forneceu Ser igualmente justo a
12. campo preenchido automaticamente pelo Rails quando actualiza uma linha na base de dados created on datetime Data e hora da cria o da p gina preen chido quando uma linha da base de dados criada A tabela spaces guarda as informa es sobre os espa os do Gruki Tabela 4 2 Especifica o da tabela spaces Campo Tipo Descri o id integer Chave prim ria da tabela identficador nu m rico nico de um espa o name string Nome do espa o admin id integer Identificador num rico do utilizador que possuir privil gios de administra o neste espa o permissions integer Valor inteiro que guarda o valor das per miss es do espa o 35 Descric o da Soluc o Na tabela users s o guardados os dados dos utilizadores registados Tabela 4 3 Especifica o da tabela users Campo Tipo Descri o id integer Chave prim ria da tabela identficador nu m rico nico de um utilizador email string Cadeia de caracteres com o endere o de correio electr nico do utilizador username string Nome do utilizador registado com este nome que efectuado o login hashed passgvsirhg Valor da palavra passe encriptada salt string Salt de suporte gera o da chave encrip tada created on datetime Data e hora do registo de um utilizador Este campo automaticamente preenchido pelo Rails ao criar o registo Para que util
13. de usabilidade lt lt 2 2 3 Requisitos de confiabilidade 2 2 4 Requisitos de disponibilidade 2 2 5 Requisitos de portabilidade 2 2 6 Requisitos de escalabilidade 3 Estado da Arte Revis o Tecnol gica 3 1 O conceito de wiki 3 2 AUsabilidadenaweb 3 3 Solu es similares existentes 3 3 1 Google Sites 3 3 2 Wikispaces 3 3 3 Backpack lt s kok aaan 3 4 Tecnologias utilizadas 3 4 1 Ruby cau cee cee eee 3 4 2 RubyonRails 3 4 3 MySQL 3 4 4 ServidoresWeb 3 4 5 Wedit are ee ah 4 Descri o da Solu o 4 1 Arquitectura 4 1 1 Arquitectura L gica 4 1 2 Arquitectura Tecnol gica 4 2 Basededados 4 3 Detalhes de implementa o 4 3 1 Controladores vii CONTE DO 4 3 1 1 O Controlador de P ginas 4 3 1 2 O Controlador de Espagos 4 3 1 3 O Controlador de Utilizadores 4 3 2 Modelos 2 02 002 ee ee 5 Demonstra o 6 Conclus es e Trabalho Futuro Refer ncias viii Lista de Figuras 1 1 2 3 1 3 2 3 3 3 4 3 5 4 1 4 2 4 3 4 4 5 1 5 2 5 3 Volume de neg cios da PT Inova o em Milh es de Euros 2 Casos de Uso do Gruki seas Wale Hd e 7 Exemplo de uma p gina da Wikipedia em modo de edi o 12 Exemplo de uma p gina criada com o Google Sites 16 Exemplo de uma p gina do Wikispaces lt
14. e que poss vel aceder lhe atrav s de um browser Ac es do Espa o Ac es de Utilizador Space gt Home Properties Usemame HS Password HS Register Figura 5 1 A interface do Gruki e respectivas reas l gicas Como se pode observar pela imagem o Gruki tem um aspecto limpo Nao foi colocado muito esforco no design do Gruki uma vez que essa guest o ficava fora do mbito do trabalho Contudo foi feito um esforco para que o aspecto do Gruki fosse minimamente bonito mantendo sempre a simplicidade que era pretendida Uma vez que o Gruki nao um produto terminado existem algumas funcionalidades implementadas que n o foram integradas na interface Existem quatro reas distintas na interface do Gruki 43 Demonstrac o e no canto superior direito est o as ac es relacionadas com o utilizador como o formul rio de autentica o e o acesso ao registo Quando um utilizador est autententicado s o mos tradas as ac es de logout de selec o de um espa o e de cria o de um novo espa o bem como o acesso ao perfil do utilizador e no canto inferior esquerdo est o as ac es de uma p gina incluem os bot es de acesso edi o de uma p gina p ginas que referem a actual hist rico de vers es e remo o de uma p gina e no canto superior esquerdo est o as ac es do espa o actual Estas incluem a ida para uma listagem das p ginas de um espa o e acesso altera o de permiss es de um esp
15. nome deriva da jun o das palavras grupo e wiki Durante grande parte do per odo de desenvolvimento da apli ca o esta teve o nome de WikiSpaces nome que foi mudado para impedir confus o com a aplica o Wikispaces j existente Pretende se com o Gruki implementar uma wiki recorrendo framework Ruby on Rails Esta wiki ter de ter as funcionalidades b sicas de uma wiki a cria o e edi o de Esta aplica o encontra se em http www wikispaces com Introdu o uma p gina e o agrupamento de p ginas em espa os Todas as p ginas de um espa o ir o partilhar um conjunto de permiss es que ir o limitar o seu acesso O Gruki dever ainda fornecer a possibilidade de se verificar o hist rico de uma p gina acrescendo possibilidade de visionamento das v rias vers es anteriores da p gina a possibilidade de retornar a uma dessas mesmas vers es Dever ainda ser o usado o editor WYSIWYG Wedit desenvolvido por um grupo de alunos da FEUP na disciplina de Laborat rio de Gest o de Projectos no ano lectivo de 2006 2007 Este editor ir permitir uma maior simplicidade ao n vel da utiliza o da aplica o facilitando o seu uso por pessoas com menores conhecimentos de inform tica e sem familiaridade com as normais sintaxes wiki 1 3 Motiva o e Objectivos O crescente n mero de utilizadores da web e a crescente utiliza o de novos servi os obriga a que as aplica es web tenham ent o de ser dese
16. o entre as camadas de interface l gica de neg cio e de tratamento de dados bem como a sua abstra o para o uso de sistemas de gest o de bases de dados contam se entre as in meras vantagens encontradas na utiliza o do Ruby on Rails Devido s suas caracter sticas muito pr prias o Ruby on Rails uma framework em que apenas uma certa habitua o e um certo m todo de trabalho podem levar produtividade A sua forte estrutura o impede que se seja verdadeiramente produtivo desde o nicio mas permite igualmente que a sua aprendizagem seja apenas uma quest o de tempo e de habitua o 47 Conclus es e Trabalho Futuro O per odo de tempo limitado para o desenvolvimento do Gruki levou a que os testes a efectuar sobre a aplica o n o tenham sido realizados Com um maior per odo de tempo disposi o teria sido imperativa a realiza o de testes unit rios e funcionais bem como de usabilidade Apesar das dificuldades encontradas o Gruki chegou a um bom estado de maturidade encontrando se completamente funcional Contudo h sempre espa o para a adi o de melhoramentos Nor malmente os wikis possuem um grande n mero de funcionalidades tornando se por vezes exage radamente confusos Exemplo disso a TikiWiki que possui al m da wiki f runs blogs galerias de imagens etc quer apesar de a tornarem bastante poderosa permitindo a sua utiliza o quase como um CMS cl ssico tornam na extremamente confusa para um ut
17. os erros n o devem ser mostrados ao utilizador Na directoria config s o igualmente configuradas as liga es base de dados sendo que estas liga es s o diferentes para cada um dos ambientes de execu o Aqui tamb m configurado o ficheiro de routing respons vel pela defini o dos endere os URL que a aplica o ir aceitar e que s o introduzidos pelo utilizador no browser descreve se em 4 3 a maneira como estes endere os s o interpretados e db A directoria db possui as informa es da base de dados nomeadamente os scripts das migra es As migra es s o uma til ferramente do Rails que permitem que a interac o com a base de dados seja feita abstractamente atrav s de instru es Ruby Em 4 2 analisa se com mais detalhe estas migra es e a sua liga o com a base de dados lOs helpers s o fun es Ruby que s o usadas para reduzir ao m ximo a l gica de neg cio presente nas vistas 28 Descric o da Soluc o e doc Esta directoria cont m documenta o gerada automaticamente pelo RDoc uma fer ramenta de gerac o de documentac o em formato HTML do estilo JavaDoc em gue os coment rios ao c digo fonte s o usados para fornecer informa es e lib Directoria que possui c digo partilhado por v rias reas da aplica o e log Localiza o dos logfiles da aplica o um por cada ambiente definido e public Todos os conte dos da aplica o que ser o acess veis atrav s d
18. os wikis que estes possuam elevados valores de usabilidade Num artigo publicado em 2005 DPV05 foram apresentados os resultados de um estudo efectuado sobre a usabilidade dos wikis Neste estudo os principais problemas de usabilidade encontrados prendem se com a gest o de hiperliga es e a orienta o dos conte dos a criar para o formato hipertexto Apesar disso as conclus es obtidas referem que apesar de todos os problemas en contrados os wikis s o ferramentas us veis tendo permitido nos testes efectuados a um grupo de crian as por exemplo desenvolver de forma colaborativa uma hist ria na web 3 3 Solu es similares existentes Nesta sec o descrevemos algumas solu es similares ao Gruki Uma compara o deste tipo de wiki com qualquer wiki n o justa a lista de motores wiki extensa e seria exagerado referir me a todos eles Igualmente pretende se com o Gruki abordar outros paradigmas de funcionalidade como a cria o de conte dos potencialmente mais est ticos como seria por exemplo uma p gina pessoal n o esquecendo que a edi o WYSIWYG de conte dos igualmente relevante 15 Estado da Arte Revis o Tecnol gica Assim escolhi para analisar tr s aplica es que t m funcionalidades similares s que se pre tendem implementar no Gruki o Google Sites o Wikispaces e o Backpack Iremos ver quais as funcionalidades de cada uma destas solu es e fazer uma an lise cr tica do seu funcionamento
19. que aparecem os requisitos de usabilidade que hoje s o fundamentais no desenvolvimento de aplica es web Neste relat rio descreve se o processo de desenvolvimento da aplica o Gruki um wiki constru do com o objectivo de permitir a f cil cria o de conte dos por todos para todos A utiliza o do editor WYSIWYG de conte dos web Wedit desenvolvido com a usabilidade em mente permite que o Gruki adquira para si essas qualidades que o tornam uma aplica o simples e f cil de usar O Gruki pretende igualmente simplificar a utiliza o de wikis permitindo a cria o de um wiki atrav s de um simples registo Cada wiki do Gruki ser denominado por espa o sendo que cada espa o tem associado um conjunto de p ginas sobre o qual aplicado um determinado conjunto de permiss es Cada espa o possui igualmente um conjunto de utilizadores associado que sobre este t m permiss es especiais De forma a agilizar o processo de desenvolvimento do Gruki e com o intuito de explo rar os m todos geis de desenvolvimento de software vai ser usada a framework Ruby on Rails uma framework para o desenvolvimento de aplica es web que altamente orien tada para os m todos geis de desenvolvimento de software Estes m todos s o baseados numa filosofia de que o desenvolvimento de software deve ser um processo gil e iterativo capaz de se adaptar facilmente s mudan as Assim este projecto n o s ir permitir uma aprendizagem ao n
20. s o subclasses da classe ActiveRecord e herdam dela um conjunto de m todos para acesso e interac o com a base de dados O ActiveRecord possui fun es que facilitam o estabelecimento das rela es entre modelos fun es cujos nomes tornam a sua compreens o imediata Assim quando no modelo de P ginas se refere has many versions imediato percebermos que uma p gina possui v rias vers es O ActiveRecord possui igualmente m todos para facilitar a valida o dos dados de um modelo como por exemplo para obrigar a que um determinado campo possua um valor Estes m todos de valida o apenas s o chamados quando se executa o comando que grava um objecto na base de dados cancelando essa inser o se a valida o n o for concluida com sucesso O modelo de p ginas possui ent o m todos que associam uma p gina a um espa o e a um au tor atrav s do m todo belongs to e m todos para associar uma p gina s suas vers es p ginas que a referem e p ginas que por ela s o referidas atrav s do m todo has many Uma p gina deve ser validada de forma a ter obrigatoriamente um nome e conte do sendo tamb m efectuada uma valida o que obriga a que o nome da p gina seja nico dentro de um espa o O modelo das vers es das p ginas apenas serve para manter as refer ncias s p ginas originais e aos autores de uma vers o Existe associado ao modelo de p ginas um modelo que guarda as refer ncias das p ginas umas s ou
21. um con junto de directorias definidas para a coloca o de cada componente da aplica o incluindo al m da aplica o propriamente dita testes ficheiros de estilos CSS e Javascript poss vel contudo fugir a estas conven es mas as vantagens deste afastamento s o discut veis O princ pio de n o te repitas diz que nada pertencente base de conhecimento do sistema dever ser escrito mais do que uma vez Este princ pio aplica se ao c digo mas tamb m aos requisitos ou arquitectura da aplica o As grandes vantagens desta aproxima o s o desde logo evidentes a maior facilidade nas altera es e a menor quantidade de c digo requisitos funcionalidades repetidas N o dif cil conceber que muito mais f cil e muito menos sujeito a erros alterar por exemplo a implementa o de uma fun o do que ter de fazer altera es em v rios s tios diferentes por vezes em ficheiros e at m dulos diferentes da aplica o Os efeitos das falhas provocadas pela repeti o podem oscilar desde simples erros a falhas totais do sistema No cap tulo seguinte iremos ver com mais detalhe a arquitectura de uma aplica o Ruby on Rails baseada no padr o arquitectural Model View Controller Resumidamente este padr o tenta separar a interface com o utilizador de toda a l gica de neg cio subjacente Os models modelos s o respons veis pela manuten o dos dados e de toda a l gica a eles associada as views vistas e
22. v rios pa ses do mundo como o Brasil Cabo Verde Angola Botswana e at Timor O seu volume de vendas em 2007 foi de cerca de 80 milh es de Euros anuais Ino08 Os seus principais produtos s o o NGIN o Netb nd e o NOSSIS O NGIN uma pla taforma de servi os de rede inteligente que conta com mais de 70 milh es de utilizadores em todo o mundo O Netb Wand uma solu o integrada de rede de acesso e o NOSSIS uma solu o de suporte opera o e gest o de redes nos mbitos da gest o provis o recursos e supervis o Introdu o 67 5 Figura 1 1 Volume de neg cios da PT Inova o em Milh es de Euros Apesar de o est gio ser realizado na PT Inova o a empresa qual estou associado primeiramente a Inova Ria A Inova Ria uma associa o de empresas para uma rede de Inova o situada na zona de Aveiro e que conta com cerca de 50 empresas entre as quais a PT Inova o Os seus objectivos s o criar e consolidar um cada vez maior n mero de empresas dos sectores das telecomunica es e tecnologias de informa o bem como promover a inova o e a coopera o empresarial nomeadamente aos n veis de Investiga o e Desenvolvimento Forma o Marketing e Internacionaliza o Conv m juntar a isto o interesse em refor ar a posi o da zona de Aveiro ao n vel nacional e internacional na rea das telecomunica es 1 2 Projecto A aplica o a implementar ser demoninada por Gruki
23. vel das metodologias geis de desenvolvimento de software como tamb m ir ser uma aplica o web de elevado valor para a partilha colaborativa de informa o motivada pela sua natureza wiki li Abstract A wiki is a webpage that can be edited by any authorized user written in a pre defined language that is afterwards converted in HTML Although simple the implications of this concept on the web technologies we have nowadays are enormous We assisted through the last years to a paradigm shift concerning the World Wide Web contents Before the contents were there produced by someone whose function was exactly to produce those contents today on the so called Web2 0 the contents are also created by us To allow those content creation functionalities to be accessible to everyone it is neces sary to do a progressive simplification of the web content creation tools This is the scope where usability requirements appear being nowadays fundamental on the web applicati ons development On this paper it s described the development process of the Gruki application a wiki built with the purpose of allowing the easy creation of contents for by everybody for everybody The WYSIWYG web content editor Wedit built around the usability allows Gruki to acquire to itself that simplicity and ease of use Gruki also wants to simplify the use of wikis by allowing the the creation of a wiki using just a simple register form Each wiki on Gruki will be
24. wiki at ao plano que custa 800 USD mensais e que oferece 200GB de espa o Figura 3 3 Exemplo de uma p gina do Wikispaces 3 3 3 Backpack O Backpack uma aplica o web desenvolvida pela 37signals para ser usada como gestor de informa o pessoal ou para servir como intranet de uma pequena empresa A 37signals a empresa por tr s da cria o do Ruby on Rails pelo que falaremos dela com mais detalhe mais frente No Backpack grupos de utilizadores partilham um conjunto comum de funcionalidades A principal funcionalidade do Backpack a de criar p ginas em que podem ser inclu das notas listas de afazeres galerias de imagens entre outras coisas Possui ainda um m dulo de calend rio que 3http www wikispaces com 4http tangient com Shttp www backpackit com Shttp www 37signals com 17 Estado da Arte Revis o Tecnol gica permite a exist ncia de um calend rio partilhado entre os v rios utilizadores Apesar de ser uma aplica o interessante n o possui um editor WYSIWYG e obriga ao conhecimento de uma sintaxe pr pria ao estilo wiki para aplicar formata es Uma das mais interessantes funcionalidades do Backpack possuir um endere o de correio electr nico associado a cada p gina e que permite que sejam colocados conte dos numa p gina atrav s de email O Backpack disponibilizado de forma gratuita com um conjunto de funcionalidades reduzido sendo as vers es mais completas oferecid
25. 3 3 1 Google Sites O JotSpot foi desenvolvido por uma pequena equipa e come ou por ser um servi o de alo jamento de wikis Actualmente a tecnologia JotSpot foi comprada e adaptada pela Google tendo agora o nome de Google Sites A grande diferen a entre o JotSpot e os demais concorrentes era o seu poder para a cria o de aplica es dentro das pr prias p ginas da wiki alargando as fronteiras do conceito Dentro de uma wiki JotSpot al m das v rias p ginas de conte do est tico facilmente cri veis numa wiki podia extender se as funcionalidades da nossa wiki adicionando lhe aplica es que permitiam por exemplo a cria o de blogs foruns galerias de imagens ou calend rios Todos estes conte dos podiam ser facilmente editados recorrendo ao editor WYSIWYG integrado nas aplica es JotSpot Em 2006 a Google comprou o JotSpot e em Fevereiro de 2008 lan ou o Google Sites O Goo gle Sites utiliza o mesmo editor WYSIWYG do JotSpot bem como o mesmo conceito de p ginas com aplica es Neste momento o Google Sites apresenta um n mero de aplica es para p gi nas muito menor que o JotSpot ignorando assim uma das suas mais poderosas funcionalidades Contudo os widgets adicion veis s v rias p ginas no Google Sites permitem adicionar funciona lidades que em alguns casos colmatam falhas que a menor quantidade de aplica es para p ginas oferece A utiliza o do Google Sites gratuita e todos os conte dos s o alojados pelo
26. Estrutura da Disserta o Neste relat rio descrito todo o processo de desenvolvimento do projecto Gruki desde a sua defini o de requisitos at descri o da solu o encontrada bem como a sua contextualiza o e posterior an lise de resultados no Cap tulo 2 definido com detalhe o problema apresentado fazendo se um le vantamento de requisitos funcionais e n o funcionais no Cap tulo 3 dedicado a uma revis o tecnol gica estado da arte em que farei uma an lise exaustiva de solu es similares que se pretende desenvolver Analo gamente feita uma abordagem aos principais conceitos relacionados com o pro jecto como por exemplo o conceito de wiki e s tecnologias a usar com foco no RubyOnRails no Cap tulo 4 descreve se a solu o implementada sendo demonstrados a sua ar quitectura e detalhes de implementa o no Cap tulo 5 consistindo numa demonstra o da aplica o no qual se inclui ainda o Manual de Utiliza o da mesma por fim no Cap tulo 6 exp em se as conclus es obtidas e efectua se uma an lise cr tica da aplica o desenvolvida no final do relat rio est o as refer ncias utilizadas Cap tulo 2 Defini o do Problema O projecto que descrevo neste relat rio surgiu para que a PT Inova o atingisse os seguintes objectivos e know how na framework Ruby on Rails sendo conhecida a agilidade com que se desenvolvem aplica es que envolvam da base de dados aos int
27. FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO WaasS Wiki as a Service Andr Filipe Monteiro Lamelas da Silva Relat rio de Projecto realizado no Ambito do Mestrado Integrado em Engenharia Inform tica e de Computa o Orientador Ademar Manuel Teixeira Aguiar Ph D Julho de 2008 WaasS Wiki as a Service Andr Filipe Monteiro Lamelas da Silva Relat rio de Projecto realizado no Ambito do Mestrado Integrado em Engenharia Inform tica e de Computac o Aprovado em provas p blicas pelo j ri Presidente Ana Paula Cunha da Rocha Professora Doutora Arguente Ant nio Rito Silva Professor Doutor Vogal Ademar Manuel Teixeira Aguiar Professor Doutor 7 de Julho de 2008 Resumo Um wiki uma pagina web editavel por qualquer utilizador autorizado escrita numa linguagem pr definida que depois traduzida em HTML Apesar de simples as im plica es deste conceito nas tecnologias web que possu mos hoje em dia s o imensas Assistimos nos ltimos anos a uma mudan a no paradigma em rela o aos conte dos na World Wide Web Dantes os conte dos estavam l produzidos por algu m cuja fun o era a de produzir conte dos hoje em dia na chamada Web2 0 os conte dos s o tamb m produzidos por n s Para permitir que essas faculdades de cria o de conte dos estejam acess veis a todos necess ria uma progressiva simplifica o das ferramentas de cria o de conte dos web neste mbito
28. S SGBD XML WYSIWYG Asynchronous Javascript And XML Content Management System Create Update Read Delete Cascade Style Sheets Document Object Model HyperText Markup Language Hypertext Transfer Protocol Model View Controller Representational State Transfer Really Simple Syndication Sistema de Gest o de Bases de Dados eXtensible Markup Language What You See Is What You Get xiii ABREVIATURAS E S MBOLOS XIV Cap tulo 1 Introduc o 1 1 Contexto Enguadramento Quando em 1995 Ward Cunningham criou a primeira wiki para servir como base para a troca de experi ncias no Portland Pattern Repository certamente que n o imaginaria o sucesso que o conceito viria a ter Anos depois o conceito de wiki vulgarizou se e as suas aplica es s o hoje imensas As wikis s o usadas um pouco por todo o mundo com aplica es que v o desde a enciclop dia online como a Wikipedia que o exemplo mais comum ao suporte de processos de desenvolvimento de software como no caso da PT Inova o Por este motivo h por parte da PT Inova o um interesse nas wikis como ferramentas de suporte ao trabalho colaborativo A PT Inova o uma empresa nascida em 1999 e que se afirma como a ncora tecnol gica do Grupo Portugal Telecom Contando com cerca de 500 trabalhadores a sua sede est localizada em Aveiro mas tem igualmente um P lo no Porto e outro em Lisboa bem como uma divis o no Brasil Os produtos da PT Inova o est o em
29. a o em v rias camadas permite nos observar que os controladores n o par tilham todos o acesso sobre os mesmos modelos o que faz com que haja uma separa o l gica da aplica o tamb m verticalmente sendo que as ac es do controlador de utilizadores apenas interagem com as vistas e o modelo de utilizador 4 1 2 Arquitectura Tecnol gica Descreve se a seguir a arquitectura tecnol gica do Gruki Esta arquitectura a arquitectura comum a todas as aplica es desenvolvidas em Ruby on Rails podendo apenas haver algumas varia es Como se pode observar pela figura o utilizador acede ao Gruki fazendo pedidos HTTP atrav s da utiliza o de um browser web com acesso ao servidor que est a executar o Gruki O servidor redireciona esses pedidos para os controladores adequados fazendo os executar as ac es pedi das de acordo com o routing das aplica es Rails Mais frente iremos ver como ocorre este redirecionamento No n vel mais baixo da aplica o temos o acesso base de dados MySQL que suporta o Gruki Entre os pedidos efectuados e o acesso base de dados encontra se a aplica o propriamente dita a correr sobre a framework Ruby on Rails que corre sobre a linguagem Ruby Este servidor pode correr em qualquer plataforma para o qual existam implementa es do Ruby como v rias vers es do Windows o OS X e v rias distribui es de Linux A portabilidade obtida com esta possibilidade de execu o multi plataforma
30. a o e no centro da p gina est o conte do da p gina sendo que esta rea varia de tamanho conso ante os conte dos No canto inferior direito da p gina fica o nome do autor da ltima vers o da p gina Quando um utilizador n o autenticado acede ao Gurki tem no canto superior direito da p gina a op o de registar uma nova conta Ao registar se tem depois acesso s funcionalidades que apenas ficam dispon veis para o utilizador autenticado O formul rio de registo tem o seguinte aspecto Figura 5 2 Formul rio de registo de um utilizador no Gruki Ap s o preenchimento deste formul rio o utilizador pode autenticar se no Gruki e come ar a criar espa os e p ginas bem como aceder a espa os para os quais tenha sido convidado 44 Demonstrac o Em modo de edic o de uma p gina o Gruki tem o seguinte aspecto Figura 5 3 Uma p gina em modo de edic o no Gruki Como se pode observar na imagem o Wedit faz com gue a edic o da p gina seja feita em modo WYSIWYG o que torna a edi o um processo simples e intuitivo O mdoo de edi o de uma p gina acedido atrav s do bot o Edit localizado na parte inferior da p gina 45 Demonstra o 46 Cap tulo 6 Conclusoes e Trabalho Futuro Neste ltimo cap tulo faz se uma an lise dos resultados obtidos e disserta se um pouco sobre o cumprimento dos objectivos propostos Fala se tamb m tamb m das perspectivas futuras do Gruki e dos seus potenci
31. a especificac o dos reguisitos do Gruki h gue distinguir entre dois tipos de reguisitos Por um lado os reguisitos funcionais referem se s funcionalidades do Gruki isto aquilo que o Gruki faz ou permite ao utilizador fazer Os requisitos n o funcionais referem se a quest es que n o t m directamente a ver com o que o Gruki faz mas est o relacionados com quest es como a necessidade de certos valores de performances ou o cumprimento de standards de acessibilidade 2 1 Requisitos Funcionais Na sua ess ncia o Gruki uma wiki e como tal os seus requisitos funcionais s o relati vamente simples O que distingue o Gruki das normais wikis a exist ncia de espa os conjuntos de p ginas partilhadas por utilizadores que sobre elas t m permiss es comuns Este conceito de espa os permite por exemplo que v rios utilizadores possam trabalhar colaborativamente em v rios projectos separados entre si sem que os utilizadores n o as sociados ao projecto lhe acedam Outro aspecto que faz igualmente o Gruki diferente de outras aplica es j existentes a utiliza o de um editor WYSIWYG para a edi o de conte dos Para facilitar o processo de levantamento de requisitos vou utilizar um diagrama de casos de uso de forma a tornar mais clara a sua visualiza o e seguidamente irei aprofun dar cada uma das funcionalidades explicando a sua utilidade e a sua pertin ncia para a qualidade da aplica o a desenvolver ver figura 2 1
32. ais desenvolvimentos Os wikis s o hoje uma ferramenta essencial no paradigma de produ o colaborativa de con te dos Para muitos os usos de um wiki est o ainda limitados ao seu uso num estilo como o da Wikipedia como reposit rio de conhecimento edit vel por todos A verdade que os usos de um wiki s o muito mais extensos e variados e est o ainda a ser explorados Numa empresa que est fisicamente dividida entre Aveiro Porto Lisboa e S o Paulo como a PT Inova o e que possui clientes em s tios t o distantes como o Botswana ou Timor verdadei ramente importante o papel dos wikis como ferramentas para escrita de documenta o tracking de tarefas levantamento de requisitos entre outros usos O Gruki foi desenvolvido quase na totalidade tendo em conta os requisitos propostos sendo que apenas o dashboard de actividade n o foi implementado a tempo Ser f cil rotular o Gruki como simples mas a verdade que a utiliza o da framework Ruby on Rails tornou o seu processo mais complicado O elevado n mero de conven es existentes no Ruby on Rails tornaram a sua aprendizagem um processo mais moroso e dif cil do que inicialmente se esperava Sendo baseado na arquitectura MVC a adapta o a este paradigma de programa o levou a algum atraso no processo de desenvolvimento Ap s algum tempo de habitua o framework reconhe o agora a sua grande versatilidade no desenvolvimento de aplica es web A sua completa separa
33. as atrav s de um pagamento mensal Research Tea Whitepapers amp reports CEB RBIRD Patterns Tea Shelf Shock Many of us associate the drinking of tea with a ritual of relaxation and revelry One glimpse of a large retailer shelf offering tea and the effect is instantaneously the opposite A sea of color and confusion Health Benefits Benefit claims in retail tea packaging are most often expressed in simple typographic statements or violating banners with little explanation or visual support The most common claim relates to antioxidant properties of catechins that occur naturally in the tea Health benefits on the label Mana aches Figura 3 4 Exemplo de uma p gina criada no Backpack 3 4 Tecnologias utilizadas Nesta sec o descrevemos as tecnologias usadas no desenvolvimento do Gruki Primeiramente fazemos uma descri o da linguagem de programa o Ruby sobre o qual o Ruby on Rails foi de senvolvido Esta introdu o ao Ruby serve para situar a linguagem no contexto das modernas linguagens de programa o com o intuito de tentar explicar a sua escolha para o desenvolvimento da framework Ruby on Rails em deterimento de outras linguagens largamente usadas para desen volvimento web como o PHP Depois fazemos uma descri o do Ruby on Rails um breve resumo hist rico alguns exemplos de utiliza o e uma an lise cr tica das suas vantagens e desvantagens justificando a sua escolha para o d
34. ase do not save test edits If you want to experiment please use the sandbox Contents Featured content Current events Redirect REST Rest Random article Representational state transfer REST is a style of software E architecture for distributed hypermedia systems such as the World Wide interaction Web The terms representational state transfer and REST were introduced About Wikipedia in 2000 in the doctoral dissertation of Roy Fielding lt ref gt Chapter 5 of Community portal Fielding s dissertation is http www ics uci edu fielding pubs dissertation Recent changes frest arch style htm Representational State Transfer REST lt ref gt one of Contact Wikipedia the principal authors of the Hypertext Transfer Protocol HTTP Donate to Wikipedia specification The terms have since come into widespread use in the networking community Help search REST strictly refers to a collection of network architecture principles which outline how resources are defined and addressed The term is often used in a looser sense to describe any simple interface which transmits domain Go Search specific data over HTTP without an additional messaging layer such as SOAP or Session management session tracking via HTTP cookie s These two toolbox meanings can conflict as well as overlap It is possible to design any large What links here software s
35. ave prim ria do espa o para o qual o convite est a ser gerado Quando J existir no Gruki um utilizador registado com esse email o convite a enviar ser diferente Ap s ser criado o convite enviado um email para o utilizador com o endere o a seguir para aceitar o convite se o utilizador j estiver registado ser automaticamente adicionado ao espa o se n o estiver registado ser levado at ao formul rio de registo de um novo utilizador e o convite ser posteriormente aceite 4 3 1 3 O Controlador de Utilizadores A habitual gest o de utilizadres est tamb m presente no Gruki Assim o Gruki suporta as funcionalidades normais s aplica es que possuem registo de utilizadores o registo visualiza o do perfil edi o dos dados e remo o de uma conta Al m destas funcionalidades o controlador de Utilizadores gere o processo de login e logout de um utilizador Ao n vel dos utilizadores til a exist ncia de uma listagem dos espa os a que um utilizador pertence para que possa facilmente mudar de um para o outro Refira se ainda que mais uma vez a simplicidade foi tida em conta e o registo de um utilizador no Gruki requer apenas um conjunto m nimo de dados 40 Descric o da Soluc o 4 3 2 Modelos No Gruki os modelos s o todos bastante simples mas ainda assim iremos fazer uma breve descri o de cada um explicando as suas funcionalidades e valida es que executam Nas aplica es Rails os modelos
36. cada um 4 3 1 1 O Controlador de P ginas Este controlador respons vel pelas ac es relacionadas com as p ginas do Gruki Ao ser chamado o m todo show ser carregada e mostrada a p gina pedida Al m de mostrados os conte dos da p gina s o mostrados but es que permitem acesso s funcionalidades de uma p gina como a edi o a visualiza o das p ginas que a referem o hist rico de altera es dessa p gina e a remo o dessa p gina Numa vers o mais evolu da do Gruki s seriam mostradas as ac es execut veis pelo utili zador mas por quest es de limita o de tempo do projecto todas as ac es s o mostradas Isto n o quer dizer contudo que todas as ac es sejam execut veis quando um utilizador tentar ace der a uma ac o que n o lhe permitida ser redirecionado para uma p gina indicando que n o tem permiss es para executar aquela ac o Este princ pio aplicado para todas as ac es n o permitidas O m todo edit chamado para edi o da p gina Este m todo carrega a p gina como se se tratasse do m todo show mas depois ir carregar o Wedit que vai percorrer os conte dos da p gina tornando os edit veis O Wedit utiliza a tecnologia AJAX para enviar para o servidor um pedido de forma a gravar as altera es que o utilizador v efectuando Estes pedidos s o enviados para o m todo save do controlador e s o enviados periodicamente de 5 em 5 segundos mas o servidor s ir g
37. ctual da p gina numa dessas vers es anteriores um processo chamado de rollback 4 3 1 2 O Controlador de Espa os Neste controlador s o geridas as ac es relacionadas com os espa os Estas ac es incluem os processos de cria o de um espa o e posterior edi o das suas permiss es Lembrando o princ pio de se querer manter o Gruki como uma aplica o simples a cria o de um espa o apenas envolve a escolha de um nome e das permiss es do espa o Posteriormente a nica propriedade de um espa o que alter vel o valor das permiss es Dentro das funcionalidades de cada espa o h v rias listagens que s o potencialmente teis e lista das p ginas pertencentes a um espa o e lista dos utilizadores associados a um espa o e lista das p ginas de um espa o que n o s o referenciadas por nenhuma outra Para facilitar a sua visualiza o no caso de haver um grande n mero de elementos estas listagens s o paginadas Uma das ac es essenciais dos espa os a possibilidade de convidar utilizadores para se juntarem a um espa o Para que sejam efectuados convites o utilizador que criou o espa o o seu administrador ir inserir uma lista de emails separados por v rgulas Seguidamente ser criado um convite na base de dados associado a cada um desses emails De forma a garantir que cada convite nico gerada uma chave utilizando o algoritmo MDS de uma cadeia de caracteres composta pelo tempo actual e a ch
38. de funcionalidades comuns a toda a l gica relacionada com os Modelos da arquitectura MVC Assim os Modelos a implementar s o na verdade subclasses da classe ActiveRecord her dando todas as suas capacidades Estas funcionalidades cont m m todos que permitem que todo 32 Descric o da Soluc o o processo de acesso base de dados seja feito atrav s de m todos Ruby dentro de um objecto Exemplificando uma p gina do Gruki ser uma inst ncia do modelo P gina permitindo que toda a l gica de CRUD de uma p gina seja feita sem ser necess rio recorrer ao SQL Igualmente o ActiveRecord facilita quest es como a da valida o de dados seja com a obrigatoriedade da exis t ncia de um campo ou da necessidade de um valor estar contido num certo intervalo impedindo a grava o de um objecto na base de dados quando este n o passar por todos os m todos de vali da o De forma esquem tica os dados de suporte ao Gruki est o estruturados da seguinte forma 33 Descric o da Soluc o to from Figura 4 3 Modelo de dados do Gruki Deste diagrama podemos inferir as rela es entre os varios tipos de objectos com que lidamos no Gruki Podemos assim observar que um espa o possui v rias p ginas que possuem v rias vers es Cada vers o s pode pertencer a uma p gina e cada p gina a um espa o Um utilizador est associado a v rias p ginas e a v rias vers es de p ginas bem como a um ou v rios espa os Por fim um c
39. dos especialistas ou n o levando uma maior partilha de conhecimento Na Wikipedia todo o conhecimento relevante e nada me impede de ir Wikipedia criar uma p gina sobre o Gruki Ao imaginarmos o crescimento do Gruki a comunidade iria verificar a acuidade das informa es por mim fornecidas e adicionar mais informa es gerando se din mica e partilha de informa o Este tipo de colaboratividade em comunidade uma das grandes bases do fen meno conhe cido por Web2 0 termo cunhado para se referir a toda uma vaga de modernas aplica es web que oferecem espa o para que criemos conte dos ao inv s dos conte dos Para al m da j referida Wi kipedia s o exemplos muito populares deste tipo de aplica es Web2 0 o Flickr para alojamento de fotografias ou o YouTube para alojamento de videos 11 Estado da Arte Revis o Tecnol gica 7 SR o Have questions Find out how to ask questions and get answers A Login create account y A article discussion edit this page history Nora Editing Representational State Transfer From Wikipedia the free encyclopedia WIKIPEDIA You are not currently logged in Editing this way will cause your IP address to be recorded publicly in this page s The Free Encyclopedia edit history If you create an account you can conceal your IP address and be provided with many other benefits Messages sent to your IP can be viewed on your talk page navigation Main Page Ple
40. dos a chave encriptada e o valor do salt No modelo de utilizadores 3Neste contexto um salt uma cadeia de caracteres aleat ria que utilizada para garantir mais seguran a gera o da chave encriptada 41 Descric o da Soluc o igualmente feito o processo de autentica o que ap s ser fornecida a palavra passe e o nome de utilizador a autenticar gerada uma chave utilizando a palavra passe fornecida para autentica o e o salt guardado na base de dados para o nome de utilizador fornecido A autentica o bem sucedida quando a chave encriptada gerada igual chave encriptada guardada na base de dados O ltimo modelo que ser abordado na verdade um falso modelo segundo a arquitectura MVC O modelo spacer mailer guarda os modelos das mensagens de correio electr nico que s o enviadas quando enviado um convite Esta classe n o uma subclasse do ActiveRecord mas da classe ActionMailer 42 Cap tulo 5 Demonstracao Nesta sec o ira ser feita uma demonstra o do estado actual do Gruki Esta demonstra o ir consistir em alguns screnshots de algumas das funcionalidades principais da aplicac o de forma a mostrar como estas se efectuam e qual a interface desenvolvida N o do mbito deste relat rio nem deste projecto um estudo aprofundado sobre o deployment de aplica es Rails e assim sendo essas quest es n o ser o abordadas assume se que o Gruki est a ser executado num servidor
41. e deployment da aplica o foram usados o Apache e o Mongrel Ser feita a seguir uma breve descri o de cada um deles com algum detalhe e Webrick desenvolvido em Ruby por Masayoshi Takahashi e Yuuzou Gotou com a ajuda de v rios utilizadores parte integrante do Ruby desde a vers o 1 8 e sendo pouco est vel mas leve o ideal para ambientes de desenvolvimento de Rails e Mongrel servidor web desenvolvido por Zed A Shaw igualmente em Ruby Quando ins talado como uma RubyGem no sistema o servidor predefinido do Rails para execu o O Mongrel usa um sistema de apenas uma thread por request o que pode levar ao seu sobrecar regamento rapidamente fechando as conex es com os pedidos que n o consegue tratar De forma a aumentar a performance de aplica es Rails a correr utilizando o Mongrel usam se v rias inst ncias do Mongrel para distribuir o tratamento dos requests 23 Estado da Arte Revis o Tecnol gica e Apache o servidor HTTP Apache um dos servidores HTTP mais conhecidos em todo o mundo desenvolvido pela Apache Software Foundation mas sendo open source o seu desenvolvimento est aberto a todos O seu c digo fonte escrito em C e inclui interfaces para gerar conte do din mico em v rias linguagens de programa o como o Python ou o PHP Existe uma RubyGem chamada mod rails tamb m conhecida por Passenger que permite a utiliza o de aplica es Rails sobre servidores Apache 3 4 5 Wedit
42. e partilha de conhecimento bem como para suporte ao processo de desenvolvimento de software desde os reguistos fase de entrega facilitando largamente o processo de escrita de documenta o de forma colaborativa H ainda uma extensa aplica o das wikis como CMS Content Management System devido sua simplicidade na cria o de conte dos Em termos futuros as wikis s o olhadas com bons olhos devido ao seu imenso potencial A sua utiliza o como ferramenta de ensino trazendo para a sala de aula todas as vantagens da wiki como a sua abertura e facilidade de edi o a par com os servi os de comunidade que esta oferece um bom exemplo de uma futura utiliza o que seria de todo ben fica Sendo um conceito recente a wiki tem ainda um longo caminho a percorrer at ser globalmente aprovado 13 Estado da Arte Revis o Tecnol gica Do ponto de vista tecnol gico as wikis s o ferramentas n o muito complicadas Sendo com posta por p ginas web o acesso a uma wiki pode fazer se apenas atrav s de um browser Isto mais uma das vantagens que tornam as wikis plataformas t o acess veis pois um browser web uma aplica o bastante comum existente em quase todos os sistemas operativos Arquitecturalmente as wikis usam bases de dados ou ficheiros para guardar os seus conte dos cabendo ao servidor a fun o de transformar esses conte dos escritos com sintaxe wiki para HTML interpret vel pelo browser Esta quest o n o ob
43. erfaces gr ficos de utilizador baseados em web usando esta framework a PT Inova o pretende conhe cer melhor as restri es que se poder o colocar usando esta framework neste tipo de projectos e reutiliza o do WEdit h igualmente um interesse em usar a aplica o Wedit um editor WYSIWYG What You See Is What You Get desenvolvido no ano lectivo de 2006 2007 por um grupo de alunos da FEUP Faculdade de Engenharia da Uni versidade do Porto no mbito da disciplina de Laborat rio de Gest o de Projectos Este editor foi desenvolvido tendo como principal objectivo a cria o de um editor de conte dos web de grande simplicidade e acessibilidade com o intuito de permi tir a sua utiliza o pelo maior n mero poss vel de pessoas Com a utiliza o deste editor o Gruki tornar se uma aplica o igualmente us vel e acess vel e alojamento de wikis um outro objectivo quer seria desej vel o da poss vel comer cializa o dum servi o de alojamento de wikis se a aplica o desenvolvida atingir um estado em que seja f cil dar esse passo extra e se encontre na PT uma empresa patrocinadora desse lan amento Nesta sec o iremos detalhar os requisitos associados ao Gruki A especifica o de requisitos uma fase crucial no processo de desenvolvimento de software A correcta especifica o de requisitos permite que a aplica o a desenvolver fique o mais pr ximo poss vel do desejado Definic o do Problema Dentro d
44. esenvolvimento do Gruki Refirmos tamb m algumas frameworks existentes que se ba seiam no mesmo modelo de funcionamento do Ruby on Rails Por fim dos servidores web utilizados pelo Ruby on Rails apenas para refer ncia 18 Estado da Arte Revis o Tecnol gica 3 4 1 Ruby A linguagem de programa o Ruby come ou a ser desenvolvida em 1993 pelo japon s Yu kihiro Matsumoto Matz O Ruby uma linguagem de programa o din mica reflexiva o que lhe permite alterar a sua estrutura durante a execu o e orientada a objectos um paradigma de programa o em que os dados s o tratados como objectos que possuem propriedades sendo a aplica o baseada na inte rac o entre objectos Estas caracter sticas derivam grandemente das duas maiores influ ncias do Ruby o Smalltalk e o Perl Num artigo publicado em 2000 Matz diz que os programas escritos em Ruby parecem por vezes vers es reordenadas e simplificadas de programas Perl afirmando que removeu a maioria das armadilhas do Perl n o negando que algumas novas poder o ter aparecido No mesmo artigo Matz refere os tr s princ pios que o guiaram na cria o do Ruby referindo que considera uma linguagem de programa o como uma interface com o utilizador e que como tal deviam ser concebidas tendo por base os mesmos princ pios que s o e Concis o Quero que os computadore sejam meus servos e n o meus mestres Assim quero poder dar lhes ordens rapidamente U
45. gradecer Cl udia Branco colega estagi ria da PT Inova o com quem a troca ocasional de ideias sobre o Ruby on Rails resultou sempre muito frut fera Apesar de n o terem ajudado directamente um obrigado para o Miguel Biscaia e o Cla dio Lobo da PT Inova o colegas de carteira cujo conhecimento e experi ncia contribuiram para um crescimento pessoal adicional fora de todo este projecto Igualmente importante o agradecimento minha subid ssima amiga Vanessa Costa por ter feito a correc o lingu stica deste relat rio Obrigado ainda minha fam lia e amigos por tornarem a batalha de todos os dias mais f cil de ganhar Quero ainda agradecer Geek Tribe por ser tantas vezes o dev null das frustra es do dia a dia e local de agrad vel conv vio troca de ideias e de spam Por fim um muito obrigado a John Coltrane Bill Evans e Toumani Diabat pela m sica magn fica e inspiradora que produziram e que de uma forma ou outra foram a banda sonora do desenvolvimento do Gruki Andr Filipe Monteiro Lamelas da Silva vi Conte do 1 Introdu o 1 1 Contexto Enguadramento 1 2 Projecto 2 cd s ae aa we 8 E 4 1 3 Motiva o e Objectivos 1 4 Estrutura da Disserta o 2 Defini o do Problema 2 1 Requisitos Funcionais 2 0 2 a 2 2 Requisitos N o Funcionais 000002 ee eee 2 2 1 Requisitos de interfaces externas lt lt lt lt 2 2 2 Requisitos
46. iblioteca e inserir na p gina a editar dois comandos seguintes lt script type text javascript src wedit wedit jJs gt lt script gt lt script type text javascript gt lt CDATA Editor elemento que possui os elementos a editar 11 gt lt script gt 10Na verdade o DOM pode ser genericamente aplicado a documentos XML referindo se que o X HTML um dos seus dialectos HO jQuery dispon vel em http www jquery com uma framework Javascript com funcionalidades similares ao Prototype Uma vez que apenas utilizada pelo Wedit e n o pelas aplica es Rails apenas se refere superficialmente 25 Estado da Arte Revis o Tecnol gica Esta inclus o torna edit veis todos os elementos gue estejam contidos dentro do elemento passado por par metro ao construtor do editor Caso sejam elementos gue o Wedit reconhece e sabe editar permite e edic o de conte dos no caso de ser um elemento gue o Wedit n o reconhece apenas permite as funcionalidades de copiar colar remo o e altera o de posi o Refira se aqui que de forma a testar esta facilidade de integra o antes do desenvolvimento do Gruki foi desenvolvido um plugin para a TikiWiki em que se permite a edi o de p ginas recorrendo ao Wedit 1 Uma wiki que possui um enorme conjunto de funcionalidades que a torna quase um CMS Entre as suas muitas funcionalidades encontram se al m da wiki blogs foruns galerias de i
47. identficador nu m rico nico de um convite user id integer Quando um utilizador j registado convi dado este campo guarda o seu identifica dor user email string Quando um utilizador n o registado con vidado este campo guarda o valor do seu endere o de correio electr nico space id integer Identificador do espa o para o qual o con vite diz respeito invite hash string Cadeia de caracteres com a chave nica de cada convite created on datetime Data e hora da cria o do convite 4 3 Detalhes de implementa o Nesta sec o ir ser descrita a aplica o de um ponto de vista mais profundo Iremos detalhar quais os modelos e quais os controladores existentes no Gruki fazendo uma descri o das funci onalidades de cada um deles N o est o aqui incluidas as vistas uma vez que em Rails por cada m todo de um controlador existe normalmente uma vista associada Os controladores s o a base funcional de uma aplica o Rails pois neles que todas a l gica de neg cio se realiza Ao receber um pedido de um browser o Rails faz o encaminhamento desse pedido para o controlador adequado que por sua vez ir executar o m todo pedido e posteriormente gerar a vista correspondente 37 Descric o da Soluc o Utilizador pede http localhost 3000 controlador accao redireciona para controlador retorna renderiza Figura 4 4 Esquema de processamento de um pedido em ap
48. ilizador que nela se inicia O Gruki poderia ser melhorado atrav s da inclus o de funcionalidades que permitissem ex portar os dados de um espa o para um ficheiro que o utilizador pudesse guardar e tamb m a disponibiliza o de um feed RSS para que mais facilmente se pudessem seguir as altera es efec tuadas numa p gina ou espa o Uma funcionalidade igualmente til seria a de permitir ver as diferen as entre duas vers es de uma mesma p gina Outros melhoramentos dos quais o Gruki iria beneficiar largamente seriam os melhoramentos ao n vel da portabilidade do Wedit Sendo um editor muito interessante devido sua natureza WY SIWYG e elevada usabilidade a sua limitada funcionalidade ao n vel dos browsers funcionando apenas totalmente no Mozilla Firefox faz com que um dos princ pais pontos positivos do Gruki se veja limitado por motivos externos O lote de funcionalidades extra que podem ser adicionadas ao Gruki imenso H contudo um princ pio que me parece relevante manter que o da simplicidade Citando John Maeda no seu livro As Leis da Simplicidade Simplicidade subtrair o bvio e adicionar o relevante Mae06 Este princ pio de manter apenas aquilo que relevante deve ser mantido ao longo da evolu o futura do Gruki Um dos grandes problemas ao n vel do software n o us vel o elevado n mero de funcionalidades que estes cont m tornado os confusos e dif ceis de usar Algumas coisas n o podem ser tornadas
49. ior n mero de utilizadores Tal como com os requisitos funcionais os requisitos n o funcionais devem igualmente ser numerados e classificados pela sua Na tabela seguinte vemos o resultado dessa numera o e prioritiza o Tabela 2 2 Tabela de especifica o e ordena o de requisitos n o funcionais N mero Requisito Prioridade 1 Reguisitos de interfaces externas Obrigat ria 2 Reguisitos de usabilidade Alta 3 Reguisitos de confiabilidade Alta 4 Reguisitos de disponibilidade M dia 5 Reguisitos de portabilidade Baixa 6 Reguisitos de escalabilidade Baixa 10 Cap tulo 3 Estado da Arte Revis o Tecnol gica 3 1 O conceito de wiki A principal ideia por tr s do conceito de wiki a de uma p gina web gue pode ser editada por qualquer pessoa que o pretenda As implica es desta ideia s o desde logo imensas N o ser dif cil perceber como esta ideia coloca o papel de cria o edi o de conte dos n o num conjunto de pessoas que depois as serve mas virtualmente em toda a gente O exemplo mais conhecido de uma wiki o caso da Wikipedia uma enciclop dia online aberta colabora o de todos Ao contr rio de uma enciclop dia est tica como por exemplo as que temos impressas em casa em que conjuntos de especialistas produzem os conte dos dessa mesma enciclop dia obrigando a que esta tenha de ser actualizada periodicamente a Wikipedia est aberta edi o de to
50. izadores sejam associados a espa os e espa os a utilizadores o Rails reconhece uma tabela com o nome spaces users como tabela de liga o entre ambos Esta tabela n o possui uma chave prim ria Tabela 4 4 Especifica o da tabela spaces users Campo Tipo Descri o space id integer Identificador do espa o user id integer Identificador do utilizador A tabela que guarda as refer ncias chama se references e guarda pares de identificadores de p ginas Tabela 4 5 Especifica o da tabela references Campo Tipo Descri o from integer Identificador da p gina que referencia outra to integer Identificador da p gina que referenciada As vers es de uma p gina s o guardadas na tabela versions 36 Descric o da Soluc o Tabela 4 6 Especificac o da tabela versions Campo Tipo Descric o id integer Chave prim ria da tabela identficador nu m rico nico de uma vers o content integer Conte do da vers o created on datetime Data em que a vers o foi criada preen chida automaticamente pelo Rails page id integer Identificador da p gina a que esta vers o pertence author id integer Identificador do autor da vers o A ltima tabela chama se invites e guarda os convites para ingress o num espa o Tabela 4 7 Especifica o da tabela invites Campo Tipo Descri o id integer Chave prim ria da tabela
51. l para os membros do meio inform tico n o igualmente intuitiva para os restantes potenciais utilizadores Podemos ainda referir que o princ pio da Unifica o de uma wiki pode tamb m ser esquecido em deterimento da cria o de p ginas contextuais Estas tr s quest es s o aqui referenciadas pois justificam funcionalidades basilares e distintivas do Gruki a exist ncia de espa os grupos de p ginas que partilham permiss es ajudam a evitar situa es de potencial vandalismo atrav s do bloqueio da edi o de p ginas mas tamb m permitem a cria o de p ginas de nomes iguais mas em contextos diferentes Por outro lado o Gruki usa um editor WYSIWYG What You See Is What You Get cuja utiliza o n o obriga a um conhecimento da sintaxe da wiki permitindo maior acessibilidade e simplicidade na utiliza o Normalmente al m da poss bilidade de edi o as wikis costumam permitir a visualiza o de um hist rico de todas as vers es de uma p gina o que se torna til para ajudar recupera o de situa es de vandalismo bem como para verfica o das altera es efectuadas numa p gina ou para recupera o de uma vers o antiga tornando a na vers o actual O uso das wikis tem vindo a crescer de forma exponencial As suas utiliza es s o cada vez mais variadas e um n mero cada vez maior de diferentes motores de wiki aumentam a sua flexibilidade em termos funcionais As wikis s o muito usadas como base para a gest o
52. lica es Rails Antes de chamar o controlador pedido pelo browser o Rails ir chamar o controlador da apli ca o Este controlador sempre chamado antes de qualquer outro controlador a n o ser que seja dado ordem em contr rio No Gruki este controlador usado para fazer a autoriza o de um utili zador verificando antes de executar a ac o se esta permitida ao utilizador O Gruki reconhece endere os com o esquema de s rie do Rails http servidor porta nome do controlador nome da ac o param tro Al m destes o Rails reconhece tamb m outros param tros passados no endere o Por exemplo o endere o de acesso a uma p gina no Gruki seria http servidor porta page show nome da p gina space nome do espa o De forma a que as p ginas do Gruki apresentem uma estrutura comum foi definida uma vista que tal como o controlador da aplica o chamada antes da vista pedida Este layout define a estrutura volta dos conte dos de cada p gina incluindo um formul rio para autentica o do utilizador e v rios but es com funcionalidades como o acesso ao profile de um utilizador ou a troca do espa o em que se est a trabalhar 38 Descric o da Soluc o 4 3 1 Controladores O Gruki possui tr s controladores que executam todas as funcionalidades implementadas Segue se uma descri o de cada um deles bem como das ac es por eles executadas e alguns detalhes sobre as vistas de
53. m bom servo executa uma grande quantidade de trabalho com uma simples ordem e Consist ncia Como com o tratamento uniforme de objectos como referido antes um pe queno conjunto de regras define toda a linguagem Ruby O Ruby uma linguagem relativa mente simples mas n o demasiado simples Tentei seguir o princ pio da menor surpresa O Ruby n o demasiado distinto o que leva a que um programador com conhecimentos b sicos de programa o possa aprende lo de forma r pida e Flexibilidade Como as linguagens pretendem exprimir linhas de pensamento uma lin guagem n o dever restringir o pensamento humano mas ajud lo O Ruby consiste num pequeno e imut vel n cleo de sintaxe e um conjunto arbitr rio e extens vel de bibliotecas Como a maior parte das funcionalidades adicionada por bibliotecas pode se tratar classes e objectos definidos pelo utilizador da mesma forma que se tratam os existentes de s rie O Ruby herda do Smalltalk a componente de programa o orientada a objectos pura em que tudo tratado com um objecto incluindo as primitivas como os caracteres e os inteiros N o permitido em Ruby heran a m ltipla apenas heran a simples De forma a resolver o problema das confus es motivadas pela heran a m ltipla mas n o limitando a sua funcionalidade o Ruby permite o uso de mixin s classes n o instanci veis que adicionam funcionalidades s classes que as incluem O Ruby permite ainda singleton meth
54. magens etc Est dispon vel em http www tikiwiki org 26 Cap tulo 4 Descric o da Soluc o Neste cap tulo detalhada a soluc o desenvolvida Abordaremos a arguitectura do Gruki e especificaremos a base de dados que serve de suporte ao Gruki S o tamb m descritos os principais problemas levantados e respectivas solu es encontradas 4 1 Arquitectura As aplica es Rails s o baseadas numa arquitectura denominada Model View Controller MVC Esta arquitectura foi originalmente descrita por Trygve Reenskaug em 1979 sendo ainda hoje muito popular usada pelo Ruby on Rails a framework usada para o Gruki mas tamb m por outras frameworks de desenvolvimento web como o Django em Python ou o Cocoon ou o Struts ambos em Java bem como v rias frameworks para desenvolvimento de aplica es n o web como o GTK ou o Java Swing A arquitectura MVC faz uma separa o mais clara das responsabilida des das v rias camadas da aplica o permitindo separar a l gica de neg cio da interface gr fica e dos dados persistentes Conceptualmente a arquitectura MVC simples possuindo apenas tr s componentes Primei ramente o Modelo representa toda a informa o espec fica da aplica o O modelo acrescenta signific ncia aos dados tratando igualmente de garantir a integridade dos dados e toda a l gica subjacente Imaginemos que o nosso modelo iria ser uma representa o de uma das p ginas do Gruki O modelo de uma p gina e
55. mento na sua utiliza o uma vez que a sua utiliza o permite o desenvolvimento de aplica es web de funcionamento muito similar a aplica es desktop As aplica es web representam uma vantagem em rela o s aplica es desktop devido sua interoperabilidade entre browsers o que permite a sua utiliza o em qualquer ambiente independentemente do browser ou sistema operativo Apesar da exist ncia de normas por vezes h diferen as entre a maneira como v rios browsers interpretam o c digo Javascript potenciando uma perda da portabilidade das aplica es web Para eliminar os efeitos dessas diferen as existem frameworks Javascript que abstraem as funcionali dades de manipula o do DOM Devido ao elevado n mero de funcionalidades avan adas presentes o Wedit utiliza duas dessas frameworks o jQuery e a combina o Prototype Script aculo us Entre as funcionalidades do Wedit contam se a possibilidade de criar editar Par grafos T tulos at tr s n veis Listas numeradas e n o numeradas Listas de afazeres e Imagens Tabelas Todos estes elementos podem ser copiados e colados e ver a sua ordem alterada atrav s de drag and drop Permite se ainda a formata o dos textos a inserir recorrendo a sublinhados negritos it licos e altera o do alinhamento do corpo de texto Com o intuito de fomentar a sua utiliza o a inclus o do Wedit numa p gina web muito simples bastando apenas descomprimir a b
56. miss es de acesso sendo que isto pode ser definido no momento da cria o do espa o e alterado posteriormente Dentro de cada espa o tamb m til poder aceder a uma listagem quer de utilizadores membros de um espa o quer de p ginas pertencentes a um espa o Uma funcionalidade que til por uma quest o de gest o do espa o uma p gina orf ou seja uma p gina para a qual nenhuma outra p gina faz uma hiperliga o Vamos esquematizar estes requisitos funcionais na forma tabelar prioritizando os Tabela 2 1 Tabela de especifica o e ordena o de requisitos N mero Requisito Prioridade 1 Criar pagina Alta 2 Editar pagina Alta 3 Visualizar pagina Alta 4 Criar espa o com conjunto de permiss es Alta 5 Alterar permiss es de um espa o Alta 6 Registar utilizadores Alta 7 Autentica o de utilizadores Alta 8 Convidar utilizadores para um espa o Alta 9 Listar utilizadores de um espa o M dia 10 Listar p ginas de um espaco M dia 11 Remover um espaco M dia 12 Remover uma pagina M dia 13 Ver hist rico de uma pagina M dia 14 Fazer rollback de uma pagina M dia 15 Dashboard de actividade Baixa 16 Listar paginas orfas Baixa Os requisitos de prioridade Alta s o aquelas cuja implementa o essencial para a concretiza o do projecto e sem os quais o projecto fica seriamente reduzido em termos de funcionalidade A prioridade M dia
57. nem mantidas simples mas julgo que dentro do poss vel devemos tentar essa simplicidade 48 Refer ncias BBvBo01 Kent Beck Mike Beedle Arie van Bennekum and othres Manifesto for agile soft Bur92 Che06 Cun02 Cun08 DEG 05 DeN07 DPV05 Fie00 Hun07 Hun08 Ino08 ware development 2001 Dispon vel em http www agilemanifesto org acedido a 16 de Junho de 2008 Steve Burbeck Applications programming in smalltalk 80 tm How to use model view controller mvc 1992 Dispon vel em http st www cs uiuc edu users smarch st docs mvc html acedido a 20 de Junho de 2008 Nicholas Chen Convention over configuration 2006 Dispon vel em http softwareengineering vazexgi com files pattern html acedido a 18 de Junho de 2008 Ward Cunningham What is a wiki 2002 Dispon vel em http www wiki org wiki cgi WhatIs Wiki acedido em 13 de Junho de 2008 Ward Cunningham Wiki design principles 2008 Dispon vel em http c2 com cgi wiki WikiDesignPrinciples acedido a 19 de Junho de 2008 G Dueck Anja Ebersbach Markus Glaser Richard Heigl and Andrea Adelung Wiki Web Collaboration Springer Verlag New York Inc Secaucus NJ USA 2005 Rick DeNatale Ruby 1 9 released 2007 Dispon vel em http www infog com news 2007 12 ruby 19 acedido a 18 de Junho de 2008 A Desilets S Paquet and N G Vinson Are wikis usable International Symposium on Wikis Proceedings of
58. nte o resultado n o ser particularmente complicado Outro dos problemas do Ruby on Rails a sua estrutura fixa que apesar de bastante til acaba por vezes por se tornar exageradamente complicada Assim o Ruby on Rails uma framework para o desenvolvimento de aplica es web que goza de grande popularidade e digamos at de um certo factor cool dentro do meio tendo gerado um enorme grupo de seguidores A sua curva de aprendizagem acaba por limitar um pouco a velocidade de desenvolvimento nas fases iniciais devido ao grande n mero de conven es que necess rio conhecer Sendo uma framework em expans o e com uma hist ria relativamente curta podemos apenas especular quanto ao seu futuro mas a avaliar pelas capacidades de desenvolvimento gil permiti das e pela simplicidade presente no Rails o futuro adivinha se auspicioso 22 Estado da Arte Revis o Tecnol gica 34 3 MySQL O MySQL um sistema de gest o de bases de dados relacionais open source Era originalmente desenvolvida por uma pequena empresa Sueca a MySQL AB tendo sido comprada pela Sun Mi crosystems em Fevereiro de 2008 Goza de grande popularidade contando com mais de 100 milh es de c pias distribu das por todo o mundo devendo se a sua grande popularidade essenci almente ao facto de ser bastante segura e r pida oferecendo uma alternativa gratuita extremamente vi vel aos SGBD propriet rios como o Oracle ou o Microsoft SQL Server Existe contud
59. nto e manuten o de aplica es web mais f cil Esta framework foi extra da da aplica o Basecamp uma aplica o de gest o de projectos online de senvolvida para a 37signals uma empresa americana de desenvolvimento de aplica es web por David Heinemeier Hansson Em 2004 ap s ter extra do do Basecamp o Ruby on Rails tornou a framework p blica e desde ent o o Rails tem atra do um n mero cada vez maior de seguidores De forma a conseguir cumprir os objectivos de um desenvolvimento e manuten o de aplica es web mais f cil o Rails usa a linguagem Ruby ver sec o anterior e dois princ pios que s o basilares sua constru o convention over configuration conven o acima de configura o e don t repeat yourself n o te repitas 7Em ci ncias da computa o uma m quina virtual uma implementa o que executa um programa como se este estivesse a correr numa m quina verdadeira 20 Estado da Arte Revis o Tecnol gica O princ pio da conven o sobre configurac o pretende diminuir a responsabilidade dos pro gramadores abstraindo um conjunto variado de decis es que estes t m de tomar Com este princ pio consegue diminuir se drasticamente as configura es necess rias ao desenvolvimento de uma aplica o O Rails tem em si um conjunto de valores standard que tornam os v rios aspectos do desenvolvimento de uma aplica o web numa tarefa mais f cil Uma aplica o Rails tem
60. nvolvidas segundo dois princ pios essenciais para que estas estejam acess veis a um maior n mero de pessoas com a maior das funcionalidades e constante evolu o Por um lado h uma necessidade de as aplica es serem desenvolvidas de forma iterativa sendo adicionadas funcionalidades em cada itera o e por outro lado requer se aplica es de elevados padr es de usabilidade de forma a permitirem uma maior facilidade no seu uso A iteratividade permite que o produto seja testado em ambiente de utiliza o desde a primeira vers o desenvolvida Isto leva a um maior n mero de testes efectuados levando assim descoberta de erros que de outra forma s seriam descobertos em fases posteriores Estes erros tanto podem ser bugs da aplica o como quest es da simplicidade de utiliza o que n o tinha sido previamente endere adas As necessidades de agilidade remetem nos para o Agile Manifesto escrito em 2001 por um conjunto de autores como o j referido Ward Cunningham Este manifesto ad voga um novo processo para o desenvolvimento de software baseando se num conjunto de princ pios que defendem a agilidade do processo de desenvolvimento como meio de alcan ar os requisitos pretendidos Esta agilidade conseguida atrav s de uma grande liga o entre a equipa de desenvolvimento e o cliente o que permite uma r pida entrega de vers es incrementalmente mais funcionais o que por sua vez consente uma valida o altera o dos
61. o Python o c digo n o precisa de ser indentado apesar de a mudan a de linha ser interpretada como o fim de uma instru o Tal como todas as linguagens de programa o o Ruby tamb m tem as suas desvantagens Uma cr tica comum prende se normalmente com o facto de as vari veis n o terem de ser declaradas an tes de usadas Isto pode introduzir erros quando por exemplo nos enganamos a escrever o nome de uma vari vel Ao tentarmos alterar uma vari vel por exemplo e nos enganarmos a escrever o seu nome uma nova vari vel aparece apesar de a vari vel anterior que originalmente quer amos alterar se manter igual Isto pode dificultar bastante a ca a ao erro em projectos grandes Outras cr ticas comuns incluem a menor velocidade de execu o quando comparada com outras lingua gens e o facto de a sua sintaxe definida pelo criador como intuitiva n o ser igualmente intuitiva para todos Refere se ainda que existem v rios problemas de compatibilidade da vers o 1 9 do Ruby com programas escritos em vers es anteriores Sobre a vers o 1 9 do Ruby lan ada em Dezembro de 2007 ainda interessante referir que o c digo Ruby agora implementado sobre o YARV uma m quina virtual para o Ruby que torna a execu o de programas muito mais r pida do que nas vers es anteriores DeN07 3 4 2 Ruby on Rails O Ruby on Rails tamb m vulgarmente referido como Rails uma framework desenvolvida com o objectivo de tornar o desenvolvime
62. o browser s o colocados dentro da directoria public Estes conte dos envolvem todos os ficheiros de JavaScript as bibliotecas usadas pelo Ruby on Rails o Prototype e o Script aculo us e os ficheiros CSS que adicionam estilos s vistas HTML Nesta directoria s o guardadas igualmente as imagens usadas pela aplica o por exemplo nas suas vistas ou ficheiros que sejam disponbilizados para download As configura es do Apache da aplica o s o tamb m guardadas nesta directoria e script directoria script cont m v rios scripts teis para a gera o de c digo Es tes scripts geram os esqueletos quer dos modelos quer dos controladores bem como dos testes associados quer a um quer a outro Tamb m permitem gerar um sistema de CRUD recorrendo a um modelo j existente facilitando o desenvolvimento da aplica o atrav s da constru o de um simples andaime de suporte a funcionalidades b sicas e test Localiza o dos ficheiros para os testes unit rios funcionais e de integra o e tmp Directoria que aloja ficheiros tempor rios e vendor Directoria para instala o de plugins 4 1 1 Arquitectura L gica Nesta sec o apresentada a estrutura da aplica o A arquitectura l gica mostra o sistema decomposto em tr s camadas logicamente separadas a camada de interface a camada de l gica de neg cio e a camada de acesso a dados A utiliza o do Ruby on Rails devido sua implementa o da arquitect
63. o uma vers o Enterprise do MySQL vocacionada para empresas com maior foco na assist ncia t cnica por parte dos especialistas da MySQL AB O seu estatuto open source permite que existam vers es do MySQL para quase todas as plata formas bem como m dulos que permitem a sua utiliza o em quase todas as linguagens de pro grama o como o PHP ou o Ruby ou o Python Sendo open source usado no popular conjunto de aplica es LAMP Linux Apache MySQL e PHP Python Perl que permite o desenvolvi mento e instala o de uma aplica o web completa apenas baseada em software open source e assim gratuito Hoje em dia muitas aplica es web t m suporte MySQL nativo Isto inclui motores de wiki como por exemplo o MediaWiki usado pela Wikipedia e restantes produtos da Wikimedia Foun dation CMS s open source como o Joomla ou o Drupal bem como o motor de blogs Wordpress 3 4 4 Servidores Web O conceito de servidor web refere se n o s aplica o que recebe e processa pedidos HTTP mas tamb m por vezes s m quinas cuja funcionalidade a de correr uma aplica o de servidor web mas salvo refer ncia em contr rio ser sempre aplica o que nos iremos referir Existem hoje em dia v rias servidores web capazes de receber e processar pedidos HTTP sendo que alguns deles podem ser integrados com o Ruby on Rails O Rails possui de s rie o Webrick que foi usado para efeitos de desenvolvimento do Gruki Para efeitos d
64. ods m todos definidos e pertencentes a uma inst ncia de uma classe Tal como todas as modernas linguagens de programa o o Ruby inclui excep es para recu pera o de erros e garbage collecting A tipifica o de dados em Ruby feita de forma din mica sendo o tipo de uma vari vel ape nas verificado quando esta interpretada Isto facilita o trabalho de programa o pois permite 19 Estado da Arte Revis o Tecnol gica como no caso do Ruby que uma vari vel nao tenha que ser declarada antes de ser instanciada Ha contudo desvantagens desta aproxima o como o caso da menor velocidade de execu o As vari veis podem igualmente ser usadas segundo a filosofia do duck typing uma filosofia de tipifica o din mica em que se uma vari vel anda como um pato e grasna como um pato ent o deve ser um pato Tomando o exemplo literalmente podemos imaginar que se dois objectos implemen tam o m todo grasnar irrelevante a classe a que pertencem pois se ambos grasnam ent o s o ambos patos Esta caracter stica s aumenta ainda mais a facilidade da programa o em Ruby A sintaxe do Ruby similar do Perl e do Python mas como uma vers o melhorada de ambas Ao contr rio do Perl as vari veis n o t m de ser marcadas com um sinal de pontua o antes do nome para definir o seu tipo Em Ruby usa se sinais de pontua o antes do nome de uma vari vel mas para referenciar o mbito da vari vel Ao contr rio d
65. onvite para que um utilizador se junte a um espa o est sempre associado a um espa o mas por vezes no caso de ser um convite a um utilizador j registado no sistema esse convite est igualmente associado a um utilizador A rela o potencialmente menos bvia a de uma p gina e as suas refer ncias uma p gina pode referenciar outras e pode igualmente ser referenciada por outras Este esquema de dados foi posteriormente mapeado numa base de dados relacional sendo atribuidas a cada classe os seus atributos como colunas de uma tabela Estas tabelas foram automaticamente criadas pelas migra es do Rails tendo sido apenas fornecidos alguns campos Algumas colunas t m nome especiais que levam o Rails a agir de forma diferente para com essas colunas 34 Descric o da Soluc o A tabela pages guarda as informa es sobre as p ginas Tabela 4 1 Especifica o da tabela pages Campo Tipo Descri o id integer Chave prim ria da tabela identficador nu m rico nico de uma p gina name string Cadeia de caracteres que contem o nome de uma p gina content text Conte do da p gina space id integer Valor n mero do identificador do espa o a que a p gina pertence author id integer Identificador num rico do autor da ltima vers o da p gina visits integer N mero de visitas recebidas por uma p gina desde a sua cria o updated on datetime Data e hora do ltimo update da p gina este
66. requisitos medida que a aplica o desenvolvida A framework Ruby on Rails usada como base para este projecto foi desenvolvida tendo em mente os princ pios do Agile Manifesto o que faz dela um ptimo princ pio para adquirir pr tica no uso de metodologias geis de desenvolvimento de software Nos dias que correm a velocidade do aparecimento de novas aplica es web faz com que a seu desenvolvimento tenha de ser r pido e gil para conseguir acompanhar todos os novos Introdu o requisitos dos utilizadores bem como corresponder necessidade de inova o numa rea sempre em mudan a Por outro lado as necessidades de usabilidade prendem se com a facilidade com que um utilizador atinge o resultado por si desejado utilizando a aplica o em quest o A usabilidade um assunto da ordem do dia pois com o crescimento da web cada vez mais pessoas com diferentes graus de conhecimento inform tico a usam obrigando assim a uma progressiva simplifica o dos padr es de utiliza o O desenvolvimento do Gruki ent o til como tubo de ensaio para m todos de de senvolvimento gil de aplica es us veis o que o torna uma aplica o moderna e muito dentro do esp rito da web que queremos para o futuro Sendo uma wiki o Gruki al m de um caso de estudo do processo de desenvolvimento gil uma ferramenta de trabalho colaborativo o que potencia o trabalho de equipa e o suporte a processos de desenvolvi mento 1 4
67. rigat ria apesar de ser a mais comum havendo algumas wikis que permitem a inser o de c digo HTML directamente nos conte dos Um conceito importante neste dom nio o de wikifarm um servi o de alojamento de wikis permitindo v rias inst ncias de wikis num mesmo servidor Em termos tecnol gicos isto facilita o trabalho de manuten o e actualiza o do motor wiki permitindo uma concentra o absoluta nos conte dos Existem wikis implementadas em quase todas as linguagens de programa o sendo que as linguagens de scripting s o as mais comuns 3 2 A Usabilidade na web Define se usabilidade como uma medida da facilidade com que se consegue utilizar uma de terminada interface Segundo Jakob Nielsen um especialista em usabilidade esta definida por 5 componentes essenciais Nie03 e Aprendizagem Qu o f cil para os utilizadores conseguirem executar tarefas b sicas da primeira vez que s o confrontados com o design e Efici ncia Uma vez aprendido o design qu o rapidamente conseguem executar tarefas e Memoriza o Quando os utilizadores voltam a usar o design ap s um per odo de tempo sem o usar qu o facilmente retomam a sua profici ncia e Erros Quantos erros os utilizadores cometem qu o severos s o e qu o facilmente recupe ram deles e Satisfa o Quanto prazer se retira da utiliza o do design A usabilidade um termo bastante gen rico que se aplica virtualmente a quase tudo aq
68. rowser Mozilla Firefox de ver s o igual ou superior a 2 0 0 14 Todas as restantes funcionalidades dever o funcionar em v rios browsers nomeadamente o Microsoft Internet Explorer 7 0 o Opera 9 5 e o Safari 3 1 1 O Gruki ser desenvolvido para ser correctamente apresentado na resolu o 1024 por 7768 pixels As cookies do browser dever o estar activas Interfaces de software O Gruki foi desenvolvido sobre a framework Ruby on Rails o que obriga exist ncia quer do interpretador Ruby 1 8 6 quer da vers o 2 0 2 do Ruby on Rails e respectivas depend ncias pacotes ActiveRecord ActiveSupport ActiveResource ActionMailer e ActionPack O Ruby on Rails ir correr sobre o servidor Apache sendo o deployment feito recorrendo aplica o mod rails Interfaces de comunica o A aplica o comunicar entre o browser e o servidor atrav s do protocolo HTTP sendo usados os protocolos TCP IP para comunica o e transporte na rede 2 2 2 Requisitos de usabilidade O Gruki ser desenhado de forma a que a sua utiliza o seja simples elevando assim os pa dr es de usabilidade Quanto maiores os n veis de usabilidade maior o n mero de potenciais utilizadores e melhor a experi ncia de utiliza o Esta necessidade crucial pois num meio como o da web as aplica oes mais us veis e que proporcionam melhor experi ncia de utiliza o s o aquelas que adiquirem um maior n mero de utilizadores As quest e
69. s t o apenas respons veis pela apresenta o da interface ao utilizador os controllers controladores s o os componentes que detectam recebem e tratam eventos interagindo com os modelos e seleci onando qual a vista a exibir De forma a ajudar toda esta interac o o Rails possui v rios pacotes que facilitam esta arquitectura como s o o Active Record orientado para os modelos e a in terac o com a base de dados e o Action Pack que se divide entre o Action Controller respons vel pelos controladores e portanto com toda a recep o e gest o de eventos eo Action View que cont m todas as funcionalidades para a renderiza o de templates sejam eles HTML XML ou JavaScript Estes pacotes ser o igualmente vistos com maior detalhe no cap tulo se guinte Sendo uma framework para desenvolvimento gil de aplica es o Rails oferece v rios gera dores de c digo fonte Estes geradores oferecem suporte para gera o de controladores e modelos da nossa aplica o bem como funcionalidades de scaffolding de um modelo criando ficheiros que oferecem ao utilizador funcionalidades de CRUD Create Read Update Delete sobre um determinado modelo podendo servir como base para posterior desenvolvimento O Rails oferece ainda suporte para o uso de duas bibliotecas JavaScript a biblioteca Prototype 80 RubyGems um gestor de pacotes para a linguagem de programa o Ruby que oferece um formato standard para instala
70. s Ruby Productive programming language 2008 Dispon vel em http www linuxjournal com article 5915 acedido a 18 de Junho de 2008 Dave Thomas and David Heinemeier Hansson Agile web development with rails 2007 50
71. s da simplicidade de uso do Gruki e da sua usabilidade s o t o importantes que nos voltaremos a debru ar sobre elas no cap tulo seguinte Definic o do Problema 2 2 3 Requisitos de confiabilidade O Gruki dever ser confi vel e dever manter a coer ncia do sistema de permiss es limitando o acesso de utilizadores a funcionalidades de acordo com a pol tica de cada espa o 2 2 4 Requisitos de disponibilidade A disponibilidade de uma aplica o web depende sobretudo das tecnologias em que est assente nomeadamente a base de dados e o servidor web Assim a disponibilidade do Gruki depender essencialmente das aplica es sobre as quais ser executado Contudo o Gruki dever apresentar toler ncia a erros provocados pelo utilizador como erros no preenchimento de formu l rios por exemplo permitindo a recupera o desses erros e n o compromentendo a integridade da aplica o ou dos dados 2 2 5 Requisitos de portabilidade O Gruki altamente port vel facto que deriva de ser construido sobre uma framework que corre sobre uma linguagem open source que compat vel com v rios sistemas operativos Al m da portabilidade da aplica o do ponto de vista do servidor a aplica o dever correr cor rectamente em v rios browsers 2 2 6 Requisitos de escalabilidade Sendo uma aplica o com um elevado potencial de crescimento o Gruki dever conseguir suportar o escalamento para um ma
72. staria respons vel n o s pelo armazenamento dos conte dos da p gina mas tamb em como de garantir que todas as informa es dessa p gina seriam v lidas como por exemplo se a p gina em quest o estava associada a um espa o ou n o Todas as outras funcionalidades associadas a uma p gina estariam igualmente contidas no modelo da p gina Esta abstrac o coloca no modelo toda a responsabilidade em termos de gest o dos dados da aplica o A Vista a representa o visual de um modelo Atrav s da vista o utilizador pode ver e manipular o modelo podendo haver v rias representa es de um modelo A p gina do nosso 27 Descric o da Soluc o exemplo anterior tanto pode ser mostrada como uma p gina HTML como em gualguer outro formato dependendo dos dados gue sejam guardados pelo modelo Por fim o Controlador orguestra o comportamento da aplicac o Numa vista o utilizador des poleta eventos que s o interpretados pelo controlador Estes eventos s o ent o tratados de forma a manipularem o modelo e a actualizarem a vista actual ou retornar uma nova correspondente vista do resultado do evento produzido A adequa o desta arquitectura ao desenvolvimento de aplica es web not ria Nas aplica es web h uma linguagem pr pria para as vistas que interpretada pelo browser normalmente HTML e h uma linguagem pr pria que interpretada pelo servidor seja ela PHP Ruby Python etc S esta separa o j
73. suficientemente forte para que fa a sentido a aplica o desta arquitec tura Assim n o de estranhar que seja usada pela framework Ruby on Rails O MVC permite uma separa o das tr s camadas l gicas de uma arquitectura as camadas de interface l gica de neg cio e persist ncia de dados ver sec o 4 1 1 Cada aplica o Rails tem uma estrutura definida que facilita a implementa o da arquitectura Model View Controller Esta estrutura consiste num conjunto de direct rios que criado original mente numa aplica o Rails Os direct rios existentes numa aplica o Rails s o e app Dentro da directoria app existem quatro directorias Uma delas pouco relevante neste caso e cont m dentro os helpers da aplica o As outras tr s cont m respectivamente os modelos as vistas e os controladores da aplica o e config Na directoria config definem se as v rias configura es relevantes para a aplica o os v rios ambientes de desenvolvimento j definidos por conven o development test e production mas podem ser alterados de forma a satisfazer as nossas necessida des Estes ambientes e os demais que podemos configurar s o teis devido ao facto que em diferentes estados de uma aplica o s o necess rios diferentes ambientes de execu o Em modo de desenvolvimento importante que toda a informa o relativa a erros seja re gistada e mostrada no ecr mas por exemplo em modo de produ o
74. the 2005 international symposium on Wikis 16 18 3 15 2005 Roy Thomas Fielding Architectural Styles and the Design of Network based Soft ware Architectures PhD thesis UNIVERSITY OF CALIFORNIA IRVINE 2000 Matthew Huntbacho What s wrong with ruby 2007 Dispon vel em http www bitwisemag com 2 What s Wrong With Ruby acedido a 18 de Junho de 2008 Andrew Hunt Don t repeat yourself 2008 Dispon vel em http c2 com cgi wiki DontRepeat Yourself acedido a 18 de Junho de 2008 PT Inova o Relat rio e contas 07 2008 Dispon vel em http www ptinovacao pt pdf ptinrel2007 PDF acedido a 23 de Junho de 2008 49 KM05 Kru06 Mae06 Mat00 Nie03 Pri08 TH07 REFERENCIAS Andrew Koenig and Barbara E Moo Templates and duck typing 2005 Disponivel em http www ddj com cpp 184401971 acedido a 18 de Junho de 2008 Steve Krug Don t Make Me Think A Common Sense Approach to Web Usability New Riders second edition edition 2006 J Maeda The laws of simplicity MIT Press Cambridge Mass London Eng 2006 Yukihiro Matsumoto The ruby programming language 2000 Dispon vel em http www informit com articles article aspx p 18225 acedido a 17 de Junho de 2008 Jakob Nielsen Usability 101 Introduction to usability dispon vel em http www useit com alertbox 20030825 html 2003 Disponivel em http www useit com alertbox 20030825 html acedido a 23 de Junho de 2008 Pjotr Prin
75. timestamp t column created on timestamp t column lock version integer default gt 0 end end def self down drop table pages end end Este sistema de migra es altamente ben fico por v rios motivos Desde logo permite que um mesmo script de manipula o de base de dados seja executado em qualquer base de dados bastando para isso alterar o adaptador a usar Isto permite por exemplo que usemos uma base de dados SQLite para o processo de desenvolvimento e uma base de dados MySQL no servidor de deployment sem precisarmos de alterar nada no processo de cria o da base de dados Por outro lado por muito bem que a base de dados seja especificada inicialmente esta sofrer altera es ao longo do tempo e se seguirmos o modelo de Agile Development estas altera es ser o ainda mais comuns Desta formas as migra es permitem agilizar o processo de gest o da base de dados porque para al m da migra o possuem um m todo para voltar atr s eliminando a migra o As migra es s o referenciadas por um n mero de ordem que a chave da ordem das migra es A utiliza o desse n mero garante que nenhuma migra o ser executada antes de outra garantido a sua ordem l gica e consequente coer ncia da aplica o ao n vel da base de dados De forma a facilitar o acesso s bases de dados o Rails possui al m das migra es a biblioteca Active Record Esta biblioteca cont m um enorme conjunto
76. totype com o Ruby on Rails facilita imenso a sua uti liza o Esse assunto de mbito bastante mais alargado e j originou v rias publica es motivo pelo qual n o ser feita uma descri o mais pormenorizada Para facilitar a disponibiliza o de servi os web o Rails tem um suporte bastante alargado para a arquitectura REST Representational State Transfer Transfer ncia de Estado Representacional A arquitectura REST utiliza o protocolo HTTP para transferir informa o entre o cliente e um servidor um pouco como os browsers web acedem a p ginas Como o protocolo HTTP n o possui estado toda a informa o necess ria transfer ncia de estado est contida pedido Esta informa o de um pedido inclu por exemplo quatro verbos GET PUT POST DEL que indicam a ac o a executar pelo o pedido A arquitectura REST est hoje bastante divulgada sendo muito utilizada para permitir acesso s aplica es web possibilitando atrav s da jun o de resultados retornados de v rias aplica es a cria o de mashups N o sendo o Ruby uma linguagem dif cil de aprender e de usar o Rails acaba por sofrer um pouco em termos de aprendizagem devido ao extenso n mero de conven es A dificuldade com que se desenvolve uma aplica o simples muito reduzida mas qualquer aplica o que fuja um pouco do espectro normal do Rails ser bastante dif cil e envolver uma necessidade de extensa pesquisa apesar de posteriorme
77. tras impedindo a exist ncia de mais de uma refer ncia de uma mesma p gina para outra Este modelo possui um m todo est tico que encontra as refer ncias efectuadas numa p gina guardando as de seguida na base de dados No Gruki os espa os possuem um conjunto de p ginas e de convites que lhes s o associados e que s o destruidos quando um espa o apagado A rela o entre os espa os e os utilizadores uma rela o de muitos para muitos e conseguida atrav s do m todo has and belongs to many que utiliza a tabela spaces users para manter este relacionamento Em termos de valida o um es pa o tem de possuir um nome um administrador e um valor para as permiss es Este valor de permiss es ter de ser um valor do array de permiss es que igualmente definido dentro do mo delo de espa os A cada espa o est o associados v rios convites que uma vez que s o totalmente criados por controladores n o necess ria nenhuma valida o Os utilizadores do Gruki t m de ver validado seu registo obrigando o modelo dos utilizadores a que exista um endere o de email v lido e um nome de utilizador nico bem como uma palavra passe Dentro do modelo de utilizadores tamb m tratada a l gica de gera o de palavras passe encriptadas Ao ser criado um utilizador este fornece uma palavra passe que associada com um salt sendo esta cadeia de caracteres posteriormente submetida ao algoritmo SHA1 sendo guardadas na base de da
78. u qualquer outra cujo suporte esteja incluido no Ruby Ap s a configura o do acesso base de dados est tudo pronto para come ar a mani pula o da base de dados Em Rails a base de dados manipulada ao n vel da estrutura atrav s de migra es Uma migra o um ficheiro de c digo Ruby que provoca altera es sobre a base de 2Sendo o Ruby on Rails uma framework open source existe actualmente suporte para um grande n mero de bases de dados desenvolvido pela comunidade de utilizadores Uma lista de adaptadores existentes pode ser vista aqui http wiki rubyonrails org rails pages DatabaseDrivers 31 Descric o da Soluc o dados As migra es permitem que sejam feitas altera es base de dados de forma incremental Assim podemos ter a nossa primeira migra o que ir criar uma tabela e podemos ter a segunda migra o em que efectuamos altera es sobre essa tabela sejam essas altera es inser o de da dos ou altera o estrutura da tabela As migra es possuem um m todo que permite que se fa a o rollback da migra o podendo voltar assim a uma vers o anterior da base de dados Apresenta se a seguir um exemplo de uma migra o nomeadamente a migra o que cria a primeira vers o da tabela que guarda as p ginas do Gruki class CreatePages lt ActiveRecord Migration def self up create table pages do t t column name string t column content text t column updated on
79. uardar uma nova vers o se tiver havido altera es Ap s gravar uma nova vers o de uma p gina o servidor adiciona lista de vers es antigas dessa p gina uma nova vers o com os conte dos que v o ser substitu dos A cria o de uma nova p gina consegue se atrav s do m todo new No caso de n o ser fornecido um nome para a p gina apresentado um campo para que o utilizador possa inserir o nome da p gina a criar Ao ser criada uma p gina esta criada com um conte do que o utilizador deve substituir Ap s ser criada a p gina feito um redirecionamento para o m todo de edi o como se de uma p gina normal se tratasse Ao ser apagada uma p gina chamado o m todo delete que destr i a vers o actual da p gina mas tamb m apaga da base de dados todas as vers es antigas de uma p gina Assim o processo de apagar uma p gina irrevers vel A visualiza o das p ginas que referenciam a actual conseguida pelo m todo references que vai procurar todas as inst ncias da tabela de refer ncias que possuem uma refer ncia para a p gina actual As ltimas funcionalidades de uma p gina est o relacionadas com a visualiza o do seu his t rico O hist rico lista as vers es antigas da p gina com um link que permite a visualiza o individual de cada uma destas p ginas Quer na listagem de vers es quer na vista de uma vers o 39 Descric o da Soluc o existe um bot o que permite tornar a vers o a
80. uilo que pass vel de ser usado Assim vamos nesta sec o concentramo nos na usabilidade para a web ignorando as quest es da usabilidade noutras reas Mais uma vez citando Jakob Nielsen Na web a usabilidade uma condi o necess ria para a sobreviv ncia Se um s tio web dif cil de usar as pessoas abandonam o Nie03 Esta verdade quase tautol gica resume porque devem as nossas aplica es web possuir elevados padr es de usabilidade evitar o abandono dos utilizadores e fomentar o seu regresso Num universo como o Uma lista exaustiva de motores de wiki pode ser encontrado em http c2 com cgi wiki WikiEngines 14 Estado da Arte Revis o Tecnol gica da web toda a concorr ncia est a poucos cliques de distancia o que leva um utilizador frustrado com a sua experi ncia de utiliza o a encaminhar se para qualquer outro sitio No seu livro Don t Make me Think Kru06 Steve Krug um conhecido consultor de usabi lidade refere a sua lei principal da usabilidade como sendo aquela que da titulo ao livro don t make me think n o me fa am pensar Esta ideia baseia se no facto de que numa p gina web as coisas devem ser evidentes Se para uma aplica o desktop o utilizador est mais aberto leitura de um manual de utiliza o ningu m quer ter de ler um manual de utiliza o para uma aplica o web Mais uma vez num meio onde a concorr ncia est dist ncia de um clique uma p gina deve evitar
81. ura MVC j facilita esta separa o e Na camada de interface ficam localizadas as vistas do Gruki ficheiros HTML interpretados de forma a apresentarem os resultados pretendidos Juntamente com as vistas ficam tamb m o Action View a biblioteca de suporte gera o de vistas e Na camada de l gica de neg cio ficam os controladores do Gruki respons veis por executar as ac es pedidas pelo utilizador e de controlar toda a l gica de neg cio Os controladores s o subclasses da classe Action Controller de quem herdam m todos e propriedades mas possuem igualmente os m todos que implementam a l gica de neg cio do Gruki e Na camada de acesso a dados ficam localizados os modelos do Gruki que s o construidos sobre o ActiveRecord que recorre a uma abstrac o sobre a base de dados 29 Descric o da Soluc o Electr nico i i Camada de Vistas de Vistas de Vistas de Interface i Utilizadores P ginas Espacos l Camada de i Controlador de i l gica de Utilizadores i Neg cio i 4 Modelo de de Utilizadores Dados Modelo de Correio i 1 Figura 4 1 Arquitectura l gica do Gruki Na figura observa se que os eventos gerados na camada de interface s o redirecionados para o controlador correcto que ap s executar a l gica de neg cio subjacente ac o pretendida ir manipular os modelos da aplica o ou n o actualizando posteriormente a vista do utilizador A separa o da aplic
82. ystem in accordance with Fielding s REST architectural style without m Related changes using HTTP and without interacting with the World Wide Web Fact date May a Upload fe 2008 It is also possible to design simple XML HTTP interfaces which do not z Spas panes conform to REST principles and instead follow a model of remote procedure call The difference between the uses of the term REST therefore causes some confusion in technical discussions Systems which follow Fielding s REST principles are often referred to as SI RESTLUL 1 El Figura 3 1 Exemplo de uma p gina da Wikipedia em modo de edic o Ward Cunningham criador da primeira wiki a WikiWikiWeb desenvolveu a para partilhar informa es sobre design patterns entre os membros do Portland Pattern Repository Para a sua constru o seguiu inconscientemente onze princ pios fundamentais que mais tarde veio a definir Uma wiki deve ent o ser Aberta Uma p gina que seja considerada incompleta ou mal organizada dever poder ser editada por qualquer leitor da forma que este desejar Incremental As p ginas devem poder referenciar outras incluindo p ginas que ainda n o tenham sindo escritas Org nica A estrutura e o texto devem ser abertos edi o e evolu o Mundana Um pequeno n mero de conven es textuais irregulares dever o oferecer acesso maior parte da formata o til Universal Os mecanismos de edi o e organiza

Download Pdf Manuals

image

Related Search

Related Contents

Lincoln Electric MAGNUM IM438-B User's Manual  MODE D`EMPLOI SPECIAL    あぜぬり機 NZR301S    BAYANUS B 22  helio-strob beta a3 - ELMED Dr. Ing. Mense  Emerson 350-650VA Quick Start Guide  Electrolux MT21 User's Manual  FOGHog® Installation & Service Manual - Bio  

Copyright © All rights reserved.
Failed to retrieve file