DGERT   APCER
Relações de compromisso

Colaboração em Desenvolvimento de Software num Mundo Globalizado


Mundo

A colaboração na área do desenvolvimento de software abarca um leque alargado de actividades de equipa, desde equipas de pequenos projectos, com todos os membros a trabalharem no mesmo local, até projectos distribuídos geograficamente, com vários fusos horários e centenas de programadores espalhados por vários locais do globo, podendo incluir mesmo parte deles em outsourcing.

Os especialistas em desenvolvimento de software trabalham normalmente em equipas. A maior parte deles trabalham em pequenas equipas de cinco a dez pessoas, tendo em vista a criação de um produto de software completo, ou de um componente para um produto mais abrangente. Mas antes de falarmos da importância do desenvolvimento colaborativo, convém começarmos pelo significado desta expressão no âmbito deste artigo.

Quando alguém trabalha com outras pessoas, está a colaborar enquanto equipa, utilizando vários tipos de informação. No caso de equipas de pequena dimensão, existem poucos caminhos de comunicação. Mas à medida que as equipas crescem, os caminhos de comunicação também aumentam de forma significativa. No entanto, a colaboração é mais do que comunicação. A colaboração implica a interacção entre diferentes entidades - individuais e grupos - a trabalharem para um objectivo comum. Os colaboradores ajudam-se uns aos outros, através da partilha de conhecimento e de artefactos.

Quando se trata de projectos de software, colabora-se de várias formas. Partilha-se um processo com os membros da própria equipa. Informam-se as outras equipas sobre a forma como estamos a trabalhar e faz-se com que o estilo de trabalho das várias equipas possa ser integrado. Partilha-se código, desenhos, testes, e outros artefactos produzidos pelo processo de desenvolvimento.

No fundo, a colaboração é sinergética. Quando se colabora com sucesso, o desempenho atinge níveis mais elevados. Quando se optimizam as interacções entre pessoas e entre equipas, reduzem-se as barreiras para concluir o trabalho.

Uma breve história do século XXI

Na última década, o clima de negócio alterou-se, passando de um ambiente principalmente competitivo para um ambiente que é muito mais colaborativo. Na indústria de software, constróem-se sistemas baseados em componentes, e os sistemas dão origem a serviços ? nomeadamente os serviços Web. Estes componentes e serviços não são criados por uma equipa única e homogénea. Na realidade, podem ser criados por especialistas em desenvolvimento localizados numa qualquer parte do mundo.

Quando encontramos um componente ou serviço que gostaríamos de utilizar, precisamos frequentemente de colaborar com os seus criadores, por forma a compreendê-lo e a adaptá-los às nossas necessidades. Muitos dos componentes estão disponíveis a partir de fornecedores open source. Nestes casos, é frequente contratar o fornecedor, ou alguém familiarizado com o software, de modo a adaptá-lo e a integrá-lo com o nosso sistema.

Tal como refere Thomas Friedman no seu livro de grande sucesso, com o título "The World is Flat: A Brief History of the Twenty-first Century", o mundo mudou de forma significativa. As empresas de sucesso estão a começar a capitalizar a colaboração entre os recursos que melhor fornecem o serviço de que precisam, independentemente da localização geográfica onde se encontram. Com este aumento da colaboração, estão a surgir novos mercados de ferramentas destinadas a suportarem essa colaboração. Desta forma, há quem vaticine que o desenvolvimento colaborativo será um factor chave na indústria de software durante os próximos anos.

Novos métodos e práticas de desenvolvimento

Estamos a passar por um período de intensa actividade nos processos de desenvolvimento de software. Os processos ágeis (Agile) são um exemplo disso, mas a agilidade não é a única área em que estão a surgir novos métodos. Estamos a assistir ao surgimento de novas abordagens em praticamente todas as facetas da prática do desenvolvimento de software, incluindo métodos destinados especificamente ao desenvolvimento colaborativo.

Com o tempo, os processos de desenvolvimento colaborativo irão tornar-se entidades separadas, com as suas próprias características e práticas. Actualmente, os métodos ágeis respondem tipicamente a equipas que são capazes de se reunir presencialmente, dado que a comunicação cara a cara é um dos princípios básicos da metodologia ágil. Contudo, existem muitas pessoas da comunidade ágil a trabalhar no desenvolvimento e alargamento de processos que consigam responder às actividades de colaboração quando os membros da equipa não conseguem reunir-se cara a cara de forma regular. Acreditamos, no entanto, que as soluções eficazes para este problema não serão estritamente ágeis.

Também encontramos processos mais definidos e formais pensados para responderem à necessidade de colaboração entre pessoas geograficamente distantes. Por exemplo, o Team Software Process (TSP), desenvolvido originalmente por Watts Humphrey, destina-se a responder a este problema. O TSP baseia-se no Capability Maturity Model (CMM) e no Capability Maturity Model Integration (CMMI) do Software Engineering Institute (SEI). Estes modelos são utilizados em muitas organizações para a gestão eficaz de projectos.

A colaboração entre equipas separadas por distâncias geográficas e temporais está a despertar a atenção de personalidades destacadas do desenho de processos de software. Ivar Jacobson, por exemplo, tem trabalhado em formas de combinar práticas de modo efectivo. Escreveu sobre esta abordagem em "Enough of Processes: Let's do Practices". São necessárias claramente práticas diferentes quando se lida com equipas distribuídas que têm de colaborar entre si de forma eficaz.

Por sua vez, Grady Booch também já se referiu ao desenvolvimento colaborativo várias vezes. Booch e Jacobson são visionários bem conhecidos no mundo do desenvolvimento de software e, conjuntamente com outros especialistas, reconheceram a importância do suporte das equipas distribuídas. Mas como é que isto irá mudar os processos actuais? Um dos primeiros aspectos será a capacidade de sincronizar as actividades e os artefactos das equipas distribuídas. Já podemos ver isto suportado em alguns dos ambientes de desenvolvimento colaborativo utilizados actualmente.

As ferramentas Rational ClearCase, ClearQuest, e RequisitePro já fornecem as capacidades necessárias para as equipas partilharem diferentes tipos de activos. Algumas comunidades de desenvolvimento colaborativo - como o SourceForge da VA Software - criam um ambiente colaborativo para especialistas em desenvolvimento open source. A VA Software criou um processo de desenvolvimento colaborativo que fornece algumas das melhores práticas para incorporar o SourceForge no processo existente de uma organização, ou um processo completo para as organizações que ainda não têm nenhum processo definido.

Baseado num artigo intitulado "Collaboration in a flat world -- Part One: Collaboration development tools", da autoria de Gary Pollice e publicado na Rational Edge.

Topo
Pesquisa
Agenda
Destaques