Home
        Texto integral - Repositório Aberto da Universidade do Porto
         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
 
 
    
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