Buscar

Engenharia de Software - Edição 34

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

www.infnet.edu.br - cursos@infnet.edu.br - Central de Atendimento: (21) 2122-8800
E D U C A Ç Ã O S U P E R I O R O R I E N T A D A A O M E R C A D O
PÓS-GRADUAÇÃO
Engenharia de Software: 
Desenvolvimento Java
Engenharia de Software: 
Desenvolvimento .NET
GRADUAÇÃO
Engenharia de Computação
Análise e Desenv. de Sistemas
FORMAÇÕES
Desenvolvedor Java
Desenv. Java: Sist. Distribuídos
Gestor de TI
Desenvolvedor Web .NET 2008
MCITP Server Administrator 
SQL Server 2008
Acesse nosso site e conheça todos os nossos programas: www.infnet.edu.br/esti
A Escola Superior da Tecnologia da 
Informação oferece as melhores 
opções em cursos, formações, 
graduações e pós-graduações para 
profissionais de desenvolvimento 
e programação. 
São programas voltados para a 
formação de profissionais de elite, 
com aulas 100% práticas, corpo 
docente atuante no mercado, 
acesso à mais atualizada biblioteca 
de TI do Rio, laboratórios equipados 
com tecnologia de ponta, salas de 
estudo e exames.
r/esti
TURMAS
NO RIO DE
JANEIRO
Modéstia à parte, sua
melhor opção para
se destacar no mercado!
 
Corpo Editorial 
Colaboradores
Rodrigo Oliveira Spínola
Marco Antônio Pereira Araújo 
Eduardo Oliveira Spínola
Capa e Diagramação
Romulo Araujo - romulo@devmedia.com.br
Coordenação Geral
Daniella Costa - daniella@devmedia.com.br
Revisor
Gregory Monteiro - gregory@clubedelphi.net
Caroline Velozo - carolinelopes@devmedia.com.br
Jornalista Responsável
Kaline Dolabella - JP24185
Na Web
www.devmedia.com.br/esmag
Ano 3 - 34ª Edição - 2011 Impresso no Brasil
A 
Engenharia de Software Magazine destaca como tema de capa desta 
edição o artigo “Seus testes são “ágeis”? Testes incrementais para uma 
metodologia incremental”. O artigo apresenta um estudo sobre as princi-
pais diferenças entre a atividade de testes antes e depois das metodologias ágeis 
(principalmente o SCRUM). Estes pontos (diferenças) são citados com o intuito 
de explicar como os testes estão sendo executados em projetos na atualidade. O 
intuito de descrever estas diferenças é deixar claro que devemos ter em mente 
que os testes também são parte do desenvolvimento como um todo. Também é 
necessário pensar nesta integração quando planejamos a sprint e os testes em si. 
Pensar nos testes como uma atividade incremental desde o momento de estimar 
as estórias até o ponto em que começamos a executá-los é, sem dúvida, essencial 
para o bom andamento da sprint e para a mudança de visão dos profissionais 
da área.
Por fim, veremos neste artigo os benefícios encontrados na alocação de analistas 
de testes dentro dos times ágeis que podem ser resumidos em: (1) Integração 
do time, (2) Participação mais direta e ativa do profissional que está testando o 
software, (3) Profissionais que estão desenvolvendo código também estão inte-
ressados em aprender sobre testes, (4) Profissionais que estão testando código 
também estão interessados em aprender sobre programação, (5) Interação de 
todo o time de desenvolvimento com testes, (6) Analistas de Teste deixaram de 
ser reativos para serem pró-ativos.
Além desta matéria, esta edição traz mais cinco artigos:
• Você tem “Semancol”?
• Desenvolvimento de Software Apoiado por Groupware
• Alternativas para redução de problemas na manutenção de software
• Refatoração para Padrões – Parte 7
• Tratamento de exceções
Desejamos uma ótima leitura!
Equipe Editorial Engenharia de Software Magazine
Rodrigo Oliveira Spínola 
rodrigo.devmedia@gmail.com
Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em 
Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computação 
(UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), tendo minis-
trado cursos na área de Qualidade de Produtos e Processos de Software, Requisitos e 
Desenvolvimento Orientado a Objetos. Consultor para implementação do MPS.BR. Atua 
como Gerente de Projeto e Analista de Requisitos em projetos de consultoria na COPPE/
UFRJ. É Colaborador da Engenharia de Software Magazine.
Marco Antônio Pereira Araújo
maraujo@devmedia.com.br
Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li-
nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos 
Computacionais e Bacharel em Matemática com Habilitação em Informática pela 
UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação 
do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em 
Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur-
so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação 
Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora, 
Colaborador da Engenharia de Software Magazine.
Eduardo Oliveira Spínola
eduspinola@gmail.com
É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma-
gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS) 
onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia 
de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
Apoio
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor. 
Se você tiver algum problema no recebimento do seu exemplar ou precisar de 
algum esclarecimento sobre assinaturas, exemplares anteriores, endereço de 
bancas de jornal, entre outros, entre em contato com:
Isabelle Macedo e Uellen Goulart – Atendimento ao Leitor
www.devmedia.com.br/mancad
(21) 2220-5338
Kaline Dolabella
Gerente de Marketing e Atendimento
kalined@terra.com.br
(21) 2220-5338
Publicidade
Para informações sobre veiculação de anúncio na revista ou no site entre em 
contato com:
Cristiany Queiroz
publicidade@devmedia.com.br
Fale com o Editor! 
É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo 
você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a 
vontade para entrar em contato com os editores e dar a sua sugestão!
Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine, 
entre em contato com os editores, informando o título e mini-resumo do tema que você 
gostaria de publicar:
Rodrigo Oliveira Spínola - Colaborador
rodrigo.devmedia@gmail.com
EDITORIAL
 
 ÍNDICE
Por trás do óbvio
06 – Você tem “Semancol”?
Glênio Cabral
Agilidade
08 - Seus testes são “ágeis”?
Gabriela de Oliveira Patuci 
Engenharia
14 - Desenvolvimento de Software Apoiado por Groupware 
Gabriella Castro Barbosa Costa e Marco Antônio Pereira Araújo
 21 - Alternativas para redução de problemas na manutenção de software 
Mateus Maida Paduelli
Desenvolvimento
38 - Refatoração para Padrões – Parte 7
Jacimar Fernandes Tavares e Marco Antônio Pereira Araújo 
46 - Tratamento de Exceções
Jacimar Fernandes Tavares e Marco Antônio Pereira Araújo 
Tipo: Processo 
Título: Especificação de casos de uso na prática – Partes 16 a 20
Autor: Rodrigo Oliveira Spínola
Mini-Resumo: Definir requisitos não é uma atividade trivial. Uma das 
formas de realizar esta atividade é através da especificação de casos de 
uso. Neste sentido, nesta série de vídeo aulas apresentaremos um conjunto 
de especificações de casos de uso. Os cenários serão especificados passo 
a passo considerando tópicos como fluxo principal, fluxo alternativo e 
regras de negócios.
Caro Leitor, 
Para esta edição, temos um conjunto de 5 vídeo aulas. 
Estas vídeo aulas estão disponíveis para download no Portal 
da Engenharia de Software Magazine e certamente trarão 
uma significativa contribuição para seu aprendizado. A lista 
de aulaspublicadas pode ser vista abaixo:
Edição 05 - Engenharia de Software Magazine 5 
 
6 Engenharia de Software - E se você fosse um DVD numa locadora?
Glênio Cabral
gleniocabral@yahoo.com.br
É Administrador de Empresas, pós-graduado em Gestão de Pessoas e músi-
co. Idealizador do site de educação infantil www.novainfancia.com.br.
Você tem “Semancol”?
Pos trás do Óbvio
Vamos falar sobre vitaminas. Sabemos que as vi-taminas fornecem ao corpo humano uma grande variedade de nutrientes fundamentais para o seu 
bom funcionamento. A vitamina A, por exemplo, contém 
substâncias antioxidantes que auxiliam no combate ao pro-
cesso de envelhecimento. Já a vitamina D é fundamental na 
regulação da pressão arterial, de modo que quando ingerida 
corretamente mantém o sistema nervoso bem calmo. 
E assim, cada vitamina tem sua importância no sentido de 
promover o bem estar e o equilíbrio do nosso metabolismo. Há, 
no entanto, uma vitamina diferente, peculiar até. Descoberta 
por este colunista que lhe escreve, esta vitamina não promove 
necessariamente ações benéficas ao nosso organismo. Em vez 
disso, ela é especialista em viabilizar relacionamentos saudá-
veis e respeitadores entre as pessoas. Caro leitor, é com muito 
prazer que lhe apresento a Vitamina S. S de “Semancol”. 
A vitamina Semancol é responsável pela produção de uma 
enzima chamada “senso do ridículo”, também conhecida 
como “desconfiômetro”. A função desta enzima é fazer com 
que cada um de nós, vez por outra, tenha a sensação de estar 
se comportando ou de estar prestes a se comportar de forma 
inconveniente e inadequada. É como se essa peculiar vita-
mina provocasse um alarme, uma espécie de aviso dentro de 
nós que nos alerta para o fato de que algo pode não acabar 
muito bem se continuarmos agindo da forma que estamos. 
Por isso, pessoas carentes desta vitamina costumam ser pro-
tagonistas de situações embaraçosas e inconvenientes. Elas 
não percebem o vital aviso.
Não é a toa que vez por outra nos deparamos com indivídu-
os assim, totalmente desprovidos deste complexo vitamínico. 
Nos ambientes de trabalho, por exemplo, os efeitos colaterais 
de tal abstinência são facilmente percebidos. Vejamos alguns 
exemplos: 
1. Pessoas desprovidas de Semancol costumam falar em voz 
alta ao celular dentro de um elevador abarrotado de gente. Só 
que as pessoas não têm nada a ver com seus assuntos parti-
culares e muito menos são obrigadas a ouvi-los na íntegra. 
No entanto, é o que acontece.
2. Quando pessoas sem Semancol chegam atrasadas a reu-
niões de trabalho, fazem questão de pedir desculpas em 
alto e bom som, atrapalhando o andamento da reunião. Se 
tivessem Semancol, se sentariam discretamente no lugar mais 
próximo da porta e no primeiro intervalo se desculpariam 
pessoalmente com o dirigente pelo atraso. Mas não, preferem 
o estardalhaço. 
3. Por se acharem muito engraçados, muitos abusam de pia-
das machistas e racistas durante o expediente, criando um 
mal-estar generalizado. E o fazem aos risos escandalosos. 
4. Coisas aparentemente pequenas também costumam cau-
sar grandes constrangimentos. Tive um colega que insistia 
em usar uma caneta Bic na orelha esquerda o dia todo. Não 
tirava ela para nada. O cara parecia um padeiro. Nada contra 
os padeiros, mas às vezes, enquanto ele atendia um cliente, 
a tal caneta caia no chão e era aquela confusão para achá-la 
em meio ao atendimento. Lembro-me de outro colega que 
não cortava as unhas. As unhas dele pareciam as do Zé do 
Edição 32 - Engenharia de Software Magazine 7 
PoR tRáS Do óBvIo
Dê seu feedback sobre esta edição!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
Para isso, precisamos saber o que você, leitor, acha da revista!
Dê seu voto sobre este artigo, através do link:
www.devmedia.com.br/esmag/feedback
D
ê 
se
u Fe
edback
so
b
re esta edição
Caixão, de tão cumpridas e sujas que eram. Era pavoroso ver 
aquilo, e pior ainda era apertar sua mão.
5. Há aqueles que têm como obsessão entupir os e-mails de 
colegas e clientes com mensagens de motivação e as ultra-
jantes correntes do bem. E pior, o fazem de modo nada per-
sonalizado. Fica claro que a mesma mensagem foi enviada a 
milhões de outras pessoas ao mesmo tempo.
6. Alguns perdem a noção das coisas quando o assunto é 
vestimenta no trabalho. Decotes exagerados e mini-saias 
não são vestimentas adequadas para um ambiente de traba-
lho. Nem mesmo num escritório de uma escola de samba as 
pessoas devem se vestir assim, e olhe que o clima lá é bem 
carnavalesco. 
Diferente da maioria das vitaminas, o semancol não pode 
ser encontrado nos alimentos. Ele é adquirido e desenvolvi-
do na convivência entre as pessoas. É essa prática, a prática 
da convivência e da troca de experiências, que nos capacita 
a interagir com maturidade e bom senso, respeitando as 
individualidades e direitos de todos aqueles que nos rodeiam. 
Isso é ter “Semancol”. 
Não há como ser parte integrante de uma organização 
sem interagir com pessoas dos mais diferentes perfis. Por 
isso, toda corporação é dotada de regras de comportamento, 
pois tais regras ao menos tentam garantir um certo clima 
de respeito mútuo e gentileza no ambiente de trabalho, pro-
porcionando assim o surgimento de relações profissionais 
cada vez mais saudáveis. E também cada vez mais dotadas 
de “Semancol”. 
E agora, caro leitor, a pergunta final que não quer calar: 
como anda sua taxa vitamínica de “Semancol”?
8 Engenharia de Software Magazine - Seus testes são “ágeis”?
Gabriela de Oliveira Patuci
opgabi@gmail.com
É formada pela UNICAMP em Tecnologia 
em Informática e está cursando mestrado 
na área de Engenharia de Software. Possui 
certificação pela Scrum Alliance, tem expe-
riência de três anos no trabalho com me-
todologias ágeis e de cinco anos em Testes 
e Qualidade de Software. Hoje atua como 
Scrum Master em projetos internacionais 
pela Ci&T e já palestrou em eventos como 
Agile Brazil 2010. 
De que se trata o artigo?
Neste artigo foram apresentadas as principais alte-
rações sofridas pela atividade de testes ao longo dos 
últimos anos, principalmente influenciadas pelas me-
todologias ágeis. A experiência em projetos Scrum foi 
considerada e alguns pontos foram levantados como 
sugestões de melhoria para o que acontece hoje, 
seguindo as premissas do manifesto ágil e a ideia de 
desenvolvimento incremental de software. 
Para que serve?
O artigo tem a intenção de ser uma referência para as 
pessoas que estão deixando de realizar os testes em 
Waterfall e estão ingressando no mundo ágil. Além 
disso, o texto também contém lições aprendidas 
durante os últimos projetos e como os times andam 
desenvolvendo os testes de maneira incremental.
Em que situação o tema é útil?
O tema é útil para os profissionais de Engenharia 
de Software em geral (principalmente Testers 
e Scrum Masters) que planejam iniciar projetos 
utilizando metodologias ágeis ou até mesmo para 
aqueles que já as utilizam, mas estão enfrentando 
problemas com os resultados dos seus testes ou 
com as tarefas de testes dentro das equipes.
Seus testes são “ágeis”?
Testes incrementais para uma metodologia incremental
Agilidade
Nesta seção você encontra artigos voltados para as práticas e métodos ágeis.
Em treinamentos, normalmente começamos a falar sobre quais os conceitos que não são mais 
utilizados pela disciplina de testes 
antes mesmo de falar sobre como ela 
funciona em ambientes ágeis. Isto por-
que muita coisa mudou e o ideal é que 
todos possam ter um tempo para notar 
as principais características e diferenças 
do que era feito em Waterfall e de como 
fazemos hoje, no Scrum. Esse também 
foi considerado o jeito mais intuitivo de 
começar este artigo.
Antes, trabalhávamos com “times de 
Testes”. Analistas, Testadores, Engenhei-ros, juntos em times onde todos eram 
da área de Testes. Hoje, temos times 
multifuncionais, todos os analistas de 
testes ficam alocados dentro destes 
times, trabalhando diretamente com 
desenvolvedores, webdesigners, analis-
tas de banco, arquitetos, scrum masters 
e product owners. Estes profissionais 
são considerados os pontos focais da 
qualidade dentro dos times, mas não os 
únicos responsáveis por ela na entrega 
Edição 34 - Engenharia de Software Magazine 9 
MEtoDoLoGIAS áGEIS
do produto. A Figura 1 demonstra as duas estruturas, o mo-
delo antigo de Equipes de Testes e o novo modelo, onde estes 
profissionais já aparecem alocados dentro de seus novos times 
multifuncionais.
Estrutura física dos times
Localização física é outro ponto extremamente importan-
te, já que propicia uma melhor comunicação entre o time 
quando planejada corretamente. Não basta os profissionais 
da qualidade estarem inseridos nos times, estes também 
devem estar sentados ao lado dos outros membros da equipe 
e terem acesso aos desenvolvedores. Este posicionamento 
nada mais é do que uma maneira de facilitar o entendimento 
dos requisitos, a execução dos testes em si (e dos retestes 
inclusive) e toda a comunicação de fato. Caso contrário, mu-
daríamos muito pouco do cenário antigo para o proposto em 
metodologias ágeis. A Figura 2 demonstra o posicionamento 
dos membros de uma equipe Scrum: sem divisões e o mais 
próximo possível. 
Sprint 0
Os testes podem e devem ser iniciados desde o primeiro dia 
da sprint, às vezes até antes da reunião de planejamento das 
atividades (planning meeting). Como podemos fazer isto? O ana-
lista de testes deve ser o responsável por revisar os requisitos 
vindos do cliente para que a maior parte das dúvidas seja reti-
rada e as estórias do sprint que virá possam ser revisadas antes 
de serem passadas para todo o time. Desta forma, no momento 
da planning, o requisito já foi revisado e está claro o suficiente 
para ser discutido, estimado e quebrado em estórias.
Ter este Sprint 0, isto é, este momento antes da sprint de de-
senvolvimento, em que podemos conhecer melhor o negócio 
é, sem dúvida, um dos pontos pelos quais pode-se observar 
maior número de melhorias na qualidade dos projetos. Ter 
um requisito mais trabalhado e um time que conhece mais do 
negócio no qual está trabalhando é algo que só contribui para 
o resultado final da construção do software. 
Esta ajuda técnica também é de grande valia no momento 
da criação das estórias porque nem sempre podemos ter um 
product owner com um perfil mais técnico. Em casos em que o 
cliente tem um perfil mais leigo, a ajuda de alguém que tenha 
uma visão crítica de negócios, mas ao mesmo tempo seja do 
time, pode ser crucial. A Tabela 1 mostra quais as principais 
características necessárias para uma boa estória. 
Planejamento: Testes também são discutidos?
Experiências recentes em times Scrum nos fazem crer que 
muito se fala de desenvolvimento nas reuniões de planeja-
mento, mas muito pouco é dito ou até mesmo discutido sobre 
a atividade de testes. Precisamos ter em mente que, além de 
como vamos desenvolver, temos que pensar em como vamos 
testar e esta parte também deve ser estimada, pois demanda 
tempo e esforço como qualquer outra atividade. Desvios de 
estimativa podem ser corrigidos se passarmos a ver os projetos 
com este novo enfoque.
Figura 2. Posicionamento dos membros de uma equipe Scrum
Figura 1. Times de testes x Times Ágeis
User Stories (Estórias) devem ser INVEST: 
Independente: devem ser independentes sempre que possível.
Negociável: deve ser negociável.
Valiosa: devem ser valiosas para o cliente, agregando valor ao negócio.
Estimável: devem ser passivas de estimativa.
Small (pequena): não devem ser grandes demais nem pequenas demais.
Testável: devem ser claras o suficiente para serem testadas.
tabela 1. Características de uma boa estória
Existem vários casos que, o jeito com que os testes serão 
realizados, é com certeza a parte mais importante do negócio. 
Elaboração de sistemas que auxiliem a atividade de testes, 
por exemplo, é algo que deve ser pensado com muita cautela 
e levado em consideração nas estimativas do projeto (e isso 
demanda tempo não só dos profissionais de testes, mas do 
time todo).
Vamos pensar em um exemplo: um sistema que faz o acompa-
nhamento de usuários em um programa que ajuda fumantes a 
pararem com o vício em 100 dias. Todo dia, este usuário deve 
entrar no sistema em uma espécie de diário e registrar o que 
lhe aconteceu ao longo deste tempo. Também vamos imaginar 
que cada um destes 100 dias possua conteúdos específicos 
(como artigos) que este usuário tenha que ler ou até mesmo 
e-mails que ele vai receber.
O normal em uma reunião de planejamento seria o time todo 
pensar em como desenvolver este programa: como enviar os e-
mails de forma programada, como armazenar as informações, 
etc. Sim, isto faz sentido, mas também precisamos pensar em 
como faremos para testar 100 dias de programa sem levar os 
exatos 100 dias nesta atividade. Se precisamos verificar e va-
lidar o comportamento específico do sistema para todos estes 
10 Engenharia de Software Magazine - Seus testes são “ágeis”?
dias ou, no mínimo, para uma porcentagem alta deles, como 
faremos? Surge aqui a necessidade de estimar a construção de 
um pequeno sistema de testes que consiga alterar a data que 
o usuário se encontra dentro do programa. 
Por fim, quando falamos em planejamento, também devemos 
levar em conta os artefatos do sprint, como o board (quadro), por 
exemplo. Na Figura 3 podemos perceber que o modelo de Scrum 
Board foi alterado para melhor se adequar à realidade dos testes. 
Isto fica a critério do time, como quase tudo no Scrum. Utilizar 
ou não este modelo deve ser decidido no início da sprint.
Início dos testes: Qual o momento certo?
Saber o momento de iniciar os testes pode ser citado como o 
próximo ponto diferencial entre as metodologias. O costume 
das equipes de Testes sempre foi esperar por um pedido vindo 
de desenvolvimento para o início dos testes. O máximo que se 
podia fazer antes deste momento era planejar os testes funcio-
nais com base nos requisitos e/ou gerar scripts automatizados. 
Bem, a partir do momento em que estamos desenvolvendo 
software baseado em uma metodologia dita incremental, nada 
mais justo que as atividades de testes também sejam realizadas 
de maneira incremental.
Logo após a reunião de planejamento, quando o time iniciar 
o desenvolvimento do software, iniciamos o que chamamos 
de teste incremental. É importante que o profissional de testes 
se aproxime dos desenvolvedores, trabalhe em pares, verifi-
cando o andamento das atividades ainda que no ambiente de 
desenvolvimento. Quando antecipamos esta etapa de testes, 
encontramos os prováveis defeitos muito antes de chegar ao 
ambiente de testes e desta forma, os defeitos têm um custo 
muito inferior. Outro fator muito interessante é que o time fica 
cada vez mais maduro, tanto no conhecimento do requisito 
desenvolvido nas conversas entre o próprio time, quanto na 
qualidade de seu trabalho. 
Figura 3. Exemplo de Scrum Board
Número de defeitos X Qualidade do Software
Uma das principais preocupações de alguns profissionais 
com a questão do teste incremental é o fato de levantar os 
defeitos e futuros problemas de maneira informal (através de 
comunicação entre os membros do time). É fato que este hábito 
diminui o número de defeitos (formais) durante a sprint. O que 
devemos ter em mente é que o número de defeitos registrados 
em ferramentas não é diretamente proporcional à qualidade 
do software construído. 
O que podemos observar em projetos atualmente é que 
mesmo com um número de defeitos registrados bem menor, 
a qualidade dos sistemas só vem aumentando, já que todos os 
pontos são levantadosou durante os testes ainda no ambiente 
de desenvolvimento ou, em último caso, durante os testes 
funcionais no ambiente de testes.
Outro fator relevante nesta discussão é que um defeito tem 
um custo muito mais baixo se for encontrado o mais cedo pos-
sível durante o desenvolvimento (sprint). Encontrar um defeito 
logo após a sua criação diminui o seu custo drasticamente e 
faz com que os desenvolvedores possam corrigir o problema 
logo que ele é encontrado.
A Tabela 2 demonstra o comportamento dos defeitos repor-
tados antes e depois da implantação dos Testes Incrementais 
em um projeto real. 
Documentação
A ideia de que metodologias ágeis não têm nenhuma do-
cumentação ainda persiste no conceito de várias pessoas. Na 
verdade, o que se prega é que devemos dar mais importância 
à comunicação entre as pessoas do time do que à documenta-
ção, mas, nada se fala a respeito de não ter documentação. É 
necessário ter o conceito de que a documentação é sim muito 
importante mesmo em projetos ágeis. A seguir, são descritos 
exemplos claros que justificam a importância desta documen-
tação básica de testes.
O fato de o time ser multifuncional é o primeiro motivo da 
necessidade de planejamento e documentação mínima de 
testes. Todos os profissionais alocados dentro do time podem 
precisar ajudar na execução dos testes e, desta forma, vão 
precisar do “step by step” de cada caso de teste. Claro que o 
fato de estarmos executando os Testes Incrementais colabora 
para que os profissionais de testes não fiquem sem trabalho no 
começo da sprint e muito atarefados no final dela, mas mesmo 
assim, sempre existirão os casos em que a ajuda dos outros 
membros do time se fará necessária. Sempre que a demanda 
de testes estiver muito alta, os documentos com a especificação 
dos casos de testes e todo o planejamento serão cruciais.
ANTES DEPOIS
Sprint 1 Sprint 2 Sprint 3 Sprint 4
Ambiente de Testes Ambiente de Produção Ambiente de Testes Ambiente de Produção Ambiente de Testes Ambiente de Produção Ambiente de Testes Ambiente de Produção
45 3 39 1 10 0 6 0
tabela 2. Comparação entre o número de defeitos antes e depois das alterações em Testes
Edição 34 - Engenharia de Software Magazine 11 
MEtoDoLoGIAS áGEIS
O segundo fator que devemos levar em conta são os testes de 
aceitação. Não podemos exigir que o cliente saiba exatamente 
quais os tipos de teste ele deve executar e como estes testes 
devem ser feitos. Ter documentos com os passos da execução 
dos testes de aceitação é a maneira mais segura de se garantir 
a boa execução de tais testes.
Por fim, podemos considerar a criação de um planejamento 
de testes o momento perfeito para identificar todas as possíveis 
dúvidas que restaram sobre as estórias e os requisitos. Neste 
momento, o Analista de Testes pode trabalhar juntamente com 
o time e, principalmente, com o PO (product owner), para que 
tudo fique claro e os requisitos sejam revisados novamente se 
necessário. 
Alocação dos Analistas de Testes
Um dos fatores que pode interferir na qualidade do trabalho 
dos analistas de testes, se não for bem considerado, é a alocação 
compartilhada entre times. Muitos times têm o costume de 
compartilhar recursos como analistas de testes, arquitetos de 
software e até mesmo scrum masters. É claro que isso pode 
funcionar muito bem, mas deve-se planejar com cautela e 
alguns pontos devem ser considerados.
Times pequenos com uma média de três pessoas normalmen-
te possuem líderes que trabalham com mais de um projeto. 
Este costume está cada vez mais comum. Além disso, nos 
últimos tempos, compartilhar testadores e arquitetos virou 
uma solução para a falta de profissionais da área. O que se 
precisa considerar é como se deve atuar para não perder o 
foco do trabalho nestes times e saber dividir o tempo diário 
entre eles.
Soluções práticas como ter o mesmo horário para cada time 
todos os dias podem trazer benefícios para os resultados deste 
trabalho. Esta é uma forma do profissional saber dividir seu 
trabalho de maneira bem intuitiva e sem confundir o tempo 
útil que tem para cada time. Quando o mesmo profissional de 
testes vai trabalhar com times de diferentes scrum masters, isto 
se faz ainda mais importante, para diminuir a disputa (mesmo 
que informal) que se cria pelo trabalho do profissional.
Outra boa prática que vem sendo desenvolvida em times 
compartilhados é a existência de um ponto focal para auxiliar 
em testes em ambos os times. Sempre existe a possibilidade de 
o número de tarefas de testes serem inviáveis para um único 
profissional, o que nos faz pensar em ter um auxílio que venha 
de dentro do próprio time. Importante neste caso é manter o 
pensamento de que este auxílio deve partir de um integrante 
do time que tenha bons skills de testes e a visão crítica do 
produto. Nem sempre todos os membros de um time têm o 
perfil de um testador.
Automação de Testes
Uma mudança de cenários aconteceu também no ramo da 
automação de testes. Antes, muito se pesquisava sobre a 
automação da criação de casos de testes. Hoje, com o advento 
das metodologias ágeis, a atenção das equipes está muito mais 
voltada para a automação da execução de testes em si. Tudo isso 
porque a metodologia dá muito valor à execução e não tanto 
para a documentação (como já foi dito anteriormente).
Ferramentas que ajudam nos testes de regressão, testes fun-
cionais e criação de massa de dados são as mais procuradas. 
Principalmente nos casos de construção de websites, onde 
ferramentas (ou plugins) como Selenium IDE podem facili-
tar a execução do mesmo caso de teste N vezes com valores 
diferentes selecionados a partir de uma planilha Excel, por 
exemplo. Testes de estresse do sistema também são muito 
procurados e uma das ferramentas mais utilizadas é o JMeter. 
Simular situações onde um número muito grande de usuários 
tenta acessar o sistema pode ser muito útil antes de mover um 
site para produção (nestes casos, ter um número esperado de 
usuários pode ajudar bastante no planejamento de tais testes). 
A Tabela 3 mostra quais as principais ferramentas que estão 
sendo utilizadas no mercado para automação (da execução) 
de testes. 
Selenium: O Selenium IDE é um ambiente integrado de desenvolvimento para scripts. Ele é implementado como uma extensão do Firefox e permite gravar, editar e 
depurar os testes. Esta ferramenta também permite que os usuários gravem e reproduzam os testes no ambiente real no qual serão executados. Pode ser usado para 
testes de fumaça, regressão e funcionais em geral.
JMeter: Utilizado para testes de desempenho em aplicações de diferentes tipos de servidores (HTTP/HTTPS, SOAP, JMS etc.). É uma aplicação open source Java e foi 
desenvolvida para executar load tests e testes de performance. Originalmente foi desenvolvido para aplicações Web, mas agora está sendo utilizado também para outras 
aplicações. 
Watir: Utilizado para testes automatizados para Web escritos na linguagem Ruby. Existem derivações em .Net (WatN) e Java (WatJ). Basicamente para quem quer criar 
testes fáceis de entender e de manter. Os criadores da ferramenta prometem funcionamento perfeito com qualquer tecnologia.
FitNesse: Servidor web, Wiki e Ferramenta de Testes Automatizados para suportar testes de aceitação. O usuário pode criar critérios de aceitação de maneira colaborativa, 
criar e executar testes automatizados e manter dados de teste.
tabela 3. Ferramentas de Automação (execução) de Testes
12 Engenharia de Software Magazine - Seus testes são “ágeis”?
TDD (Test Driven Development)
Técnica amplamente utilizada nos últimos tempos, o TDD, 
em português Desenvolvimento Dirigido por Testes, vem 
crescendo na área de desenvolvimento de software. Os resul-
tados atingidos nos projetos que utilizam TDD fazem com que 
este crescimento seja fortalecido, principalmente levando emconsideração que os passos necessários para a utilização da 
técnica são relativamente simples.
Durante a implantação do TDD, foram observados melhores 
resultados quando desenvolvedores e testadores construíam 
juntos os casos de testes automatizados, definidos para validar 
melhorias no produto ou até mesmo para novas funcionalida-
des. A partir deste ponto, o código era produzido com base 
nestes testes, o que garantia que este tinha os requisitos míni-
mos de qualidade e atendia à necessidade do cliente. Após a 
criação do código em si, os testes feitos anteriormente podiam 
ser executados e possíveis defeitos eram corrigidos. Já com os 
defeitos corrigidos (com base nos casos de testes construídos 
anteriormente), os scripts automatizados eram executados 
novamente para garantir que o código estivesse correto. Este 
ciclo se repetia até a finalização da tarefa. 
O papel do analista de testes nesta técnica é muito impor-
tante, visto que ele pode ajudar muito na criação dos casos de 
teste, aproveitando seu conhecimento e visão crítica. Muitos 
times utilizam esta visão para se trabalhar com pair program-
ming entre desenvolvedor e testador na criação dos scripts 
automatizados.
Em muitos casos, a técnica pode ser inicialmente considerada 
mais demorada ou até mesmo mais cara, mas com o passar 
do tempo, pode-se constatar a criação de softwares com os 
seguintes benefícios:
• Menos uso de um debugger;
• Menor quantidade de defeitos;
• Software feito de maneira mais rápida e com melhor 
qualidade.
Por fim, devemos manter o foco também nas limitações que 
esta técnica pode trazer à sprint. Um exemplo de tais limitações 
é o fato da qualidade do código ser muito baseada na qualidade 
dos testes em si. Logo, se os testes não forem criados de forma 
criteriosa, o código também não será bom o suficiente. Outro 
fator relevante a ser considerado é o tipo de sistema que está 
sendo desenvolvido. Sistemas com muita interface gráfica ou 
até mesmo com banco de dados relacional, podem ter seu de-
senvolvimento dificultado, se criados com esta técnica.
A Figura 4 mostra como deve ser feita a execução das tarefas 
dentro do ciclo do TDD e qual o papel de um testador neste 
ciclo, elaborando o plano de testes com todos os testes que serão 
automatizados e integrando a ferramenta de teste de código.
Ferramentas mais utilizadas
Algumas ferramentas vêm sendo amplamente utilizadas 
pelas equipes e profissionais de testes nos projetos ágeis. 
Ferramentas de apoio a testes vão além de automação (e de 
execução), elas podem ajudar na abertura de defeitos e no 
acompanhamento dos requisitos e mudanças no projeto.
Feita uma pesquisa inicial, foram listadas as principais 
ferramentas utilizadas pelas equipes e profissionais de testes 
na atualidade. A Tabela 4 mostra quais as suas principais 
características e o seu uso mais frequente.
Em resumo, pode-se dizer que as ferramentas pagas são 
muito completas e interessantes, mas nem sempre as empresas 
Figura 4. Ciclo de TDD e execução das tarefas de desenvolvimento.
Ferramenta Gratuita? Descrição
Jira
NÃO (Apenas para projetos 
open source)
Ferramenta para gestão de projetos e acompanhamento de tarefas e erros. É relativamente fácil de usar, oferece grande flexibilidade, 
de forma que você pode fazer o acompanhamento de todas as tarefas, desde sua criação até finalização, assinalando o assunto e seu 
responsável. Existe a possibilidade de se fazer comentários e capturas. O responsável e o criador do ticket podem ser informados por 
e-mail sobre todas as mudanças efetuadas.
Bugzilla SIM
Aplicação para gestão de erros. Esta aplicação permite que indivíduos ou grupos de programadores acompanhem os relatórios de erros 
ou pedidos de melhorias. É uma ferramenta baseada em Web e e-mail, que dá suporte ao desenvolvimento do projeto Mozilla, rastreando 
defeitos e servindo também como plataforma para pedidos de recursos.
Testlink SIM Ferramenta para registro de requisitos, armazenamento de casos de testes e resultados de teste. 
QA Track SIM Ferramenta para automação do planejamento de testes e que apresenta interface gráfica mais amigável (user friendly).
Mercury TestDirector NÃO É um aplicativo para Gestão de Testes – Gerenciamento de Requisitos, Plano de Teste e Controle de Defeitos.
Rational TestManager NÃO
É um console central para as atividades de gerenciamento e relatórios de testes. Criado para ser extensível, ele suporta tudo, desde 
abordagens de teste manual até automatizados, incluindo testes unitários, testes de regressão funcional e testes de desempenho. 
tabela 4. Ferramentas mais utilizadas pelas equipes em testes ágeis. 
Edição 34 - Engenharia de Software Magazine 13 
MEtoDoLoGIAS áGEIS
têm a possibilidade de obter as licenças para todos os recursos. 
As opções open source vêm sendo cada vez mais utilizadas e 
logo, melhoradas e difundidas.
Como são ferramentas de conhecimento público, tornou-se 
muito fácil conseguir ajuda e referências de ferramentas open 
source, já que todos os profissionais da área têm acesso a elas 
(tanto quanto estudantes e pesquisadores).
Por fim, outro fator que deve ser considerado quando da 
escolha das ferramentas é sua integração. Um exemplo claro 
é a utilização das ferramentas TestLink e Bugzilla. O TestLink 
tem uma boa integração com interfaces de bug tracking em geral 
e seus resultados podem ser utilizados de maneira a facilitar 
o controle/manutenção das informações do projeto. Estudar 
como fazer este tipo de integração pode ser um bom começo 
para a automação de dados de testes.
Conclusão
Este artigo apresentou um estudo sobre as principais diferen-
ças entre a atividade de testes antes e depois das metodologias 
ágeis (principalmente o SCRUM).
Estes pontos (diferenças) foram citados com o intuito de ex-
plicar como os testes estão sendo executados em projetos na 
atualidade. O intuito de descrever estas diferenças é deixar 
claro que devemos ter em mente que os testes também são 
parte do desenvolvimento como um todo. Também é neces-
sário pensar nesta integração quando planejamos a sprint e os 
testes em si. Pensar nos testes como uma atividade incremental 
desde o momento de estimar as estórias até o ponto em que 
começamos a executá-los é, sem dúvida, essencial para o bom 
andamento da sprint e para a mudança de visão dos profis-
sionais da área.
Os benefícios encontrados na alocação de analistas de testes 
dentro dos times ágeis podem ser resumidos em:
• Integração do time;
• Participação mais direta e ativa do profissional que está 
testando o software;
• Profissionais que estão desenvolvendo código também estão 
interessados em aprender sobre testes;
• Profissionais que estão testando código também estão inte-
ressados em aprender sobre programação;
• Agilidade: interação de todo o time de desenvolvimento 
com testes;
• Analistas de Teste deixaram de ser reativos para serem 
pró-ativos.
Ao final, vale ressaltar que não se pode pensar que sabemos o 
melhor jeito de executar testes em times ágeis, isto seria ilusão. 
O importante é conhecer o que já foi tentado e preservar o que 
foi aprendido durante estas tentativas, pois com certeza, não 
existe algo que possa ser considerado “a bala de prata”. 
Endereço da página do Selenium
http://seleniumhq.org 
Site do JMeter
http://jakarta.apache.org/jmeter/
Endereço da ferramenta Watir
http://watir.com
Site da ferramenta FitNesse
http://fitnesse.org/
Site do projeto Jira
http://www.ecore.com.br/atlassianbrasil/?gclid=CKrFuLL0-KYCFY4J2god-XSuCA 
Site do Bugzilla
http://www.bugzilla.org/
Endereço da ferramenta Testlink
http://testlink.sourceforge.net/docs/testLink.php
Endereço da ferramenta QA Track
http://www.testmanagement.com/
Site do Mercury TestDirector
http://www.starbase.co.uk/products/hp-products/hp-testdirector.htmlSite da Rational TestManager
http://www-01.ibm.com/software/awdtools/test/manager/
Links
[1] BECK, K.; FOWLER, M. et al (2001). Manifesto for Agile Software Development. 
http://www.agilemanifesto.org/. 
[2] CRISPIN, L; GREGORY, J. (2009). Agile Testing: A Practical Guide for Testers and Agile Teams. 
Addison-Wesley Professional. ISBN 0321534468. 
[3] COHN, M. (2004). User Stories Applied for Agile Software Development. Addison-Wesley 
Professional. ASIN B000SEFH1A.
[4] BECK, KENT (2002). Test Driven Development: By Example. Addison-Wesley Professional. 
ISBN 0321146530.
[5] Test Driven.com - Wrangling quality out of chaos. 
http://www.testdriven.com/
Referências 
Dê seu feedback sobre esta edição!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
Para isso, precisamos saber o que você, leitor, acha da revista!
Dê seu voto sobre este artigo, através do link:
www.devmedia.com.br/esmag/feedback
D
ê 
se
u Fe
edback
so
b
re esta edição
14 Engenharia de Software Magazine - Desenvolvimento de Software Apoiado por Groupware
Marco Antônio Pereira Araújo 
maraujo@devmedia.com.br
Doutor e Mestre em Engenharia de Siste-
mas e Computação pela COPPE/UFRJ, Es-
pecialista em Métodos Estatísticos Compu-
tacionais e Bacharel em Informática pela 
UFJF, professor dos Cursos de Bacharelado 
em Sistemas de Informação do Centro de 
Ensino Superior de Juiz de Fora, da Faculda-
de Metodista Granbery e da Universidade 
Severino Sombra, professor do curso de 
Bacharelado em Ciência da Computação 
da FAGOC, professor do Curso Superior de 
Tecnologia em Análise e Desenvolvimento 
de Sistemas da Fundação Educacional D. 
André Arcoverde, Analista de Sistemas da 
Prefeitura de Juiz de Fora, Editor da Enge-
nharia de Software Magazine.
Gabriella Castro Barbosa Costa 
gabriellacbc@gmail.com
Bacharel em Sistemas de Informação pelo 
CES-JF (2010) e Técnica em Informática In-
dustrial pelo CEFET-MG (2007). Atua como 
desenvolvedora Web desde 2008.
De que se trata o artigo?
Este artigo aborda o uso de groupware nos processos 
de desenvolvimento de software que são realizados 
de forma colaborativa, apresentando suas principais 
características, vantagens, ferramentas e platafor-
mas para apoiar o desenvolvimento de software 
neste contexto.
Para que serve?
Como o trabalho colaborativo no desenvolvimento 
de software é de grande importância, pois diferen-
tes habilidades são necessárias, o uso de groupware 
visa facilitar a execução e controle das tarefas que, 
em sua maioria, são realizadas de forma distribuída 
e colaborativa.
Em que situação o tema é útil?
Groupware pode ser utilizado para apoiar grupos 
de pessoas a realizarem qualquer tarefa ou meta 
em comum, mesmo trabalhando em localidades 
e horários distintos. O uso deste tipo de sistema 
para apoio ao desenvolvimento de software traz 
grandes vantagens já que este é, em sua maior 
parte, de caráter colaborativo.
Desenvolvimento de Software Apoiado por 
Groupware
Uma Introdução
Engenharia
Nesta seção você encontra artigos voltados para testes, processo, 
modelos, documentação, entre outros
De modo geral, através da junção de conhecimentos, experiências, habilidades e esforços de um 
grupo, conseguem-se alcançar melhores 
resultados para um mesmo trabalho do 
que se este fosse executado individual-
mente. O trabalho colaborativo, além de 
estimular os participantes envolvidos no 
processo, propicia a resolução de proble-
mas e desafios de forma mais rápida e 
eficiente, partindo do princípio de que 
as falhas/inconsistências de uma ideia 
ou proposta podem ser encontradas por 
outros integrantes do grupo durante a 
realização do trabalho.
Embora traga muitas vantagens, o 
trabalho coletivo exige um grande es-
forço na coordenação dos integrantes de 
um grupo, de forma a evitar eventuais 
conflitos e fazer com que os objetivos e 
metas traçadas sejam alcançadas de for-
ma satisfatória pelo grupo. Outras des-
vantagens do trabalho em grupo é que 
este é considerado mais lento e oneroso 
e, às vezes, o grupo pode desperdiçar 
o tempo de trabalho em bate-papos ou 
discussões desnecessárias.
A partir da interação e colaboração 
entre indivíduos, surge um novo tipo 
de conhecimento também conhecido 
Edição 34 - Engenharia de Software Magazine 15 
ENGENhARIA DE SoFt WARE
por ‘inteligência coletiva’, como é o caso do que ocorre no 
desenvolvimento de software livre, das enciclopédias online 
colaborativas e das redes sociais. Os avanços da Web 2.0 e das 
ferramentas de comunicação online alavancaram considera-
velmente o uso de sistemas colaborativos como chats, agenda, 
catálogo de endereços, webmail amigável, gerenciador de ar-
quivos, gerenciador de tarefas e enquetes, por exemplo.
Software colaborativo ou groupware pode ser definido como 
um sistema baseado em computador usado para apoiar grupos 
de pessoas a realizarem uma tarefa ou meta em comum, além 
de fornecer uma interface para um ambiente compartilhado. 
Esse tipo de software visa facilitar o trabalho de equipes que 
têm necessidade de um trabalho conjunto, mesmo traba-
lhando em localidades e horários distintos. O estudo sobre 
sistemas colaborativos engloba várias áreas como Engenharia 
de Software, Banco de Dados, Computação Gráfica, Sistemas 
Distribuídos e Inteligência Artificial, além de relacionar-se 
com áreas como a Sociologia, Linguística e Psicologia. A área 
que envolve o estudo de sistemas baseados em computador 
que auxiliam o trabalho cooperativo é conhecida por CSCW 
(Computer Supported Cooperative Work - Trabalho Colaborativo 
Apoiado por Computadores). Portanto, groupware pode ser con-
siderado uma ferramenta desenvolvida a partir dos conceitos 
abordados em CSCW.
Neste contexto, este artigo traz uma introdução sobre o 
trabalho colaborativo, destacando suas vantagens e desvan-
tagens. Na seção seguinte são apresentadas as principais 
características dos sistemas colaborativos, em seguida são 
apontadas as diferenças entre o desenvolvimento colaborativo 
de software e o desenvolvimento de software colaborativo. Por 
fim, o trabalho colaborativo no contexto de desenvolvimento de 
software é abordado e são apresentados os principais exemplos 
de groupware, como ferramentas de comunicação, ferramentas 
para controle de versões, ferramentas para controle de erros, 
ferramentas para gerência de projetos e três plataformas que 
podem ser usadas durante o processo de desenvolvimento 
de sistemas.
O Trabalho Colaborativo
Através do trabalho em grupo podem-se produzir melhores 
resultados do que se os membros do grupo trabalhassem indi-
vidualmente, já que há a possibilidade da complementação de 
conhecimentos e do surgimento de pontos de vistas diferentes. 
Com isso, a identificação de falhas na maneira escolhida para 
a resolução de problemas torna-se muito mais rápida e eficaz. 
Outra grande vantagem do trabalho colaborativo é a motivação 
que este pode trazer aos membros participantes do grupo, já 
que cada pessoa estará sendo observada e criticada pelos que 
se encontram envolvidos no trabalho em comum.
Embora proporcione muitas vantagens, o trabalho em grupo 
traz como principal desvantagem o fato de necessitar de uma 
boa coordenação de seus membros para que os resultados se-
jam satisfatórios. Para que o trabalho colaborativo possa ocor-
rer de forma que as metas traçadas inicialmente sejam, de fato, 
alcançadas, alguns fatores como comunicação, coordenação, 
cooperação e percepção são de suma importância e devem 
atuar de forma interligada.
- Comunicação
No trabalho em grupo, durante o processo de comunicação, os 
participantes deste têm como principal objetivo compartilhar e 
discutir suas ideias de forma a chegarem a um consenso. Nesta 
etapa, o conhecimento individual e a maneira de expressá-lo 
de cada integrantesão de grande valia para que haja um bom 
entendimento entre a pessoa que quer transmitir sua ideia e 
os demais membros do grupo.
O meio utilizado para a comunicação entre o grupo também 
pode exercer influência na informação a ser transmitida. Quan-
to mais pessoal for o contato entre as pessoas, melhor será o 
aproveitamento da ideia transmitida. Por exemplo, reuniões 
presenciais podem ser mais eficazes do que conversas por 
telefone, que por sua vez podem ser mais esclarecedoras do 
que chats ou mensagens instantâneas via web. Porém, muitas 
vezes, no trabalho colaborativo não é possível a realização 
de reuniões presenciais, para isto torna-se necessário um 
bom conhecimento de todos os membros do grupo sobre a 
correta forma de utilização das ferramentas de comunicação 
e da linguagem e expressões a serem usadas no decorrer das 
conversas.
No processo de colaboração, o mais importante não é apenas 
saber se o receptor recebeu a informação de forma adequada, 
mas sim se teve um bom entendimento da mesma. Isso pode 
ser percebido através das reações do receptor – em suas atitu-
des ou em sua fala.
Existem várias possibilidades de comunicação entre os par-
ticipantes de um grupo colaborativo, portanto, fica a cargo do 
coordenador deste grupo analisar e definir a melhor e mais 
apropriada ferramenta de comunicação para cada etapa ou 
meta a ser cumprida.
As ferramentas de comunicação podem ser classificadas em 
síncronas ou assíncronas. As ferramentas síncronas possuem 
como característica a necessidade de interação em tempo 
real, ou seja, membros do grupo devem estar presentes ou 
conectados no momento em que ocorre a comunicação. Este 
tipo de ferramenta deve ser usado quando se espera a inte-
ração entre os participantes do grupo, visto que o tempo de 
resposta entre a ação de um participante e a reação de seus 
companheiros é curto. Já as ferramentas de comunicação as-
síncronas possuem como vantagem a interação entre pessoas 
sem que estas estejam conectadas ao mesmo tempo, ou seja, a 
mensagem desejada é enviada, e permanece disponível para 
conhecimento dos destinatários no momento em que estes se 
conectam. Devem ser utilizadas quando há a necessidade de 
uma melhor reflexão dos participantes, já que estes terão um 
maior tempo disponível antes de agir.
Como exemplos de ferramentas de comunicação podem 
ser incluídas e-mail, lista de discussão, fórum, ferramentas 
de votação, mensagem instantânea, chat, vídeo conferência e 
telefone, sendo que algumas serão detalhadas e exemplificadas 
no decorrer deste artigo.
16 Engenharia de Software Magazine - Desenvolvimento de Software Apoiado por Groupware
- Coordenação 
De forma a garantir que os objetivos traçados pelo grupo sejam 
alcançados, é necessário que haja uma boa coordenação das ati-
vidades a serem realizadas. Evitar que esforços de comunicação 
e cooperação sejam perdidos e que as tarefas sejam realizadas 
na ordem correta, de forma correta e no tempo correto, deve ser 
uma atribuição do coordenador do grupo. Além disso, devem 
ser identificados e mapeados em tarefas os objetivos do grupo, 
selecionados os participantes, distribuídas as tarefas entre eles 
e toda a realização destas deve ser coordenada. Outra responsa-
bilidade da coordenação a ser citada é o tratamento de conflitos 
que geralmente ocorrem devido a problemas de comunicação, 
percepção ou interpretação, para que estes não acarretem em 
competição, desorientação e problemas de hierarquia, que po-
dem vir a prejudicar o grupo. Deve-se ressaltar a importância 
dos membros do grupo e os coordenadores devem sempre ter 
ciência do trabalho que está sendo realizado pelos participantes, 
assim é possível identificar e evitar esforços duplicados em prol 
de um mesmo objetivo a ser alcançado e também se evita que 
algum membro fique sem trabalho ou com tempo ocioso.
Atividades colaborativas sem a presença de um coordenador 
apresentam um grande risco de que os participantes do grupo 
desviem-se do foco principal ou se envolvam em tarefas repe-
titivas e ou conflitantes.
Como exemplos de ferramentas para suporte a atividades 
de coordenação podem ser citadas: gerenciamento de fluxo 
de trabalho (workflow) e ferramentas de desenvolvimento de 
software colaborativo. 
- Cooperação 
É a ação conjunta dos membros do grupo, como produção, 
manipulação e organização de informações. 
É interessante que a maior parte do que for produzido pelo 
grupo seja armazenada, de forma a garantir uma “memória” 
do trabalho cooperativo que foi realizado. Essa “memória” 
poderá, posteriormente, fornecer auxílio, caso seja necessário 
checar os motivos ou ideias iniciais que levaram à tomada de 
alguma decisão para produção de um artefato ou mesmo no 
caso da necessidade de alterá-lo por mudança nos objetivos 
iniciais.
Podem ser utilizadas ferramentas para auxiliar o trabalho 
de cooperação que fornecem, por exemplo, registro e recupe-
ração de versões e controle e permissões de acesso. Entre as 
ferramentas para controle de versão enquadram-se o CVS e o 
SVN, que serão descritas no decorrer deste artigo.
- Percepção 
A percepção é o ato de adquirir informação. É essencial para 
a comunicação, coordenação e cooperação em um grupo de 
trabalho colaborativo.
Na interação entre pessoas face-a-face, a obtenção de infor-
mações é maior, já que os sentidos estão presentes em sua 
plenitude. Já em ambientes virtuais, o suporte à percepção é 
bem menor porque os meios de transmitir as informações aos 
órgãos sensoriais dos seres humanos são restritos. 
Uma interação que possibilita uma percepção de qualidade 
é capaz de fazer com que os participantes tenham disponíveis 
informações necessárias para prosseguir seu trabalho, sem a 
necessidade de interromper outros membros do grupo para 
solicitá-las.
Groupware
O termo groupware, ou software colaborativo, refere-se a 
uma família de aplicações baseadas em computador que dão 
suporte a grupos de pessoas engajadas em uma tarefa comum 
e que provêm uma interface para compartilhar o ambiente, 
especialmente ao nível de comunicação, colaboração e suporte 
à decisão. O uso de groupware permite que pessoas, mesmo 
estando em diferentes localidades possam compartilhar 
ideias e interesses comuns para a resolução dos problemas e 
objetivos do grupo.
Groupware pode ser considerado uma ferramenta desenvol-
vida a partir dos conceitos abordados em CSCW, que é a área 
que envolve o estudo de sistemas baseados em computador 
para auxílio ao trabalho cooperativo.
A utilização de ferramentas groupware nas organizações tem 
como principal objetivo a melhoria na eficácia administrativa, 
dando assistência na comunicação, colaboração e coordenação 
das atividades dos grupos.
Como exemplos de aplicações de groupware podem ser 
citados:
• Sistemas de e-mail: Permitem a troca de mensagens e arqui-
vos pelo grupo;
• Workflows: Permitem o acompanhamento do fluxo de trabalho 
e de informações da empresa;
• Sistemas de gerenciamento de documentos: Permitem o 
acesso de forma rápida aos documentos digitais da empresa;
• Reuniões eletrônicas: Permitem a realização de encontros 
dos membros do grupo colaborativo para a resolução de 
problemas;
• Sistemas de co-autoria e projeto: Permitem o desenvolvi-
mento simultâneo de documentos e projetos mesmo que os 
participantes do grupo estejam em locais distintos;
• Vídeo conferências: Permitem a realização de encontros 
através da transmissão simultânea de áudio e vídeo;
• Tele presença, avatares e realidade virtual: Permitem a cria-
ção de ambientes virtuais para que as pessoas possam interagir 
a partir de locais remotos.
As aplicações de groupware, levando em consideração as va-
riáveis ‘espaço’ e ‘tempo’ podem ser classificadas em quatro 
categorias, conforme exibido na Tabela 1.
As categorias podem ser descritas como:
• Interação facea face: Diz respeito às aplicações que são 
executadas de maneira síncrona, sendo que os membros do 
grupo de trabalho encontram-se em um mesmo local em um 
mesmo tempo. Como exemplo de aplicação, pode ser citado um 
sistema de autoria de projeto em grupo, que permite tanto a 
engenheiros como desenvolvedores manipularem um mesmo 
arquivo simultaneamente;
Edição 34 - Engenharia de Software Magazine 17 
ENGENhARIA DE SoFt WARE
• Interação Distribuída Síncrona: As aplicações que se en-
quadram nesta categoria necessitam da utilização de recursos 
de telecomunicações de forma a possibilitar a comunicação 
simultânea entre locais de trabalho diferentes. Enquadram-se 
nesta categoria os chats e vídeo conferências;
• Interação Assíncrona: Nas aplicações desta categoria, em-
bora os integrantes do grupo de trabalho estejam situados 
em um mesmo local, a interação ocorre em tempos distintos. 
Como exemplos podem-se citar o compartilhamento de com-
putadores e arquivos;
• Interação Distribuída Assíncrona: Diz respeito às aplicações 
que são utilizadas em tempos e espaços distintos por parte dos 
membros do grupo de colaboração. Estas aplicações têm como 
objetivo a distribuição e encaminhamento das informações. O 
e-mail é o principal exemplo desta categoria.
Desenvolvimento colaborativo de software e 
desenvolvimento de software colaborativo
O conceito de desenvolvimento colaborativo de software di-
fere do de desenvolvimento de software colaborativo levando-
se em consideração que, nem sempre, o primeiro tem como 
objetivo final a produção de software para ser usado para 
apoiar trabalhos colaborativos. Um projeto cujo processo de 
desenvolvimento ocorreu de forma colaborativa poderá ter 
como finalidade a utilização de uma única pessoa sem que 
haja colaboração no uso deste sistema. Já o desenvolvimento 
de software colaborativo tem como meta a criação de sistemas 
para apoio ao trabalho realizado de forma colaborativa. Uma 
empresa pode fazer uso do desenvolvimento colaborativo 
de software sem nunca ter desenvolvido nenhum software 
colaborativo, por exemplo.
Trabalho Colaborativo e Desenvolvimento de Software
O trabalho colaborativo no desenvolvimento de software 
é de grande importância, pois diferentes habilidades são 
necessárias no decorrer do processo de desenvolvimento de 
software. Deve-se levar em consideração que a equipe de de-
senvolvimento e os clientes/usuários do sistema necessitarão 
de uma grande interação durante o decorrer do processo de 
desenvolvimento haja vista que os analistas precisam compre-
ender os requisitos propostos pelos clientes. Além disso, os 
arquitetos têm como papel verificar a melhor forma com que o 
sistema deverá ser feito, programadores têm o papel de passar 
para uma linguagem de programação o que foi especificado, 
sendo tudo isso coordenado e gerenciado pelos gerentes de 
projetos, além dos testes e adequações do sistema de acordo 
com o usuário final. 
Além da interação entre pessoas para o desenvolvimento de 
sistemas de forma colaborativa é importante ressaltar que estes 
sistemas provavelmente deverão oferecer interação com outros 
sistemas, elevando ainda mais o grau de colaboração que deve-
rá existir no decorrer do processo de desenvolvimento.
No desenvolvimento colaborativo de software, como as 
tarefas serão realizadas de forma distribuída e colaborativa, 
torna-se necessário que o escopo das mesmas seja claro e as 
TEMPO
ES
PA
ÇO
MESMO DIFERENTE
M
ES
M
O
Interação face a face Interação Assíncrona
DI
FE
RE
NT
E
Interação Distribuída Síncrona Interação Distribuída Assíncrona
tabela 1. Classificação das aplicações de groupware de acordo com 
espaço x tempo.
responsabilidades, atividades e papéis de cada participante 
do processo de desenvolvimento bem definidas, de forma a 
garantir o alcance dos objetivos inicialmente traçados. Uma boa 
gerência da equipe responsável pelo desenvolvimento colabo-
rativo de software é essencial para aumentar a produtividade 
e evitar o desperdício de recursos humanos.
No trabalho colaborativo de desenvolvimento é necessário 
um conjunto de reuniões para a coordenação das atividades 
a serem realizadas pelo grupo e, com isso, as ferramentas de 
apoio ao trabalho colaborativo funcionam como aliadas no 
sentido de facilitar a comunicação entre os integrantes da 
equipe.
Princípios básicos da programação extrema ou XP (eXtreme 
Programming), como simplicidade e comunicação, e práticas 
colaborativas como a programação em pares também facilitam 
o processo de desenvolvimento de software.
Embora possua muitas vantagens, fatores como comunicação 
ineficiente, dispersão geográfica, diferenças culturais, perda 
do espírito de equipe e falta de coordenação podem resultar no 
fracasso de um projeto se não forem tratados de forma correta 
durante o desenvolvimento colaborativo de software.
Tecnologias Colaborativas
Tecnologias colaborativas oferecem um grande auxílio no 
processo de desenvolvimento de sistemas. Como principais 
funções destas, pode-se citar o fornecimento de um canal de 
comunicação entre os participantes de um grupo, mecanis-
mos de armazenamento e acompanhamento de versões dos 
artefatos produzidos, ferramentas para controle de defeitos, 
ferramentas para auxílio na gerência de projetos e plataformas 
para desenvolvimento colaborativo, exemplificadas a seguir.
- Ferramentas de Comunicação
Para as ferramentas de comunicação, o uso da Internet 
torna-se indispensável e tal fato deve ser considerado ao 
adotá-las. Entre estas, pode-se citar as listas de discussão, 
18 Engenharia de Software Magazine - Desenvolvimento de Software Apoiado por Groupware
portais e comunidades virtuais, fóruns, mensagens ins-
tantâneas, chats, blogs e wikis. A seguir são apresentados 
alguns exemplos.
Para utilização de Listas de Discussão, o Mailman - Sistema 
para administração de listas de discussão ou newsletters – é de 
fácil configuração e administração via Web (Figura 1). Entre 
suas principais funcionalidades podem ser citados: filtros de 
conteúdo, arquivamento das mensagens enviadas para a lista, 
Figura 1. Página inicial do Mailman
Figura 2. Página da Comunidade JoomlaClube
Figura 3. Página de administração de site que usa WordPress
Figura 4. Página inicial da MediaWiki
moderação de membros e filtros anti-spam. É utilizado para 
gerenciar listas de projetos como SAMBA e KDE. 
Para apoio a criação de comunidades virtuais um exemplo é 
o JoomlaClube, Comunidade dedicada a tópicos relacionados 
ao CMS (Content Management System - Sistema Gerenciador de 
Conteúdo) Joomla, cuja página está exibida na Figura 2.
A criação de Fóruns pode ser apoiada pelo phpBB - Sistema 
gerenciador de fóruns em PHP - disponibilizado sob a licença 
GPL. É compatível com vários gerenciadores de bancos de 
dados como o MySQL, PostgreSQL, SQL Server, Microsoft 
Access e Oracle.
Jabber é um conjunto de protocolos XML que possibilita a 
troca de mensagens instantâneas entre dois pontos distintos 
na Internet. Para usá-lo basta efetuar um registro no endereço 
http://register.jabber.org , baixar o software cliente e efetuar 
o login.
Para utilização de um blog, pode-se utilizar o WordPress, uma 
plataforma para publicação de conteúdo com foco na estética, 
nos Padrões Web e na usabilidade, livre e gratuito. A Figura 3 
exibe a página inicial de administração de um site que faz uso 
desta plataforma.
Já o MediaWiki é um software livre para criação de wikis, 
desenvolvido utilizando a linguagem PHP. Foi originalmente 
criado para ser usado na Wikipédia. A Figura 4 exibe a página 
inicial da MediaWiki, onde pode ser realizado o download 
do programa.
- Ferramentas para controle de versões
As ferramentas de controle de versão são de grande impor-
tância no desenvolvimento colaborativo de software, poispermitem modificações paralelas de forma padronizada e 
controlada, garantindo a integridade e também a rastreabili-
dade das modificações.
Como exemplo de ferramentas a serem usadas para este fim 
pode-se citar o CVS e o Subversion, dentre outros, descritos 
a seguir.
CVS (Concurrent Versions System): Software livre e de 
código aberto, desenvolvido para suportar grupos de trabalho 
voltados para o desenvolvimento cooperativo de projetos, 
permitindo que múltiplos participantes possam efetuar, de 
forma independente e concorrente, alterações em suas cópias 
locais do objeto. 
Possui arquitetura cliente-servidor, onde o servidor é res-
ponsável por armazenar as versões atuais de um projeto, 
bem como seu histórico de alterações. Quanto ao cliente, este 
precisa conectar-se ao servidor para conseguir uma cópia do 
projeto original para, após isto, efetuar suas alterações. Com 
isso, torna-se necessário que ambos (cliente e servidor) estejam 
conectados por uma rede local ou mesmo pela Internet.
Após a confirmação das alterações de um projeto por parte 
dos clientes, caso mais de um cliente tenha alterado um mesmo 
arquivo, por exemplo, o servidor irá tentar efetuar uma fusão 
de todas as alterações. Caso isto não seja possível, o servidor 
executará a primeira alteração e informará ao responsável pela 
última alteração que houve um conflito, sendo necessária a 
Edição 34 - Engenharia de Software Magazine 19 
ENGENhARIA DE SoFt WARE
intervenção humana. Já quando a validação das alterações é 
bem sucedida, a versão de cada arquivo envolvido no projeto é 
incrementada e o servidor armazena as alterações (data, autor 
e observação – se houver) em seu log.
Como há um controle rigoroso de versões e alterações por 
parte do CVS, caso seja necessário, é possível que os desen-
volvedores tenham acesso às versões anteriores do projeto 
desenvolvido sem quaisquer problemas.
Subversion: Também conhecido por SVN, é um sistema de 
controle de versão livre e de código aberto, criado para ser 
um ‘substituto’ do CVS. Gerencia arquivos e diretórios e as 
alterações feitas neles ao longo do tempo, permitindo que 
sejam recuperadas versões antigas dos dados, ou examinar o 
histórico de como os dados foram alterados.
O SVN pode funcionar em rede, o que lhe permite ser usado 
por pessoas em diferentes computadores e localidades. Com 
isso, o desenvolvimento de software pode acontecer de forma 
mais rápida, já que um mesmo arquivo pode ser alterado por 
múltiplas pessoas e, como o trabalho está versionado, caso 
haja alguma alteração incorreta realizada junto aos dados, é 
possível, simplesmente, desfazê-la.
Alguns sistemas de controle de versão servem apenas para a 
gestão de configuração de software (SCM - Software Configura-
tion Management). Estes sistemas são utilizados para gerência 
do código fonte e têm muitas características que são específicas 
para desenvolvimento de software, tais como compreensão de 
linguagens de programação ou fornecimento de ferramentas 
para a construção de software. O Subversion não é um desses 
sistemas, haja vista que o mesmo pode ser utilizado para ge-
renciar qualquer coleção de arquivos. 
- Ferramentas para controle de defeitos
Algumas ferramentas têm como função documentar e con-
trolar defeitos encontrados e suas respectivas correções. Elas 
são de grande importância para a qualidade e a produtividade 
no desenvolvimento colaborativo de sistemas, pois permitem 
o gerenciamento dos defeitos com capacidade de localização, 
confirmação e detecção de defeitos duplicados ou que não se 
aplicam à versão atual do arquivo que está sendo analisado.
Dentre as ferramentas para controle de defeitos no desenvol-
vimento de sistemas colaborativos podem ser citadas, como 
exemplo, o Bugzilla e o Scarab.
Bugzilla: Trata-se de um sistema livre para rastreamento de 
defeitos que permite programadores, individualmente ou em 
grupo, acompanharem os bugs de um projeto de forma eficaz. 
Além disso, o Bugzilla é uma ferramenta que pode ajudar a 
equipe de desenvolvedores a se organizar e se comunicar de 
maneira mais simples. É considerada uma das ferramentas 
de controle de erros mais usada em projetos de software livre. 
Possui, além do registro de informações de erros, funciona-
lidades de priorização de atendimento, assinalando os erros 
aos participantes apropriados, configuração de dependências 
entre os erros e ainda possibilita a revisão de código.
Scarab: Ferramenta para rastreamento de erros em Java, 
a qual é de fácil instalação, porém sua interface Web não é 
muito elaborada. 
- Ferramentas para gerência de projetos
O uso de ferramentas para gerência de projetos possibilita 
que as informações sobre os projetos desenvolvidos estejam 
disponíveis para toda a equipe envolvida, o que aumenta a 
qualidade do gerenciamento e facilita o alcance dos objetivos 
traçados. Ferramentas que se enquadram nesta categoria 
possuem também como característica a disponibilização das 
informações sobre controle e acompanhamento do projeto de 
forma rápida e eficiente. Como exemplos podem ser citados o 
Microsoft Project e o dotProject.
Microsoft Project: Software comercial desenvolvido pela 
Microsoft para auxiliar na gestão de projetos. Esta ferramenta 
disponibiliza, além de diversos relatórios, gráfico de Gantt, 
diagramas de custos, datas e duração do projeto, dentre outros. 
Outra grande vantagem é o fato desta ferramenta possuir uma 
interface bastante amigável e similar aos outros produtos que 
são ofertados pela mesma empresa. É uma das ferramentas 
mais utilizadas pelo mercado nesta categoria. 
O Microsoft Project pode ser usado para diferentes tipos de 
projetos e não somente para os projetos de desenvolvimento de 
software, como projetos de engenharia civil, por exemplo.
dotProject: É um software livre para gerência de projetos. 
Diferentemente do Microsoft Project, é uma aplicação web 
cujo acesso é realizado através de um browser, desenvolvido 
utilizando a linguagem PHP, e faz uso do banco de dados 
MySQL. Essa ferramenta possibilita o cadastro e visualização 
de todas as tarefas necessárias para a execução de um projeto 
e qual parte desta já foi realizada. Também possui diagrama 
de Gantt, definição de responsáveis por cada tarefa, lembretes 
sobre os prazos e repositório de arquivos. Pode ser utilizado 
para gerenciar projetos dos mais diversos tipos, e não apenas 
os de desenvolvimento de software.
No Brasil há uma comunidade onde são discutidos assuntos 
de interesse sobre o dotProject que possui um site (http://
www.dotproject.com.br/) e uma lista de discussão de suporte 
técnico (http://listas.softwarelivre.org/cgi-bin/mailman/
listinfo/dotproject-br).
- Plataformas para desenvolvimento colaborativo
Para o desenvolvimento colaborativo de software, além das 
ferramentas anteriormente apresentadas, existem também as 
plataformas para desenvolvimento de software colaborativo 
que, em sua maioria, englobam todas as funcionalidades das 
ferramentas de comunicação, gerência, controle de versões 
e de erros. Dentre as existentes, serão citadas: SourceForge, 
Launchpad e GoogleCode, de uso gratuito.
SourceForge: Plataforma para desenvolvimento e distribui-
ção de software de código aberto que pertence e é operado pela 
20 Engenharia de Software Magazine - Desenvolvimento de Software Apoiado por Groupware
Geeknet Inc., com sede nos EUA. Além de ser um software de 
controle de desenvolvimento colaborativo, oferece uma interfa-
ce para acompanhamento do ciclo de vida no desenvolvimento 
de software e pode ser integrado a outras aplicações de código 
aberto como PostgreSQL e CVS. 
Launchpad: Plataforma para desenvolvimento colaborativo 
de software que provê as seguintes funcionalidades: bug tra-
cking, hospedagem e revisão de código, traduções, listas de 
email e FAQs. 
Google Code: Projetodesenvolvido pelo Google que oferece 
serviço de hospedagem para desenvolvimento de software com 
sistema para controle de versão, sistema de issuetracking, wiki 
para documentação e 100MB para download. Além disso, o site 
contém código-fonte aberto e uma lista com várias APIs públicas 
do Google como Google Maps, Google Toolbar, Google AdSensee 
e Google AdWords, sendo as duas últimas basedas no protocolo 
SOAP, permitindo que desenvolvedores integrem seus softwares 
aos serviços do Google.
Conclusão
É cada vez maior o número de empresas que estão distribuin-
do seus processos de desenvolvimento de software em cidades, 
estados ou países diferentes, de forma a obter profissionais 
cada vez mais experientes e qualificados. Portanto, o uso das 
ferramentas de apoio ao desenvolvimento colaborativo é de 
grande utilidade.
Problemas de comunicação e coordenação são considerados 
como os principais no desenvolvimento de software, onde 
as ferramentas para apoio ao trabalho em grupo (groupware) 
podem ser utilizadas como forma de minimizar os impac-
tos causados por estes problemas. Além disso, o trabalho 
em grupo, quando bem planejado e gerenciado pode ser de 
grande valia quando equiparado ao trabalho de uma única 
pessoa. O processo de desenvolvimento de software é, em 
sua maior parte, de caráter cooperativo. Através da utilização 
de softwares colaborativos, a produtividade de uma equipe, 
desde que bem gerenciada, tende a ser melhor, ficando a cargo 
dos coordenadores do grupo a escolha das ferramentas mais 
adequadas de acordo com o objetivo traçado.
Mailman
http://www.gnu.org/software/mailman/index.html
JoomlaClube
http://www.joomlaclube.com.br/site/comunidade.html
phpBB
http://www.phpbb.com/
Jabber
http://www.jabber.org/
WordPress
http://wordpress.com/
MediaWiki
http://www.mediawiki.org/wiki/MediaWiki
Bugzilla
http://www.bugzilla.org/
Scarab
http://scarab.tigris.org/
Microsoft Project
http://www.microsoft.com/project
dotProject
http://dotproject.net/
SourceForge
http://sourceforge.net
Launchpad
https://launchpad.net/
Google Code
http://code.google.com/intl/pt-BR/
Links
Ellis, C.A., Gibbs, S.J., and Rein, G.L. Groupware - Some Issues and Experiences. Communications 
of the ACM, v 34, n 1, 1991.
Grudin, J. Computer-Supported Cooperative Work: History and Focus. IEEE Computer, v 27 n 5, 
1994.
Microsoft Project
 http://www.microsoft.com/project
dotProject
http://dotproject.net/
SourceForge
 http://sourceforge.net
Launchpad
https://launchpad.net/
Google Code
http://code.google.com/intl/pt-BR/
Referências 
Dê seu feedback sobre esta edição!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
Para isso, precisamos saber o que você, leitor, acha da revista!
Dê seu voto sobre este artigo, através do link:
www.devmedia.com.br/esmag/feedback
D
ê 
se
u Fe
edback
so
b
re esta edição
Edição 34 - Engenharia de Software Magazine 21 
Mateus Maida Paduelli
É bacharel e mestre em computação pela 
Universidade de São Paulo. Já atuou em di-
versas organizações com o tema manuten-
ção de software e atualmente é servidor 
público federal.
De que se trata o artigo?
Apresentaremos neste artigo algumas alternati-
vas de respostas para os problemas de manuten-
ção apresentados no artigo sobre manutenção de 
software apresentado na edição anterior. Estas 
alternativas estão embasadas em três fontes 
distintas: na norma ISO/IEC 12207, nas soluções 
encontradas na organização analisada no estudo 
de caso, e nas propostas de outros autores que se 
dedicaram ao assunto.
Para que serve?
Este texto é indicado para aqueles profissionais 
que atuam com manutenção de software no seu 
dia-a-dia e que desejam entender melhor os atu-
ais desafios em torno desse tema.
Em que situação o tema é útil?
A manutenção de software é hoje um assunto pre-
sente em organizações que desenvolvem e man-
tém software. Isso se deve à necessidade de sem-
pre ajustar e melhorar o produto de software de 
acordo com as mais diversas necessidades. Diante 
desse fato, entender o significado e abrangência 
do termo manutenção de software pode auxiliar 
organizações e profissionais interessados no tema 
a melhor conduzir seus esforços quando precisam 
manter seus produtos.
Alternativas para redução de problemas na 
manutenção de software
Engenharia
Nesta seção você encontra artigos voltados para testes, processo, 
modelos, documentação, entre outros
Na edição 33 da Engenharia de Software Magazine, conhece-mos as características, tipos e 
desafios para a manutenção de software. 
Além disso, destacamos também as difi-
culdades encontradas na realização das 
atividades de manutenção de software. 
Para isso, um estudo de observação 
que foi conduzido com o objetivo de 
verificar os problemas de manutenção 
de software existentes em uma organi-
zação empenhada no desenvolvimento 
de software comercial.
22 Engenharia de Software Magazine - Alternativas para redução de problemas na manutenção de software
Dando continuidade à discussão sobre o assunto, apresen-
taremos neste artigo algumas alternativas de respostas para 
os problemas de manutenção apresentados na edição anterior. 
Estas alternativas estão embasadas em três fontes distintas: na 
norma ISO/IEC 12207, nas soluções encontradas na organização 
analisada no estudo de caso, e nas propostas de outros autores 
que se dedicaram ao assunto.
Acredita-se que a norma seja um excelente veículo para con-
duzir uma organização de software pelas melhores práticas, já 
que seu conteúdo é resultado de um esforço fundamentado no 
que poderia se chamar estado-da-arte da engenharia de sof-
tware. Outra consideração importante diz respeito à maneira 
como a norma se apresenta. Ela não é um modelo fechado que 
diz como fazer e manter software da melhor forma, mas sim, 
mostra o que deve ser considerado para que isso seja alcançado. 
Dessa forma, a norma funciona como um guia para ser seguido 
por organizações interessadas em tratar sistematicamente seu 
processo de software.
O estudo de caso apresentado no artigo da edição passada 
será estendido neste artigo, expondo agora práticas adotadas 
pela organização que trouxeram resultados satisfatórios para 
a prevenção ou contenção de problemas de manutenção de 
software em seu ambiente de trabalho. 
Extensão do Estudo de Caso
Neste tópico é apresentada a extensão do estudo de caso 
apresentado no artigo publicado na Engenharia de Software 
Magazine edição 33.
Essa extensão foi possível graças à constatação de que a 
organização estava em busca freqüente por melhorias em 
seu ambiente de trabalho, e em sua capacidade de resposta 
satisfatória aos clientes, que vinham crescendo em número, 
sem, no entanto, valer-se da adoção de um processo extenso e 
sistemático como o sugerido pela norma ISO/IEC 12207. 
O objetivo foi verificar quais mudanças a organização vinha 
adotando no seu dia-a-dia que estivessem contribuindo positi-
vamente para a diminuição de seus problemas de manutenção 
de software, ou ainda, o que os profissionais empenhados 
nessa atividade achavam que deveria ser feito para que essa 
redução ocorresse.
Metodologia
A metodologia aplicada na extensão do estudo de caso também 
foi baseada em questionários e entrevistas. O intuito principal 
desses questionários foi o de servirem para a abertura de uma 
discussão na qual exemplos de soluções eficientes fossem cita-
dos pelos entrevistados. Como o objetivo era que a organização 
mostrasse quais atitudes vinha adotando para tratar de maneira 
satisfatória sua atividade de manutenção, não havia como 
estipular questões prévias, por isso o questionário reduzido 
funcionou somente como recurso para início de entrevista. 
De fato, as soluções citadas, bem como observações e todas 
as informações relevantes

Outros materiais