Colaboke: Um gerenciador de conteúdo multimídia com conceitos de framework Antonio D. De Carvalho Jr 1, Diego G. Brandão 1, Tatiana A. Tavares 1 1 Laboratório de Vídeo Digital (LAVID) Universidade Federal da Paraíba (UFPB) João Pessoa, PB - Brasil {deusanyjunior,tatiana}@di.ufpb.br, brandaodg@gmail.com Abstract. This article describes the results of the study and development of a multimedia content management system. The manager presents all the basic functionalities required to use, a framework structure providing the development of new applications from the same, and to serve as a basis for studies related to internet systems. Resumo. Este artigo descreve o resultado do estudo e desenvolvimento de um gerenciador de conteúdos multimídia. O gerenciador apresenta-se com todas as funcionalidades básicas necessárias e com uma estrutura de framework propiciando o desenvolvimento de novas aplicações a partir do mesmo, além de servir como base para estudos voltados a sistemas para internet. 1. Gerenciamento de conteúdo na WEB Uma diversidade de conteúdos digitais é distribuída diariamente via internet com o intuito de permitir uma absorção de conhecimento dinâmica aos usuários deste meio de comunicação. À medida que o fluxo desses conteúdos for aumentando, gerenciadores são desenvolvidos a fim de tornar mais prática a edição e disponibilização de conteúdo. Com isso surgiram os Sistemas de Gerenciamento de Conteúdo (Content Management Systems CMS) [Brampton, 2008]. Devido à diversificação de sua utilização, seja ela por empresas ou usuários comuns, passaram a existir diversos tipos de CMS. O desenvolvimento dos mesmos segue a mesma sequência de passos de qualquer sistema. No entanto, os CMS voltados para WEB apresentam uma característica especial que é a necessidade de facilitar a interação do usuário considerando que será utilizado por qualquer tipo de usuário, tornando-os semelhantes aos programas comuns como editores de textos ou aplicativos de leitura de e-mail. Diante disto, conceitos de gerenciadores de conteúdo multimídia serão apresentados e levados ao encontro de noções de frameworks para desenvolvimento de aplicações da voltadas à web. Por fim será apresentado o Colaboke que engloba partes destes conceitos em seu desenvolvimento, e será apresentado um comparativo com sistemas semelhantes. 1.1. Gerenciamento de conteúdo multimídia O termo multimídia tem evoluído a abrangência da sua definição ao longo dos anos. O termo normalmente é tratado a com base na definição realizada por Chapman &
Chapman (2000): Multimídia é a combinação, controlada por computador, de pelo menos um tipo de media estático (texto, fotografia, gráfico), com pelo menos um tipo de media dinâmico (vídeo, áudio, animação). Sendo assim, gerenciadores de conteúdo multimídia hão de alcançar objetivos diferentes dos gerenciadores comuns de arquivos. Dependendo do tipo conteúdo que se deseja gerenciar, há de se pensar em como haverá de proceder. A instalação de componentes nos gerenciadores resolve a maioria dos problemas neste caso, limitando-se, no entanto, às funcionalidades apresentadas por tais componentes. Outra opção vem a ser a utilização de um gerenciador específico para o tipo de mídia desejado. Esta última opção nem sempre é possível em casos específicos visto que a maioria dos CMS são genéricos. Em última instância o que resta é o desenvolvimento do gerenciador. Um gerenciador de arquivos multimídia torna-se especial perante outros gerenciadores de conteúdo pelo fato de arquivos multimídia se apresentarem em diversos formatos e extensões, além de necessitarem de um servidor apropriado para suportar o fluxo de arquivos de alta qualidade. Algumas características básicas que também podem ser citadas são: perfis de usuários personalizáveis; gerenciamento de comentários e permissões em arquivos; possibilidade de links entre usuários seja por meio de comunidades, grupos ou projetos; utilização de sistema de busca interno baseado em tags ou outras classificações relevantes para identificação de conteúdo; etc [Verens, 2010]. O desenvolvimento de um CMS partindo do início seria uma reengenharia de um sistema comum. Utilizar outros CMS como base poderia ser útil também, tendo em vista que se teria tudo pronto, restando apenas um estudo de sua estrutura para se realizar as alterações necessárias. Porém, a maioria dos gerenciadores existentes não são amigáveis para serem alterados devido à complexidade considerando o compromisso de serem genéricos. Até para o estudo acadêmico vem a ser inviável para um estudante iniciar seus estudos tentando alterar um gerenciador genérico com diversas funcionalidades [Welling e Thompson, 2005]. 2. Frameworks voltados para WEB O reuso de software e sistema está geralmente vinculado à diminuição de custos, redução de prazos e aumento da qualidade. Partindo de abstrações maiores que objetos, temos os frameworks como auxiliadores no processo de desenvolvimento. Desta maneira é possível afirmar que um framework é um projeto de subsistema composto por um conjunto de classes abstratas e concretas e as interfaces entre elas [Wirfs-Brock e Johnson, 1990]. Ainda podemos dizer que um framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação [Fayad e Schmidt, 1997]. Os frameworks podem ou não serem apresentados como uma aplicação propriamente dita. Uma diferença importante entre eles está voltada ao fato de serem do tipo vertical ou horizontal. Os frameworks verticais são desenvolvidos com base na experiência obtida em um domínio específico e são tidos como frameworks especialistas. O outro tipo é o caso genérico no qual a aplicação que o utilizará poderá compreender qualquer âmbito de uso [Sommerville, 2007]. Para conteúdos digitais é mais comum encontrar frameworks genéricos, sendo eles apresentados com módulos
para configuração e inserção de conteúdo, principalmente. Outras características deles é a utilização de templates proporcionando uma diversificação de interfaces baseada comumente no redirecionamento dos módulos e modificação de padrões de cores. A dinamicidade dos conteúdos digitais perante sua a diversidade de formatos impõe aos frameworks um controle maior do fluxo de atualizações. Sendo eles genéricos em sua grande parte, quão maior for este fluxo mais complexo se torna o framework considerando que o mesmo terá que acompanhar ambos os pontos citados, dinamismo e diversificação. Por um lado, iniciar o desenvolvimento de uma aplicação a partir de algo que já tenha tudo pronto e que se encontra sempre em atualização facilita o trabalho, mas a amarração arquitetural que se encontrará pela frente poderá se tornar um empecilho por não permitir muita remodelagem ou não dar brechas para facilitar alterações arquiteturas para casos específicos. 3. Colaboke: um gerenciador de conteúdo com conceito de framework Considerando o caminho para onde estão evoluindo as tecnologias para a internet desde sua criação, prover maneiras de suprir necessidades dos usuárias é o que impulsiona todo o processo de evolução. Divulgação de informações, troca de mensagens, estreitamento da distância entre serviços e consumidores, possibilidade de realizar todas as atividades computacionais na internet desde edição de texto a gerenciamento de sistemas, são exemplos de necessidades supridas com a evolução da internet. Hoje em dia o foco na computação nas nuvens é o que está dando forças a esta evolução constante [Mather et al, 2009]. A possibilidade de compartilhamento e gerenciamento destes tipos de arquivos são facilmente encontradas em sites como YouTube (www.youtube.com) que proporciona edição básica de informações em arquivos de vídeo digitais, e também sites como o MySpace (www.myspace.com) que permite a divulgação de arquivos de áudio. Alguns outros sites proporcionam o download de arquivos de qualquer tipo de formato facilitando a distribuição de conteúdo multimídia, como é o caso do 4Shared (www.4shared.com). No entanto, poucos sistemas web proporcionam o gerenciamento e edição de conteúdos com a mesma praticidade dos programas para desktop. Na intenção de permitir o desenvolvimento de gerenciadores de conteúdo deste tipo com maior facilidade, surgiu o Colaboke (www.colaboke.lavid.ufpb.br). A princípio o Colaboke foi concebido como um simples sistema para colaboração de arquivos de áudio, mas durante o seu desenvolvimento vários conceitos foram aperfeiçoados deixando sua estrutura modularizada como o que acontece em outros CMS. Um dos pontos principais é sua facilidade de edição. O Colaboke utiliza as linguagens PHP e MySQL o que torna o código aberto para download e utilização. Os módulos desenvolvidos se dividem de acordo com sua funcionalidade. O módulo de cadastro de usuário permite que o usuário insira suas informações básicas e aceite o contrato de termos de serviço. Anexado ao cadastro temos o módulo de perfil do usuário, no qual o usuário pode inserir e alterar suas informações pessoais além de realizar configurações de permissões de acesso aos seus projetos. O módulo de projetos apresenta-se como o principal módulo no qual é possível criar e editar um projeto e suas informações.
Como a intenção era tornar prática a utilização do Colaboke em qualquer outra aplicação, alguns padrões de projetos foram utilizados. Um deles foi o Observer para permitir diferentes visualizações nos projetos, definindo visualizações para os usuários comuns, cadastrados, colaboradores e os donos de projeto. Outro padrão utilizado entre os projetos foi o Builder em virtude de termos diversos tipos de arquivos multimídia a serem apresentados, logo ao visualizar um projeto, seus arquivos podem ser apresentados em formatos diferentes e assim precisam ser tratados como objetos diferentes e utilizam meios diferentes de leitura e visualização. A utilização do padrão Composite se dá em função da representação e manipulação de objetos correlatos como projetos, arquivos dos projetos, logos e players dos arquivos [Gamma et al, 1995]. Há também uma implementação de funções do sistema seguindo a metodologia CRUD (Create, Read, Update and Delete) [Verens, 2010]. Esta metodologia permite uma manipulação prática das operações básicas de um banco de dados. Sendo assim, torna-se possível realizar as operações de bancos de dados relacionais executando apenas a chamada de métodos específicos para cada objeto que se queira manipular, seja ele um usuário, projeto ou arquivo do Colaboke. A logomarca do projeto Colaboke (Figura 1.) remete as mesas de som utilizadas pelos profissionais de áudio, procurando fazer uma relação dessa maquinária com a colaboratividade das redes sociais, ficando explícita através dos quadrados coloridos que conotam um aglomerado de pessoas (redes). A cor branca significa os usuários contectados à rede social, daí o destaque na letra "C" que direciona o olhar por neutralizar todo o colorido da logo. Esta brincadeira visual pode ser fortuita a cada captação do usuário, tornando-se um atrativo visual à recepção e decodificação. O layout do site segue o gênero padrão das redes sociais (Figura 1). Procura facilitar o acesso à informação de forma clara e intuitiva, atendendo ao princípio da proximidade, onde devemos agrupar os itens relacionados entre si [Williams, 1995]. Para isso está montado num sistema de grids simples, com apenas três botões no menu principal, que comandam a navegação estrutural de todo site. A atenção visual direciona-se para a área central que é onde ocorre o conteúdo dinâmico. (a) (b) Figura 1. (a) Logo do Colaboke e (b) seu layout
Diante disso, tem-se o Colaboke como um gerenciador de arquivos multimídia estruturado em módulos capaz de ser reutilizado para desenvolvimento de sistemas inovadores para a web. Pelas suas características de framework vertical no âmbito multimídia, novas oportunidades de estudo e desenvolvimento são deixadas nas mãos de quem apresentar interesse por este tipo de CMS. 4 Trabalhos correlatos Na literatura da área temos dois grandes exemplos de gerenciadores e editores de arquivos multimídia. O primeiro deles surgiu no final de 2006, o Jamglue (www.jamglue.com). Este sistema gerenciava a colaboração de edição de arquivos de áudio via web numa interface semelhante aos editores de áudio desktop. O segundo veio no final de 2008, o Creaza (www.creaza.com). O Creaza apresenta-se como um conjunto de aplicativos online para alunos e educadores trabalharem com publicação de conteúdos digitais como desenhos animados, vídeos e áudio. Ambos os exemplos não disponibilizam seus códigos para estudos ou desenvolvimento de novas funcionalidades. 5 Conclusão Diante destes exemplos citados e de outros gerenciadores de conteúdo temos que a possibilidade de utilização de um CMS para estudos ou desenvolvimento de outro é um pouco restrita. Em alguns casos os CMS apresentam funcionalidades genéricas demais, o que pode não ser tão útil em casos específicos como no caso de gerenciadores de arquivos multimídia. Um outro ponto relevante é o caso de os exemplos de sistemas semelhantes ao Colaboke não permitirem o estudo de seus sistemas, deixando apenas a possibilidade de utilização por não apresentarem código aberto. Referências Brampton, M. (2008), PHP 5 CMS Framework Development. Packt Publishing Ltd. Chapman, N. e Chapman, J. (2000), Digital Multimedia. John Wiley & Sons. Fayad, M. E. e Schmidt, D. C. (1997). Object-oriented application frameworks. Comm. ACM 40(10), 32-8. Gamma, E., Helm, R., Johnson, R. e Vlissides, J. (1995) Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Addison-Wesley. Mather, T., Kumaraswamy, S. e Latif, S. (2009) Cloud Security and Privacy An Enterprise Perspective on Risks and Compliance. O`Reilly. Sommerville, I. (2007), Engenharia de software. 8a Ed. São Paulo. Pearson Addison- Wesley. Verens, K. (2010), CMS Design Using PHP and jquery. Packt Publishing Ltd. Welling, L. e Thomson, L. (2005), PHP and MySQL Web Development. 3a Ed. Sams Publishing. Williams, Robin. Design para quem não é designer: noções básicas de planejamento visual. São Paulo: Callis, 1995. Wirfs-Brock, R. J. e Johnson, R. E. (1990) Surveying current research in objectoriented design. Comm. ACM, 33(9), 104-24.