Professional Documents
Culture Documents
Resumo
Dentro das metodologias geis a ideia de programao em pares obedece de forma implcita esta teoria. A ideia deste trabalho proporcionar que um conjunto maior de pessoas possam compartilhar o desenvolvimento de um cdigo fonte de forma colaborativa e que fique registrado no ambiente o histrico das alteraes e todo o processo intelectual que leva a mudanas em determinadas partes de um cdigo fonte. Isto permite que uma relao N-N possa ser estabelecida em um ambiente de desenvolvimento de software distribudo, potencializando a teoria do par mais capaz. O artigo apresenta uma ferramenta desenvolvida como um plug-in do NetBeans que incorpora vrias funcionalidades de ambientes colaborativos para suporte a programao distribuda em tempo real. Palavras-Chave: Programao em pares, Programao, Programao Distribuda
Abstract The agile idea of pair programming implicitly obeys this theory. The idea of this paper is to
provide that a larger set of people can share the development of a source code in a collaborative manner and that the history and the whole intellectual process that leads to changes in certain parts of a source code will be record in the environment. This allows a N-N relationship can be established in a development environment for distributed software, leveraging the theory of the more capable peer. The article presents a tool developed as a NetBeans plug-in, functionality that incorporates several of collaborative environments to support distributed programming in real time. Keywords: Pair Programming, Programming, Distributed Programming
Recebido: 10 de Junho de 2012 / Aceito: 15 Julho de 2012 / Publicado: 20 de Agosto de 2012 DOI: 10.5753/RBIE.2012.20.02.54
54
Grtner et al.
1 Introduo
O aumento dos ambientes colaborativos em empresas produtoras de software desencadeia um novo perfil do aluno que entra nos cursos de computao: o perfil de trabalhar em grupo. Para isto, necessrio aliar o uso de ferramentas colaborativas e teorias pedaggicas que reforcem a colaborao entre pares e acentuem a colaborao em atividade de desenvolvimento de software. Por outro lado, desenvolver software uma atividade altamente intelectual e que exige troca de conhecimento constante entre as pessoas envolvidas. Tal necessidade por interao evidenciada por algumas prticas de desenvolvimento, como a programao em pares. necessrio, ainda, que os pares sejam permutados a cada nova atividade, de forma a disseminar o conhecimento adquirido entre os aprendizes. Para [24], o olho humano tem uma grande capacidade de no enxergar aquilo que no quer ver. Da mesma forma, um aluno iniciante pode ignorar completamente um erro gritante que seria rapidamente percebido por um observador mais experiente. Pesquisas realizadas pelos autores revelam que dois programadores juntos chegam a uma soluo mais rpida e com maior qualidade do que dois programadores trabalhando separadamente na resoluo de problemas. [13] identifica que as iniciativas para viabilizar programao por pares distribudos utilizam aplicaes no orientadas para este fim. So utilizados: compartilhamento de desktop, e-mail, troca instantnea de mensagens, voz sobre IP, repositrios de arquivos compartilhados e videoconferncia. Tais aplicaes possuem objetivos especficos e no so orientadas programao. Neste contexto, torna-se importante a existncia de um ambiente integrado que viabilize diferentes formas de comunicao orientadas ao ensino de programao, por pares, de forma distribuda e colaborativa[13]. Neste sentido, este trabalho apresenta a ferramenta IdDE. Esta consiste em um ambiente colaborativo para auxlio programao distribuda em pares. A sua principal contribuio est na possibilidade de utilizao de ferramentas interativas que tornam mais eficiente o processo de colaborao. Alm disso, do ponto de vista pedaggico, trabalhar em pares, valendo-se de um instrumento mediador, segundo o princpio sociocultural da teoria Vygotskyana, influi nas interaes, pois, em geral, o indivduo costuma explicitar suas estratgias durante a resoluo de tarefas compartilhadas
55
Grtner et al.
Definio reas que esto compartilhadas e sincronizadas por todos os participantes on-line. Movimento do cursor percebido e disponibilizado a todos. Uma representao visual ou multimdia de parte do contedo compartilhado. Aes percebidas de forma sncrona e assncrona. Perodo de interao sncrona. Conjunto de privilgios, atribuies ou responsabilidades de participante do grupo.
Cursos Viso
indivduo. De acordo com Piaget o conhecimento no est no sujeito nem no objeto, mas ele se constri na interao do sujeito com o objeto. na medida em que o sujeito interage (e, portanto age sobre e sofre ao do objeto) que ele vai produzindo sua capacidade de conhecer e vai produzindo tambm o prprio conhecimento [11]. J Vygotsky aborda este processo do ponto de vista de interatividade entre o indivduo e o meio social. O princpio sociocultural da teoria Vygotskyana nos traz um forte embasamento pedaggico para o trabalho em equipe, onde a importncia da comunicao, colaborao e coordenao a fim de viabilizar o trabalho em grupo e obter melhores resultados, quando comparados ao trabalho realizado individualmente, o elemento de sucesso. Para Vygotsky, os processos mentais s podem ser entendidos se forem entendidos os instrumentos e os signos que mediam esses processos. Alm disso, o desenvolvimento cognitivo do ser humano no pode ser entendido fora do contexto social e cultural em que este se produz. E para entender o desenvolvimento cognitivo do ser humano, bem como os instrumentos e signos que mediam esses processos, Vygotsky se apoia no mtodo gentico experimental. Compreende-se ento que, para Vygotsky, o modelo histrico-social esboado nas estruturas de mediao instrumental e social, que por sua vez internalizam, no ser humano, estruturas que possibilitam a interpretao do movimento, quer pela passagem de aes realizadas no plano social, portanto interpsicolgicas, quer pela passagem de aes internalizadas (intra-psicolgicas). No caso de ferramentas de Groupware essas aes interpsicolgicas e intra-psicolgicas possuem uma dimenso no linear o que possibilita ao indivduo uma postura exploratria maior. Desse modo as interaes entre o grupo potencializam construes de conhecimento mais autnomos e criativos [18]. Trabalhar em pares, valendo-se de um instrumento mediador, influi nas interaes, pois, em geral, o indivduo costuma explicitar suas estratgias durante a resoluo de tarefas compartilhadas.
3. Trabalhos Relacionados
Nesta seo sero apresentados alguns trabalhos pertinentes ao estudo.
3.1 VIMEE
um ambiente para auxiliar a comunicao e a tomada de deciso em equipe. Possibilita uma comunicao sncrona, explcita e formal em ambientes DSDE (Distributed Software Development Environment) [23]. A comunicao entre os participantes ocorre de maneira clara e explcita, e baseada em procedimentos formais que guiam o andamento das atividades, indicando quem est habilitado a executar algo. Algumas de suas caractersticas so:
56
Grtner et al.
Agendamento de reunies, com aviso aos participantes; Permite a troca sncrona de mensagens de texto; No possui limites quanto ao nmero de participantes; Permite a visualizao de artefatos do projeto; Permite o compartilhamento de documentos e imagens; Possibilita o armazenamento de documentos gerados numa reunio; Possibilita a realizao de votaes, para tomada de deciso. Para organizar o fluxo dos procedimentos, o VIMEE permite a coordenao das reunies atravs do papel de um mediador. A interface do mediador difere da interface dos demais usurios, e tem por objetivo possibilitar: o incio e trmino de uma reunio, bloquear ou liberar algum participante, controlar as votaes e enviar mensagens. Nessa interface, tambm controlado qual usurio, previamente inscrito, pode se manifestar. Aliado a isso, possibilita a liberao do acesso aos artefatos do projeto, alm de poder tornar visvel a existncia de documentos e imagens para os demais participantes.
nos computador; Voz: possibilita que os programadores se comuniquem por udio, utilizando o microfone acoplado ao computador; Ferramenta externa: permite que um programa externo seja executado, a exemplo de um compilador. As mensagens de sada, oriundas da execuo do programa externo, sero exibidas para ambos os programadores.
3.3 CollabEd
Trata-se de um editor desenvolvido sobre uma plataforma de colaborao, segundo [17]. O design da plataforma compreende trs categorias essenciais: conexo, manuteno e replay das interaes. A arquitetura do aplicativo baseada no modelo cliente/servidor. Tanto o servidor quanto o cliente so desenvolvidos na linguagem Java e, assim, so multiplataformas. Alm de ser executado como uma aplicao independente, o CollabEd pode ser acoplado a editores de texto j existentes, atravs plugins. J existem plugins disponibilizados para os editores Netbeans, Eclipse e JEdit. Neste aplicativo, o servidor o encarregado de manter o histrico das alteraes efetuadas nos clientes. Graas a este histrico, mesmo que os clientes mantenham as alteraes em um buffer, as mesmas sero aplicadas corretamente pelo servidor, que se encarregar de atualizar a posio onde as alteraes devem acontecer no documento remoto.
3.2 RemotePP
O RemotePP um ambiente cooperativo de desenvolvimento com o objetivo de dar suporte programao em pares distribudos [2]. Como o seu objetivo voltado para a programao em pares, a sesso somente pode ser estabelecida entre dois programadores, um local e outro remoto, desde que esteja dentro da mesma rede. O ambiente possui uma srie de ferramentas, a seguir descritas: Edio de cdigo-fonte: este mdulo permite a edio de programas de forma colaborativa, porm, no simultneo, ou seja, somente um programador pode alterar o cdigo por vez. Caso a sesso no tenha sido estabelecida com o outro usurio, a edio acontece somente de forma local; Quadro branco: funcionalmente similar ao mdulo de edio de cdigo-fonte, este mdulo permite que ambos os programadores, colaborativamente, editem desenhos e diagramas. Neste caso, a edio pode ser feita simultaneamente por ambos programadores; Chat: permite a troca de mensagens instantneas entre os dois usurios; Vdeo: este mdulo permite que os programadores realizem videoconferncia. Para isso, necessrio que exista uma webcam instalada e configurada 57
3.4 Sangam
O Sangam foi desenvolvido por [16] na forma de um plug-in para o ambiente de desenvolvimento Eclipse. A ferramenta oferece sincronizao de cdigo-fonte entre mais de dois programadores. O Sangam no bloqueia o texto durante uma sesso. A arquitetura do aplicativo utiliza trs componentes principais: Interceptador de eventos Monitora o ambiente a fim de capturar todas as aes que o usurio (driver) realiza no editor de cdigo Java da aplicao; Servidor de mensagens responsvel pelo envio das mensagens ao navigator; Reprodutor de eventos Realiza as aes recebidas pelo servidor de mensagem de modo a reproduzi-las no computador do navigator.
3.5 Flecse
O Flecse atua como um conjunto de ferramentas colaborativas e aplicveis a todo o ciclo de vida de desenvolvimento de software [8]. A interface de todas as aplicaes baseada em linha de comando e console texto, com as seguintes caractersticas:
Grtner et al.
O controle de verso: permite controlar a verso do programa; MShell: um interpretador de comandos colaborativo; Teleconf: permite gravao, transmisso e execuo de uma conversao por udio; MDebug: possibilita a depurao de programas de forma compartilhada; CSI: um mecanismo de inspeo de cdigo assncrono e sncrono;
descritas as tecnologias. Linguagem de Programao Java: A escolha da linguagem de programao Java tem como objetivo possibilitar que o ambiente seja executado nas mais variadas plataformas operacionais, alm de ser multiplataforma, uma linguagem largamente utilizada e difundida; Ambiente Netbeans: Este ambiente oferece todas as funcionalidades necessrias para a edio de cdigo fonte, alm de disponibilizar inmeras outras ferramentas, a exemplo de: formatao de cdigo, dicas e sugestes de cdigos automticos, compilao, depurao, criador visual de formulrios, suporte internacionalizao e suporte a diversas linguagens de programao; Protocolo XMPP: Este protocolo foi escolhido por ser um protocolo aberto e largamente utilizado para a comunicao. A tecnologia XMPP utiliza uma arquitetura cliente/servidor descentralizada, similar s arquiteturas utilizadas nas redes WWW e de e-mail [19]. Exemplos bastante conhecidos de seu uso so o Google Talk e Facebook; Protocolo SIP: O protocolo SIP utilizado em comunicaes do tipo VoIP. Segundo [9], SIP um protocolo que controla a negociao, modificao e encerramento de uma sesso multimdia interativa. As sesses multimdia podem ser de udio, vdeo, chat ou mesmo sesses de jogos [21].
4.1 Introduo
A colaborao possui um papel fundamental no desenvolvimento de software e uma organizao ter mais benefcios das tecnologias colaborativas se utilizar um conjunto delas: mensagem instantnea, videoconferncia, servios de udio de qualidade, repositrios integrados e ambientes de compartilhados [6]. Sob a perspectiva de um programador, um Ambiente Integrado de Desenvolvimento (IDE) possibilita a escrita de cdigo e fornece uma srie de funcionalidades importantes para o processo de aprendizagem de programao com enfoque colaborativo. O IdDE permite que a comunicao via udio ocorra entre usurios do ambiente e dispositivos de telefonia convencional, telefonia mvel, telefones IP, ATAs e smartphones. J a edio compartilhada poder ocorrer entre aplicativos que implementam o protocolo de comunicao e negociao do IdDE. O chat, por sua vez, poder ser utilizado em dispositivos que possuam softwares que utilizem o mesmo protocolo de comunicao adotado pelo ambiente.
http://xmpp.org ://www.ietf.org/rfc/rfc3261.txt
Grtner et al.
edio. Essas janelas so criadas quando o mdulo carregado no Netbeans, o que ocorre durante a inicializainicializ o deste aplicativo.
Pode-se se verificar tambm que as funes acionadas pelo usurio fazem uso do Protocolo IdDE. Isso se deve ao fato de que o ambiente envia mensagens de negocianegoci o para o ambiente remoto, solicitando ou informando a ao executada pelo usurio local e que deve ser replic replicada para o usurio remoto. emoto. Desta forma, para que um apl aplicativo possa se comunicar com o IdDE, deve implemenimpleme tar, obrigatoriamente, esse mesmo protocolo. Por fim, a figura mostra que as funcionalidades de presena e chat interagem diretamente atravs de XMPP, no havendo a troca a de mensagens ou utilizao do protocolo IdDE. Isso permite que o IdDE se comunique com qualquer aplicatiaplicat vo que suporte o protocolo XMPP. A Figura 2 representa a viso lgica da organizao do sistema e suas ferramentas. No diagrama pode-se pode observar que os s pacotes de classes foram organizados de forma a refletir a arquitetura modular apresentada na Figura 1. O nome de cada pacote faz referncia funciofunci nalidade que implementa, e o detalhamento dessas funfu cionalidades apresentado na Tabela II. Para implementar a comunicao no IdDE, foram utilizadas as bibliot bibliotecas: Smack1 para a comunicao XMPP, Peers2 para comunicao SIP, alm de partes de cdigo do projeto Shortalk3. A estruturao do cdigo, conforme discutido anteriormente, foi feita de acordo com os o mdulos do aplicativo.
Figura 2: Estrutura de pacotes de classes do IdDE Pacote editor Funcionalidade Possui as classes responsveis pela implementao da edio compartilhada e simultnea. Neste pacote esto as classes responsveis pelo geren gerenciamento de tarefas. Agrega as classes relacionadas agenda de compromissos. Classes responsveis pela transferncia de arquivos entre os usurios. Possui as classes que implementam a comunicao via udio. Este pacote agrega ag funcionalidades comuns, necessrias aos demais pacotes. Este pacote possui os subpacotes view, transport e model. Neste pacote esto localizadas as classes responsveis pela implementao da tela principal e de configurao do IdDE (MainPanel), e da tela com informaes das sesses de edio colaborativa ativas (SessionFrame). Agrega as classes de definio de mensagens do protocolo IdDE, alm de criao e interpretao das mensagens desse protocolo. Poss Possui as classes que implementam as funcionalidades relacionadas
task
agenda
fileManager
sip
common
common::view
common::transport
1 2
common::model
59
Grtner et al.
Pacote
moduleIdDE
Funcionalidade ao XMPP, como conexo, envio de mensagens e presena. Neste pacote ficam localizadas as classes responsveis pela integrao do IdDE ao Netbeans e pela interao com o documento de edio de cdigo fonte. As principais classes so: Installer, responsvel pela instalao e ativao do mdulo no Netbeans; IddeTopComponent, responsvel pela apresentao da tela principal do IdDE no Netbeans; e SessionTopComponent, responsvel por apresentar apre a tela com informaes das sesses de edio compartilhada existentes.
do [5], deve-se se possibilitar a anlise e reviso sncrona online do cdigo. Aliado iado a isso, a ferramenta tambm contribuir na aprendizagem de desenvolvedores inicianinicia tes, possibilitando que estes acompanhem a programao de usurios mais experientes. A arquitetura da ferramenta de colaborao cola pode ser vista na Figura 3. O pacote moduleIdDE modu o responsvel pelo integrao o do ambiente ao Netbeans e possui as classes encarregadas gadas pelo monitoramento dos eventos no documento. A classe DocumentChangesListener monitora as alteraes (incluso e excluso de caracteres) que ocorrem no documento o e a classe DocumentCaretListener a responsvel vel por fazer o monitoramento das alteraes na posio do cursor. Tambm neste pacote esto as clascla ses: EditAnnotation, , responsvel pela criao das caractecaract rsticas cas visuais no ambiente (marcaes de alteraes alterae feitas e seus respectivos autores), e a classe CaretPosAnnotation responsvel pelas marcaes visuais relativas posio do cursor dos usurios remotos.
A ferramenta de edio colaborativa do ambiente IdI DE permite que vrios usurios acessem e modifiquem o mesmo cdigo fonte, simultaneamente. nte. A edio em tempo real tem papel fundamental no desenvolvimento distribudo, auxiliando para que se tenha um cdigo pap dronizado, otimizado e de melhor qualidade final. Segu Segun-
A classe SessionControl do pacote editor::controller responsvel por controlar as sesses de edio edi de documentos, estabelecidas entre dois (ou mais) usurios. Entre os mtodos importantes dessa classe esto: getEditSession, , responsvel por iniciar uma nova sesso de edio colaborativa; addSharedEditing, addSharedEditing responsvel por incluir 60
Grtner et al.
getSharedFiles mtodo um novo usurio a uma sesso; getSharedFiles, utilizado para retornar os arquivos que esto numa sesso de edio; getSharedUsers, utilizado para retornar os usurios que participam de uma sesso; pingAlive, utilizado para verificar se os usurios continuam na sesso; exitSharedEditing, executado quando um usurio sai de uma sesso compartilhada; e addMessageToBuffer, mtodo utilizado para enviar uma mensagem do protocolo para os demais usurios da sesso. As informaes das sesses existentes so mantidas no atributo editSessions.
este documento est em uma sesso de edio colaboraticolaborat va. Caso no esteja, o processo concludo e nenhuma ao tomada. Entretanto, se ele estiver sendo compart compartilhado, o, necessrio avaliar o tipo de alterao ocorrida e compor a instruo apropriada para os demais usurios participantes. As modificaes no estado podem ser alterao de texto, como a incluso ou excluso de caracteres, ou a mudana na posio do cursor. r. Quando ocorrer uma mudana na posio do cursor, o ambiente verifica o novo posicionaposicion mento e envia uma mensagem aos ambientes remotos, para que estes atualizem essa informao. Quando ocoroco rer a alterao de texto, o IdDE verifica se houve incluso ou excluso cluso de texto. Em caso de excluso de um trecho de cdigo, o nico procedimento a ser executado a criao e o envio da respectiva mensagem para os ambiamb entes remotos informando onde ocorreu a remoo. No caso de incluso, so informados, alm da posio, posi os caracteres que devem ser adicionados. Quando recebe instrues de outros usurios, alm de efetuar a alterao no cdigo, o IdDE adiciona marcaes visuais ao ambiente, como pode ser observado na Figura 5, que permitem localizar e identificar tanto as a alteraes quanto seus autores. Essas informaes so importantes, pois auxiliam o usurio na anlise e reviso sncrona online do cdigo alterado, o que essencial, segundo [5]. Estes recursos visuais utilizam-se utilizam das APIs nativas do Netbeans. Dessa forma, em uma adaptao do plugin para outro IDE, tais funcionalidades devero ser reescritas utilizando as funcionalidades disponibilizadas por aqueaqu les ambientes. A Figura 5 mostra detalhadamente esses elementos.
As marcaes visuais adicionadas pelo IdDE ao Netbeans so o a marcao do texto alterado e a indicao da posio do cursor do usurio remoto. oto.
61
Grtner et al.
nessas marcaes, fazendo com que o editor traga para pa a rea visvel o trecho de cdigo com a respectiva ocorr ocorrncia. Considerando que, teoricamente, possvel estabelecer um nmero ilimitado de sesses, importante proporcioproporci nar ao usurio a informao de quais arquivos esto se sendo compartilhados e quais usurios esto participando dessas sesses. Caso o usurio participe de muitas sesse ses de edio colaborativa, essas informaes passam a ser ainda mais importantes. Para auxiliar o usurio nesse aspecto, foi criada uma janela especfica para manter as informaes in das sesses de edio colaborativa existentes, exibida Figura 42. Essa janela composta por uma tabela, contendo o nome do arquivo compartilhado e os usurios participantes da sesso. Toda vez que uma nova sesso de edio colab colaborativa estabelecida, ecida, uma nova linha adicionada tabetab la. Da mesma forma, quando um novo usurio passa a fazer parte da sesso, seu nome adicionado quela i informao. A figura 7 apresenta a interface para gerencigerenc amento de informaes,
As marcaes visuais adicionadas pelo IdDE ao Netbeans so a marcao o do texto alterado e a indicao da posio do cursor do usurio remoto. A Figura 6 mostra detalhadamente essas marcaes. Quando o ambiente recebe uma mensagem de alterao de cdigo de um usurio remoto, essas modificaes so imediatamente aplicadas no cdigo local e marcadas atravs da utilizao de uma sublinha ondulada em verde. Alm disso, as linhas que sofreram alteraes so marc marcadas com um cone com a forma de um crculo verde (Fi(F gura 6-A). A). Quando o usurio desloca o ponteiro do mouse sobre este e cone, so exibidas informaes detalhadas como dados inseridos, coluna e autor, como mostra a imagem. Outra marcao importante adicionada ao documento a indicao da linha na qual est posicionado o cursor do usurio remoto. Essa marcao represen representada por um cone azul com uma seta (Figura 6-B). B). Como possvel que vrios usurios editem o documento ao mesmo te tempo, para saber qual a posio de um determinado usurio, basta que se desloque o ponteiro do mouse sobre o cone e o ambiente apresentar o nome do usurio, conforme pode ser observado na imagem. Quando o usurio remoto deslocar o cursor em seu ambiente, essa informao igualmente atualizada no ambiente local. Nos estudos de caso realizados, pode-se se perceber que essa caracterstica contribui i para o aumento da interatividade e experincia do usurio. Em casos nos quais o cdigo fonte muito extenso, so criadas barras de rolagem no documento, da mesma fo forma como ocorre em outros editores. Nestas situaes, pode acontecer de o usurio remoto fazer alteraes na parte do texto que no est visvel para o usurio local. Assim, para que este tenha cincia das alteraes que esto sendo feitas no cdigo, so criadas tambm as ma marcaes indicadas pela Figura 6 (C). Nestas marcaes, as cores identificam ificam o tipo de ocorrncia e, deslocando o mouse sobre as mesmas, so exibidas informaes det detalhadas, a exemplo do que ocorre quando se desloca o mouse sobre os cones. Adicionalmente, possvel clicar
Alm de exibir as informaes sobre os arquivos e usuusu rios das sesses, essa janela tambm d acesso a outras funcionalidades relacionadas sesso. Clicando com o boto direito sobre uma linha da tabela, apresentado um menu de contexto, com as funes a seguir descritas: Send chat message to all users: atravs desta opo o pode-se se enviar uma mensagem de texto para todos os usurios urios participantes da sesso; Leave this editing session: esta opo deve ser utilizada quando se deseja sair de uma sesso de edio colaborativa. Outras formas de sair de sesse ses so: finalizar a conexo com o servidor XMPP, fechar o documento ou ainda fechar o Netbeans. Em todos estes casos o ambiente envia uma mensagem alertando os ambientes remotos remoto que o usurio est deixando a sesso. Show all changes made on this file: acessando esta opo apresentada ao usurio uma janela com todas as alteraes feitas na sesso de edio
62
Grtner et al.
selecionada. Os dados constantes nessa tabela so: cdigo do protocolo indicando o tipo de alterao ocorrida (incluso ou excluso), posio onde a modificao aconteceu, a informao includa, o autor e momento da alterao. Quando se trata da excluso de informaes, o campo de informao includa fica em branco. As informaes rmaes da tabela podem ser ordenadas pressiopressi nando-se se o ttulo da coluna. Dessa forma, as informaes podem ser agrupadas permitindo, por exemplo, uma an anlise para verificar as alteraes feitas por um mesmo autor, tipo de alterao ou seguindo a ordem que as alteraes ocorreram. Alm de fornecer o histrico das alteraes efetuadas, essa funcionalidade permite que se efetuem outras anl anlises posteriores como, por exemplo, avaliar a lgica de programao utilizada por um usurio na resoluo de um problema ou implementao de uma nova funcionalidade a um programa. Alm disso, com base nessas inform informaes possvel implementar uma ferramenta que permita a execuo passo-a-passo passo de todas as alteraes que ocoroco reram num arquivo, podendo-se se simular todo o proce processo desde o princpio. Send my version to remote (All): esta opo utilizada para enviar o cdigo do ambiente local para os demais participantes da sesso. Esta opo era especialmente til quando o ambiente ainda no implementava o controle da ordem das mensagens; Verify if users are still connected: atravs desta opo possvel verificar se todos os usurios pa participantes da sesso continuam conectados. Caso um usurio remoto tenha sido desconectado de forma abrupta, ele permanecer na lista de usurios da sesso e o ambiente continuar a enviar as mensagens de alteraes. Assim, esta opo auxiaux lia a eliminar usurios que no estiverem mais coc nectados.
5. Estudo de Casos
No total foram realizados quatro estudos de casos em grupos heterogneos, abrangendo profissionais que trabatrab lham no desenvolvimento de software, e professores e acadmicos de cursos de graduao da rea de tecnologia
63
Grtner et al.
da informao. Neste trabalho so apresentados unicamente os trs experimentos executados no ambiente acadmico.
feitas comparaes com a verso existente na mquina do professor, para verificar a ocorrncia de alguma discrepncia entre as duas verses.
http://w ww.igniterealtime.org/projects/openfire/
64
Grtner et al.
das foram edio colaborativa, chat, udio, ferramenta de traduo, gerenciamento de tarefas e agenda. Alm disso, ocorreram testes internos entre dois analistas da UFJF. Para a realizao desses testes, o servidor XMPP utilizado foi o GMail e, para a comunicao atravs de udio foi utilizado um servidor Asterisk1. Alm da execuo dos testes individuais com os representantes de cada instituio, ocorreu um teste conjunto com o analista de sistemas da UFJF e a Coordenadora de TI da FAI, momento no qual foram testadas as ferramentas de edio colaborativa, chat e udio. Para a realizao destes testes, foi efetuada a instalao do servidor XMPP OpenFire ao invs do uso do servidor do GMail. Os testes realizados nestes cenrios seguiram a mesma metodologia: primeiro eram feitas modificaes nos cdigos fontes e, posteriormente, eram confrontadas as verses finais dos documentos em cada ambiente para a verificao da consistncia e integridade dos cdigos.
til por auxiliar em diversas situaes como, por exemplo, permitir que um professore corrija os programas dos alunos num laboratrio, sem a necessidade de ficar se deslocando de computador em computador. Em relao ao desenvolvimento distribudo de software, todos os participantes consideraram que a ferramenta quebra a barreira das distncias, possibilitando que os usurios consigam trabalhar da mesma forma como se estivessem utilizando a ferramenta estando num mesmo ambiente. Na opinio de todos os participantes, o fato do ambiente ter sido desenvolvido como mdulo do Netbeans contribuiu para enriquecer sua a qualidade e praticidade funcional.
http://www.asterisk.org
65
Grtner et al.
mensagens instantneas. Da mesma forma, todos os participantes concordaram que a ferramenta til na edio colaborativa, afirmando que o sistema funcionou de forma satisfatria para alteraes em um mesmo trecho de cdigo, arbitrando na interveno de diversos colaboradores. Igualmente, consideraram que a ferramenta extremamente til em qualquer situao que demande desenvolvimento compartilhado: entre desenvolvedores de software, entre professor e aluno, na sala de aula ou auxlio distncia. Em relao ao processo de ensino aprendizagem presencial, apenas um dos participantes considera que o ambiente at possa auxiliar, mas bem menos que no processo de aprendizagem distncia. Em contrapartida, os demais participantes consideram que o software seja interessante tambm nesse modelo, pois o professor pode acompanhar de forma mais efetiva o que os alunos esto fazendo. Avaliam que a ferramenta permitiria que o docente auxiliasse mais de um aluno simultaneamente, sem a necessidade de se deslocar na sala de aula, multiplicando o nmero de alunos atendidos no perodo de aula. Os participantes foram unnimes ao afirmar que a ferramenta possui uma grande contribuio para a aprendizagem distncia. Entre as justificativas, est a contribuio para o auto aprendizado, capacidade inerente aos profissionais da informtica. Aliado a isso, consideram que um recurso como esse seja extremamente til para apoiar o ensino de programao distncia, afirmando que outros meios tradicionais como e-mail e chat so bem menos adequados, alm de serem mais trabalhosos tanto para o professor quanto para o aluno. Com o uso do ambiente, o professor poderia explicar o funcionamento de determinado cdigo para o aluno de forma online. Segundo os participantes, a principal vantagem apontada foi a edio colaborativa de cdigo. Afirmam que a ferramenta apresenta o resultado imediato das modificaes, permitindo o acompanhamento e interveno remota em tempo real e dentro do prprio ambiente de desenvolvimento. Alm disso, consideram que o IdDE agiliza a atividade de desenvolvimento e o ensino e treinamento em programao, principalmente quando os participantes esto separados geograficamente, permitindo o auxlio e suporte a alunos e programadores menos experientes.
vai produzindo tambm o prprio conhecimento. Nesse sentido, este trabalho prope um ambiente computacional que vai de encontro teoria de Vygotsky, disponibilizando mecanismos onde o par mais capaz est presente, usando mecanismos de interao, coordenao e comunicao para a programao em pares distribudos, potencializando o aprendizado. Os resultados das avaliaes dos estudos de caso comprovam que os objetivos traados no planejamento deste trabalho foram plenamente atingidos. Na opinio de todos os participantes, as ferramentas de chat e edio colaborativa contribuem decisivamente para o desenvolvimento de software. Da mesma forma, os participantes dos estudos de caso consideraram que as ferramentas do ambiente tornam possvel sua utilizao no processo de ensino/aprendizagem, tanto presencial quando distncia, bem como validam seu uso no desenvolvimento de software tanto por equipes locais, quando distribudas. Em relao produtividade, 100% dos usurios consideraram que as ferramentas do ambiente contribuem para o seu aumento. No que se refere utilizao do Netbeans como base para a criao do aplicativo, todos os participantes avaliaram que tenha sido uma escolha apropriada, salientando que aplicativo desenvolvido agrega funcionalidades importantes para este IDE, tornando-o ainda mais completo. Os resultados demonstram ainda que as escolhas dos protocolos XMPP e SIP se mostraram acertadas. Alm de possibilitarem a interoperabilidade do ambiente com outros aplicativos e dispositivos, diversas avaliaes fizeram referncia velocidade e rapidez das ferramentas do ambiente, principalmente se comparadas a ferramentas normalmente utilizadas no desenvolvimento de software, como compartilhamento de rea de trabalho e acesso remoto aos computadores. Durante o desenvolvimento do aplicativo percebeu-se que outros recursos interessantes poderiam ser incorporados ao ambiente. Da mesma forma, com a realizao dos estudos de caso foram sugeridas vrias funcionalidades a serem desenvolvidas em trabalhos futuros. Entre as funcionalidades, pode-se destacar: Implementar um algoritmo de controle e ordenao das mensagens, que garanta a unicidade de cdigo para todos os participantes de uma sesso de edio colaborativa; Melhorar a apresentao das mensagens exibidas ao passar com o mouse sobre o cone verde, que informam as alteraes efetuadas num documento, agrupando as modificaes por autor e possibilitando um acesso direto janela do histrico das alteraes;
66
Grtner et al.
vdeo;
supported concurrent software engineering. Computer, vol.26, no.1pp.17-27, 1993. J. Davidson, J. Peters, M. Bhatia, S. Kalidindi and S. Mukherjee, Voice Over IP Fundamentals. 2. ed. Indianapolis, IN: Cisco Press, 2006. C. A. Ellis, S. J. Gibbs, and G. Rein, Groupware: some issues and experiences. ACM Communications Vol.34, No. 1 , 39-58, 1991. S. R. K. Franco, O construtivismo e a educao. Porto Alegre: Mediao, 1996. H. Fuks, A. Raposo, M. Gerosa, Do Modelo de Colaborao 3C Engenharia de Groupware. Simpsio Brasileiro de Sistemas Multimdia e Web WEBMIDIA, 2003. B. Hanks, Student performance in CS1 with distributed pair programming. In Proceedings of the 10th Annual SIGCSE Conference on innovation and Technology in Computer Science Education. ITiCSE '05. ACM Press, New York, NY, 316-320, 2005. J. D. Herbsleb and R. E. Grinter, Splitting the Organization and Integrating the Code: Con-ways Law Revisited. In: ICSE99, Los Angeles, CA. Proceeding,1999. J. D. Herbsleb and D. Moitra, Global software development, IEEE Software, vol.18, no.2pp.1620, Mar/Apr 2001, 2001. C. Ho, S. Raha, E. Gehringer and L. Williams, Sangam: a distributed pair programming plug-in for Eclipse. In Proceedings of the 2004 OOPSLA Workshop on Eclipse Technology Exchange. eclipse '04. ACM Press, New York, NY, 73-77, 2004. E. Lawrence, CollabEd: A Platform for Collaboratizing Existing Editors. International Confer-ence on Mobile, Hybrid, and On-line Learning, 2009. A. F. T. Primo and M. B. F. Cassol, Explorando o conceito de Intera-tividade: definies e taxionomias. In: Informtica na Educao: teoria e prtica. Porto Alegre: Revista PGIE/UFRGS, v.2, n.2, out, 1999. P. Saint-Andre, K. Smith and R. Tronon, XMPP: The Definitive Guide Building Real-Time Applications with Jabber Technologies. 1. ed. Sebastopol, CA: OReilly Media, 2009. T. Schummer and J. Schummer, Support for Distributed Teams in Extreme Programming. Extreme Programming Examined, Succi, G., Mar-
Desenvolver uma ferramenta de quadro branco, que permita que os usurios compartilhem imagens e desenhos, exemplo do que ocorre com a edio colaborativa; Possibilitar a criptografia das mensagens que so enviadas de um ambiente para outro; Agrupar e integrar as janelas de chat ao ambiente do Netbeans; Portar o plugin para outros IDEs; Possibilitar a seleo do Codec de udio a ser utilizado nas comunicaes; Implementar uma ferramenta que possibilite a execuo passo a passo todo o histrico de alteraes de uma sesso de edio colaborativa, simulando todo o processo ocorrido anteriormente.
[10]
[11] [12]
[13]
7. Referencias Bibliogrficas
[1]
J. Audy and R. Prikladnicki, Desenvolvimento Distribudo de Software. 1. ed. Rio de Janeiro: Elsevier, 2008. R. M. Borges, S. C. C. S. Pinto, J. L. V. Barbosa and D. N. F. Barbosa, Usando o modelo 3C de colaborao e Vygotsky no ensino de programao distribuda em pares. XVIII Simpsio Brasileiro de Informtica na Educao (SBIE), 2007. E. Carmel, Global Software Teams Collaborating Across Borders and Time Zones. Upper Saddle River, NJ: Prentice Hall, 1999. ISBN 0-13924218-X. E. Carmel, Thirteen assertions for globally dispersed software development research, Proceedings of the Thirtieth Hawaii International Conference on System Sciences, vol.3, no.pp.445452 vol.3, 7-10, 1997. E. Carmel and R. Agarwal, Tactical Approaches for Alleviating Distance in Global Software Development, IEEE Software, pp. 22-29, March/April, 2001. E. Carmel and P. Tjia, Offshoring Information Technology Sourcing and Outsourcing to a Global Workforce. Cambridge, UK: Cambridge University Press, 2005. D. Damian and D. Moitra, Global Software Development: How Far Have We Come? IEEE Software, Vol. 23, No. 5, 2006. P. Dewan and J. Riedl, Toward computer-
[14]
[2]
[15]
[3]
[16]
[4]
[17]
[5]
[18]
[6]
[19]
[7]
[20]
[8]
67
Grtner et al.
H. Sinnreich and A. B. Johnston, Internet Communications Using SIP: Delivering VoIP and Multimedia Services with Session Initiation Protocol. 2. ed. Indianapolis, IN: Wiley Publish-ing, 2006. D. Stotts, L. Williams, N. Nagappan, P. Beheti, D. Jen and A. Jackson, Virtual Teaming: Experiments and Experiences with Distributed Pair Programming, Proceedings of the Third XP Agile Universe Conference, 2003. D. F. G. Trindade, T. F. C. Tait and E. H. M. Huzita, A tool for supporting the communication in distributed software development environ-ment. Journal of Computer Science & Technology, 8 (2), pp: 118-124, 2008. L. A.Williams and R. R. Kessler, All I really need to know about pair programming I learned in kindergarten. ACM Communications. Vol. 43, No. 5, 108-114, 2000.
[22]
[23]
[24]
[25] Juan Manuel Adn-Coello, Wiris Serafim de Menezes, Eustquio So Jos de Faria, Carlos Miguel Tobar, Conflito Scio-Cognitivo e Estilos de Aprendizagem na Formao de Grupos para o Aprendizado Colaborativo de Programao de Computadores, Revista Brasileira de Informtica na Educao, RBIE, V.16. N. 03, 2008.
68