You are on page 1of 44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

~kiko Resum Software Diary Papers Outdoors Travel Book shelf

Developer

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Christian Reis
k i k o @ a c m . o r g

Orientao: Profa. Dra. Renata Pontin de Mattos Fortes


r e n a t a @ i c m c . s c . u s p . b r

Monografia apresentada ao Instituto de Cincias Matemticas e de Computao para o Exame de Qualificao, como parte dos requisitos para a obteno do ttulo de Mestre na rea de Cincias da Computao e Matemtica Computacional.

So Carlos, So Paulo Abril de 2001

Resumo:
Software Livre, que neste texto abrange software tambm conhecido como Open Source, software que fornecido acompanhado de cdigo fonte e que pode ser livremente modificado e redistribudo. Uma conseqncia indireta desta liberdade o aparecimento de comunidades de desenvolvimento de software que trabalham de forma descentralizada por meio da Internet, desenvolvendo e mantendo os diferentes projetos de software livre. Estas comunidades, primeira
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 1/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

vista, parecem estar caoticamente organizadas do ponto de vista de um processo de engenharia de software; no entanto, grande parte do software produzido de alta qualidade, assim como alta a produtividade e satisfao dos desenvolvedores. O objetivo deste trabalho verificar esta aparente inconsistncia, e desenvolver um modelo de processo para este tipo de software.

Palavras-Chave: Software Livre, Open Source, Modelo de Processo de Software, Engenharia de Software, Desenvolvimento de Software Descentralizado.

Contedo

Contedo Lista de Figuras Lista de Tabelas Introduo Contextualizao Motivao Objetivos Organizao da Monografia O Processo de Software Definies Fases do Processo de Software Atividades do Processo de Software Modelos de Processo de Software O Modelo Cascata O Modelo Espiral Um Modelo baseado em Componentes Comerciais O Modelo Concorrente O Modelo Catico Metodologias geis Extreme Programming (XP) SCRUM Crystal/Clear Sobre Atividades Auxiliares Desenvolvimento de Software Descentralizado Problemas Relacionados O Estudo de Caso de Herbsleb et al. Solues Propostas Consideraes Finais Software Livre Definies Copyright e Licenas Histrico Relao com Unix Definio de um Projeto de Software Livre Exemplos de Projetos de Software Livre Ncleo de Sistema Operacional: Linux Ncleo de Sistema Operacional: FreeBSD Servidor Web: Apache Navegador Web: Mozilla Editor de Grficos Bitmap: Gimp Caractersticas do Processo de Software Livre Metodologia de Desenvolvimento Teste e Garantia da Qualidade
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 2/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Ferramentas Trabalhos Relacionados Consideraes Finais Plano de Trabalho Descrio do Projeto Atividades Previstas Bibliografia

Lista de Figuras

1. 2. 3. 4. 5.

Diagrama simplificado do modelo Cascata Diagrama simplificado do modelo Espiral Diagrama simplificado do modelo baseado em Componentes Comerciais Diagrama simplificado da fase de Especificao do modelo Concorrente Diagrama simplificado da fase de Especificao do modeloCatico

Lista de Tabelas

1. Principais Licenas de Software Livre 2. Software Livre em Freshmeat.net por Maturidade 3. Resumo das Atividades do Projeto

Introduo
Engenharia de Software e Software Livre so termos que so raramente abordados de forma associada em trabalhos cientficos; no entanto, esforos combinados nestas reas tm grande potencial para enriquecer o conhecimento geral do processo de desenvolvimento de software. Neste captulo feita uma breve apresentao dos temas e objetivos do trabalho.

Contextualizao
A dependncia e demanda crescentes da sociedade em relao Informtica e, em particular, a Software, tem ressaltado uma srie de problemas relacionados ao processo de desenvolvimento de software: alto custo, alta complexidade, dificuldade de manuteno, e uma disparidade entre as necessidades dos usurios e o produto desenvolvido [1,2,3]. Estes problemas afligem a rea de Software desde sua criao; Pressman os identifica como uma `aflio crnica', e no uma crise pontual [4]. Para administr-los, a comunidade de Engenharia de Software, ao longo dos ltimos 30 anos, estuda e implementa prticas de desenvolvimento de software bem organizadas e documentadas. Parte do trabalho dos pesquisadores envolvidos com a Engenharia de Software tem sido descrever e abstrair modelos que descrevem processos de software. Estes modelos permitem que se compreenda o processo de desenvolvimento dentro de um paradigma conhecido. A existncia de um modelo apontada como um dos primeiros passos em direo ao gerenciamento e melhoria do processo de software [5]. A maior parte dos modelos existentes baseada em premissas bastante tradicionais da rea: uma diviso discreta das atividades do processo de software, focando em gerenciamento, medidas e registros destas atividades. No entanto, no existe um modelo uniforme que possa descrever com preciso o que de fato acontece durante todas as fases da produo de um software; os processos implementados so muito variados, e as necessidades de cada organizao diferem substancialmente [6].
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 3/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Alm disso, na ltima dcada, um segmento crescente da comunidade de Engenharia de Software vem defendendo a existncia de problemas fundamentais da aplicao sistemtica e institucionalizada de processos de software convencionais [7,8,9] . Estes proponentes advogam processos simplificados, focados nas pessoas que compem o processo, e principalmente no programador. Nas palavras de Bach: ``Nas conferncias e nos peridicos, a ateno extraordinria dada ao processo de desenvolvimento de software mal dirigida. Demasiado escrito sobre processos e mtodos para desenvolver software; muito pouco sobre o cuidado e alimentao das mentes que de fato escrevem o software.'' Na ltima dcada, a popularizao de softwares classificados como Software Livre [10], que so distribudos livremente acompanhados de cdigo fonte, tem gerado curiosidade por parte de pesquisadores e profissionais de alguma forma envolvidos com software. Esta curiosidade em parte se deve forma particularmente simples pela qual estes softwares so produzidos. Apesar de apresentarem alta confiabilidade, evoluo rpida, e uma comunidade produtiva [11,12,13], os projetos de software livre apresentam um processo de desenvolvimento aparentemente catico, com algumas caractersticas particulares: total descentralizao, poltica liberal em relao a alteraes, e discusso aberta sobre todo assunto tcnico pertinente ao projeto [14]. Os projetos sobrevivem utilizando um mnimo de infra-estrutura provida pela Internet, sendo o email a ferramenta mais utilizada [15]. Em 1998, Raymond publicou um conjunto de artigos que descrevem informalmente algumas caractersticas do processo de desenvolvimento que muitos projetos seguem [14,16], as mais importantes sendo: releases1 .1 freqentes, propriedade de cdigo compartilhada, e reviso e verificao de cdigo macia. Nestes artigos, Raymond utiliza o termo ``Bazar" para descrever a forma de organizao dos projetos. Os artigos de Raymond geraram uma srie de crticas e respostas, e ele considerado um pioneiro por ser o primeiro a documentar, ainda que informalmente, um processo para este tipo de software. Apesar da recepo pela comunidade de Engenharia de Software aos conceitos apresentados em [14] no ser totalmente positiva [17,18,19], a indstria tem reconhecido o potencial do software livre e apoiado substancialmente os principais projetos. Nos ltimos anos, IBM, Apple, Sun, Netscape/AOL e Microsoft tm reconhecido e investido em projetos de software livre [20,21,22,13]. Em 2001, ser realizada o primeiro Workshop para Desenvolvimento Open Source como parte do International Conference of Software Engineering, em Toronto, Canad, e a primeira vez que a conferncia tratar deste assunto em um frum especfico [23]. O interesse da indstria e da comunidade acadmica no sem motivo: em alguns segmentos importantes, projetos de software livre so lderes de mercado. O servidor Web mais utilizado atualmente o Apache HTTPD, que software livre [24]. Edwards atribui 80% do volume total de email Internet ao Sendmail, um software livre para transmisso de correio eletrnico [12]. O ncleo de sistema operacional Linux, associado a um conjunto enorme de componentes de software livre, tem mais de 10 milhes de instalaes estimadas mundialmente[25]. A popularizao do Linux, associada criao de um conjunto de publicaes e sites Web, gerou interesse por software livre em milhares de desenvolvedores ao redor do mundo. O Freshmeat.net, um site Web dedicado a projetos de software livre, atualmente arquiva uma lista de mais de 1.000 projetos em desenvolvimento [26]. Este conjunto de softwares representa um tema muito interessante para estudo, especialmente levando em conta a natureza aberta e transparente destes projetos. O aparente paradoxo entre os aspectos positivos de software livre e sua estrutura pouco formal traz a tona uma questo fundamental: de que forma estes projetos se organizam, e como podem ter sucesso frente ao aparente caos em que existem?
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 4/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Motivao
Dos trabalhos cientficos publicados que tratam do assunto Software Livre, poucos abordam o assunto de modelo de processo e metodologia; no entanto, deve existir algum processo pelo qual software deste tipo desenvolvido. Por este motivo, h oportunidade de realizar um trabalho potencialmente inovador. Como descrito na Introduo, o assunto uma rea frtil para pesquisa e experimentalismo; existem centenas de projetos operando de forma aberta e que podem ser analisados de forma conveniente. Alm disso, a comunidade tem se mostrado bastante aberta a pesquisadores interessados em compreender o seu funcionamento [27]. Uma motivao adicional para o trabalho tornar conhecido este processo entre os cientistas brasileiros. Software livre um assunto que tem especial importncia para pases em desenvolvimento; no caso particular do Brasil, no entanto, ainda pouco explorado. Se for possvel reproduzir o sucesso destes projetos internacionais em empresas e instituies acadmicas brasileiras, uma oportunidade para promover um avano importante na rea de software pode ser gerada.

Objetivos
Este trabalho tem como objetivo levantar as caractersticas principais , do ponto de vista do processo de software, a partir de um conjunto de projetos de software livre. O trabalho busca determinar se estas caractersticas bastam para compor um modelo de processo de software para software livre, e caso seja possvel, descrever este modelo. Como conseqncia do levantamento destas caractersticas, devem ser identificadas, dentre o conjunto total de prticas aplicadas entre os diferentes projetos, uma coleo de melhores prticas de desenvolvimento de software livre. Alm disso, ser formada uma base de dados descrevendo o processo, permitindo que outros pesquisadores e organizaes possam aproveitar o trabalho realizado.

Organizao da Monografia
Este texto est dividido em cinco captulos principais, sendo o primeiro esta Introduo. A reviso bibliogrfica abordada nos dois captulos seguintes: o segundo captulo trata da teoria desenvolvida na rea de Processos de Software, dentro da Engenharia de Software; o terceiro captulo descreve, com base na literatura existente, os aspectos principais referentes a software livre e o desenvolvimento de software baseado neste princpio. Este captulo traz um comentrio dos trabalhos relacionados. O quarto e ltimo captulo descreve o projeto proposto, e aborda a metodologia que se pretende utilizar para executar o projeto. Esta parte inclui um detalhamento e cronograma das atividades essenciais.

O Processo de Software
Muito do que ser investigado neste trabalho diz respeito a um Processo de Software, e para definilo, cabe alguma discusso. Existe alguma sobreposio em relao aos termos Processo, Modelo, Mtodo e Metodologia, gerando confuso em algumas circunstncias. Embora no sejam sinnimos, comum observar na literatura o uso de um termo em lugar do outro. Assim, necessrio buscar definies para fundamentar o objetivo deste trabalho, que envolve o entendimento de um processo para software livre. Neste trabalho, usada a palavra modelo para descrever um enfoque conceitual ao Processo de
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 5/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Software; usado o termo metodologia para descrever uma seqncia de atividades prticas a ser executadas durante o desenvolvimento.

Definies
O Processo de Software definido por Sommerville em [28]: ``[O processo ] um conjunto de atividades e resultados associados que produzem um produto de software.'' Pressman, em [29] oferece a seguinte definio: ``[...definimos um] processo de software como um framework para as tarefas que so necessrias para a construo de software de alta qualidade.''2 .1 Estas definies oferecem uma idia mais clara do que considerado um processo. Diretamente delas, podemos retirar os seguintes pontos importantes: O processo rene um conjunto de atividades. Como existem atividades que englobam outras atividades, vamos usar o termo fase para descrever atividades de nvel mais alto. O processo tem como objetivo desenvolver um produto de software. Pressman [2] restringe o termo a processos que geram ``produtos de alta qualidade'', mas se ignoramos esta restrio, podemos aplicar o termo a qualquer conjunto de atividades que aplicada com o objetivo de desenvolver software. A definio no se restringe a processos estruturados; qualquer forma de desenvolvimento constitui um processo, por mais imatura ou catica que possa ser. No h processo correto ou incorreto; dependendo da sua aplicao, ambiente e objetivo, o uso de um processo especfico pode ser vantajoso ou no. Um ponto importante a ressaltar que cada autor e organizao coloca e classifica processos e atividades de forma diferente, tornando difcil uma uniformidade completa. As sees seguintes discutem vises alternativas, e se baseiam em caractersticas comuns encontradas na literatura para classificar.

Fases do Processo de Software


Pela definio, podemos entender o que o processo; no entanto, de que fases composto? Em meados dos anos 70, Schwartz j apontava como fases principais do processo de produo de um sistema de software [30]: 1. Especificao de Requisitos: traduo da necessidade ou requisito operacional para uma descrio da funcionalidade a ser executada. 2. Projeto de Sistema: traduo destes requisitos em uma descrio de todos os componentes necessrios para codificar o sistema. 3. Programao (Codificao): produo do cdigo que controla o sistema e realiza a computao e lgica envolvida. 4. Verificao e Integrao (Checkout): verificao da satisfao dos requisitos iniciais pelo produto produzido. A definio moderna oferecida por Sommerville [28] similar; define as atividades como Especificao, Desenvolvimento, Validao e Evoluo. Este ltimo ponto no descrito
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 6/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

diretamente por Schwartz: 1. Evoluo: alterao do Software para atender a novas necessidades do usurio. interessante observar que destacada a questo da longevidade do software no tem Evoluo; neste contexto, podemos perceber que a definio de Schwartz omite uma particularidade importante: o software continua sendo desenvolvido mesmo depois de entregue. Pressman [2] oferece uma viso compatvel com esta, ainda que simplificada: as fases descritas so Definio, Desenvolvimento e Manuteno. importante ressaltar que no existe uma seqencialidade obrigatria de fases. Tradicionalmente, as fases tem sido vistas como passos discretos e seqenciais [31]; no entanto, diversos autores apontam a natureza no-simultnea das fases como uma realidade na aplicao de processos de software [32,33]. Alm da questo de seqencialidade, existem autores que defendem que o processo de software muito mais iterativo e cclico do que a idia de fases simples pode sugerir. Em particular, Boehm, Davis, Rising et Al., e Beck sugerem processos onde existem ciclos contnuos e repetidos, onde alguma forma de produto desenvolvida a cada ciclo [34,32,35,8]. A extenso de cada ciclo, no entanto, no um consenso.

Atividades do Processo de Software


Para cada fase do processo de desenvolvimento de software existe uma srie de atividades que so executadas. Estas atividades constituem um conjunto mnimo para se obter um produto de software, segundo Pressman [2]. Observando as fases individuais e suas atividades associadas, combinando classificaes de Schwartz, Pressman e Sommerville [30,2,28], possvel identificar as seguintes atividades: 1. Especificao 1. Engenharia de Sistema: estabelecimento de uma soluo geral para o problema, envolvendo questes extra-software. 2. Anlise de Requisitos: levantamento das necessidades do software a ser implementado. A Anlise tem como objetivo produzir uma especificao de requisitos, que convencionalmente um documento. 3. Especificao de Sistema: descrio funcional do sistema. Pode incluir um plano de testes para verificar adequao. 2. Projeto 2 .2 1. Projeto Arquitetural: onde desenvolvido um modelo conceitual para o sistema, composto de mdulos mais ou menos independentes. 2. Projeto de Interface: onde cada mdulo tem sua interface de comunicao estudada e definida. 3. Projeto Detalhado: onde os mdulos em si so definidos, e possivelmente traduzidos para pseudo-cdigo. 3. Implementao 1. Codificao: a implementao em si do sistema em uma linguagem de computador. 4. Validao 1. Teste de Unidade e Mdulo: a realizao de testes para verificar a presena de erros e comportamento adequado a nvel das funes e mdulos bsicos do sistema. 2. Integrao: a reunio dos diferentes mdulos em um produto de software homogneo, e a verificao da interao entre estes quando operando em conjunto. 5. Manuteno e Evoluo
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 7/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

1. Nesta fase, o software em geral entra em um ciclo iterativo que abrange todas as fases anteriores. O Processo de Software pode ser visto como um gerador de produtos, sendo que o produto final, ou principal, o Software em si. importante perceber que existem subprodutos que so gerados para cada fase -- ao final da fase de Especificao, por exemplo, comum ter sido desenvolvido e entregue um ou mais documentos que detalham os requisitos do sistema. Estes subprodutos tambm so chamados na literatura de deliverables. Todo modelo de software deve levar em considerao as fases descritas; no entanto, cada um organiza estas fases de uma forma particular de acordo com sua filosofia de organizao. Na prxima seo so analisados alguns modelos mencionados na literatura.

Modelos de Processo de Software


Existem alguns modelos tericos desenvolvidos que buscam descrever a forma com que as fases seguem e interagem. Nesta seo esto descritos alguns dos modelos mais conhecidos [28,2,31,34]. Existe alguma flexibilidade no que diz respeito definio do termo ``modelo''; neste trabalho so considerados, dentre os modelos descritos na literatura, os que tm um carter estratgico, e no especfico. Em outras palavras, um modelo uma filosofia do andamento das fases, e no uma descrio de como cada atividade deve ser executada. A seo 2.5, por sua vez, descreve algumas metodologias, que so formas prticas de organizar o processo de desenvolvimento. Uma metodologia traz conceitos bastante especficos em relao ao desenvolvimento, como exemplifica Beck [8] em sua descrio da metodologia XP -- programao em pares, ciclos de 15 dias e equipes de menos de 10 pessoas.
O Modelo Cascata

Este modelo foi idealizado em 1970 por Royce, e tem como caracterstica principal a seqencialidade das atividades: sugere um tratamento ordenado e sistemtico ao desenvolvimento do software. Cada fase transcorre completamente e seus produtos so vistos como entrada para a nova fase; o software desenvolvido em um longo processo e entregue ao final deste. O autor sugere laos de feedback, que permitem realimentar fases anteriores do processo, mas em geral o modelo cascata considerado um modelo linear [31]. A figura 2.1 fornece uma descrio visual do modelo.

Figura 2.1: Diagrama simplificado do modelo Cascata


Crticas ao modelo Cascata sugerem a inadequao deste a processos reais; em geral, h muito intercmbio de informaes entre as fases, e raramente ocorrem projetos onde no h concorrncia das fases em si. [32]. Alm disso, o modelo Cascata no leva em considerao questes modernas importantes ao desenvolvimento: prototipao, aquisio de software e
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 8/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

alteraes constantes nos requisitos, por exemplo [8,36].


O Modelo Espiral

Boehm, em 1986, sugeriu um modelo evolucionrio para o desenvolvimento de software, baseado em uma seqncia de fases que culminam em releases incrementais do software [34]. Esta caracterstica incremental confirmada no conceito de prototipao de Brooks [37], e em metodologias de processo mais modernas, como descrito por Beck [8] e Rising [35]. Em geral, modelos incrementais tm o objetivo de lidar melhor com um conjunto de requisitos incerto ou sujeito a alteraes. Gancarz, por exemplo, afirma que a filosofia original do Sistema Operacional Unix leva em conta o fato de requisitos raramente se adequarem ao produto inicial [38]. Por este motivo, o modelo espiral parece melhor adequado a projetos reais que o modelo cascata -- em geral, modela melhor a interao real entre cliente e fornecedor do software [34]. A figura 2.2 apresenta um diagrama do modelo.

Figura 2.2: Diagrama simplificado do modelo Espiral


O Modelo Espiral, ainda assim, assume que existe alguma seqencia entre as fases: no h suporte para fases que ocorrem simultaneamente, ou que necessitam de intercomunicao contnua para operarem.
Um Modelo baseado em Componentes Comerciais

Embora Brooks, em [39], tenha defendido a compra de componentes de software como um dos meios para melhorar a produtividade substancialmente, Hirai e Saeki apontam como uma dificuldade significativa, em projetos de software modernos, a interao da organizao desenvolvedora com seus fornecedores de software [36]. Um dos maiores riscos de desenvolvimento apontados por Lawson em [40] a interdependncia de um produto com componentes de software produzidas em outras organizaes, sobre as quais no se tem controle algum. O modelo proposto por Hirai e Saeki utiliza dois mecanismos externos que no so contemplados nas fases tradicionais: um Sensor, que captura informaes da Internet que tratam de atualizao e problemas nos componentes comerciais utilizados; e um Controlador de Processo que fornece aos membros do projeto informao relacionada aos componentes utilizados. Existe uma base de dados onde ficam armazenadas informaes relacionadas aos componentes e ao seu uso na organizao. O Controlador alimenta todas as fases do desenvolvimento, da Especificao Integrao e Teste, com dados referentes aos componentes. Na fase de Especificao, por exemplo, o Controlador
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 9/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

fornece caractersticas e recursos dos componentes utilizveis, para que a equipe possa decidir pelo uso de algum. A figura 2.3 mostra uma descrio simplificada este modelo.

Figura 2.3: Diagrama simplificado do modelo baseado em Componentes Comerciais


Este modelo interessante por abordar um fato at ento ignorado nos modelos de processo: que componentes comercialmente disponveis podem influenciar substancialmente o processo de desenvolvimento. Os padres de qualidade, prazo e ritmo de lanamento dos componentes utilizados influem diretamente na forma com a qual o software desenvolvido dentro de uma organizao.
O Modelo Concorrente

Davis e Sitaram defendem um outro ponto importante: o de que as fases de um processo de desenvolvimento no ocorrem seqencialmente, e sim, concorrentemente. A descrio do modelo feita usando um estudo de caso modelado em Statecharts [32]. O mecanismo pelo qual o processo ocorre baseado em eventos que sinalizam alteraes de estado dentro de cada fase. O modelo representa atividades simultneas de todos os membros da equipe de desenvolvimento, e os eventos que alteram o estado so gerados por necessidades do usurio, decises da gerncia, e resultados de revises tcnicas. Por exemplo, a fase de Especificao pode estar em um dentre diversos estados: em desenvolvimento, completo, revisado, e controlado no repositrio. A criao, e toda reviso especificao original, ativa a fase de Desenvolvimento, de forma que h um ciclo constante entre os estados. A figura 2.4 apresenta um diagrama de estados para esta fase.

http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000

10/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Figura: Diagrama simplificado da fase de Especificao do modelo Concorrente


Embora o modelo apresente complexidade elevada, bem adaptado a situaes reais de desenvolvimento, onde realmente existe uma diviso temporal menos discreta entre as fases em execuo. O modelo catico, descrito a seguir, elabora em outro nvel esta filosofia.
O Modelo Catico

Este modelo foi sugerido por Racoon, que coloca o programador como a figura mais importante do seu modelo de processo [33]. Este sentimento confirmado por DeMarco e Bach em seus trabalhos [7,9]. A descrio do modelo interessante e espirituosa. O princpio bsico que cada uma das fases de desenvolvimento descritas na seo 2.2 consiste na realidade em um ciclo de vida completo. Cada fase do ciclo composta, por sua vez, de um conjunto de fases idnticos. Por exemplo, a fase de Especificao um ciclo onde consideramos como implementar a especificao, a implementao em si, e a evoluo desta especificao. A figura 2.5 apresenta um ciclo para esta fase.

Figura: Diagrama simplificado da fase de Especificao do modeloCatico


Alm disto, Racoon coloca, ``cada fase ocorre em todas as fases''. Na fase de Especificao, so
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 11/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

analisados os requisitos para criar um documento de requisitos; na fase de Implementao, so criados requisitos de implementao; na fase de Manuteno, so revisados e alterados os requisitos iniciais. Este padro fractal se repete para todas as fases. Embora o autor seja informal em boa parte de sua descrio, seu enfoque interessante no sentido de que enuncia a complexidade como uma realidade do processo de software, e no um problema a ser resolvido. Em parte, este um motivo pelo qual as metodologias mais especficas focam em aspectos prticos do desenvolvimento, e no em questes filosficas profundas. Na prxima seo so analisadas algumas metodologias de desenvolvimento, tambm chamadas de processos leves ( lightweight processes) ou processos geis [8,41].

Metodologias geis
Os modelos apresentados anteriormente tm como objetivo prover um mapa conceitual do processo de desenvolvimento. Existe discusso at que ponto modelar e especificar um processo relevante [42,43]; o certo que modelos abordam essencialmente questes conceituais da organizao do desenvolvimento. Fowler coloca em [41] que as metodologias modernas de desenvolvimento, como XP e SCRUM, so uma reao a modelos extremamente conceituais e a metodologias ``monumentais'' [41]. Nas suas palavras: ```Estas metodologias [monumentais] existem h muito tempo. Elas no so conhecidas por serem particularmente de sucesso [...] A crtica mais freqente a estas metodologias que so burocrticas [...] Como uma reao a estas metodologias, um grupo novo de metodologias apareceu nos ltimos anos [...] Estes novos mtodos tentam estabelecer um compromisso til entre nenhum processo e processo demasiado, provendo apenas processo suficiente para fornecer uma vantagem razovel.'' Nesta seo esto descritas metodologias prticas para o desenvolvimento, que so formas especficas de organizar o processo de software para obter vantagens de qualidade e produtividade. A metodologia se foca em especificar tarefas aplicando um conceito especfico (refactoring e programao em pares em XP, por exemplo) a cada fase do desenvolvimento, e propor solues prticas para problemas comuns.
Extreme Programming (XP)

O trabalho de Beck [8] descreve um processo minimalista onde existe muito pouca burocracia envolvida no desenvolvimento. Equipes pequenas, de at 10 desenvolvedores, trabalham em iteraes curtas, produzindo software incrementalmente, e analisando requisitos medida que so descritos pelo cliente. XP se apia em um contnuo refinamento do projeto e da implementao deste no cdigo. Para realizar este refinamento, aplica alguns princpios bsicos: Propriedade Coletiva: Todos os desenvolvedores so responsveis por qualquer parte do software, e tm liberdade para alterar e reparar o cdigo caso seja necessrio. Programao em Duplas: dois programadores trabalham juntos no mesmo teclado e monitor. User Stories: requisitos so elaborados na forma de cenrios de operao do software pelo usurio, e o software implementado a partir destes cenrios. Refactoring: o cdigo continuamente alterado para que se reduza sua forma mais simples possvel. Testes de Unidade: a programao iniciada por testes de unidade, que so implementados
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 12/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

antes do cdigo que devem testar. A coleo de testes permite aos desenvolvedores alcanarem confiana o suficiente para continuamente alterar o cdigo implementado. O interesse que XP tem gerado entre a comunidade de desenvolvimento -- este o segundo ano em que a Extreme Programming Conference realizada [44] -- pode ter relao com sua atitude de ``menor esforo'' face a problemas complexos do desenvolvimento. Por exemplo, a documentao do sistema deve ser mantida junto com o prprio cdigo fonte, e deve ser mnima, forando o desenvolvedor a escrever cdigo auto-explicativo [45] e a evitar complexidade.
SCRUM

Uma outra metodologia de desenvolvimento que classificada como gil o SCRUM2 .3 . Esta metodologia foi criada na Easel, e posteriormente desenvolvida por duas empresas em conjunto: Advanced Development Methods e VMARK. Seu objetivo fornecer um processo conveniente para projeto e desenvolvimento orientado a objeto [46]. A metodologia baseada em princpios semelhantes aos de XP: equipes pequenas, requisitos pouco estveis ou desconhecidos, e iteraes curtas para promover visibilidade para o desenvolvimento. No entanto, as dimenses em SCRUM diferem de XP. SCRUM divide o desenvolvimento em sprints de 30 dias. Equipes pequenas, de at 7 pessoas, so formadas de projetistas, programadores, engenheiros e gerentes de qualidade. Estas equipes trabalham em cima de funcionalidade (os requisitos, em outras palavras) definidas no incio de cada sprint. A equipe responsvel pelo desenvolvimento desta funcionalidade. Todo dia, feita uma reunio de 15 minutos onde o time expe gerncia o que ser feito no prximo dia, e nestas reunies os gerentes podem levantar os fatores de impedimento (bottlenecks), e o progresso geral do desenvolvimento. SCRUM interessante porque fornece um mecanismo de informao de status que atualizado continuamente, e porque utiliza a diviso de tarefas dentro da equipe de forma explcita. Uma discusso mais profunda do mtodo feita em [47].
Crystal/Clear

Crystal/Clear faz parte, na realidade, de um conjunto de metodologias criado por Cockburn [48]. As premissas apresentadas para a existncia deste conjunto so: Todo projeto tem necessidades, convenes e uma metodologia diferentes. O funcionamento do projeto influenciado por fatores humanos, e h melhora neste quando os indivduos produzem melhor. Comunicao melhor e lanamentos freqentes reduzem a necessidade de construir produtos intermedirios do processo. Crystal/Clear uma metodologia direcionada a projetos pequenos, com equipes de at 6 desenvolvedores. Assim como com SCRUM, os membros da equipe tem especialidades distintas. Existe uma forte nfase na comunicao entre os membros do grupo, e a organizao do espao de trabalho deve permitir este tipo de trabalho. Toda a especificao e projeto so feitos informalmente, utilizando quadros publicamente visveis. Os requisitos so elaborados utilizando use cases, um conceito similar s user stories em XP, onde so enunciados os requisitos como tarefas e um processo para sua execuo. Os releases de software so feitos em incrementos regulares de um ms, e existem alguns subprodutos do processo que so responsabilidade de membros especficos do projeto. Grande parte da metodologia pouco definida, e segundo o autor, isto proposital; a idia de Crystal/Clear permitir que cada organizao implemente as atividades que lhe parecem
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 13/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

adequadas, fornecendo um mnimo de suporte til do ponto de vista de comunicao e documentos.

Sobre Atividades Auxiliares


Nesta seo retomada a descrio das atividades que so realizadas durante um processo genrico de software; estas atividades se aplicam tanto a modelos conceituais, quanto s metodologias prticas abordadas na ltima seo. Alm das atividades envolvidas com a produo do software em si, existem atividades auxiliares, citadas por Pressman [29] como umbrella activities. Estas atividades existem com o objetivo de garantir que o software construdo seja de qualidade e bem documentado, e que a produtividade do grupo de desenvolvimento seja mantida. Atividades auxiliares do processo so aplicadas ao longo de todas as fases do desenvolvimento. O conjunto especfico de atividades varia de acordo com cada organizao, mas existe um consenso de que as seguintes atividades so importantes [29,49,28]: Gerenciamento de Configurao: um registro de alteraes e motivos para estas para cada subproduto do processo de desenvolvimento, incluindo o projeto do sistema, requisitos, documentao e o cdigo em si. Garantia da Qualidade: um processo completo, abrangendo atividades que existem para manter qualidade no processo; inclui revises tcnicas (inclusive de cdigo, projeto, requisitos), medio do processo de desenvolvimento e anlise destas medidas, elaborao da estratgia de testes, e elaborao e aplicao do processo de software em si. Acompanhamento e Controle de Progresso: um mecanismo para explicitar o estado atual do projeto, comunicar este estado aos diferentes membros do projeto, e aplicar alteraes ao cronograma, requisitos e organizao do grupo de desenvolvimento para garantir produtividade. Documentao: a atividade de registrar em lngua natural instrues, detalhes e explicaes a respeito de cada um dos produtos do processo de software. Todo processo de software tem benefcios com a aplicao destas atividades, e em muitos casos, mesmo inconscientemente, estas so partes implcitas do desenvolvimento de software. Um projeto que utiliza uma ferramenta para controle de verso como o CVS [50] est, estritamente falando, gerenciando configurao; um projeto que mantm um cronograma pblico com atualizaes freqentes est acompanhando e gerenciando o seu processo.

Desenvolvimento de Software Descentralizado


At a ltima dcada, a maior parte do software era desenvolvido em grupos geograficamente reunidos, trabalhando como uma equipe altamente coesa. No entanto, h uma tendncia crescente por utilizar equipes geograficamente dispersas para desenvolver software. Em parte, responsvel por esta tendncia o desejo de aproveitar ao mximo as habilidades do pessoal disponvel para o projeto, no importando sua localizao. Esta alterao importante na organizao da equipe de desenvolvimento exige alteraes no processo de software [51]. Nesta seo so tratados aspectos da Engenharia de Software relacionados ao desenvolvimento de software descentralizado ou distribudo.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 14/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Problemas Relacionados

Grundy et al. apontam alguns problemas criados ou exacerbados por estas alteraes [52]. interessante notar que, embora muito se fale dos problemas, existe pouca discusso das vantagens que o desenvolvimento distribudo oferece. A principal, e bvia, a possibilidade de reunir em uma equipe um conjunto de desenvolvedores geograficamente dispersos. Os problemas apontados por Grundy so: A atribuio das tarefas do desenvolvimento aos membros da equipe. A comunicao e colaborao entre desenvolvedores. O compartilhamento dos documentos e artefatos do projeto, e a consistncia destes. A necessidade de suportar plataformas heterogneas. O acompanhamento do progresso dos grupos distintos. A integrao entre os mdulos desenvolvidos por estes grupos. Estes problemas so tratados em diversos outros trabalhos da rea [53,54], e algumas solues so discutidas. O trabalho de Herbsleb et al., em particular, um estudo de caso que faz uma anlise bastante completa das dificuldades do desenvolvimento distribudo, e ser discutido na prxima seo.
O Estudo de Caso de Herbsleb et al.

Herbsleb et. al realizaram um estudo de um projeto de desenvolvimento de software, distribudo entre dois centros da Lucent na Alemanha e Inglaterra, para o desenvolvimento de um software para comutao telefnica. Neste estudo, feita uma discusso interessante das questes prticas enfrentadas pelas equipes [54]. Uma das questes que o artigo discute a diviso em mdulos de um sistema. Os autores defendem que esta diviso reflete diretamente em uma diviso do trabalho entre os grupos dispersos, o que torna a responsabilidade dos mdulos e suas interfaces muito importantes, e freqentemente, um fonte de problemas. Outra questo que o plano e o modelo de processo representam mal aspectos informais que sustentam o desenvolvimento centralizado: habilidade individual, criatividade, o uso de redes pessoas, e do espao fsico. Um exemplo citado a lanchonete da empresa, onde desenvolvedores se encontram para discutir assuntos gerais informalmente; este ponto de encontro serve como um mecanismo de troca de informao vital porem informal dentro do grupo de desenvolvimento. Em projetos dispersos, no h este tipo de recurso. O estudo aponta dificuldades enfrentadas no projeto; entre elas esto as seguintes: A integrao entre os mdulos foi problemtica. Os motivos principais foram um plano de integrao falho (no contemplava disparidade das entregas efetivas dos mdulos) e pouca experincia com a plataforma de hardware terceirizada. Manter a consistncia entre os repositrios de verso se mostrou difcil; e quando se escolheu consolidar o processo em um repositrio nico, a dificuldade de julgar alteraes se mostrou grande; no havia conhecimento suficiente do cdigo desenvolvido pelo outro grupo. A comunicao e contato entre os grupos era restrita, especialmente durante a fase inicial do projeto, onde existia pouca intimidade entre os desenvolvedores, e grandes diferenas culturais para superar. apontado como um problema especialmente srio o custo alto para iniciar a comunicao, que envolvia descobrir quem seria o responsvel por um mdulo, encontr-lo, e efetivamente iniciar a comunicao. Os autores concluem com as seguintes observaes:
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 15/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

A descentralizao trabalha contra os mecanismos informais de comunicao. A diviso modular do sistema tem importncia fundamental para a diviso do trabalho, e deve ser feita com ateno na estabilidade e compreenso das interfaces. fundamental estabelecer mecanismos para comunicar a situao desenvolvimento e localizar os responsveis por cada parte do processo. atual do

Investir na transposio das barreiras de comunicao iniciais de extrema importncia; um plano de viagens importante para vencer a timidez e desconfiana inicial; ferramentas adequadas para comunicao so essenciais ao processo de desenvolvimento.
Solues Propostas

Para os problemas apontados por Grundy, Herbsleb et al., existe discusso em alguns trabalhos, sendo que as solues so apresentadas em dois nveis: primeiro, na elaborao de um processo que seja bem adaptado s necessidades de desenvolvimento descentralizado [55,56]; segundo, no desenvolvimento de ferramentas especficas para apoiar projetos distribudos [53,57]. Uma possibilidade de apoio ao processo o uso de sistemas de workflow e automao de processo; no entanto, a maior parte dos trabalhos estudados aponta que sistemas de workflow no se adaptam bem ao desenvolvimento de software. Grundy et al. descrevem o problema da seguinte forma [52]: ``Sistemas de Workflow e planejamento de projeto [...] provm recursos mais acessveis para modelar processos de trabalho, mas em geral no dispem da flexibilidade para especificar mecanismos de coordenao de trabalho e integrao de ferramentas.'' Cook descreve um mecanismo baseado em eventos para capturar informao de um projeto de software distribudo em [56], e neste trabalho ele levanta uma caracterstica importante: se todo dilogo registrvel, possvel acumular dados e posteriormente analis-los para compreender melhor o processo. Esta parece ser uma vantagem importante que projetos distribudos tm: o fato de toda comunicao ser registrvel e estruturvel, j que transmitida por canais passveis de armazenamento e medio. A possibilidade de se utilizar este registro para levantar um histrico de alteraes nos diferentes produtos de um projeto bastante interessante.

Ferramentas
Possivelmente porque seja to importante um conjunto de ferramentas apropriadas para o tipo de tarefa [54] existe uma preocupao to grande com o assunto de software de suporte a desenvolvimento distribudo. Fielding et al. apontam o surgimento da Internet como uma soluo importante para o problema da Engenharia de Software em projetos descentralizados, e sugerem um conjunto de alteraes tecnologia Web para permitir bom suporte engenharia de software: O uso de ligaes (links) como entidades independentes, permitindo a autores definirem links separadamente do texto. Inclui a possibilidade de prover anotaes e caminhos especficos. Notificaes para clientes (atravs de um modelo tipo push) para comunicar alteraes em dados do servidor. O uso de pequenos clientes independentes, ao invs dos clientes Web monolticos (browsers) existentes hoje. Autoria distribuda e controle de verses para documentos Web. Parte destes requisitos tem sido desenvolvidos pelo W3C [58] nos ltimos anos como parte do desenvolvimento de novos padres para a Web. Em particular, a tecnologia WebDAV, que existe
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 16/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

para permitir autoria e controle de verses para documentos Web, j est desenvolvida e utilizada em alguns produtos para Web[57]. Existem diversos projetos para desenvolver ferramentas colaborativas para Engenharia de Software atravs da Web, a exemplo dos citados em [52,55]. No entanto, parece faltar ainda um conjunto de ferramentas que seja pouco restritivo, multiplataforma, e que suporte os recursos mnimos necessrios colaborao de fato para o desenvolvimento de software descentralizado.

Consideraes Finais
Grande parte das pesquisas feitas na rea de Engenharia de Software, e em particular no desenvolvimento de Processos de Software, continuam sendo desenvolvidas e contribuindo para melhorias na construo de produtos de software. No entanto, existe uma tendncia atual para a simplificao e pragmatizao do processo para acomodar novas necessidades de desenvolvimento; os requisitos e demandas por novos sistemas so muito diferente dos conhecidos e estabelecidos nos anos 70 e 80. Neste contexto, vem a tona uma nova forma de produo de software, baseada em elementos tradicionais de desenvolvimento aplicados nova realidade de desenvolvimento descentralizado que a Internet traz. Esta nova forma baseada em torno de cdigo livremente disponvel, Software Livre, e abordada no prximo captulo.

Software Livre
Neste captulo abordado o tpico principal do trabalho, que a classe de softwares distribudos como software livre. Para esclarecer a terminologia que ser adotada neste trabalho, sero inicialmente apresentadas algumas definies importantes.

Definies
O termo Software Livre assume um conjunto de significados, dependendo do contexto. Pode significar: A forma com a qual o Software licenciado; ou O conjunto de todos os Softwares licenciados desta forma; ou ainda Uma comunidade organizada em torno de Softwares licenciados desta forma. Neste texto, vamos utilizar o primeiro significado, que definido em [10] como sendo Software que distribudo acompanhado de cdigo fonte, e que pode ser livremente modificado e redistribudo. O termo tem uma conotao filosfica marcante que, segundo Stallman [59], proposital: o aspecto a ser reforado a liberdade. Usaremos o termo `no-livre' para descrever software que fornecido em outros termos. Um dos aspectos interessantes desta filosofia que em nada restringe o preo do software. Isto significa que perfeitamente possvel cobrar um valor pelo software ou por sua distribuio. Na prtica, o fato da redistribuio do software ser irrestrita resulta em um preo a baixo o suficiente para motivar as pessoas a no copiarem o software de algum que j o tem. De qualquer forma, o que se observa que existem duas formas principais de se adquirir o software: 1. Transferindo o software de um repositrio online na Internet. 2. Adquirindo o software de um distribuidor, que cobra uma taxa pela distribuio deste software. Em muitos casos o software oferecido em uma embalagem, e acompanhado de manuais e mdia digital.

Open Source
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 17/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

O termo Open Source bastante conhecido e descreve melhor a forma de desenvolvimento que aplicada em grande parte dos projetos de software livre. Em portugus a traduo direta Cdigo Aberto; no entanto, a definio demasiado vaga para ser utilizada consistentemente, e por isso ser usada apenas a expresso Software Livre neste trabalho. Raymond define Open Source em [14]. O termo usado para descrever software livre que desenvolvido de forma colaborativa e aberta, e aplicado como um sinnimo de Software Livre em muitos casos3 .1 .

Freeware, Shareware, Domnio Pblico


A palavra Freeware sugere a idia do software ser grtis. Como exposto anteriormente, este termo se aplica mal a software livre, por no reforar a idia de liberdade (que a essncia do software livre), e por indicar preo zero [61]. A traduo imediata da palavra software gratuito. Shareware um termo que descreve software que pode ser redistribudo de forma liberal, mas cujo uso limitado a uma licena que obriga o usurio a pagar aps um perodo de tempo. No se aplica a software livre, que no inclui restries deste carter [61]. Domnio Pblico uma classificao: todo software que no tem copyright (ou seja, cujo autor o abandonou voluntria ou automaticamente), e que pode ser utilizado e modificado sem nenhuma restrio, classificado como Domnio Pblico. software livre no sinnimo de Domnio Pblico, e usar o termo incorreto [62]; a existncia de um copyright associado ao software livre um de seus fatores essenciais.

Copyright e Licenas
Software, como toda produo intelectual, protegido por copyright, que determina quem seu proprietrio. O dono do copyright tem total controle sobre a forma com a qual seu bem pode ser distribudo, e este controle usado de uma maneira peculiar com software livre [63]. A forma com a qual o dono do copyright permite o uso e distribuio do seu bem descrita atravs de uma Licena. No caso de software, existem inmeras licenas; o uso do software ditado por regras descritas nestas licenas3 .2 . Software Livre utiliza licenas e copyright com o objetivo de garantir a liberdade do software a seus usurios. Cada licena oferece alguns detalhes diferentes, e existem hoje algumas dezenas [64]. A tabela 3.1 apresenta as principais diferenas entre as licenas mais utilizadas [65]. Feller faz na sua introduo em [66] uma boa anlise das questes envolvidas com licenciamento.

Tabela: Principais Licenas de Software Livre Exemplos de Licena Restries Efetivamente qualquer software sem licena de domnio pblico, que permite que seu usurio faa o que queira com ele, inclusive modificar e redistribuir. No h nenhum tipo de restrio sobre o software, e pode ser modificado e distribudo sem cdigo fonte, por exemplo.
18/44

Domnio Pblico

http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Permite redistribuio livre do software. Ocasionalmente inclui uma clusula que obriga cpias BSD [67], X [68], MIT redistribudas a manterem um aviso do copyright. No obriga verses modificadas a serem livres, e nem a fornecerem cdigo fonte. Permite redistribuio desde que mantida a garantia de liberdade inalterada aos usurios da cpia redistribuida. Obriga verses modificadas a serem livres, e portanto, a serem fornecidas acompanhadas de cdigo fonte. Permite redistribuio do cdigo em si mantida a garantia de liberdade inalterada. No entanto, permitem que este cdigo seja usado em um ``produto maior'' sem que este tenha que ser licenciado livremente. Se modificaes forem feitas ao cdigo em si, devem ser fornecidas acompanhadas de cdigo fonte. Esta restrio no cobre o cdigo fonte do ``produto maior''.

GPL [69]

LGPL [70], MPL [71]

O assunto de licenciamento um tema bastante controverso dentro da comunidade de software livre, e a questo de compatibilidade importante: em muitos casos, software distribudo com uma licena especfica no pode ser usado em conjunto com software licenciado de forma incompatvel. O que exatamente quer dizer `usado em conjunto', no entanto, motivo de debate. Torvalds, por exemplo, decidiu que o Linux -- embora seja licenciado atravs do GPL -- no proibiria que chamadas do sistema fossem utilizadas por software no-livre. Isto, na prtica, significa que software que executa no Linux no tem necessariamente que ser software livre [72].

Histrico
Software Livre um conceito bastante antigo, embora no tivesse este nome especfico. Software, durante as dcadas de 60 e 70 era desenvolvido de forma colaborativa e aberta em diversas instituies e empresas; o Unix original um exemplo desta tendncia [73]. Embora as licenas no explicitassem claramente liberdade, a redistribuio do software era vista como positiva, e o software geralmente era fornecido com o seu cdigo fonte [74,75] A dcada de 80 trouxe uma alterao importante: a incremental mudana para licenas restritivas, que no permitiam redistribuio. O software fornecido, que at ento era visto como uma combinao de cdigo fonte com cdigo executvel, passou a significar apenas o executvel [75]. O Unix, que era visto como um software nico at ento, se dividiu entre uma srie de fornecedores que introduziram suas alteraes proprietrias, reduzindo a sua interoperabilidade [76].
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 19/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Em 1985, Stallman criou o Free Software Foundation (FSF), cuja finalidade era promover a criao de um sistema operacional completamente livre. Para garantir esta liberdade, Stallman tambm criou uma licena para o software, a GPL, descrita na seo 3.2. O sistema operacional tinha o objetivo de ser compatvel com Unix, e foi chamado de GNU. O desafio de construir o sistema operacional envolvia no apenas a criao de um ncleo de sistema operacional (que at hoje no se encontra em estado de produo), mas a criao de uma coleo de aplicativos e bibliotecas que permitissem ao sistema compatibilidade com o Unix original. Durante esta dcada, o FSF trabalhou desenvolvendo entre outros a suite de compiladores GCC [77], o editor de textos Emacs [78] e as bibliotecas padro libc e glibc [79]. Raymond refora que grande parte do software livre desenvolvido at ento era desenvolvido de forma fechada e pouco colaborativa, e usa o termo ``Catedral'' para descrever o processo de desenvolvimento [14]. Em 1991, um estudante da Universidade de Helsinki, Linus Torvalds, iniciou o desenvolvimento de um ncleo de sistema operacional, o Linux. Este considerado o mais importante exemplo moderno de um software livre desenvolvido de forma aberta. Torvalds convidou outros desenvolvedores a participarem ativamente da codificao e manuteno do ncleo, e, de forma surpreendentemente rpida, este evoluiu para se tornar um software com funcionalidade similar a ncleos Unix comerciais [80]. Um fator que se considera importante para o sucesso do Linux do ponto de vista do processo de desenvolvimento a escolha pela licena GPL, e pela deciso de utilizar a Internet como o canal principal de desenvolvimento.
Relao com Unix

Um detalhe interessante que a cultura em torno de software livre bastante ligada cultura em torno do Unix. Os motivos para esta tendncia parecem derivar de um longo histrico de uso pelos principais representantes do movimento, e pela natureza exploracional e acadmica que o Unix original trouxe. Um tema recorrente entre desenvolvedores uma admirao pela filosofia do Unix original [81], que sumarizada por Gancarz [38] como sendo composta dos seguintes pontos: 1. 2. 3. 4. 5. 6. 7. 8. 9. Pequeno belo. Faa cada programa perfazer uma tarefa apenas, bem. Construa um prottipo assim que possvel; requisitos mudam. Escolha portabilidade sobre eficincia. Armazene dados numricos em arquivos texto. Faa reuso do software para sua vantagem. Use scripts shell para aumentar portabilidade e reuso. Evite interfaces restritivas com o usurio. Faa cada programa ser um filtro de dados para que possa ser usado em conjunto com outros.

Os autores originais do Unix colocam estes pontos repetidas vezes como o motivo principal de sucesso do Unix [82,83]. Esta filosofia adotada informalmente como a filosofia de grande parte dos projetos de software livre, e so citados em comunicaes em listas de discusso de diversos projetos. Desta tradio Unix provavelmente deriva a grande concentrao de software livre desenvolvida para esta plataforma e em seus derivados compatveis.

Definio de um Projeto de Software Livre


Embora no exista publicada uma definio do que um Projeto de software livre, existe um consenso informal de que o software em conjunto com seus desenvolvedores, usurios e repositrios de cdigo e documentos constitui um Projeto, e usada esta nomenclatura neste trabalho. A forma de categorizao do software nos diretrios online de software livre
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 20/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Freshmeat.net [26] e Sourceforge [84] corroboram esta definio. Em sntese, o Projeto de Software Livre, nesta viso, abrange: Cdigo fonte, que o software propriamente dito, mas que existe em forma de inmeras cpias entre todos seus usurios e repositrios de dados. Software Livre em geral tem uma verso bem definida e distribuda a partir de um ponto central conhecido para o Projeto. Um grupo de desenvolvedores, que trabalham para codificar e corrigir este software. Estes desenvolvedores em todos os casos, sem exceo, trabalham colaborativamente atravs da Internet. Os desenvolvedores podem ter status diferenciado dentro do projeto [85]. Os usurios do software. Apesar de todo software ter usurios, a participao do usurio no Projeto de software livre essencial; usurios discutem inovaes e apresentam erros encontrados com freqncia, e atravs deste mecanismo os desenvolvedores so incentivados a trabalhar por um produto melhor [14]. Os repositrios de documentos e cdigo online; todo projeto tem algum Site central que uma referncia para desenvolvedores e usurios buscarem cdigo e informaes atualizados. Alm disso, comum que existam outros repositrios, que podem ser classificados entre: Sites especficos ao projeto. Em ocasies, criado um Site para atender a um segmento dos usurios do software, ou algum aspecto tcnico [86]. Sites direcionados a software livre, onde so informadas verses novas, ou oferecidos servios aos usurios e desenvolvedores [26,84]. Repositrios CVS pblicos, que sero discutidos na seo 3.6.3. interessante perceber que todo o desenvolvimento e distribuio depende essencialmente do uso da Internet, e que esta um pr-requisito para a existncia de um projeto de software livre. Com base nesta explicao, sero fornecidos exemplos reais de projetos de software livre.

Exemplos de Projetos de Software Livre


Existem hoje centenas projetos de software livre em algum estado de desenvolvimento [26], sendo que a maior parte destes j est em algum estado de implementao. Este volume j suficiente para denotar a importncia do conceito. Uma listagem recente de categorias do Freshmeat.net [26] fornecida na tabela 3.23 .3 :

Tabela 3.2: Software Livre em Freshmeat.net por Maturidade Maturidade de Desenvolvimento Nmero de Projetos Em Planejamento Pr-Alpha Alpha Beta Produo/Estvel Maduro 9 37 177 387 611 79

http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000

21/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Dos diversos projetos de sucesso que existem hoje, existem alguns com pertinncia especial por sua forma de organizao, sua base de usurios, ou pela percepo subjetiva de qualidade. Para que se possa entender a difuso do conceito, foram escolhidos alguns projetos representativos para discusso na prxima seo.
Ncleo de Sistema Operacional: Linux

Existe alguma ambiguidade quando usada a palavra Linux, que pode tanto se referir ao ncleo de sistema operacional como ao sistema operacional como um todo, incluindo aplicaes bsicas e de sistema. Neste texto, usaremos Linux para descrever o ncleo apenas. O Linux [87] um ncleo multi-tarefa preemptivo baseado na API definida pelo grupo Posix do IEEE [88]. Foi inicialmente implementado por Torvalds [72], e inteiramente escrito em C e Assembler. O ncleo multi-plataforma; hoje suporta mais de dez arquiteturas diferentes, a mais importante do ponto de vista do desenvolvimento sendo a arquitetura ia32 da Intel [89]. O fato de ser o projeto de software livre mais famoso tambm faz com que muito se tenha estudado do ponto de vista de sua evoluo e organizao, e que existam diversos sites Web dedicados ao tema. O Linux, no entanto, um dos projetos mais desprovidos de infra-estrutura de desenvolvimento: utiliza como ferramenta apenas formas de comunicao eletrnica -- listas de discusso e email. No h repositrio de informes de erros, e tampouco controle de verses pblico.

Tamanho
O tamanho do ncleo em linhas de cdigo motivo de algum debate; em [90] o ncleo 2.4, a verso estvel atual, medido em mais de 2 milhes de linhas de cdigo. Wheeler fez um estudo que um dos mais completos existentes do sistema operacional, e aponta o tamanho do ncleo 2.0, em 1999, em mais de 500.000 `linhas de cdigo lgicas', o que implica contagem omitindo comentrios e linhas em branco. [91]. Godfrey e Tu traam um grfico do crescimento do ncleo em [92] com detalhes individuais da evoluo individual de cada mdulo do ncleo; o crescimento foi classificado por eles como ``super-linear''.

Participao Externa
Moon e Sproull fazem uma anlise histrica do ncleo em [93] em trs diferentes perspectivas: dos indivduos, do grupo e da comunidade; neste trabalho, colocada claramente a importncia do desenvolvimento em comunidade e fornecem estatsticas histricas da participao de desenvolvedores externos no ncleo: ``...em duas semanas do anncio de Torvalds [a respeito lanamento do ncleo] em Outubro de 1991, 30 pessoas tinham contribudo cerca de 200 informes de erros, contribuies de utilitrios e drivers e melhoras para ser adicionadas ao ncleo [...] em Julho de 1995, mais de 15.000 pessoas de 90 pases e 5 continentes tinham contribudo comentrios, informes de erro, correes, alteraes, reparos e melhoras.'' Uma observao da lista de discusso principal do ncleo na semana de 16 de Abril de 2001 aponta 615 participantes em 1597 mensagens [94]. O tamanho da comunidade tem impacto direto sobre a liderana do ncleo, que surpreendentemente convencional.

Organizao
O ncleo hoje tem em Torvalds seu ``dono'', e ele decide quais alteraes so aceitas e a filosofia geral do ncleo. No entanto, crescentemente a responsabilidade pelos mdulos principais do ncleo tem sido atribudos a outros, e de certa forma o ncleo tem diversos ``donos'' em um dado momento [14]. A manuteno da verso estvel, h alguns anos, responsabilidade de Alan Cox.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 22/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Ncleo de Sistema Operacional: FreeBSD

O outro exemplo importante o ncleo FreeBSD. Este ncleo um derivado direto do ncleo BSD original, que originou como uma srie de alteraes ao Unix AT&T original e eventualmente evoluiu para uma base de cdigo quase inteiramente nova [73]. O FreeBSD administrado por um grupo de 9 pessoas, que faz a maior parte da codificao. H um grupo de mais 200 desenvolvedores que tem acesso de escrita ao repositrio de cdigo do projeto. A maior parte das alteraes no-triviais so discutidas na lista de discusso antes de integrao, de qualquer forma, o que permite que seja feita reviso tcnica do projeto e da implementao da alterao. O FreeBSD possui um conjunto de listas de discusso, um repositrio de controle de verses pblico, e uma interface para informes de defeitos. O projeto considerado mais conservador que o Linux por discutir mais profundamente nova funcionalidade e suporta a hardware, e este fator apontado como um motivo para sua relativa lentido a suportar dispositivos novos.
Servidor Web: Apache

O Apache um servidor HTTPD, desenvolvido a partir do servidor NCSA original, e que administrado por um grupo sem fins lucrativos. O Apache um dos projetos livres mais estudados [27,85] e sobre o qual existe bastante material descrevendo sua organizao. O projeto de organiza em torno de um ncleo de desenvolvedores, que fazem a maior parte da codificao. Estes desenvolvedores interagem constantemente com os usurios e com os desenvolvedores secundrios, que tem suas alteraes revisadas publicamente atravs de listas de discusso. No h um lder forte o caso do Linux; o modelo de liderana semelhante ao do FreeBSD. O Apache possui um sistema para informes de defeitos para a Web, uma srie de listas de discusso, e um repositrio CVS pblico. No ltimo ano, houveram duas conferncias Internacionais Apachecon, que tratam especificamente do servidor Web e seus usos [95].
Navegador Web: Mozilla

O Mozilla um projeto criado pela Netscape para desenvolver um navegador Web. O projeto um dos maiores entre os projetos de software livre existentes, e o que conta atualmente com maior apoio financeiro formal. Existe uma preocupao ntida com a garantia de qualidade no Mozilla [96]; uma srie de ferramentas de engenharia de software foi desenvolvida internamente, e o conjunto de documentos detalhando processo, autoridade e status [97] do projeto exemplifica o interesse que o grupo tem pelo processo pelo qual o software desenvolvido. O Mozilla conta com uma rede prpria de IRC (descrito na seo 3.6.3), uma srie de listas de discusso integradas com Usenet3 .4 , e um repositrio de informes de defeitos bastante utilizado, o Bugzilla [98]. A autoridade e responsabilidade no Mozilla dividida. Existem proprietrios dos mdulos principais do sistema [99], e alm disso existe um cargo de driver, que um responsvel por decidir e incentivar o reparo dos defeitos mais importantes. Alm destes, h ainda um grupo que faz reviso tcnicas das alteraes apresentadas, utilizando o Bugzilla integralmente. Um ponto interessante com o Mozilla que o desenvolvimento dirigido pelos informes de erros, e as discusses em torno destes abrangem as salas de IRC e as listas de email. A participao de engenheiros da Netscape continuamente nestes meios de comunicao garante resposta rpida a dvidas e problemas informados, e interessante observar como a comunidade trabalha utilizando as ferramentas de forma integrada.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 23/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Editor de Grficos Bitmap: Gimp

O Gimp um editor bitmap avanado [100] , que em muito se assemelha ao Adobe Photoshop. Possui um bom conjunto de ferramentas e filtros, e uma arquitetura de plug-ins que permitem que seja estendido livremente. De todos os projetos descritos, o Gimp um dos softwares mais completo de recursos; no entanto, seu processo de desenvolvimento extremamente simples. mantido por um conjunto de desenvolvedores pequeno, concentrados na Universidade da Califrnia em Berkeley. Embora tenha uma base de usurios muito grande, o Gimp no utiliza uma grande variedade de ferramentas de Engenharia de Software: utiliza as listas de discusso primordialmente para comunicao, e um canal de IRC para manter discusses em tempo real entre desenvolvedores e usurios. No h um relatrio pblico de status, e at pouco tempo no uma interface independente para informes de erro 3 .5 .

Caractersticas do Processo de Software Livre


De todos os projetos que foram analisados, e de publicaes que tratam do processo, possvel levantar algumas premissas bsicas para o desenvolvimento de software livre. Essas premissas no so uma regra geral que deve ser seguida, mas um levantamento entre membros da comunidade e seus projetos. Uma profundidade melhor desta anlise, com base em dados quantitativos, seria importante. O primeiro tpico a ser abordado trata de atividades do processo. Deve ficar claro que a lista e o contedo das atividades descritas so ainda incompletas pelo fato de existir pouco literatura descritiva.
Metodologia de Desenvolvimento

Existem algumas atividades bsicas que so realizadas em grande parte dos projetos de software livre estudados. Estas atividades esto aqui classificadas de acordo com as fases descritas em 2.2.

Especificao de Requisitos
De forma geral, h pequena nfase do projeto em especificao de requisitos, e muito raramente h um documento formal de especificao [101]. So conhecidos trs fatores principais que motivam esta tendncia: 1. A maior parte dos projetos existentes replica em alguma forma o comportamento de um ou mais softwares no-livres. Esta tendncia apontada por Cook, que afirma que os projetos no so cutting-edge, no sentido de apresentarem pouca inovao [18]. Os exemplos principais que citamos mostram claramente esta tendncia; Unix, por exemplo, um sistema operacional de 30 anos de idade, com grande quantidade de pesquisa e experincia disponvel. Alm disso, existem muitos padres publicados nos segmentos onde existem exemplos de software livre de sucesso: o Posix um exemplo para o Linux, e os padres do W3C norteiam o Apache e o Mozilla. 2. Como colocado por Raymond e O'Reilly, grande parte dos projetos nasce de uma motivao pessoal do autor inicial, que tem um problema a resolver [14,102]. Por este motivo, os requisitos so implicitamente conhecidos, discutidos em listas de discusso com outros interessados, e considerados completos o suficiente para se construir uma primeira verso funcional [101]. Esta primeira verso pode j ser o suficiente para gerar interesse pelo projeto, segundo o prximo tem. 3. O princpio de crescimento evolutivo. Como descrito por Raymond, a melhor tcnica de lanamento de software livre ``Faa releases [do software] cedo, e com freqncia'' [14], e
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 24/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

grande parte dos projetos adota esta tcnica. A prpria filosofia do Unix, colocada por Gancarz [38], afirma que os requisitos so raramente estveis, e que o usurio dificilmente saber o que quer. Em parte, este princpio ecoa as idias colocadas por Brooks de prototipao [37]. Da forma como estes fatores so colocados, difcil determinar se a inexistncia de requisitos formalizados um fator negativo de importncia para projetos de software livre.

Projeto
Durante a fase de projeto, em geral se coloca um projeto a nvel de sistema para um software. No entanto, na maior parte dos sistemas de software livre, no existe uma definio clara da arquitetura do sistema [101]. Existe pouco material publicado discutindo esta ausncia, e aparentemente uma falta grave. possvel que a alta qualidade dos desenvolvedores envolvidos com os projetos, citada por Cook como o fator mais importante para o sucesso de software livre [18], ajude a minimizar este problema. O fato de existir um lder ou grupo de lderes com experincia nos projetos de sucesso, como listado acima, pode ser outra explicao. O fato resta de que existem produtos de software livre sem especificao clara de seu projeto, e no entanto, de sucesso impressionante, como o caso do Linux.

Codificao: Desenvolvimento Colaborativo e Distribudo


A codificao de um software livre inicia em geral imediatamente aps sua idealizao. Ecoando as idias colocadas na seo 3.6.1, a prototipao uma prtica comum, e existe grande impulso para se chegar a uma verso funcional inicial. O ponto mais importante em relao ao desenvolvimento a ser colocado que feito integralmente por meio da Internet. Poucos projetos envolvem desenvolvedores fisicamente prximos, e em geral estes utilizam a infra-estrutura online para discutir suas idias de qualquer forma. Segundo o que se pode levantar do trabalho de Raymond [14], Yamauchi et al. [15], e o processo de codificao se d da seguinte maneira: 1. Um desenvolvedor (ou um grupo) cria uma verso inicial do cdigo em particular, testando e implementando em relativo isolamento. 2. Um anncio feito em algum veculo de comunicao da comunidade: em geral colocada em uma ou mais listas de discusso, e no Freshmeat.net ou outro site associado. 3. Outros desenvolvedores se interessam pelo projeto, transferem o cdigo, e experimentam com o que j foi desenvolvido. Caso tenham dvidas ou sugestes, contatam os desenvolvedores por meio eletrnico. 4. Alteraes ao cdigo so enviadas por email aos autores, e s listas de discusso relevantes. Estas alteraes so feitas na forma de deltas ou patches3 .6 textuais [50]. Estas alteraes so geralmente analisadas e discutidas (embora muitas vezes sejam ignoradas), e um acordo estabelecido sobre a qualidade e pertinncia da alterao. Caso seja julgada uma alterao positiva, integrada ao repositrio de cdigo e ser includa em uma nova verso do software. 5. Alteraes feitas por membros do crculo de liderana do projeto em geral podem ser integradas sem discusso. No entanto, existe o costume de se utilizar uma lista de discusso para registrar automaticamente as alteraes no repositrio, de forma que existir mais de um local onde a alterao estar publicamente visvel. O projeto Wine de emulao Windows possui uma lista de patches neste estilo, como exemplo [103].
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 25/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

importante deixar claro que o desenvolvimento visto como uma atividade bastante individual [102]. Isto significa que durante o processo de codificao de uma alterao, o desenvolvedor trabalha em isolamento; apenas quando deve ser feita a verificao e integrao de sua alterao ao repositrio de cdigo principal que entra o carter colaborativo do software.

Evoluo e Manuteno
A seo anterior descreve implicitamente o que uma caracterstica definitiva para software livre: O software est, em quase toda a sua vida, em produo. A partir do primeiro lanamento, j existiro usurios interessados (caso o projeto tenha despertado algum interesse) e todo o impacto de uma verso lanada se aplica; em especial, compatibilidade de interfaces, desatualizao da documentao e resistncia a mudanas. Skillcorn et al. fazem uma reviso sobre o efeito de alteraes de requisitos sobre software em manuteno, e colocam o problema da seguinte forma [104]: ``Adicionar novos requisitos, remover requisitos parcialmente implementados, ou alterar significativamente requisitos existentes aps um conjunto mnimo de requisitos ter sido estabelecido, um problema comum em manuteno de software. Infelizmente, h poucos mtodos, ferramentas, ou enfoques que tratem do problema hoje...'' Um ponto importante a ser levantado como projetos de software livre minimizam o impacto de alteraes ps-lanamento, j que passam a maior parte de sua vida em manuteno.
Teste e Garantia da Qualidade

Se as atividades bsicas do processo de software esto descritas, ainda resta descrever os processos pelos quais estes projetos so controlados. Software Livre desenvolvido de forma colaborativa e distribuda, de acordo com o modelo ``Bazar'' proposto por Raymond [14] utiliza alguns mecanismos de garantia de qualidade. O artigo de Zhao e Elbaum base importante para esta seo, e o nico estudo direcionado a atividades de qualidade em projetos de software livre [105].

Uso de linguagens de alto nvel


A maior parte do software desenvolvido, hoje, na comunidade, escrito em linguagens de alto nvel [91]. O uso de linguagens de alto nvel apontado por Brooks como sendo um dos principais fatores para a melhora de qualidade e produtividade no desenvolvimento de software [39]. Grande parte dos projetos novos listados no Freshmeat.net [26] so desenvolvidos em Python, Java, PHP e Perl, todas estas sendo linguagens dinmicas, interpretadas, modernas.

Uso de controle de verso


Grande parte dos projetos de software livre hoje utilizam alguma forma de controle de verso [106], e a absoluta maioria utiliza apenas uma ferramenta, o CVS [50]. O controle de verso visto como uma extenso natural do processo de desenvolvimento, e permite que se possa paralelizar o desenvolvimento de forma conveniente, especialmente se tratando de um conjunto muito grande de desenvolvedores. interessante notar que o Linux at hoje no utiliza nenhuma forma oficial de controle de verses, e todas as alteraes so trocadas por email [107]. Torvalds conhecido por pessoalmente analisar a fundo as alteraes que so enviadas e integr-las ao seu repositrio principal, embora parte desta tarefa seja hoje dividida com o chefe da verso estvel, Cox.

Inspeo e Reviso de Cdigo


Todos os projetos implementam extensivamente reviso de cdigo. A reviso acaba acontecendo quase automaticamente, j que as pessoas so foradas pela distncia a enviar modificaes a
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 26/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

outras para integrao. Yamauchi et al. estudaram dois casos distintos de projetos de software, e levantaram respectivamente as propores de 14% e 34.4% do total de comunicao como sendo referentes a contribuies a nvel de alteraes (patches) ou resultados de testes [15]. Raymond coloca esta reviso de uma forma peculiar: ``Dado olhos suficientes, todos os defeitos so rasos''. O sentido implcito na frase que, embora o desenvolvimento seja feito independentemente, a reviso de cdigo utiliza a seu favor a grande massa de interessados para analisar alteraes. Yamauchi et al. colocam de forma interessante o mecanismo social pelo qual feita a reviso de cdigo: todas as decises so negociadas com argumentos estritamente tcnicos, e o processo de discusso essencialmente racional. Os autores indicam que esta racionalidade equaliza os participantes e reduz a necessidade de uma hierarquia [15]. Certamente o que se observa nas listas de discusso que grande parte das mensagens repleta de justificativas tcnicas para defender um ponto de vista.

Teste Beta
O uso do termo Beta pode no ser estritamente correto, mas permite um entendimento mais fcil do modelo de testes usado em projetos de software livre. Em resumo, todo software tratado como permanentemente em Beta, e resultados e opinies dos usurios so sempre recolhidos. A natureza do desenvolvimento, que tem carter contnuo em projetos ativos, permite que esta atitude seja mantida ao longo do tempo. muito infrequente um cenrio onde alteraes esto expostas a um grupo pequeno de desenvolvedores; em geral, qualquer usurio pode escolher usar a verso que desejar [14]. Existe, no entanto, uma diviso ideal em muitos projetos entre uma verso estvel, e uma verso instvel. A verso estvel permite apenas a incluso de correes de defeitos, enquanto a verso instvel permite adio de nova funcionalidade [92]. possvel que esta diviso torne aos usurios menos custoso, efetivamente, estar usando software em desenvolvimento (e portanto teste) contnuo.

Teste Funcional
Embora no seja uma regra geral, e projetos importantes como o Linux no tenham um plano de testes formal, existe uma conscincia de que o software deve ser testado antes de seu lanamento. Em geral, este teste implementado atravs de uma suite de testes funcionais que executada de forma automtica imediatamente antes da instalao do software. Zhao e Elbaum apontam a ausncia de um plano de testes como sendo uma fraqueza potencial do modelo de desenvolvimento utilizado. Segundo estes, a confiana no processo de Reviso de Cdigo e Teste Beta pode no ser justificada, j seu estudo sugere que ocorre menos do que se acreditava previamente [105].
Ferramentas

Os projetos de software livre que foram analisados nesta reviso implementam o uso de pelo menos uma das ferramentas a seguir. interessante notar que existem muito poucas ferramentas, e grande uniformidade entre os projetos de quais so aplicadas. Wilson coloca a ausncia de ferramentas apropriadas como um defeito grave do modelo de desenvolvimento de software livre [108]; no entanto, Yamauchi e Bollinger et al. concordam no ponto que o minimalismo auxilia e simplifica o processo de desenvolvimento de software livre [15,42]. Como visto na seo 2.7, que tratou de Desenvolvimento de Software Descentralizado, o uso de ferramentas essencial para software que desenvolvido desta forma. Toda comunicao tem que ser feita explicitamente por meio de alguma ferramenta, e a habilidade de controlar e verifificar o progresso de um dado projeto, tambm. As ferramentas discutidas a seguir no representam uma lista exaustiva; foram escolhidas pela sua popularidade e utilizao em projetos importantes como
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 27/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

o Linux, o Mozilla e o Apache.

Email
A ferramenta de trabalho mais utilizada, e que usada em todo e qualquer projeto de software livre, o email. Toda correspondncia direta entre desenvolvedores, e entre desenvolvedores e os usurios, feita desta forma [15]. O email bastante utilizado por ser um bom denominador comum entre plataformas e lnguas ; esperado que qualquer desenvolvedor tenha acesso conveniente, e que possa se comunicar com clareza atravs deste meio. O email utilizado para enviar alteraes de cdigo atravs de patches, e para posteriormente discutir estas mudanas [27].

Listas de Discusso
Uma lista de discusso um mecanismo de distribuio de emails para um conjunto de emails de usurios assinantes. Grande parte dos projetos de software livre tem uma ou mais listas associadas, e a lista se torna um dos veculos mais importantes de comunicao com os desenvolvedores [15]. Atravs das listas, usurios solicitam inovaes e comunicam defeitos encontrados. A maior parte das listas armazenada em um repositrio indexado, de forma que possvel pesquisar uma soluo nelas posteriormente [84].

IRC
Nos ltimos dois anos, a comunidade de desenvolvimento de software livre tem passado a utilizar o IRC como uma forma de comunicao instantnea. O IRC um servio de comunicao em tempo real que implementa um paradigma de salas (ou canais), onde membros de uma mesma sala podem comunicar abertamente. Existem diversas redes de IRC, cada rede suportando um conjunto de canais. O IRC oferece a possibilidade de obter resposta e discutir assuntos relacionados ao desenvolvimento sem os problemas gerados pela natureza assncrona do email. O projeto Mozilla utiliza extensivamente o IRC como ferramenta de projeto [98].

CVS
O CVS um software para controle de verses. O CVS um exemplo de sucesso entre projetos de software livre; a maior parte dos projetos o utiliza, e por as caractersticas de simplicidade e compatibilidade que o email oferece [50]. Existe uma interface web para consultar CVS chamada CVSWeb. O CVS largamente documentado e utilizado; no entanto, possui limitaes e inconvenincias, como apontado por McDonald [109]. A falta de integrao com outras ferramentas tambm vista como um problema. No entanto, segue sendo largamente utilizado, e aps anos sem lanamentos, o desenvolvimento de uma nova verso foi registrado recentemente [110]. O sucesso do CVS pode se dever sua caracterstica de bom denominador comum, similarmente ao email.

Bugzilla e GNATS
Existem alguns softwares para controlar informes de erros que so utilizados em projetos de
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 28/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

software livre. O Bugzilla um produto da organizao Mozilla, e um mecanismo integrado de informes feito para a Web [111]. O Bugzilla tem um interface interessante de consultas, pode ser customizado instalao, e utiliza uma base de dados relacional associada. O Bugzilla permite controlar informes a nvel de mdulos e produtos, tem um sistema integrado de comentrios e anexos, e fornece um mecanismo de controle de acesso. O GNATS [112] um outro sistema de controle de informes, sendo este baseado principalmente em email e ferramentas de comando de linha, com uma interface para gerao de relatrios baseada na Web.

Trabalhos Relacionados
Existem alguns trabalhos cientficos publicados que tratam software livre do ponto de vista do processo pelo qual construdo: Yamauchi et al. [15] fazem uma discusso da dependncia de projetos de software livre a meios eletrnicos limitados. Em seu trabalho, caracterizam os tipos de meio usado nos projetos, e verificam as formas pelas quais os projetos se coordenam, inovam e concordam baseados nestes meios. Seu estudo de caso realizado aplicando entrevistas e monitoram correspondncia dos desenvolvedores em dois projetos de software livre. Zhao e Elbaum [105] fazem uma anlise das atividades de qualidade em projetos de software livre, aplicando questionrios aos desenvolvedores e medindo defeitos para caracterizar o uso de testes, inspeo, linguagens e ferramentas nos projetos estudados. Cubranic apresenta um trabalho sinttico em [113], descrevendo alguns projetos, e fazendo crticas e elogios a caractersticas especficas do modelo. No artigo, o autor apresenta algumas sugestes de mudanas ao processo geral de desenvolvimento que visam permitir a software livre ser aplicado a outros nichos que no somente software bsico. Feller e Fitzgerald fazem uma anlise da metodologia de desenvolvimento de software livre em [66], utilizando um framework para classificao de arquiteturas de Sistemas de Informao definido por Zachman em [114]. Os autores ainda fazem uma breve comparao entre o modelo RAD [2] e o processo de desenvolvimento de software livre. Godfrey e Tu realizam um estudo da evoluo do ncleo Linux em [92], usando medies sobre o cdigo fonte deste. Sua concluso que o perfil de crescimento ``inesperadamente forte'', e que o ncleo no apresenta os problemas comuns a projetos de software tradicionais, como apresentado por Lehman3 .7 em [115]. Mockus et al. analisam em [27] o servidor Apache, aplicando um questionrio a lderes do projeto, e analisando listas de discusso e uma base de dados de defeitos. Os autores identificaram as mtricas a ser usadas utilizando o mtodo Goal Question Metric (GQM) de Basili e Weiss [116].

Consideraes Finais
Existe ainda uma grande quantidade de projetos a ser analisada, de onde podem ser retiradas concluses importantes sobre o processo pelo qual so desenvolvidos e administrados. Software Livre apresenta algumas caractersticas interessantes do ponto de vista dos produtos gerados, e na baixa dependncia de infra-estrutura e recursos formais. Tendo em vista estes pontos, ser apresentado no prximo captulo o plano de trabalho, incluindo a metodologia a ser utilizada e as atividades previstas.

Plano de Trabalho
Revistos os tpicos relacionados a Processos de Software, e a Projetos de Software Livre, nesta
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 29/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

seo so abordados o projeto e a metodologia propostos.

Descrio do Projeto
Como colocado na Introduo, o objetivo do projeto caracterizar o processo de desenvolvimento que projetos de Software Livre utilizam, e verificado um processo homogneo, descrever um modelo para este processo. O trabalho constitui um levantamento (survey) de atividades de Engenharia de Software para projetos de software livre. Existem trabalhos anteriores deste tipo; no entanto, so restritos a uma rea especfica da Engenharia de Software, como o trabalho de Zhao e Elbaum [105], que aborda questes relacionada garantia de qualidade.

Metodologia
O trabalho aplicar pesquisa de campo na forma de observao direta intensiva [117,118], de forma exploratria, para levantar e analisar dados quantitativos e qualitativos a respeito dos projetos. A inteno obter dos lderes e participantes das comunidades de desenvolvimento os aspectos particulares de cada projeto, e correlacionar estes dados para sintetizar um conjunto comum de atividades. Para realizar o levantamento, necessrio definir o conjunto de projetos a ser estudados, e com este conjunto aplicar a pesquisa de campo. Os aspectos importantes que os projetos escolhidos devem contemplar foram determinados do conjunto de projetos apresentados no Captulo 3. Estes aspectos so: Uso de um canal comum para comunicao, como uma lista de discusso. Uso de um repositrio de controle de verses pblico. Uso de ferramentas online para gerenciamento do projeto, como os sistemas de acompanhamento de defeitos GNATS e Bugzilla, descritos no captulo anterior. O levantamento poder ser feito atravs de questionrios aplicados individualmente. Para identificar as mtricas pode ser utilizada a metodologia Goal Question Metric (GQM), que j foi aplicada anteriormente a projetos de Software Livre com sucesso [27]. Definir a metodologia a ser aplicada uma tarefa a ser cumprida j ao incio do trabalho. Alm do levantamento de dados atravs de entrevistas individuais, existe a possibilidade de utilizar os repositrios de dados pblicos de cada projeto. Pode ser analisado e quantificado destes dados um conjunto de padres que podem corroborar as concluses obtidas dos dados individuais.

Atividades Previstas
As atividades que devero ser executadas para o cumprimento do trabalho seguem: 1. Pesquisa bibliogrfica, contemplando estudo e anlise dos modelos de processo existentes na literatura; estudo de Projetos de Software Livre, focando na sua organizao, participao e mecanismos de Engenharia de Software implcitos. 2. Pesquisa e definio de uma metodologia para coleta de informaes a ser aplicada no trabalho. 3. Desenvolvimento de uma base para o levantamento de dados, constituindo questionrios, entrevistas e software conforme necessrio. 4. Aplicao, coleta e sntese dos dados coletados em um repositrio para anlise.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 30/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

5. Anlise dos dados, e documentao dos resultados. 6. Escrita e defesa da dissertao. A tabela 4.1 detalha um cronograma para estas atividades; a data de incio coincide com a entrega do monografia de qualificao, Abril de 2001. wh1 lg0.5

Tabela 4.1: Resumo das Atividades do Projeto Meses (2001/2002) Ativ. 1 2 3 4 5 6 Abr Mai Jun Jul Ago Set Out Nov Dez Jan Fev Mar Abr Mai

Bibliografia

by 1.5em by -1.5em 1 DEMARCO, T. Software development: State of the art vs. state of the practice (1993). In: Why does Software Cost so Much? New York: Dorset House, 1st. ed., 1995. 2 PRESSMAN, R. S. Software engineering: A practitioner's approach. 4th. ed. McGraw-Hill, 1997. p. 22-53.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 31/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

3 BOEHM, B. W. The high cost of software. In: Practical Strategies for Developing Large Systems. Menlo Park: Addison-Wesley, 1st. ed., 1975. 4 PRESSMAN, R. S. Software engineering: A practitioner's approach. 4th. ed. McGraw-Hill, 1997. p. 16. 5 KELLNER, M. I. Software process modeling experience. In: Proceedings of ICSE, 11., 1989, Pittsburgh. IEEECSP. p. 400-401. 6 LINDVALL, M., RUS, I. Process diversity in software development. IEEE Software, v. 17, n. 4, p. 14-18, July/August 2000. 7 DEMARCO, T. Mad about measurement (1995). In: Why does Software Cost so Much? New York: Dorset House, 1st. ed., 1995. 8 BECK, K. Extreme programming explained. Reading: Addison-Wesley, 2000. 9 BACH, J. Enough about process: What we need are heroes. IEEE Software, v. 12, n. 2, p. 96-98, March 1994. 10 The Free Software Foundation. What is Free Software? Disponvel em h t t p : / / w w w . g n u . o r g / p h i l o s o p h y / f r e e s w . h t m l . 2001. Visitado em Abril de 2001. 11 MILLER, B. P. et al. Fuzz revisited: A re-examination of the reliability of unix utilities and services. Disponvel em f t p : / / g r i l l e d . c s . w i s c . e d u / t e c h n i c a l _ p a p e r s / f u z z r e v i s i t e d . p s . 1995. Visitado em Fevereiro de 2001. 12 EDWARDS, J. The changing face of freeware. IEEE Computer, v. 31, n. 10, p. 11-13, 1998. 13
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 32/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

VALLOPPILIL, V. V. Open source software - a (new?) development methodology. Disponvel em h t t p : / / w w w . o p e n s o u r c e . o r g / h a l l o w e e n 1 . h t m l . 1998. Visitado em Fevereiro de 2001. 14 RAYMOND, E. S. The Cathedral and The Bazaar. In: The Cathedral and The Bazaar. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 2778. 15 YAMAUCHI, Y., YOKOZAWA, M., SHINOHARA, T., ISHIDA, T. Collaboration with Lean Media: How Open Source Succeeds. In: Proceedings of CSCW, 2000. ACM Press. p. 329-338. 16 RAYMOND, E. S. Homesteading the Noosphere. In: The Cathedral and The Bazaar. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 79135. 17 MCCONNELL, S. C. Open source methodology: Ready for prime time? IEEE Software, v. 16, n. 4, p. 6-8, July/August 1999. 18 COOK, J. E. Open source development: An arthurian legend. In: Position Papers for the ICSE 2001 Workshop: Open Source Development, 2001. IEEECSP. 19 GLASS, R. L. The sociology of open source: Of cults and cultures. IEEE Software, v. 17, n. 3, p. 104-105, May/June 2000. 20 IBM. IBM Linux Technology Center. Disponvel em h t t p : / / o s s . s o f t w a r e . i b m . c o m / d e v e l o p e r w o r k s / o p e n s o u r c e / l i n u x / . 2001. Visitado em Fevereiro de 2001. 21 Apple Computer. Apple - Public Source: Open Source Projects at Apple. Disponvel em h t t p : / / w w w . a p p l e . c o m / d a r w i n / . 2001. Visitado em Abril de 2001. 22 KARPINSKI, R. AOL's Case Supports Open Source. Disponvel em h t t p : / / w w w . t e c h w e b . c o m / w i r e / s t o r y / T W B 1 9 9 8 1 1 3 0 S 0 0 1 3 .
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 33/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

1998. Visitado em Janeiro de 2001. 23 ICSE 2001. Workshop on Open Source Development. Disponvel em h t t p : / / o p e n s o u r c e . u c c . i e / i c s e 2 0 0 1 / . 2001. Visitado em Fevereiro de 2001. 24 Netcraft. Netcraft Web Server Survey. Disponvel em h t t p : / / w w w . n e t c r a f t . c o m / s u r v e y / . 2001. Visitado em Janeiro de 2001. 25 Linux International. Estimates of the Number of Linux Users. Disponvel em h t t p : / / c o u n t e r . l i . o r g / e s t i m a t e s . h t m l . 2001. Visitado em Abril de 2001. 26 Freshmeat.Net. Freshmeat II. Disponvel em h t t p : / / f r e s h m e a t . n e t / . 2001. Visitado em Abril de 2001. 27 MOCKUS, A., FIELDING, R., HERBSLEB, J. A case study of open source software development: The Apache Server. In: Proceedings of ICSE, 2000. IEEECSP. p. 263-272. 28 SOMMERVILLE, I. Software engineering. 5th. ed. Addison-Wesley, 1995. p. 7. 29 PRESSMAN, R. S. Software engineering: A practitioner's approach. 4th. ed. McGraw-Hill, 1997. p. 22-23. 30 SCHWARTZ, J. I. Construction of software. In: Practical Strategies for Developing Large Systems. Menlo Park: Addison-Wesley, 1st. ed., 1975. 31 ROYCE, W. W. Managing the development of large software systems.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 34/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

In: Proceedings of IEEE WESCON, 1970. p. 1-9. 32 DAVIS, A. M., SITARAM, P. A concurrent process model of software development. ACM SIGSOFT Software Engineering Notes, v. 9, n. 2, p. 38-51, April 1994. 33 RACOON, L. The chaos model and the chaos life cycle. ACM SIGSOFT Software Engineering Notes, v. 20, n. 1, p. 55-66, January 1995. 34 BOEHM, B. W. A spiral model of software development and enhancement. ACM Software Engineering Notes, v. 11, n. 4, p. 14-24, August 1986. 35 RISING, L., JANOFF, N. S. The Scrum Software Development Process for Small Teams. IEEE Software, v. 17, n. 4, p. 11-13, July/August 2000. 36 HIRAI, C., SAEKI, N. A proposal of an internet-based software development process model for cots-based systems development. In: Proceedings of ICSE Workshop: Software Engineering Over the Internet, 1998. IEEECSP. 37 BROOKS, F. P. Plan to throw one away. In: The Mythical Man-Month. Reading: Addison-Wesley, 2nd. ed., 1995. 38 GANCARZ, M. Unix Philosophy. Reading: Prentice-Hall, 1995. 39 BROOKS, F. P. No silver bullet. In: The Mythical Man-Month. Reading: Addison-Wesley, 2nd. ed., 1995. 40 LAWSON, H. W. From busyware to stableware. IEEE Computer, v. 31, n. 10, p. 117-119, October 1998. 41 FOWLER, M. The New Methodology. Disponvel em h t t p : / / w w w . m a r t i n f o w l e r . c o m / a r t i c l e s / n e w M e t h o d o l o g y . h t m l . 2001. Visitado em Abril de 2001. 42 BOLLINGER, T., NELSON, R., SELF, K. M., TURNBULL, S. J.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 35/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Open source methods: Peering through the clutter. IEEE Software, v. 16, n. 4, p. 8-11, July/August 1999. 43 LEHMAN, M. M. Some Reservations on Software Process Programming. In: Proceedings of the IEEE/ACM Software Process Workshop, 4., 1988. p. 111-112. 44 XP2001. Extreme Programming Conference. Disponvel em h t t p : / / w w w . x p 2 0 0 1 . o r g / . 1999. Visitado em Abril de 2001. 45 KERNIGHAN, B. W., PIKE, R. The practice of programming. Reading: Addison-Wesley, 1999. 46 SUTHERLAND, J. SCRUM Software Development Process. Disponvel em h t t p : / / j e f f s u t h e r l a n d . c o m / s c r u m / i n d e x . h t m l . 2001. Visitado em Abril de 2001. 47 SCWABER, K. SCRUM Development Process. In: Proceedings of OOPSLA, 1995. Springer-Verlag. 48 COCKBURN, A. Crystal Methodologies. Disponvel em h t t p : / / c r y s t a l m e t h o d o l o g i e s . o r g / . 2001. Visitado em Abril de 2001. 49 MCCONNELL, S. Code complete. 1st. ed. Redmond: Microsoft Press, 1995. 50 BERLINER, B. CVS II: Parallelizing software development. In: Proceedings of the USENIX Winter 1990 Technical Conference, Berkeley, CA. USENIX Association, c1990. p. 341-352. 51 MAURER, F., KAISER, G. Software engineering in the internet age. IEEE Internet Computing, v. 2, n. 5, p. 22-24, September/October 1998. 52
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 36/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

JOHN GRUNDY, J. H., MUGRIDGE, R. Coordinating distributed software development projects with integrated process modelling and enactment environments. In: Proceedings of IEEE WETICE, Stanford. c1998. p. 39-44. 53 FIELDING, R. T., JR., E. J. W., ANDERSON, K. M., BOLCER, G. A., OREIZY, P., TAYLOR, R. N. Software engineering and the www: The cobbler's barefoot children, revisited. Technical report, UCI 96-53, November 1996. 54 HERBSLEB, J. D., GRINTER, R. E. Splitting the organization and integrating the code: Conway's law revisited. In: Proceedings of ICSE, 1999, Los Angeles. IEEECSP. p. 85-95. 55 ALHO, K., SULONEN, R. Supporting Virtual Software Projects on the Web. In: Proceedings of IEEE WETICE, 1998. IEEECSP. p. 10-14. 56 COOK, J. E. Internet-based software engineering enables and requires event-based management tools. In: Proceedings of ICSE Workshop: Software Engineering over the Internet, 1998, Los Angeles. IEEECSP. 57 WHITEHEAD, Jr., E. J., WIGGINS, M. Webdav: Ietf standard for collaborative authoring on the web. IEEE Internet Computing, v. 2, n. 5, p. 34-40, September/October 1998. 58 W3C. The WWW Consortium. Disponvel em h t t p : / / w w w . w 3 c . o r g / . 2000. Visitado em Janeiro de 2001. 59 The Free Software Foundation. Open source. Disponvel em h t t p : / / w w w . g n u . o r g / p h i l o s o p h y / f r e e s o f t w a r e f o r f r e e d o m . h t m l . 2001. Visitado em Abril de 2001. 60 The Free Software Foundation. The free software foundation. Disponvel em h t t p : / / w w w . g n u . o r g / . 26 Mar. 2001.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 37/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Visitado em Abril de 2001. 61 The Free Software Foundation. Categories of Free and Non-Free Software. Disponvel em h t t p : / / w w w . g n u . o r g / p h i l o s o p h y / c a t e g o r i e s . h t m l . 2001. Visitado em Fevereiro de 2001. 62 JASSIN, L. J. What is the Public Domain? Disponvel em h t t p : / / w w w . g i g a l a w . c o m / a r t i c l e s / j a s s i n 2 0 0 0 1 1 p 2 . h t m l . 2001. Visitado em Abril de 2001. 63 FIELD Jr., T. G. Copyright for Computer Authors. Disponvel em w w w . f p l c . e d u / t f i e l d / c o p y S o f . h t m . Sept. 2000. Visitado em Abril de 2001. 64 The GNU Project. Various Licenses and Comments about Them. Disponvel em h t t p : / / w w w . g n u . o r g / p h i l o s o p h y / l i c e n s e l i s t . h t m l . 2001. Visitado em Abril de 2001. 65 PERENS, B. The Open Source Definition. In: Open Sources. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 171-188. 66 FELLER, J., FITZGERALD, B. A framework analysis of the open source software development paradigm. In: , 21., 2000, Brisbane. 67 The FreeBSD Project. The 4.4BSD License. Disponvel em h t t p : / / w w w . f r e e b s d . o r g / c o p y r i g h t / l i c e n s e . h t m l . 1994. Visitado em Fevereiro de 2001. 68 The X Consortium. Terms and Conditions. Disponvel em h t t p : / / w w w . x . o r g / t e r m s . h t m . 2000. Visitado em Abril de 2001. 69 The GNU Project. The GNU General Public License. Disponvel em h t t p : / / w w w . g n u . o r g / c o p y l e f t / g p l . h t m l . June 1991.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 38/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Visitado em Abril de 2001. 70 The GNU Project. The GNU Lesser General Public License. Disponvel em h t t p : / / w w w . g n u . o r g / c o p y l e f t / l e s s e r . h t m l . June 1999. Visitado em Abril de 2001. 71 The Mozilla Organization. The Mozilla Public License. Disponvel em h t t p : / / w w w . m o z i l l a . o r g / M P L / M P L 1 . 1 . h t m l . 2001. Visitado em Abril de 2001. 72 TORVALDS, L. The Linux Edge. In: Open Sources. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 101-111. 73 MCKUSICK, M. K. Twenty years of Berkeley Unix. In: Open Sources. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 31-46. 74 RAYMOND, E. S. A brief history of hackerdom. In: The Cathedral and The Bazaar. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 526. 75 STALLMAN, R. M. The GNU Operating System and the Free Software Movement. In: Open Sources. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 53-70. 76 Warren Toomey. UNIX History Graphing Project. Disponvel em h t t p : / / m i n n i e . c s . a d f a . e d u . a u / U n i x _ H i s t o r y / . 2001. Visitado em Abril de 2001. 77 The Free Software Foundation. The gnu compiler collection. Disponvel em h t t p : / / g c c . g n u . o r g / . 26 Mar. 2001. Visitado em Fevereiro de 2001. 78 The Free Software Foundation. GNU Emacs. Disponvel em h t t p : / / w w w . g n u . o r g / s o f t w a r e / e m a c s / e m a c s . h t m l . 2001. Visitado em Fevereiro de 2001. 79
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 39/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

The Free Software Foundation. The GNU C Library. Disponvel em h t t p : / / w w w . g n u . o r g / s o f t w a r e / l i b c / l i b c . h t m l . 2001. Visitado em Abril de 2001. 80 Thomas Schenk. Linux: Its history and current distributions. Disponvel em h t t p : / / w w w . d e v e l o p e r . i b m . c o m / l i b r a r y / a r t i c l e s / s c h e n k 1 . h t m l . 26 Mar. 2001. Visitado em Abril de 2001. 81 KERNIGHAN, B. W., PIKE, R. The UNIX Programming Environment. Reading: Prentice-Hall, 1984. 82 KERNIGHAN, B. W. The Unix System and Software Reusability. IEEE Transactions on Software Engineering, v. 10, n. 5, p. 513-518, September 1984. 83 PIKE, R. Systems Software Research is Irrelevant. Disponvel em p l a n 9 . b e l l l a b s . c o m / c m / c s / w h o / r o b / u t a h 2 0 0 0 . p d f . 2000. Visitado em Abril de 2001. 84 Sourceforge. Sourceforge. Disponvel em h t t p : / / s o u r c e f o r g e . n e t . 2001. Visitado em Janeiro de 2001. 85 FIELDING, R. T. Shared leadership in the Apache Project. Communications of the ACM, v. 42, n. 4, p. 42-43, April 1999. 86 The Linux-MM Team. Linux Memory Management. Disponvel em h t t p : / / w w w . l i n u x m m . o r g . 2001. Visitado em Abril de 2001. 87 Transmeta Corp. The Linux Kernel Archives. Disponvel em h t t p : / / w w w . k e r n e l . o r g . 2001. Visitado em Abril de 2001. 88 IEEE. Portable Operating Systems Interface (POSIX (R)).
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 40/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

Disponvel em h t t p : / / s t a n d a r d s . i e e e . o r g / c a t a l o g / p o s i x . h t m l . 1995. Visitado em Fevereiro de 2001. 89 DEURZEN, P. A. Linux Architectures. Disponvel em h t t p : / / h o m e . h c c n e t . n l / p . v a n . d e u r z e n / l i n u x w e b / d o c s / a r c h i t e c t u r e s . h t m . 2001. Visitado em Janeiro de 2001. 90 BEIRNE, P. Pat Beirne's Linux FAQ. Disponvel em h t t p : / / p a t b . d y n d n s . o r g / P r o g r a m m i n g / p a t b _ l i n u x . h t m l . 1999. Visitado em Abril de 2001. 91 WHEELER, D. A. Estimating Linux's Size. Disponvel em h t t p : / / w w w . d w h e e l e r . c o m / s l o c . 1999. Visitado em Abril de 2001. 92 GODFREY, M. W., TU, Q. Evolution in open source software: A case study. In: Proceedings of ICSM, 2000. 93 MOON, J. Y., SPROULL, L. Essence of Distributed Work: The Case of the Linux Kernel. Disponvel em h t t p : / / w w w . f i r s t m o n d a y . d k / i s s u e s / i s s u e 5 _ 1 1 / m o o n / i n d e x . h t m l . 2000. Visitado em Janeiro de 2001. 94 BROWN, Z. Kernel Traffic. Disponvel em h t t p : / / h t t p : / / k t . z o r k . n e t / k e r n e l t r a f f i c / k t 2 0 0 1 0 4 1 6 _ 1 1 4 . h t m l . 2001. Visitado em Abril de 2001. 95 The Apache Group. Apache Conferences. Disponvel em h t t p : / / w w w . a p a c h e . o r g / f o u n d a t i o n / c o n f e r e n c e s . h t m l . 2001. Visitado em Abril de 2001. 96 The Mozilla Organization. Mozilla QA Home Page. Disponvel em h t t p : / / w w w . m o z i l l a . o r g / q u a l i t y . h t m l . 2001. Visitado em Fevereiro de 2001. 97
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 41/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

The Mozilla Organization. Mozilla Roadmap. Disponvel em h t t p : / / w w w . m o z i l l a . o r g / r o a d m a p . h t m l . 2001. Visitado em Abril de 2001. 98 The Mozilla Organization. The mozilla.org Community. Disponvel em h t t p : / / w w w . m o z i l l a . o r g / c o m m u n i t y . h t m l . 2001. Visitado em Fevereiro de 2001. 99 The Mozilla Organization. Mozilla Module Owners. Disponvel em h t t p : / / w w w . m o z i l l a . o r g / o w n e r s . h t m l . 2001. Visitado em Abril de 2001. 100 The GIMP Group. GIMP Home. Disponvel em h t t p : / / w w w . g i m p . o r g . 2001. Visitado em Abril de 2001. 101 VIXIE, P. Software engineering. In: Open Sources. Sebastopol: O'Reilly and Associates, 1st. ed., 1999. p. 91-100. 102 O'REILLY, T. Lessons from open source software development. Communications of the ACM, v. 42, n. 4, p. 33-37, April 1999. 103 The Wine Project. Wine Development HQ. Disponvel em h t t p : / / w w w . w i n e h q . c o m . 2001. Visitado em Janeiro de 2001. 104 STARK, G., SKILLCORN, A., OMAN, P., AMEELE, C. R. An examination of the effects of requirements changes on software maintenance releases. Journal of Software Maintenance Research and Practice, v. 11, p. 293-309, 1999. 105 ZHAO, L., ELBAUM, S. A survey on quality related activities in open source. ACM SIGSOFT Software Engineering Notes, v. 25, n. 3, p. 54-57, May 2000. 106 VAN DER HOEK, A. Configuration management and open source projects. In: Proceedings of ICSE Workshop: Software Engineering over the Internet, 2000. IEEECSP.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 42/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

107 CUBRANIC, D. Coordinating open source software development. In: Proceedings of IEEE WETICE Workshop: Coordinating Distributed Software Projects, 1999. 108 WILSON, G. Is the open-source community setting a bad example? IEEE Software, v. 16, n. 1, p. 23-25, January/February 2000. 109 MCDONALD, J., HILFINGER, P. N., SEMENZATO, L. PRCS: The Project Revision Control System. In: Proceedings of the International Symposium on System Configuration Management, 8., Brussels. c1998. 110 Collab.net. CVSHome.org. Disponvel em h t t p : / / w w w . c v s h o m e . o r g . 2001. Visitado em Abril de 2001. 111 The Mozilla Organization. Bugzilla. Disponvel em h t t p : / / b u g z i l l a . m o z i l l a . o r g . 2001. Visitado em Abril de 2001. 112 The Free Software Foundation. GNATS. Disponvel em h t t p : / / w w w . g n u . o r g / s o f t w a r e / g n a t s / g n a t s . h t m l . 2001. Visitado em Abril de 2001. 113 CUBRANIC, D. Open-source software development. In: Proceedings of ICSE Workshop: Software Engineering over the Internet, 1999. IEEECSP. 114 ZACHMAN, J. A framework for IS Architecture. IBM Systems Journal, v. 26, n. 3, p. 276-292, 1987. 115 LEHMAN, M. M., RAMIL, J. F., WERNICK, P., PERRY, D., TURSKI, W. Metrics and laws of software evolution: The nineties view. In: Proceedings of ISMS (Metrics'97), 4., 1997, Albuquerque. 116 BASILI, V. R., WEISS, D. M. A methodology for collecting valid software engineering data. Technical report, TR-1235, College Park, Maryland, 1982.
http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000 43/44

15/4/2014

Caracterizao de um Modelo de Processo para Projetos de Software Livre

117 LAKATOS, E. M., DE ANDRADE MARCONI, M. Fundamentos de metodologia cientfica. 3rd. ed. So Paulo: Atlas, 1991. 118 DE BARROS, A. P., DE SOUZA LEHFELD, N. Fundamentos de metodologia: Um guia para a inciao cientfica. 1st. ed. So Paulo: McGraw-Hill, 1986. p. 90-110. Christian Reis 2001-05-27

http://www.async.com.br/~kiko/quali/quali.html#SECTION00541000000000000000

44/44

You might also like