A Domain Engineering for Content Sharing Collaborative Features



Documentos relacionados
Uma Abordagem de Engenharia de Requisitos Para Linhas de Produtos de Software

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Curso de atualização Educação Integral e Integrada. Tutorial Moodle. Belo Horizonte, 2013.

Engenharia de Domínio baseada na Reengenharia de Sistemas Legados

UML - Unified Modeling Language

Sistemas Cooperativos

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

ENGENHARIA DE SOFTWARE I

Análise de Ponto de Função

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação

Feature-Driven Development

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

PVANET: PRINCIPAIS FERRAMENTAS E UTILIZAÇÃO DIDÁTICA

A PÁGINA DISCIPLINAR DE MATEMÁTICA DO PORTAL DIA A DIA EDUCAÇÃO

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

2 Diagrama de Caso de Uso

1

Arquitetura dos Sistemas de Informação Distribuídos

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

GUIA BÁSICO DA SALA VIRTUAL

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Semântica para Sharepoint. Busca semântica utilizando ontologias

Tutorial Moodle Visão do Aluno

Manual do Painel Administrativo

02/10/2012. Padronização de interfaces. Referências

Padrões de projeto 1

Universidade da Beira Interior

Chamada de Participação V Competição de Avaliação - IHC 2012

Computer Supported Cooperative Work - CSCW

Usando RDL para Derivação de Produtos em uma Linha de Produtos de Software

Documento de Arquitetura

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

Fase 1: Engenharia de Produto

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Extração de Requisitos

MÓDULO MULTIMÉDIA PROFESSOR: RICARDO RODRIGUES. MAIL: URL:

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

PROJETO DE FÁBRICA DE SOFTWARE

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Manual do Usuário 2013

Análise e Projeto Orientados por Objetos

MANUAL. Perfil de Professor

Wilson Moraes Góes. Novatec

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software


Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Introdução à Engenharia de Software

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

O modelo unificado de processo. O Rational Unified Process, RUP.

2.1 Os projetos que demonstrarem resultados (quádrupla meta) serão compartilhados na Convenção Nacional.

Proposta Revista MARES DE MINAS

Módulo II - Aula 3 Comunicação

Processos Técnicos - Aulas 4 e 5

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

PESQUISA SOBRE O PERFIL DE ALUNOS NA UTILIZAÇÃO DE UM SITE DOCENTE DO ENSINO SUPERIOR

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Manual UNICURITIBA VIRTUAL para Professores

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Um Processo de Engenharia de Domínio com foco no Projeto Arquitetural Baseado em Componentes

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Arquitetura de Informação

Existem 109 questões nesta pesquisa

Geração do Portal CPCX - UFMS pelo UNION: Um Estudo de Caso

O Processo Unificado: Captura de requisitos

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Gestão da Informação e do Conhecimento

3 SCS: Sistema de Componentes de Software

Aplicativo para elaboração de questionários, coleta de respostas e análise de dados na área da saúde em dispositivos móveis

Sistemas Distribuídos

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: ou

Número de pessoas com acesso à internet passa de 120 milhões

Engenharia de Software III

CONSTRUÇÃO DE BLOG COM O BLOGGER

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?


PROFESSOR: CRISTIANO MARIOTTI

Entre em contato com a Masterix e agende uma reunião para conhecer melhor o SMGC.

PESQUISA-AÇÃO DICIONÁRIO

Componentes de Software e Criatividade no Desenvolvimento de Sistemas Colaborativos. Marco Aurélio Gerosa gerosa@ime.usp.br

Projeto Pé na Dança. Bruno Barros Comunicador Visual /

Planejamento - 7. Planejamento do Gerenciamento do Risco Identificação dos riscos. Mauricio Lyra, PMP

COMO SE CONECTAR A REDE SOCIAL FACEBOOK? Passo-a-passo para criação de uma nova conta

Engenharia de Requisitos

STUDY ABOUT INFLUENCE ON ACADEMIC PERFORMANCE OF STUDENTS USERS OF SOCIAL NETWORKS

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB

Manual do Ambiente Moodle para Professores

ISO/IEC 12207: Gerência de Configuração

Transformação de um Modelo de Empresa em Requisitos de Software

Transcrição:

A Domain Engineering for Content Sharing Collaborative Features Lucas Santos de Oliveira Universidade Estadual do Sudoeste da Bahia Centro de Pesquisa e Desenvolvimento de Software, R José Moreira Sobrinho, S/N (+55 73) 3528-9737 lsoliveira@uesb.edu.br ABSTRACT Researchers and developers still replicate ideas with low reuse when developing Web 2.0 applications. A domain engineering identify and document commonalities and variabilities of an application family fostering reuse. In this work, we used a domain engineering approach for content sharing features of social networks. We used as a method the FODA (Feature Oriented Domain Analysis) with patterns for computer-mediated interaction to describe the collaborative features and the 3C collaboration model to classify them. To implement the commonalities, a component kit was defined and developed, based on an infrastructure named Groupware Workbench. We conducted an experiment to evaluate the artifacts generated by the domain engineering. RESUMO Pesquisadores e desenvolvedores continuam replicando as ideias com pouco reúso, quando desenvolvem aplicações na Web 2.0. Como alternativa, uma engenharia de domínio identifica e documenta similaridades e variações de uma família de aplicações favorecendo o reúso. Neste trabalho, é feita uma engenharia de domínio em redes sociais na Web 2.0, com o foco nas funcionalidades colaborativas relativas ao compartilhamento de conteúdo. Usamos o método FODA (Feature Oriented Domain Analysis) adaptado com padrões de interação mediados por computador para descrever e o modelo 3C de colaboração para classificar as funcionalidades de colaboração. Para implementar as similaridades, um conjunto de componentes foi definido e desenvolvido com base na infraestrutura Groupware Workbench. Conduzimos um experimento para avaliar os artefatos gerados na engenharia de domínio. Categories and Subject Descriptors H.5.3 [Information Storage and Retrieval]: Group and Organization Interfaces computer-supported cooperative work, web-based interaction, collaborative computing, evaluation/methodology. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. WebMedia 12, October 15 18, 2012, São Paulo/SP, Brazil. Copyright 2012 ACM 978-1-4503-1706-1/12/10...$15.00. Marco Aurélio Gerosa Universidade de São Paulo Instituto de Matemática e Estatística, R do Matão 1010 (+55 11) 3091-6499 General Terms Documentation, Design. gerosa@ime.usp.br Keywords Domain Engineering, 3C Collaboration Model, Interaction Patterns, Social Networks, Web 2.0, Collaborative Systems, Groupware. 1. INTRODUÇÃO Empresas de internet que sobreviveram à crise pontocom de 2001 usavam a internet como plataforma, desenvolvendo sites colaborativos baseados em comunidades. Esse conceito foi chamado Web 2.0 [1]. Diferente do modelo anterior, em que empresas e anunciantes produzem conteúdo estático para acesso dos usuários, na Web 2.0, usuários produzem, organizam, compartilham, mesclam, criticam e atualizam conteúdos. De acordo com Prescott [2], o aumento do conteúdo na web é resultado da penetração da banda larga, web cam, celulares e câmeras pessoais. Esse conteúdo geralmente é compartilhado em redes sociais. No entanto, esses sites da web 2.0 contém diversas funcionalidades colaborativas recorrentes, que ficam entremeadas à lógica de negócio do sistema e normalmente são implementados sem reúso. Greenberg [3] posiciona o desenvolvimento de sistemas colaborativos na fase de replicação no modelo BRETAM [4], que descreve como uma tecnologia evolui ao longo do tempo. Nessa fase, os pesquisadores aproveitam as ideias uns dos outros, reimplementando-as, alterando-as e inovando. O processo de construção das ferramentas ainda não está bem estabelecido e há muitas incertezas e retrabalho. Greenberg [3] argumenta que a estagnação na fase de replicação do desenvolvimento de sistemas colaborativos é decorrente da falta de um ferramental que propicie o reúso e encapsulamento das complexidades técnicas e multidisciplinares características desse tipo de sistema. Esse cenário ilustra a necessidade de uma engenharia de domínio, para construção de componentes de software reusáveis, diminuindo a necessidade de reimplementação e focando na montagem do sistema. Este trabalho tem a seguinte estrutura: Na Seção 2 é apresentada a Engenharia de Domínio com suas etapas e seus principais métodos, detalhando o método FODA [5] utilizado neste trabalho. Na Seção 3 é mostrado os trabalhos relacionados e como esta proposta se diferencia ou os complementam. Na Seção 4 é apresentada uma engenharia de domínio, em que são levantadas as funcionalidades colaborativas relativas ao compartilhamento de conteúdo em redes sociais na Web 2.0. Foi utilizado o método FODA, estendida pelo Modelo 3C de Colaboração [6], para classificação, e padrões de interação mediados por computador [7] 343

para descrição das funcionalidades colaborativas. Para o desenvolvimento do kit de componentes, que possibilita a criação de redes sociais de compartilhamento de conteúdo, é utilizada a infraestrutura do Groupware Workbench [8]. Na Seção 5, como forma de avaliação dos artefatos gerados, é mostrado, de maneira sucinta, um experimento e um estudo de caso. Na Seção 6 são feitas as conclusões e as considerações finais. 2. ENGENHARIA DE DOMÍNIO Aplicações de um mesmo domínio possuem características em comum, podendo fazer uso dos mesmos processos e objetos, o que promove o reúso dos conceitos e funcionalidades. Para Ahorone e Reinhartz [9] um domínio é definido como um conjunto de aplicações que usam conceitos comuns para descrever requisitos, problemas e capacidades. O domínio é delimitado pela similaridade entre as aplicações [10]. Segundo Prieto-Diaz e Arango [11], a engenharia de domínio é o processo de identificação e organização do conhecimento sobre uma classe de problemas apoiando sua descrição e solução. Clements [12] afirma que o objetivo da engenharia de domínio é encontrar pontos comuns, identificar componentes aplicáveis e famílias de aplicações. Alaña e Rodriguez [13] apontam as atividades do processo de engenharia de domínio, que são divididas em: Análise do Domínio, Projeto do Domínio e Implementação de Domínio, que também aparecem em outros trabalhos como em [14] [10]. A análise de domínio tem por objetivo identificar, coletar e organizar informações relevantes, utilizando o conhecimento existente do domínio e os métodos para a modelagem de informações [5]. O projeto de domínio utiliza os resultados da análise do domínio para identificar e generalizar soluções para os requisitos comuns, por meio de especificação de uma arquitetura de software [15]. Para Blois [14], é a etapa em que modelos de projeto são construídos, com base nos modelos de análise, no conhecimento obtido por estudos a respeito de projeto reusável e arquiteturas de referência. Implementação do domínio inclui o desenvolvimento de componentes reusáveis [15] [10]. Essa fase visa construir os artefatos, baseados na modelagem do domínio e nas arquiteturas de referência propostas na atividade de projeto [14]. 2.1 FODA (Feature Oriented Domain Analysis) Muitos métodos de engenharia de domínio têm sido desenvolvidos com a finalidade de prover o reúso dos artefatos gerados. Alaña e Rodriguez [13] classificam os métodos em três grupos distintos: Métodos baseados na análise do domínio, cujo objetivo é analisar e modelar, para alcançar o reúso em partes similares do domínio. Alguns de seus métodos são ODM [16], FODA [5], FORM [17], FeatureRSEB [18], DARE [19] e Odyssey-DE [20]. Métodos de Linhas de Produtos, que têm sido estendidos ou conectados a outros para cobrir todo o processo de produção. Alguns de seus métodos são: FAST [10] e PuLSE [21]. Métodos de Engenharia de domínio e OOA/D combinam engenharia de domínio com projeto e análise orientados a conteúdo. Alguns dos seus métodos são: OOram [22], JODA [23] e RiDE [24]. FODA [5], desenvolvido no SEI (Software Engineering Institute), é o método de engenharia de domínio mais conhecido e um dos precursores dos demais. Ele é baseado na identificação, análise e documentação das principais funcionalidades dos sistemas; resultando em produtos de domínio genéricos e largamente aplicáveis em um domínio. A abordagem do método FODA é relevante do ponto de vista do desenvolvimento baseado em componentes, uma vez que a captura das funcionalidades relevantes ao domínio auxilia na identificação de possíveis componentes de software [14]. Utilizamos o método FODA porque é baseado na análise do domínio e não envolve questões de implementação e arquitetura, o que o tornou propício para nosso estudo, visto que não tivemos acesso aos detalhes internos de implementação das redes sociais analisadas. 2.2 Extensão do Método FODA para Web 2.0 Neste trabalho, para dar suporte à análise de funcionalidades colaborativas na Web 2.0, o método FODA foi estendido com o Modelo 3C de colaboração e padrões para interação mediada por computador, sendo este o diferencial com relação a outros métodos. O primeiro com o objetivo de classificar as funcionalidades colaborativas e o segundo para descrevê-las. Ellis et al. [25] foram um dos primeiros a utilizar as três dimensões do modelo 3C (comunicação, coordenação e cooperação) para classificação do suporte computacional à colaboração. Esse modelo é largamente utilizado na literatura de sistemas colaborativos. A comunicação envolve a troca de mensagens e a negociação de compromissos. Por intermédio da coordenação, as pessoas, as atividades e os recursos são gerenciados para lidar com conflitos e evitar a perda dos esforços de comunicação e cooperação. A cooperação é a produção conjunta dos membros do grupo em um espaço compartilhado, gerando e manipulando conteúdos de cooperação na realização das tarefas. Apesar da separação dessas atividades para fins de análise, a comunicação, a coordenação e a cooperação não são realizadas de maneira estanque e isolada [26]; são realizadas continuamente e iterativamente durante o trabalho em grupo [6]. Neste trabalho, adotamos o modelo 3C de colaboração para classificar e organizar as funcionalidades colaborativas. Uma vez classificadas, essas funcionalidades são mapeadas para componentes de software, que são usados para construção de sistemas colaborativos baseados nos requisitos de comunicação, coordenação e cooperação. Para classificar uma funcionalidade de compartilhamento de conteúdo em redes sociais, segundo o modelo 3C de colaboração, foram seguidos os seguintes critérios: Comunicação: quando a funcionalidade é utilizada pelas pessoas para trocarem mensagens e informações; Coordenação: quando a funcionalidade é utilizada pelas pessoas para gerenciamento do grupo, ou para estarem cientes das atividades e seus efeitos na colaboração; Cooperação: quando a funcionalidade é utilizada pelas pessoas para gerenciarem o espaço compartilhado ou interagirem com os conteúdos compartilhados. Baseado na linguagem de padrões e padrões de projeto de software, Schummer e Lukosch [7] propuseram os padrões para interação mediada por computador, que descrevem o apoio recorrente a interação em grupo baseado na seguinte estrutura: nome, figura sintetizadora, intenção, contexto, problema, cenário, sintomas, solução, dinâmicas, razão, verificar, pontos de perigo, usos conhecidos e padrões relacionados. Os padrões para interação possibilitam descrever as funcionalidades colaborativas, detalhando seu comportamento e uso, suprindo parte das 344

dificuldades de acesso aos fluxos de dados das redes sociais, que são utilizados na etapa de análise do domínio. 3. TRABALHOS RELACIONADOS SPLSCW2.0 [27] é uma engenharia de domínio para aplicações síncronas. Segundo Gaspar et al. [27] durante o desenvolvimento de aplicações para o projeto Tidia-Ae, observou-se a existência de vários pontos de interseção na construção de aplicações de colaboração síncronas para Web. Alguns desses pontos foram de imediata identificação, ainda na atividade de requisitos, como um serviço genérico de comunicação para troca de mensagens síncronas (SCS). Porém, outros pontos, como um framework de janelas ricas (RWIF), só foram identificados após a construção de um conjunto de aplicações. Os componentes identificados foram desenvolvidos utilizando a arquitetura do Tidia-Ae e possibilitou a criação de diversos sistemas compondo alguns dos componentes. Gadelha et al. [28] apresentam uma abordagem para solucionar alguns problemas identificados no desenvolvimento de Linha de Produtos de Groupware (LPG), que não cobre a atividade análise do domínio e das variabilidades e semelhanças do domínio. O principal objetivo dessa abordagem é desenvolver LPG incorporando os benefícios providos pelas Linhas de Produtos de Software. A análise da colaboração é realizada de acordo com o Modelo 3C de Colaboração e a análise do domínio é realizada conforme especificado no RUP 3C-Groupware [28]. Michalsky et al. [29] realizou uma análise do domínio para a Inteligência Coletiva na Web 2.0, considerando como ponto de partida o domínio do jornalismo online. Para representar o domínio, jornalismo online, foi avaliado um total de vinte sites de notícias online. Este trabalho pode ser parte do trabalho de Gadelha et al. [28], uma vez que a engenharia de domínio é parte da linha de produto de software. Já o de Michalsky et al. [29] tem um escopo menor e um domínio diferente deste trabalho. Não foram encontrados outros trabalhos de engenharia de domínio para groupware ou redes sociais na Web 2.0, em particular. 4. ANÁLISE DO DOMÍNIO A primeira atividade do método FODA é a análise do contexto, em que é definido o escopo do domínio, suscetível à produção de artefatos [5]. Neste trabalho, o domínio é definido como compartilhamento de conteúdo em Redes Sociais na Web 2.0. Uma rede social é caracterizada como um grupo de pessoas conectadas entre si por meio de relacionamentos ou serviços baseados na Web, em que os usuários constroem um perfil público, possuem uma lista de usuários conectados e navegam pelas listas de outros usuários [30]. Segundo McCann [31], dois terços dos usuários da internet utilizam redes sociais. Os principais usos dessas redes estão relacionados ao compartilhamento de conteúdo, que vem crescendo desde o primeiro estudo, em 2006. Entre os anos de 2008 e 2009 foi observado que 76% dos usuários de redes sociais fazem upload de fotos e 33% de vídeos. O estudo também mostra que 96% dos usuários visitam as páginas de seus amigos virtuais e cerca 66% atualizam seus próprios perfis. 4.1 Funcionalidades Colaborativas em Redes Sociais Seguindo os critérios de classificação das funcionalidades colaborativas, segundo o modelo 3C de colaboração, a Figura 1 ilustra a identificação das funcionalidades colaborativas no site Facebook (www.facebook.com). Os retângulos são elementos de comunicação, as elipses, coordenação, e as setas, cooperação. Como funcionalidade de comunicação, está identificada a possibilidade de comentário da imagem; como funcionalidade de coordenação, está identificada a denúncia de abuso na imagem e como funcionalidades de cooperação estão identificadas a marcação da foto, compartilhamento e avaliação. Figura 1. Funcionalidades mapeadas com base no modelo 3C Essa análise foi replicada em diversas outras redes sociais com o objetivo de levantar as funcionalidades relativas ao compartilhamento de conteúdo mais utilizadas e outras específicas de cada rede. A Figura 2 ilustra o mapeamento das funcionalidades nas diferentes redes sociais, classificadas de acordo com o modelo 3C de colaboração. As redes sociais foram escolhidas com base no ranking de classificação do site Alexa (www.alexa.com) e Wikipédia (www.wikipedia.com), que listam as redes mais acessadas e com maior número de usuários. Figura 2. Funcionalidades colaborativas nas redes sociais Foram identificadas 21 funcionalidades colaborativas relativas ao compartilhamento de conteúdo nas quinze redes sociais. Apenas uma funcionalidade foi classificada como de comunicação, quatro como coordenação, sendo que a mais recorrente foi atividades recentes, e dezesseis foram classificadas como cooperação, sendo que as mais recorrentes foram compartilhamento de objetos, descrição e upload. 345

A próxima atividade do método FODA é a Modelagem do Domínio, que consiste de três subatividades: Análise de Funcionalidades, Modelagem da Entidade Relacionamento e Análise Funcional. O objetivo da Análise das Funcionalidades é capturar, em um modelo, o entendimento dos usuários sobre as capacidades gerais das aplicações de um domínio [5]. Na Error! Reference source not found., são representadas essas funcionalidades utilizando uma árvore proposta pelo método FODA e adaptada de [28], em que são representadas funcionalidades colaborativas obrigatórias e opcionais. Suas derivações são alternativas ou exclusivas. Figura 4. Diagrama de classe das funcionalidades colaborativas Neste trabalho representamos as diferenças e semelhanças das funcionalidades de acordo com os padrões de interação propostos por Schummer e Lukosch [7]. A seguir é sumarizada a descrição do padrão Comentário. Por razões de espaço, os outros padrões estão disponíveis no website http://www.groupwareworkbench.org.br/engenhariadedominio. Comentário: Figura 5. Comentário com emoticons Figura 3.Árvore de funcionalidades colaborativas A Modelagem Entidade Relacionamento captura e define o conhecimento do domínio que é essencial para implementação de aplicações [5]. Neste trabalho utilizamos o diagrama de classe em vez de entidade relacionamento, por ser mais representativo e atual. A Figura 4 exemplifica o diagrama de classe das funcionalidades colaborativas e o relacionamento entre elas. Figura 6. Comentário sem emoticons Intenção: Possibilita ao usuário fazer uma observação sobre um determinado artefato. Contexto: Usuário está utilizando uma ferramenta colaborativa e deseja deixar sua opinião sobre um artefato. Problema: Usuários querem deixar sua contribuição a respeito de um conteúdo para outras pessoas, mas a ferramenta não disponibiliza um mecanismo que possibilite essa contribuição. 346

Cenário: João está em uma rede social e achou interessante uma imagem da igreja de sua cidade e decidiu comentar alguns fatos históricos da construção, mas não achou um lugar para deixar sua contribuição. Sintomas: Este padrão deve ser considerado quando: -Deseja-se que os usuários do sistema contribuam, textualmente, sobre os conteúdos compartilhados. -Quando se deseja que haja uma discussão a respeito do conteúdo. Solução: Integrar um mecanismo de comentários que possibilite o usuário deixar sua contribuição e iniciar uma discussão sobre do conteúdo compartilhado. Dinâmicas: O usuário escreve o texto em campo específico para comentários, podendo adicionar recursos visuais para melhor expressar sua opinião. Após essa etapa, clica no botão de enviar mensagem, aparecendo sua contribuição na lista de discussão. Outros usuários podem acrescentar ou discordar das opiniões através de réplica. Razões: O padrão comentário provê um fácil e rápido mecanismo de contribuição textual para os usuários. Verificar: quando aplicar este padrão devem ser respondidas as questões: -A aplicação permitirá réplicas dos comentários? -Onde será alocado na interface? -Terá apenas recursos textuais? Pontos de perigo: Ter cuidado ao escolher o tipo de texto que será usado no seu comentário e como ele será processado. Pode ocorrer de pessoas colocarem códigos maliciosos no comentário, que podem afetar a estabilidade e segurança do sistema. Usos conhecidos: Facebook, Orkut, Fotolog e DeviantArt. Padrões relacionados: -Fórum: descreve como os usuários podem discutir textualmente sobre um tópico específico. -Thread de discussão: ajuda encontrar mensagens relacionadas quando usuários replicam um comentário existente. -Anotação: possibilita ao usuário criar lembretes ou comentários sobre um artefato. 4.2 Implementação do Domínio A última atividade do método FODA é a modelagem da arquitetura, que provê uma solução de software para os problemas definidos na atividade de modelagem do domínio. Um modelo de arquitetura (também conhecido como arquitetura de referência) é desenvolvido nessa atividade. Um projeto detalhado e a construção dos componentes são baseados nesse modelo [5]. Para este trabalho, tanto para arquitetura quanto para construção dos componentes, é utilizada a plataforma Groupware Workbench [8]. Ela provê um kit de componentes e uma infraestrutura de execução para sistemas colaborativos na Web 2.0. A tecnologia de componentes é vista como apropriada para o desenvolvimento de groupware e há diversos sistemas e plataformas que disponibilizam blocos modulares e relativamente independentes para a construção das aplicações colaborativas [32]. Algumas delas são [33], [34]. O Groupware Workbench estrutura as aplicações, nele desenvolvidas, utilizando componentes chamados collablets, que representam uma parte da aplicação, podendo ser acoplados e desacoplados uns dos outros em tempo de implantação ou mesmo de execução. Cada collablet é composto por algumas classes Java, a saber: entidades, uma implementação da interface de negócio (business) e controladores (controllers). Na camada de apresentação, utilizam-se páginas Java Server Pages (JSP) e alguns widgets de interface gráfica codificados como tagfiles (tagfiles são trechos de código JSP reutilizáveis armazenados em arquivos com a extensão.tag). Toda aplicação tem um collablet principal, que representa o ponto de entrada da aplicação e gerencia todos os demais componentes por meio de subordinação e dependência. Também, há uma ferramenta gráfica para montagem de aplicações, que reconhece os componentes instalados e possibilita compor essas aplicações sem a necessidade de alterar código Java. Nesta proposta, adotou-se o mapeamento um para um entre a funcionalidade levantada na análise do domínio e o componente que a implementa. Como exemplo de implementação utilizando o Groupware Workbench, é descrita a implementação da funcionalidade comentário instanciada como o collablet commentmgr, mostrada na Figura 7. Figura 7. Componente commentmgr O commentmgr implementa dois widgets de interface, um para atribuir um comentário de um usuário a um conteúdo, e outro, que retorna a lista de comentários atribuídas a esse conteúdo. Os widgets são inseridos na página JSP do Collablet, como por exemplo, um gerenciador de fotos, adicionando os trechos de código em JSTL. A parte inferior da Figura 8 exemplifica o uso dos widgets do commentmgr. Juntamente com o componente commentmgr estão compondo essa interface os collablets tag, countermgr, usermgr, searchmgr, descriptionmgr e photomgr. 347

Figura 8. Componente de comentário do Arquigrafia Brasil As variabilidades das funcionalidades colaborativas identificadas na etapa de análise do domínio são tratadas nesse trabalho por meio de widgets de interface ou XML de configuração. Por exemplo, para a variação componente comentário com emoticons, será necessário implementar um widget de interface que provê essa característica, sem a necessidade de alterar a infraestrutura do componente. 5. AVALIAÇÃO Para a avaliação da engenharia de domínio foi realizado um estudo experimental dividido em duas etapas, uma para avaliar a abrangência do modelo e as descrições dos padrões e outra para avaliar a facilidade de uso e utilidade dos artefatos. Tendo como base os artefatos gerados na engenharia de domínio temos como objetivos de avaliação as seguintes perguntas: Abrangência: Há funcionalidades colaborativas relativas ao compartilhamento de conteúdo nas Redes Sociais que não foram levantadas na engenharia de domínio? Utilidade das funcionalidades levantadas: Os desenvolvedores entendem os artefatos disponibilizados? Os desenvolvedores conseguem usar os artefatos? Os desenvolvedores consideram os artefatos úteis? O experimento foi dividido em duas etapas, realizadas com 9 alunos do curso de Tópicos Especiais em Desenvolvimento para Web ministrado para a graduação e pós-graduação em Ciência da Computação do IME/USP. Na primeira etapa, foi disponibilizado um questionário contendo questões sobre o grau de escolaridade e experiência no uso de redes sociais. Após o preenchimento, foi solicitado que os desenvolvedores levantassem e avaliassem funcionalidades colaborativas nas redes sociais. Ao fim dessa atividade foi passada uma lista com sete funcionalidades colaborativas, com suas respectivas descrições, para que eles lessem os padrões e tentassem identifica-los em uma rede social. Também avaliaram a facilidade de uso, detalhamento e facilidade de identificação. Na segunda etapa do experimento, foi passado um questionário para levantar os dados sobre a experiência no desenvolvimento Web, em seguida os desenvolvedores foram separados em dois grupos e tiveram de adicionar duas funcionalidades colaborativas, comentário e tags, no sistema de FAQ desenvolvido no Groupware Workbench e outro desenvolvido utilizando o método tradicional de desenvolvimento Web. Ao termino da primeira hora e dez minutos (meia aula) ou quando terminaram a primeira atividade, os grupos inverteram e iniciaram a segunda atividade. Ao final foi passado um segundo questionário com perguntas relativas à execução do experimento, para que os desenvolvedores avaliassem os artefatos utilizados de acordo com a facilidade de uso e a utilidade. Com relação ao design de experimento, o contexto supõe o processo off-line, porque os alunos não foram avaliados durante todo o tempo do curso, mas em determinado momento. O estudo é modelado porque as atividades executadas pelos alunos não foram realizadas durante a resolução de um problema real, mas utilizando dois experimentos controlados executados em algumas redes sociais e artefatos da engenharia de domínio previamente estabelecidos. Para a seleção dos indivíduos, foi proposto um questionário com objetivo de caracterizar a formação dos desenvolvedores do ponto de vista acadêmico e profissional, servindo como dados para seleção dos participantes, análise e redução de viés. Os critérios para inclusão do participante no experimento foram: Na primeira etapa, eles deveriam fazer parte de, pelo menos, uma rede social, utilizasse uma vez por semana e compartilhassem algum conteúdo. Na segunda etapa deveriam ter, pelo menos, noção em desenvolvimento Web, JSP e Java. Com relação às variáveis, foram levados em consideração como variáveis independentes a escolaridade e experiência dos desenvolvedores, coletados por meio do questionário, e os artefatos gerados na engenharia de domínio. Como variáveis dependentes, foram levados em consideração o grau de similaridade entre as funcionalidades colaborativas levantadas pelos desenvolvedores e as levantadas neste trabalho, o grau de entendimento dos artefatos gerados na engenharia de domínio, o grau de facilidade de uso dos artefatos gerados na engenharia de domínio, o grau de utilidade dos artefatos gerados na engenharia de domínio e o tempo gasto no desenvolvimento das aplicações. A seguir são mostrados alguns pontos que podem ameaçar a validade do experimento. Validade interna: é dependente do número de desenvolvedores. Para executar o experimento pressupomos utilizar entre 7 a 15 desenvolvedores para assegurar a validade interna. Validade de conclusão: para as conclusões do experimento, foi utilizada estatística descritiva, que procura descrever e avaliar certo grupo, sem tirar quaisquer inferências ou conclusões sobre um grupo maior. Validade de construção: escolhemos um domínio de aplicação amplamente conhecido, sistemas Web, que neutraliza o efeito da experiência dos participantes no domínio. Essa escolha evita que experiências anteriores gerem uma interpretação incorreta do impacto das técnicas propostas. Validação externa: alguns indivíduos podem realizar o experimento de forma desleixada, sem um interesse verdadeiro na realização das atividades assim como pode acontecer em uma 348

escala industrial. A validade externa do estudo é considerada suficiente, visto que o objetivo foi avaliar a engenharia de domínio realizada do ponto de vista da abrangência, utilidade e facilidade de uso. Utilizando o formato GQM [35], o objetivo do experimento foi: Analisar a engenharia de domínio realizada Com o propósito de avaliar Com respeito à abrangência, facilidade de uso e utilidade Do ponto de vista dos desenvolvedores de software colaborativo No contexto de alunos da disciplina de Tópicos Especiais em Desenvolvimento para Web. Questões Q1: Há funcionalidades colaborativas relativas ao compartilhamento de conteúdo em redes sociais que não foram levantadas na engenharia de domínio? Q2: Os desenvolvedores entendem os artefatos gerados na engenharia de domínio? Q3: Os desenvolvedores conseguem utilizar os artefatos gerados na engenharia de domínio para construírem um novo sistema? Q4: Os desenvolvedores consideram os artefatos úteis? Métricas Métrica M1-(Q1): A lista de funcionalidades levantadas pelos desenvolvedores que não foram identificadas na engenharia de domínio realizada. Métrica M2-(Q2): Porcentagem de padrões de interação que os desenvolvedores avaliam como fáceis de entender. Métrica M3-(Q2): Porcentagem de padrões de interação que os desenvolvedores avaliam como fáceis de identificar em outras redes sociais. Métrica M4-(Q3): Quantidade de desenvolvedores que conseguem realizar a atividade proposta dentro do tempo de duas horas e vinte minutos com dois componentes. Métrica M5-(Q3): Porcentagem dos desenvolvedores que avaliam positivamente os artefatos quanto à facilidade de utilização. Métrica M6-(Q4): Porcentagem dos desenvolvedores que avaliam positivamente os artefatos quanto à utilidade. Analisando os dados coletados, obtemos: Para a Questão 1, as funcionalidades colaborativas são equivalentes às encontradas neste trabalho e não houve registro de uma nova funcionalidade colaborativa. Para a Questão 2, 92% dos padrões de colaboração são considerados fáceis de entender e 87% dos padrões são fáceis de identificar. No entanto, alguns desenvolvedores apontaram dificuldade de entendimento dos seguintes padrões: descrição, estatísticas, upload, marcar e categoria. Para Questão 3, todos os desenvolvedores realizaram o experimento, no entanto, menos de 80% avaliaram os artefatos como fáceis de usar, rejeitando a hipótese. Para a Questão 4, quase todos avaliaram como usável, apenas um desenvolvedor avaliou como neutro. Baseado no experimento, concluímos que os desenvolvedores identificaram as mesmas funcionalidades colaborativas deste trabalho, entendem as descrições das funcionalidades e as classificam como usáveis, mas a usabilidade dos artefatos precisa ser melhorada. Outra forma de avaliação, no entanto, menos formal, foi o estudo de caso Arquigrafia Brasil [36], que é uma rede social para estudo colaborativo da arquitetura brasileira, que tem por objetivo oferecer um amplo acervo público digital de imagens originais da arquitetura brasileira, ainda inexistente, cedidas e catalogadas pelos próprios usuários. Nesse estudo de caso, é avaliado se os artefatos produzidos na engenharia de domínio são suficientes para a construção de uma rede social. Depois de várias reuniões de brainstorm e outras de levantamento e comparação de funcionalidades identificadas nos grupos foco, realizados com profissionais, especialistas fotógrafos e estudantes de arquitetura, concluímos que as funcionalidades identificadas nesta engenharia de domínio cobre grande parte dos requisitos funcionais utilizados na construção da rede social Arquigrafia Brasil. 6. CONCLUSÃO A Web 2.0 aumentou a possibilidade de expressão e socialização por meio das ferramentas de comunicação mediada pelo computador. Os usuários não apenas modificam o conteúdo das páginas, como também o organizam, compartilham, criticam e atualizam. Neste trabalho foi proposta uma engenharia de domínio para construção de componentes de software, diminuindo a necessidade de reimplementação e focando na montagem de sistema colaborativos. Para este trabalho, o domínio foi as redes sociais na Web 2.0, com o foco nas funcionalidades colaborativas em torno do compartilhamento de conteúdo dessas redes. Para realizar essa engenharia de domínio, foi utilizada uma adaptação do método FODA. Na atividade de análise do domínio foi utilizado o modelo 3C de colaboração [25], que classifica as funcionalidades de acordo com sua função (comunicação, coordenação ou cooperação). Ainda nessa atividade foi feita a descrição das funcionalidades com o uso dos padrões propostos por Schummer e Lukosch [7]. Essa adaptação facilitou a organização e a descrição dos artefatos gerados na engenharia de domínio. O Groupware Workbench foi usado nas atividades de projeto e implementação do domínio para desenvolver os componentes de software colaborativos. Como avaliação dos artefatos gerados na engenharia de domínio, foram realizados um experimento e um estudo de caso. O primeiro avaliou a facilidade de uso, utilidade e entendimento dos artefatos gerados; o segundo, a aplicação desses artefatos em um contexto real, a rede social Arquigrafia Brasil. Desenvolvedores avaliaram os artefatos como usáveis e fáceis de entender. Para o caso de uso, concluímos que a engenharia de domínio realizada cobriu as funcionalidades, previamente identificas independentemente nos grupos foco e nas reuniões de exploração de ideias. Também, essas funcionalidades colaborativas mostraram um grande potencial de reúso em outros domínios, como, por exemplo, jornalismo online [29]. REFERÊNCIAS [1] O'Reilly, T. 2005.What is Web 2.0: Design patterns and business models for the next generation of software. [2] Prescott, L. 2007. Hiwise US consumer generated media report. Hitwise, fev. [3] Greenberg, S. 2007. Toolkits and interface creativity. Springer Science + Business Media. 349

[4] Gaines, B. 1999.Modeling and forecasting the information sciences. Information Sciences 57/58, p. 13-22. [5] Kang, K. C.; Cohen, S. G.; Hess, J. A.; Novak, W. E.; Peterson, A. S. 1990. Feature-Oriented Domain Analysis (FODA) Feasibility Study. CMU/SEI. [6] Fuks, H.; Raposo, A. B.; Gerosa, M. A.; Lucena, C. J. P. 2005.Applying the 3C Model to Groupware Development. International Journal of Cooperative Information Systems (IJCIS), v. 14, n. 2-3, p. 238-299. [7] Schummer, T.; Lukosch, S. 2007. Patterns for Computer- Mediated Interaction. John Wiley & Sons Ltd. [8] Groupware Workbench 2012. Groupware Workbench, Disponivel em: <www.groupwareworkbench.org.br>. [9] Aharoni, A.; Reinhartz-Berger, I. 2008. A Domain Engineering Approach for Situational Method Engineering. University of Haifa. [10] Harsu, M. 2005. A survey on domain engineering. Institute of Software Systems Tampere University of Technology. [11] Prieto-Diaz, R.; Arango, G. 1991. Domain Analysis Concepts and Research Directions". In: Prieto-Diaz, R., Arango, G. (eds), Domain Analysis and Software Systems Modeling. IEEE Computer Society Press. [12] Clements, P. C. 1997. Successful Product Line Engineering Requires More Than Reuse. Software Engineering Institute Carnegie Mellon University. [13] Alaña, E.; Rodriguez, A. I. 2007. Domain Engineering Methodologies Survey. GMV Inovvating Solutions. [14] Terra, A. P. 2006. Uma Abordagem de projeto arquitetural baseado em componentes no contexto de Engenharia de Domínio. COPPE/UFRJ, 207 p. [15] Lima, C. M.; Marciel, R. M. 2005. A Engenharia de Domínio e o Desenvolvimento Baseado em Componentes. In: Desenvolvimento Baseado em Componentes, Conceitos e Técnicas. Editora Ciência Moderna. [16] Simos, M. 1997.Organization domain modeling and oo analysis and design: Distinctions, integration, new directions. STJA 97 Conf. Proc, 126 132. [17] Kang, K. C.; Kima, S.; Lee, J.; Kim, K.; Shin, E.; Huh, M. 1998.FORM: A feature-oriented reuse method with domainspecific reference architectures. Annals of Software Engineering 5. [18] Griss, M. L.; Favaro, J.; D'alessandro, M. 1998.Integrating Feature Modeling with the RSEB. [19] Frakes, W.; Prieto-Diaz, R.; Fox, C.Dare: Domain analysis and reuse environment. Ann. Softw. Eng., p. 125 141, ISSN 1022-7091. [20] Braga, R. M. M. 2000. Busca e recuperacão de componentes em ambientes de reutilizacão de software. Rio de Janeiro. [21] Bayer, J. et al. 1999.Pulse: a methodology to develop software product lines. Proceedings of the 1999 symposium on Software reusability, New York, 122 131. [22] Hoeydalsvik, G. M. 1994. OORAM: Object-Oriented Role Analysis and Modeling. Somerset: Wiley-QED Publishing, 141 146 p. [23] Holibaugh, R. 1993. Joint Integrated Avionics Working Group (JIAWG) Object-Oriented Domain Analysis Method (JODA). Carnegie Mellon University. [24] DE, E. S. 2007. RiDE: The RiSE Process for Domain Engineering. Ph.D. Thesis in Computer Science, UFPE. [25] Ellis, C. A.; Gibbs, S. J.; Rein, G. L. 1991. Groupware - Some Issues and Experiences. Communications of the ACM, v. 34. 38-58 p. [26] Gerosa, M. A.; Pimentel, M.; Fuks, H.; Lucena, C. J. P. 2006.Development of Groupware based on the 3C Collaboration Model and Component Technology. 12th International Workshop on Groupware CRIWG 2006. Valladolid: Lecture Notes on Computer Science LNCS.. p. 302-309. [27] Gaspar, T. C.; Yaguinuma, C. A.; Do, A. F. 2009.Software product lines for Web 2.0 synchronous collaboration. WebMedia '09 Proceedings of the XV Brazilian Symposium on Multimedia and the Web. [28] Gadelha, B.; Cirilo, E.; Fuks, H.; P., C. J.; Castro, A.; Gerosa, M. A. 2010.Uma Abordagem para o Desenvolvimento de Linhas de Produto de Groupware Baseados em Componentes Utilizando o Groupware Workbench. SBSC. [29] Michalsky, S.; Sonco, E. Z.; Gerosa, M. A. 2010.A Inteligência Coletiva na Web: Uma Análise de Domínio para o Jornalismo Online. Simpósio Brasileiro de Sistemas Multimídia e Web - WebMedia, v. II, p. 45-48. [30] Kazienko, P.; Musial, K. 2006.Social Capital in Online Social Networks, v. 4252, p. 417-424. [31] Universal Mcann. 2009. Power to the people - social media tracker wave 4. Universal McAnn. [32] Gerosa, M. A. 2006. Desenvolvimento de groupware componentizado com base no modelo 3C de colaboração. PUC- Rio. [33] Hill, J.; Gutwin, C. 2004.he maui toolkit: Groupware widgets for group awareness. Computer Supported Cooperative Work (CSCW), 539 571. [34] Roseman, M.; Yitbarek, S.; Greenberg., S. 1993. Groupkit tutorial. Included in the public domain Groupkit distribution, cpsc. ucalgary. [35] Solingen, R. V.; Berghout, E. 1999. The Goal/Question/Metric Method A Practical Guide for Quality Improvement of Software Development. McGraw Hill, 198 p. [36] Rozestraten, A. S. et al. 2010. Rede Social Arquigrafia- Brasil: Design de um ambiente online baseado em transdisciplinaridade e colaboração. VII Simpósio Brasileiro de Sistemas Colaborativos, Anais do SBSC 2010, v. II. 350