Desenvolvimento Colaborativo de Software
Desenvolvimento Colaborativo de Software
Desenvolvimento Colaborativo de Software
Desenvolvimento
colaborativo de software
Cleidson Ronald Botelho de Souza
Sabrina Marczak
Rafael Prikladnicki
META
OBJETIVOS EDUCACIONAIS
RESUMO
ENGENHARIA DE SOFTWARE
E SUAS CAMADAS
A atividade de desenvolvimento de software é regida pela
disciplina da Engenharia de Software. Nesta disciplina são
fornecidos mecanismos, sistemas e princípios para que os
profissionais desenvolvam software de qualidade no cus-
to e no prazo determinados. Pressman (2006) entende a
Engenharia de Software através de camadas – Figura 8.1.
As camadas abrangem três elementos fundamentais: fer-
ramentas, métodos e processo. Cada um dos elementos
corresponde a uma camada, sendo que a camada base re-
presenta o foco na qualidade. Esta organização implica
que as camadas que representam os elementos fundamen- Figura 8.1 Camadas da
tais devem possibilitar à equipe o controle do processo de Engenharia de Software
desenvolvimento e oferecer uma base para a construção Fonte: Pressman, 2006, p.17
de software de alta qualidade.
Os métodos proporcionam os detalhes de “como fazer” para desenvolver o software.
Envolvem um amplo conjunto de tarefas que incluem: planejamento e estimativa de
projeto, análise de requisitos, projeto da estrutura de dados, arquitetura do software e
algoritmo de processamento, codificação, teste, manutenção, entre outras. Ferramen-
tas diversas dão apoio a diferentes métodos.
Um processo possibilita o desenvolvimento racional do software. Define a sequência
em que os métodos serão aplicados, como os produtos serão entregues, os contro-
les que ajudam a assegurar a qualidade e a coordenar as mudanças, e os marcos de
referência que possibilitam à equipe avaliar o progresso do desenvolvimento. É re-
presentado por um modelo de processo operacionalizado por meio de uma metodo-
logia. Existem diversos modelos de processo de desenvolvimento de software, e cada
modelo de processo pode ter mais do que uma metodologia que o operacionaliza. A
metodologia estabelece a sequência das atividades e o momento em que os métodos
e as ferramentas são utilizados.
Figura 8.3 Colaboração entre os atores que atuam no ciclo de vida de um defeito de software
foi corrigido de forma satisfatória. Usuários finais também têm acesso ao sistema e opinam
sobre a remoção dos defeitos que haviam identificados. Documentos para dar apoio e facilitar
a compreensão da descrição do defeito são acrescentados ao sistema em qualquer estágio do
ciclo de vida de um defeito. Um exemplo dos envolvidos neste ciclo de vida é apresentado
na Figura 8.3. A maioria destes sistemas possibilita que todos os atores se comuniquem por
troca de mensagens textuais. As mensagens ficam associadas aos defeitos, pois muitas vezes
documentam parte do processo que levou a resolução.
Além do registro e solução do defeito, os sistemas de gerenciamento de defeitos também
possibilitam a priorização dos defeitos a serem corrigidos pelo desenvolvedor, a geração de
relatórios de progresso e do estado atual de cada defeito registrado no sistema, a identificação
de registro de defeitos similares ou mesmo repetidos, e a busca por determinados defeitos.
Possibilitam ainda que diferentes atores envolvidos no desenvolvimento de software possam
coordenar as atividades por meio do compartilhamento de informações que são relevantes
em um determinado momento.
Estes sistemas são em geral integrados a ambientes de desenvolvimento de software e de
especificação de requisitos, bem como de gerenciamento de projeto para que os gerentes pos-
sam acompanhar diretamente a qualidade do sistema pelos quais são responsáveis. Equipes
geograficamente distribuídas também se beneficiam diretamente deste tipo de sistema, pois
seus integrantes, na maioria das vezes, não têm a oportunidade de se encontrarem pessoal-
mente para detectar defeitos em conjunto ou para discutir como solucioná-los. Versões destes
sistemas para web são cada vez mais comuns.
os passos executados por um testador incluindo o tempo gasto em cada passo, imagens ou
mesmo um vídeo das ações executadas. Quando um testador relata um defeito num dado
caso de teste, o defeito chega até a equipe de desenvolvimento com uma boa quantidade
de informação, capturada automaticamente, o que permite um desenvolvedor identificar o
lugar no código onde um defeito ocorreu. Parte deste conjunto de informações atua como
um debug histórico da aplicação, o que evita que defeitos sejam encerrados por “não serem
reproduzidos” ou por “não existirem”. Os desenvolvedores interagem com os testadores
para esclarecer informações e corrigir os defeitos relatados visando diminuir as pendências
em relação ao processo de teste.
O sistema também possibilita testadores e desenvolvedores trabalharem de forma mais cola-
borativa e integrada na alteração do código-fonte. São dados alertas dos testes que precisam
ser executados novamente devido a uma alteração no código-fonte. Esta funcionalidade pos-
sibilita que testadores identifiquem quais testes precisam ser executados antes da entrega a
fim de garantir que um defeito tenha sido corrigido.
A equipe cria conteúdos colaborativamente em formato de texto por meio de wiki pages ao
usar outro sistema integrado, SharePoint, também da Microsoft. Este conjunto de caracte-
rísticas do sistema promove visibilidade do progresso das atividades e facilita a colaboração
entre testadores e desenvolvedores.
EXERCÍCIOS
8.1 Por que o desenvolvimento de software é uma atividade colaborativa?
8.2 Além das duas práticas discutidas no capítulo (processo de desenvolvimento de software
e programação em pares), quais outras práticas são inerentemente colaborativas no de-
senvolvimento de software? Analise os aspectos colaborativos dessas outras práticas.
8.3 Se você fosse contratado para definir um sistema para dar suporte ao desenvolvimento
de software que apoie a colaboração dos integrantes de uma equipe de projeto durante o
desenvolvimento de software, quais características você listaria para definir tal sistema?
8.4 Além da distância física, quais desafios as equipes distribuídas de desenvolvimento de
software enfrentam para colaborar? Justifique sua resposta.
LEITURAS RECOMENDADAS
• Collaborative Software Engineering (Mistrik et al., 2010). Cada capítulo deste livro aborda
um tema da área de Engenharia de Software colaborativa incluindo sistemas, métodos ágeis,
processo de software, entre outros.
• Guest Editors’ Introduction: Cooperative and Human Aspects of Software Engineering
(de Souza et al., 2009). Este artigo apresenta uma breve introdução à área de Aspectos
Humanos e Colaborativos da Engenharia de Software. O artigo precede uma edição especial
da revista IEEE Software sobre este mesmo tema.
• Desenvolvimento Distribuído de Software: Desenvolvimento de Software com Equipes
Distribuídas (Audy e Prikladnicki, 2007). Este livro apresenta conceitos da área de
Desenvolvimento Distribuído de Software, sendo hoje o único livro em português sobre o
tema.
• Distance matters (Olson e Olson, 2000). Este artigo apresenta uma visão geral da pesquisa
nos 10 anos precursores à publicação do artigo sobre atividades colaborativas envolvendo
134 Sistemas Colaborativos
REFERÊNCIAS
ALLEN, T. J. Managing the Flow of Technology. Crambridge: MIT Press, 1977, 256 p.
AUDY, J. L. N.; PRIKLADNICKI, R. Desenvolvimento Distribuído de Software. Rio de Janeiro:
Elsevier, 2007, 211 p.
CURTIS, B.; KRASNER, H.; ISCOE, N. A field study of the software design process for large
systems. Communications of the ACM, v. 31, n. 11, p. 1268-1287, 1988.
DE SOUZA, C. R. B.; SHARP, H.; SINGER, J.; CHENG, L.; VENOLIA, G. IEEE Software, v.
26, n. 6, p. 17-19, 2009.
GONÇALVES, M. K.; DE SOUZA, C. R. B.; GONZALEZ, V. M. Initial Findings from an
Observational Study of Software Engineers. In: INTERNATIONAL CONFERENCE
ON COMPUTER SUPPORTED COOPERATIVE WORK IN DESIGN, 2009, Santiago.
Anais… Santiago: IEEE Press, 2009. p. 498-503.
GONZALES, V. M.; MARK, G. Constant, Constant, Multi-tasking Craziness. In: CONFEREN-
CE ON HUMAN FACTORS IN COMPUTER SYSTEMS, 2004, Vienna. Anais…Austria:
ACM Press, 2004. p. 113-120.
MISTRÍK, I; GRUNDY, J.; VAN DER HOEK, A.; WHITEHEAD, J. Collaborative Software
Engineering. London: Springer, 2010, 480 p.
OLSON, G.; OLSON, J. Distance Matters. Human-Computer Interaction, v. 15, n. 2, p. 139-178,
2000.
PERRY, D.; STAUDENMAYER, N.; VOTTA, L. People, Organizations, and Process Improve-
ment. IEEE Software, v. 11, n. 4, p. 36-45, 1994.
PRESSMAN, R. Engenharia de Software. São Paulo: McGraw-Hill, 6a ed., 2006. 720 p.