04 março 2008

Open source e sua influência no desenvolvimento de software – parte 1

Práticas open source no desenvolvimento de software aumentam a qualidade dos produtos derivados da engenharia de software?

Revisão 001 (16/03/2008).

A popularidade de software open source está crescendo a cada dia que passa e diversos produtos de amplo conhecimento popular, tais como, sistema operacional Linux e servidor de aplicações Apache. Estes softwares estão sendo criados e mantidos, principalmente, baseados em práticas Open Source, e com a Internet, tornou-se um grande e dinâmico repositório de softwares livre/aberto em diversas áreas de negócios. Alguns estudos de Gacek e Arief (2004) confirmam que práticas open source é uma forma diferenciada de trabalho com impactos positivos às fábricas de software tradicionais.

Apresentarei aqui uma série de posts sobre resultados de um estudo em disciplina de mestrado realizado ano passado (2007), sobre as influências, os efeitos e colaborações do desenvolvimento de software open source na engenharia de software, processo de desenvolvimento e na economia. Estou aprofundando um pouco este estudo para posterior publicação em congressos da área, mas por hora, compartilho as principais idéias investigadas.

Algumas definições relevantes

Os pesquisadores citados acima afirmam que o termo Open Source refere-se, freqüentemente, a um processo de desenvolvimento de software que dá suporte a contribuições, via Internet, de desenvolvedores dispersos geograficamente e que, também, contém um requisito básico, o acesso ao código fonte.

Por outro lado, outros estudiosos como Elliott e Scacchi (2004) destacam uma verdade indispensável, um pacote de open source não necessariamente significa ser livre (no sentido de ser de graça, sem custo); um programa livre é aquele que pode ser usado, copiado, modificado e redistribuído, ou seja, é um sistema que dispõe de total liberdade para que seja realizada qualquer intervenção no código. Um software que é coberto por uma licença livre, não significa que esse software não terá custo para ser operacionalizado. Dependerá da lincença de uso. Assunto que será tratado mais a frente. Ter garantia de acesso ao código fonte e fazer com ele certas coisas é que está mais próximo da
liberdade dita acima. Mas, como observou Patricia (ver comentários), nem todo opensource é software livre.

Open source possui várias peculiaridades que se modificam consideravelmente de projeto para projeto. Os estudos de Gacek e Arief (2004) propõem uma classificação em dois grupos de características nos projetos open source: as Comuns e as Variáveis.

Classificação de características de projetos open source segundo Gacek e Arief (2004)

Comuns

Variáveis

Característica

Aderência à definição de open source e a usuários-programadores


Esta significa que um desenvolvedor é um subconjunto dos usuários de open source e, desta forma, é correto afirmar que todos os desenvolvedores são usuários, mas a recíproca não é verdadeira. Aquela determina se a distribuição de um software, em particular, baseia-se nos critérios do OSI (Open Source Initiative).


Pontos de Início de um Projeto

Um projeto de open source é iniciado de um já existente em código fechado (no geral).


Motivação

É uma questão pessoal. Os desenvolvedores desejam ganhar respeito e reconhecimento através do reconhecimento da comunidade. Estudantes podem aumentar suas chances na carreira ganhando experiência no desenvolvimento de um projeto real.


Comunidade

É organizada em estruturas restritas ou liberais, na qual ocorre a centralização ou descentralização na tomada de decisão a depender da composição escolhida. Quanto ao destaque de um componente numa organização deste tipo, a mesma ocorre quando há o reconhecimento do grupo, decorrente das contribuições realizadas por um indivíduo.


Suporte ao Desenvolvimento de Software

Requer um processo similar aodesenvolvimento de software tradicional. Desta forma, é imprescindível que
necessidades específicas geradas pelos desenvolvedores distribuídos tenham algum apoio efetivo, tais como: modularidade, visibilidade da arquitetura do software, documentação e teste, aceitação de submissões, ferramentas e suporte operacional.


Licença

Vários tipos de licenças estão de acordo com a definição de open source OSI e vários destes, garantem que, se algum código for usado em outro software, o mesmo estará sob os termos da licença original.


Tamanho

A dimensão da comunidade e da base de código varia fortemente de projeto a projeto.

Para melhor compreender um projeto open source temos que analisar o seu processo de desenvolvimento, ou seja, como o software open source se caracteriza por um conjunto de atividades necessárias para criação eficaz de um programa. Assunto este para o próximo post.

O Sistema Operacional Linux é o grande exemplo do que esse modelo pode construir. O video abaixa demonstra essa analogia. Obs. trata-se de um comercial da IBM.





Do ponto de vista prático, produtos ou serviços open source trazem oportunidades para empresas? Compartilhar seus produtos com as comunidades em rede, promove a marca e permite maior interesse dos usuários? essas e outras questões serão discutidos no decorrer dos próximos posts.

Para saber mais, procure no google e leia os seguintes artigos:

  • The Many Meanings of Open Source - Gacek, Cristina e Arief, Budi. (2004), University of Newcastle Tyne, England, IEEE Software Computer Society.
  • Open Source Definition - OSI, Open Source Initiative (2007) http://www.opensource.org/docs/definition.php.
  • Mobilization of Software Developers: The Free Software Movement - Elliott, M. S. e Scacchi, W. (2004).
Créditos desse estudo também se devem aos meus colegas:
Ana Carina M. Almeida, Cleyton C. da Trindade e Marcio M. de Souza

2 comentários:

Patricia disse...

Já que pediu comentários, aí vão os meus:

Bom, ficou a dúvida sobre open source ser SL, e ter as 4 liberdades como afirmado no primeiro parágrafo das definições, para no segundo dizer que open source não é SL.
Dica: Quando se usa um conceito não nosso, o melhor é ao invés de colocar " pesquisadores afirmam", colocar logo que Fulano diz que, já ciclano afirma que. Assim, elimina as dúvidas sobre sua afirmação, pois o leitor quando fica com a pulga atrás da orelha, vai ele mesmo buscar a informação e complementação do proposto.
Open Source é sim um termo preciso, e trata de sistemas que possuem seu código aberto. O correto é, nem todo opensource é software livre (Existe o movimento do software livre E o movimento do código aberto).
Se você trata de projetos, o open source (código aberto) é sempre aberto, independente de qual projeto seja (estou falando de código aberto, não software livre), então as características comuns e variáveis que você descreve não são relativas ao Open Source, e sim ao projeto que é desenvolvido com a utilização do mesmo.
Coloque os resultados de sua pesquisa, quais as questões que te levaram a estas conclusões, qual foi o grupo pesquisado, etc...
É uma pesquisa interessante, está utilizando para tese de mestrado?
Aconselho a procurar a dissertação de Alessandro Binhara (MONO) que defende exatamente a inovação tecnológica e o desenvolvimento de projetos sobre a análise de uma comunidade de software livre. (me parece muito com o que vc está tentando fazer, em determinadas partes claro.
Caso queira conversar sobre a comunidade, aspectos sobre adesão, modelos de desenvolvimento já validados em pesquisa junto a comunidade de SL, entre em contato, pois já defendi mestrado nesta área e possuo diversas publicações a respeito, tanto do modelo de desenvolvimento, quanto dos aspectos sociais inerentes a ele e às comunidades de SL.
O bom das comunidades é realmente poder trocar informações, e aprender com os pares. Espero que não fique chateado com as observações/sugestões, mas que elas sirvam de ponte para iniciarmos trocas de informações/conhecimentos interessantes entre nós, e entre os demais interessados no assunto.
Abraços,
Patrícia

Douglas Daniel Del Frari disse...

Muito obrigado Patricia por suas valiosas contribuições. Irei revisar este post tentando melhor os aspectos mencionados bem como outros que também podem ser melhorados em momento oportuno.

São leitores como vc que agregam valor a uma discussão. Parabéns! Espero que outros leitores sejam tão ou mais críticos ainda.