Groupware Workbench Componentes de Software para Colaborao na
Groupware Workbench: Componentes de Software para Colaboração na Web Marco Aurélio Gerosa gerosa@ime. usp. br Marco A. Gerosa Seminário IME/USP
Componentes de Software para colaboração na Web Sumário • Evolução da tecnologia e sistemas colaborativos • Dificuldades de desenvolvimento • Uma proposta de bancada baseada em componentes para o desenvolvimento de sistemas colaborativos • Estudos de casos e Avaliação • Considerações finais Marco A. Gerosa 2 2
Componentes de Software para colaboração na Web Evolução da tecnologia • Processamento de dados Sistemas de Informação Sistemas de comunicação • Douglas Engelbart [1968] já sabia! • Software hoje é colaborativo. • Novos recursos colaborativos em aplicações monousuário Marco A. Gerosa 3 3
Componentes de Software para colaboração na Web Evolução da Web • • • Hoje a Web é a plataforma padrão para execução de sistemas Web Estática => Web Dinâmica => Web colaborativa! Web 1. 0 (read-only) x Web 2. 0 (read-write) Junção de informação, funcionalidade e colaboração Tagging, filtros colaborativos, sistemas de recomendação, sistemas de reputação, feeds etc. • Wikis, blogs, redes sociais, online games etc. • Inteligência coletiva – Uso de informações produzidas socialmente direta ou indiretamente (número de links para uma página, compras similares, votos, comentários etc. ) • A Web 2. 0 não é uma revolução técnica, mas sim na forma como é encarada por usuários e desenvolvedores. Ref: Wikipedia Marco A. Gerosa 4 4
Componentes de Software para colaboração na Web Exemplos de sistemas da Web 2. 0 Compartilhamento de fotos Recomendação (o que outros compraram depois de ver o produto, produtos similares) Tagging Avaliação do produto Resenha Troca de mensagens Wiki (Amapedia) Vídeos sendo vistos Avaliação Compartilhar em redes sociais Comentário Estatísticas Sites com links para o vídeo Marco A. Gerosa 5 5
Componentes de Software para colaboração na Web As gigantes estão atentas “Social interactions” “Rapid prototyping” Marco A. Gerosa 6 6
Componentes de Software para colaboração na Web As gigantes estão atentas “methods for harvesting the collective intelligence of groups of people” Marco A. Gerosa 7 7
Componentes de Software para colaboração na Web As gigantes estão atentas “Humans are fundamentally social creatures. ” Marco A. Gerosa 8 8
Componentes de Software para colaboração na Web As gigantes estão atentas Marco A. Gerosa 9 9
Componentes de Software para colaboração na Web Google Marco A. Gerosa 10 10
OK, hoje sistemas web são sistemas colaborativos, mas quais são as dificuldades de desenvolvimento? Marco A. Gerosa Seminário IME/USP
Componentes de Software para colaboração na Web Desenvolvimento de Sistemas Colaborativos • Complexidades técnicas – Sincronismo, concorrência, compartilhamento, distribuição, protocolos, conexões, gerenciamento de sessões • Projeto da interação. Conseqüências indivíduo-software E indivíduo-indivíduo – Sistemas difíceis de especificar • Deslocamento dos esforços de – Sistemas mais propícios adesenvolvimento falhas e criatividade • Modelos de negócio baseado na Web • Código difícil de manter e evoluir – Necessidade de alta capacidade de evolução e escalabilidade • Constante evolução das tarefas e do grupo – Requisitos imprecisos, instáveis evolutivos este cenário? Comoe melhorar – Código desenvolvido tende a se tornar desestruturado com a evolução contínua • Propiciar a prototipação e o reuso • Conhecimento multidisciplinar – Engenharia de software, banco de dados, inteligência artificial, sistemas de informação, • Encapsular a complexidade interação humano-computador, sistemas multimídia, sistemas distribuídos etc. técnica eciências propiciar o reuso de – Sociologia, psicologia, antropologia, sociais etc. conhecimento • Múltiplias áreas de aplicação, múltiplos propósitos – Socialização, administração, educação, jogos e entretenimento, engenharia de software etc. • A área é recente e ainda não há um corpo de conhecimento bem consolidado Marco A. Gerosa 12 12
Componentes de Software para colaboração na Web Modelo BRETAM para uma tecnologia Parte das dificuldades de desenvolvimento de groupware vem da falta de um ferramental que simplifique o desenvolvimento e que possibilite prototipar soluções. Marco A. Gerosa 13 [Greenberg, 2007] [Gaines, 1999] 13
Componentes de Software para colaboração na Web Prototipação e criatividade • Construção de sistemas de informação – toolkits de widgets gráficos • Hipertexto - editores WYSIWYG • No desenvolvimento de groupware ainda são necessários programadores qualificados, que direcionam a criatividade e os esforços para a criação de soluções para os problemas de natureza técnica de baixo nível, deslocando a investigação da interação e o suporte à colaboração para um segundo plano. Marco A. Gerosa 14 14
Componentes de Software para colaboração na Web Componentes de Software • Benefícios – – – Manutenibilidade Reuso (com uma granularidade média) Adaptabilidade Extensibilidade Prototipação, experimentação e desenvolvimento iterativo Encapsulamento do conhecimento do domínio e dos detalhes de implementação – Programação em um nível mais alto (integração de componentes). – Desenvolvimento paralelo e em grupo – Integração de diferentes tecnologias, linguagens e plataformas • Dificuldades – Esforço inicial de análise, projeto, implementação, testes e documentação – Custo de estudo e entendimento dos componentes e da infra-estrutura de execução – Custo de modificação do componente, nem sempre possível Marco A. Gerosa 15 15
Componentes de Software para colaboração na Web Ferramentas Colaborativas (serviços) exemplos de serviços colaborativos encontrados em groupware Marco A. Gerosa 16 16
Componentes de Software para colaboração na Web Elementos de colaboração Funcionalidades compartilhadas entre serviços Categorização Marco A. Gerosa 17 17
Componentes de Software para colaboração na Web Abordagem proposta • Serviço com funcionalidades referentes aos três C’s • Seleção dos componentes para o suporte à colaboração • Encapsulamento das complexidades técnicas e regras de negócio sobre colaboração, obtidas de especialistas do domínio e experimentação • Reuso Marco A. Gerosa 18 18
Componentes de Software para colaboração na Web O Modelo 3 C de Colaboração • Baseado em Ellis et al. (1991) • Freqüentemente citado e usado na literatura Marco A. Gerosa 19 19
Componentes de Software para colaboração na Web Exemplo de Análise 3 C Mecanismos 3 C de um bate-papo típico Elementos 3 C das ferramentas de comunicação síncrona Comunicação Coordenação Cooperação Marco A. Gerosa 20 Linguagem Transmissão Tamanho e Qualidade Estruturação do discurso Categorização Tópico Sessão Acesso Presença Disponibilidade Papéis Posse da palavra Freqüência Visibilidade Endereçamento Indicação do turno-em-desenvolvimento Avaliação Registro Configuração do espaço Mensagens preconcebidas 20
Componentes de Software para colaboração na Web Evolução baseada no modelo 3 C Marco A. Gerosa 21 21
Componentes de Software para colaboração na Web A Arquitetura Proposta • Funcionalidades dos component frameworks recorrentes e reusáveis → Component framework – component framework de segunda ordem, onde seus componentes são component frameworks (Szyperski, 1997, p. 276). • Camada de negócio • Instâncias de um componente • Interação entre os frameworks • Acoplamento através de interfaces • Customização através de arquivos descritores Marco A. Gerosa 22 22
Componentes de Software para colaboração na Web Um componente Arquitetura Empacotamento Customização Relacionamentos Marco A. Gerosa 23 23
Componentes de Software para colaboração na Web Aplicação-exemplo • Gerenciamento de Projetos Marco A. Gerosa 24 24
Componentes de Software para colaboração na Web Exemplos de funcionalidades providas • Definição de dependência entre serviços e componentes de colaboração • Instalação, atualização e remoção de componentes • Uso de um serviço como stand alone • Uso da aplicação como serviço • Duplicação do componente em contextos diferentes • Duplicação do componente em um mesmo contexto • Ferramenta externa • Duplicação da aplicação Marco A. Gerosa 25 25
Componentes de Software para colaboração na Web Estudos de Caso e Avaliação • Com a bancada espera-se que uma grande quantidade de aplicações seja criada, algumas comercialmente, outras por diversão e outras, por estudantes, como exercícios em seus cursos. • Avaliação da bancada: – – Utilização por estudantes de graduação e pós Construção de um sistema colaborativo para suporte a aulas Desenvolvimento de componentes como resultados de pesquisas Componentização de ambientes já existentes Marco A. Gerosa 26 26
Componentes de Software para colaboração na Web Utilização por estudantes de graduação e pós • Espera-se que a bancada seja robusta e simples o suficiente para que alunos de graduação e pós-graduação criem aplicações colaborativas e prototipem novos serviços e componentes de colaboração ao longo de uma disciplina. • Disciplinas no IME/USP – MAC 0434/MAC 5798 (Desenvolvimento de Sistemas Colaborativos) - 2008. 2 e 2009. 2 – MAC 0416/MAC? ? (Tópicos Especiais em Desenvolvimento para Web) – 2009. 1 • Disciplina na PUC-Rio – INF 1637/INF 2132 (Engenharia de Groupware) – 2008. 1 e 2009. 2 (? ) • O código produzido é analisado e são aplicados questionários e entrevistas. • Além de avaliar e refinar a bancada, estas disciplinas capacitam os alunos no desenvolvimento para Web e no desenvolvimento baseado em componentes. • Alguns dos componentes produzidos são acrescentados ao repositório. Marco A. Gerosa 27 27
Componentes de Software para colaboração na Web Construção de um sistema para suporte a aulas • Montagem de um ambiente para dar suporte ao ensinoaprendizagem colaborativo a partir dos componentes da bancada • Uso prático de toda infra-estrutura • Refinamento do código existente e geração de novos requisitos • Parceria com o IC/UNICAMP para construção de um sistema de apoio a aulas ministradas com Tablet. PCs • Sistema para apoio a aprendizagem de programação Marco A. Gerosa 28 28
Componentes de Software para colaboração na Web Componentes como resultados de pesquisas • Alunos de mestrado e doutorado desenvolvendo componentes reusáveis que encapsulam o conhecimento e funcionalidades relativas às respectivas pesquisas. • Exemplos: – Aluno de mestrado Geiser Chalco (IME/USP) – componente para definição de workflow adaptativo – Aluno de doutorado Bruno Gadelha (PUC-Rio) – componente para gestão de aprendizagem funcionais – Alunos de mestrado do prof. Mariano Pimentel (UNIRIO) – componentes para comunicação online Marco A. Gerosa 29 29
Componentes de Software para colaboração na Web Componentização de ambientes já existentes • • • Ambiente de ensino-aprendizagem Aula. Net Apoiar um curso → ambiente de ensino-aprendizagem Evolução por prototipação → código desestruturado 8 anos de desenvolvimento, LES/PUC-Rio Estudo de caso (Aula. Net 3. 0) NEXTEL CCEAD Delegacia Legal Aula. Net 2. 0 Globo Marco A. Gerosa 30 Ultra. Gás 30
Componentes de Software para colaboração na Web Componentização no Aula. Net • • Mundo acadêmico e corporativo Acompanhar a evolução da dinâmica do curso e do grupo Não há como prever todas as demandas para o ambiente Equipe de desenvolvimento: alunos de graduação, mestrado e doutorado. • Encapsulamento do conhecimento adquirido nos 8 anos de desenvolvimento do ambiente • Integração LES/Edu. Web • Possibilidade de grupos de pesquisa externos desenvolverem componentes para o ambiente Marco A. Gerosa 31 31
Componentes de Software para colaboração na Web Estudo de caso Análise da colaboração Seleção de serviços Montagem do groupware • Instalação de um mesmo serviço com configurações e características diferentes para atender a tarefas distintas • Reuso do serviço em mais de um grupo (Curso, Visitante, Participante e Administrador) Marco A. Gerosa 32 32
Componentes de Software para colaboração na Web Capacidade de adaptação • Uma alteração da dinâmica da colaboração pode levar à substituição de um componente 3 C por uma versão mais robusta Estudo de caso: Troca do componente de avaliação Quantidade irrelevante 1 Quantidade mínima Quantidade máxima 1 1 Marco A. Gerosa 1 M M 33 Quantidade moderada M N 33
Componentes de Software para colaboração na Web Considerações Finais • Com a bancada, uma grande quantidade de aplicações pode ser criada, comercialmente, por diversão ou por estudantes, como exercícios em seus cursos => diversidade, criatividade, inovação e avanço tecnológico. • Espera-se instrumentar o desenvolvimento de sistemas extensíveis e adaptáveis, de modo a lidar com o projeto da colaboração em um alto nível, embasado pelo Modelo 3 C. • Integração de pesquisa entre instituições • Cenário real para a pesquisa em Desenvolvimento Baseado em Componentes e Engenharia de Software • Pesquisa em Informática na Educação • Disponibilização da bancada na forma de software livre Marco A. Gerosa 34 34
Componentes de Software para colaboração na Web Projetos futuros • Rumo à Web 3. 0 – Interoperabilidade e integração com novas mídias de interação Marco A. Gerosa 35 35
- Slides: 35