Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Informtica
PONTIFCIA UNIVERSIDADE CATLICA DO RIO DE JANEIRO RUA MARQUS DE SO VICENTE, 225 - CEP 22451-900 RIO DE JANEIRO - BRASIL
Monografias em Cincia da Computao, No. 20/07 Editor: Prof. Carlos Jos Pereira de Lucena
Abstract. The open source software development movement has increased significantly, and this refers to the success of some projects, due to their quality and trustworthiness. In these projects these attributes are achieved through an meaningful characteristic of the open source, which is the active participation of the users. In this paper, details of the open source software development process and the main activities of its development are presented. Some experimental studies about the open source software process maturity, as well as details of some projects, as Mozilla, Apache, and Linux, are also discussed. Finally, a development process is proposed in this paper. Keywords: Open Source Software, Software Process, Sucessful Open Source Software, Quality. Resumo. O volume de software open source tem aumentado significativamente, e isto se deve ao sucesso de alguns projetos, devido a alta qualidade e confiabilidade por eles alcanada. Nestes projetos estes atributos so decorrentes de uma caracterstica marcante do open source que a participao ativa dos usurios. Nesta monografia so apresentados detalhes do processo de desenvolvimento de software open source, destacando as principais atividades do seu desenvolvimento. Alguns estudos experimentais sobre a maturidade dos processos de software open source, bem como detalhes de alguns projetos como: Mozilla, Apache e Linux so apresentados. Alm disso, um processo de desenvolvimento proposto neste trabalho. Palavras-chave: Software Open Source, Processos de Software, Projetos Open Source de Sucesso, Qualidade.
In charge of publications: Rosane Teles Lins Castilho Assessoria de Biblioteca, Documentao e Informao PUC-Rio Departamento de Informtica Rua Marqus de So Vicente, 225 - Gvea 22453-900 Rio de Janeiro RJ Brasil Tel. +55 21 3527-1516 Fax: +55 21 3527-1530 E-mail: bib-di@inf.puc-rio.br
Sumrio
1 Introduo 2 Caractersticas dos Projetos Open Source 3 Processos de Software Open Source 3.1 Requisitos 3.2 Gerenciamento de Releases 3.3 Testes e Revises de Cdigo 3.4 Comunicao 3.5 Manuteno 3.6 Ferramentas de Apoio 4 Exemplos de Projetos Open Source 4.1 Apache Server HTTP 4.1.1 Papis e Responsabilidades 4.1.2 Evoluo e Manuteno 4.1.3 Alocao de Tarefas 4.1.4 Testes e Inspees de Cdigo 4.1.5 Gerenciamento de Releases 4.2 Mozilla 4.2.1 Papis e Responsabilidades 4.2.2 Evoluo e Manuteno 4.2.3 Testes e Inspees de Cdigo 4.2.4 Gerenciamento de Releases 4.3 Linux 5 Outros Trabalhos 5.1 Cathedral e Bazaar 5.1.1 Cathedral 5.1.2 Bazaar 5.2 Estudos Empricos 6 Caracterizao do Processo 6.1 Papis e Responsabilidades 6.2 Especificar Requisitos 6.3 Desenvolvimento 6.4 Controlar Qualidade 6.5 Lanar Verso 6.6 Utilizar Produto 6.7 Priorizar melhorias 6.8 Atividades Auxiliares 7 Concluses e Trabalhos Futuros 1 1 4 4 5 5 6 6 7 7 7 8 8 8 9 9 9 9 10 10 10 11 11 11 11 12 13 15 16 16 17 17 17 18 18 18 18
8 Referncias
19
1 Introduo
Desenvolver software de qualidade no uma tarefa simples. Diante disso, vrios processos, ferramentas e tecnologias foram criadas a fim de melhorar o processo de desenvolvimento do software. Nos ltimos anos, o volume de software open source tem aumentado significativamente e vem surgindo como um novo modelo de desenvolvimento, motivado entre outros motivos pelo sucesso de alguns projetos tais como Linux, Apache, Mozilla, dentre outros. Alm disso, empresas como por exemplo, IBM e Sun esto concentrando esforos nessa rea como uma forma estratgica de aumentar a produtividade, reduzir custos e diminuir a monopolizao da Microsoft (Fuggetta, 2003). O desenvolvimento de software open source possui algumas caractersticas importantes como: o trabalho voluntrio, o desenvolvimento distribudo, evoluo imprevisvel e desenvolvedores annimos, pelo menos inicialmente. Estes fatores contribuem de maneira significativa na qualidade e no gerenciamento do projeto. O modelo de desenvolvimento de projetos open source considerado por muitos como desorganizado e pouco convencional. Porm, contradizendo as crticas, hoje em dia existem muitos projetos de sucesso com qualidade igual ou superior a softwares proprietrios (Godfrey & Tu, 2000). Segundo Eric Raymond em (Raymond, 1998), o alto nvel de qualidade encontrado em alguns projetos open source ocorre devido ao alto envolvimento dos colaboradores. Porm, essa no a realidade da maioria dos projetos open source, devido a algumas dificuldades como: inexistncia das fases de anlise e projeto, pouco ou nenhum planejamento, testes de software no aplicados formalmente, dentre outros. O objetivo deste trabalho propor, a partir do estudo da literatura, um modelo de processo de desenvolvimento open source. Para isso, alguns projetos de sucesso foram escolhidos como: Apache, Mozilla e Linux. Assim, baseado nos estudos dos processos destes projetos, um processo de desenvolvimento de software open source caracterizado, onde so apresentados todos os detalhes de cada fase do processo. Este artigo est organizado da seguinte forma. As caractersticas dos projetos open source so discutidas na Seo 2. Na Seo 3 so mostrados detalhes dos processos de software open source em geral. Na Seo 4 discute-se alguns projetos open source. Na Seo 5 so apresentados alguns trabalhos relacionados e alguns estudos empricos. Na Seo 6 o processo de desenvolvimento open source proposto neste trabalho apresentado. Finalmente, as concluses e trabalhos futuros so apresentadas na Seo 7.
qualquer software cuja licena garanta ao seu usurio liberdade relacionada ao uso, alterao e
redistribuio. Seu aspecto fundamental o fato do cdigo-fonte estar livremente disponvel para ser lido, estudado ou modificado por qualquer pessoa (Fuggetta, 2003).
Os projetos open source possuem algumas caractersticas importantes que os diferenciam dos projetos de desenvolvimento convencionais, que so: Trabalho voluntrio: a maioria dos desenvolvedores trabalham sem nenhuma motivao financeira. A motivao dos colaboradores vem da busca pelo aprendizado, da satisfao pessoal, o interesse pelo desafio do projeto e o fato de compartilhar conhecimento com profissionais mais experientes. Trabalho no designado: as tarefas no so impostas a ningum, devido ao desenvolvimento inicialmente annimo, isto , onde as pessoas no possuem vnculos nem se conhecem pessoalmente. As pessoas trabalham em partes do projeto nas quais tm mais aptido e interesse. Motivao dos desenvolvedores: o voluntrio possui interesse e satisfao de trabalhar no projeto. Essa motivao pode vir da satisfao pessoal, da necessidade de aprendizado ou mesmo a necessidade de receber reconhecimento profissional. No existem horrios ou listas de entrega: como o trabalho voluntrio, as pessoas trabalham em horrios diversificados e contribuem da maneira que podem, visto que no possuem qualquer compromisso com o projeto. Lanamento de verses: como o trabalho voluntrio e no h compromissos com prazos, o lanamento do produto ocorre quando a equipe de coordenao do projeto, a ser discutido mais adiante, acha que est adequado. Alm disso, ainda pode existir imprevisibilidade do contedo das releases, pois nesse tipo de desenvolvimento difcil existir um cronograma bem definido do projeto. Testes: atividade no considerada to importante em alguns projetos, e quando existe, nem sempre est bem definida uma sistemtica para os testes de software. Planejamento: esta atividade nem sempre possvel, devido ao no determinismo da colaborao.
A participao em projetos open source ocorre em diferentes nveis de participao e envolvimento. De acordo com (Reis, 2003), a classificao dos usurios pode ser: Usurios no participantes: utilizam o software, mas no contribuem para sua melhoria, isto , no tm interesse em discutir e ajudar no desenvolvimento do software mesmo quando encontram erros. Usurios participantes: contribuem ativamente para o projeto, informando erros e discutindo possveis melhorias nas funcionalidades existentes. Estes usurios so responsveis por boa parte da melhoria do software. Desenvolvedores espordicos: usurios que contribuem de vez em quando na implementao do projeto. Alguns membros da comunidade open source tm o papel de desenvolvedor espordico em uma grande quantidade de projetos, contribuindo com solues para problemas simples. Desenvolvedores ativos: contribuem ativamente para o projeto, so responsveis por mdulos especficos.
Equipe de Coordenao: esta equipe responsvel pelo gerenciamento do projeto, isto , por tomar as decises sobre os rumos do projeto tais como: cronograma do projeto e dos lanamento das releases, entrada de colaboradores na equipe, dentre outras atribuies.
Em projetos open source, existem vrios nveis de participao e envolvimentos dos voluntrios, como: Programao; Indicao de falhas e melhorias; Documentao; Divulgao.
O desenvolvimento de software open source visto como um estilo de desenvolvimento pouco convencional, pois na maioria dos projetos no esto definidos alguns mecanismos tradicionais para coordenao de projetos: horrios, projeto do sistema, planos, um processo definido, como por exemplo, RUP (Rational Unified Process). Em um projeto open source de suma importncia se ter um cdigo legvel e uma boa documentao, pois como o cdigo fonte ser distribudo muitas outras pessoas tero acesso e necessitaro t-lo para poderem contribuir com alguma evoluo. A qualidade do cdigo nestes projetos mantida geralmente por uma grande quantidade de testes paralelos (usurios testando o software e reportando bugs encontrados), ao invs de testes sistemticos (Godfrey & Tu, 2000). A documentao tambm parte importante no projeto e est intimamente relacionada ao seu sucesso, isto , satisfatria evoluo do projeto. de extrema importncia que o projeto tenha uma boa documentao tanto para os usurios quanto para os desenvolvedores, para assim existir uma contribuio realmente ativa de ambos. Em (Crowston, Annabi et al, 2003) so mostradas algumas medidas de sucesso para os projetos open source. Na Tabela 1 so exibidas algumas dessas medidas de sucesso apresentadas em (Crowston, Annabi et al, 2003).
Indicadores Qualidade do Cdigo (portatilidade, consistncia, coeso, usabilidade, eficincia, manutenibilidade) Qualidade da documentao Participao nas listas de discusso Sugestes para melhoria do projeto Indicao de erros Nmero de usurios Reuso de cdigo Downloads
O idealizador (autor) do projeto escreve a verso inicial e publica na Internet seu cdigo fonte; Caso o software desperte interesse dos desenvolvedores (usurios), os mesmos propem modificaes e melhorias ao autor; Autor analisa, filtra e incorpora no cdigo as modificaes que considera melhores; Caso o autor no concorde, os pedidos de modificaes so discutidos pela comunidade; publicada uma nova verso; Verso melhorada atrai novos usurios, novas sugestes; Com isso o projeto vai ganhando espao e atraindo cada vez mais colaboradores; Se o projeto no consegue atrair usurios (colaboradores), o projeto morre.
3.1 Requisitos
Na rea de Engenharia de Software, a obteno de requisitos de software uma subrea bastante pesquisada e discutida, chamada de Engenharia de Requisitos. Nela so estudadas o processo de definio e construo dos requisitos do software. Nos softwares comerciais em geral existe uma preocupao intensa na especificao formal dos requisitos, isto , de que o software atenda s necessidades e os desejos explcitos do cliente. Em (Massey, 2002), so discutidos alguns detalhes da obteno de requisitos em projetos open source. A maioria dos projetos open source no possuem uma especificao formal de requisitos. Segundo Massey, as possveis fontes da origem dos requisitos do software open source so: 1. Os requisitos do software podem originar de seus desenvolvedores: esta forma de obteno de requisitos a mais comum nos projetos open source. Como o desenvolvedor um usurio do seu sistema, os requisitos comeam por atender inicialmente s suas necessidades. 2. Os requisitos podem originar-se dos usurios do software: a medida que o usurio vai utilizando o software, eles vo dando retorno (feedback) aos desenvolvedores, propondo mudanas e melhorias no software como um todo. Obvia-
mente, quanto maior a quantidade de usurios ativos, maior ser o retorno obtido. 3. Os requisitos podem originar-se da implementao de padres estabelecidos explicitamente: alguns projetos open source consistem de requisitos de programas j existentes. 4. Os requisitos podem originar-se da implementao de padres de mercado: seguindo a metodologia de empresas de mercado, os requisitos do sistema tendem a seguir alguns padres de implementao de software comerciais. 5. Os requisitos podem originar-se da necessidade de construir prottipos para fins de aprendizado.
Como um dos objetivos do projeto open source a disponibilizao do cdigo fonte, de suma importncia que este esteja bem documentado e legvel. Para tanto, necessrio que haja revises constantes em todo cdigo que alterado no repositrio. Estas revises so feitas pela equipe de qualidade do projeto, a qual verifica o padro de codificao do cdigo e sua documentao. Como as revises so feitas em boa parte da forma no presencial, isto implica que exista uma certa disciplina para que o resultado seja confivel. No caso do teste feito pelo usurio essa disciplina alcanada pela multiplicao da equipe de qualidade, mesmo que s vezes de forma frustrante.
3.4 Comunicao
Em sua maioria, o desenvolvimento de projetos open source feito por comunidades globalmente distribudas e a equipe de desenvolvimento nem sempre se conhece pessoalmente. Diante disso, a comunicao da equipe de desenvolvimento ocorre exclusivamente atravs de ferramentas de groupware, tanto sncronas quanto assncronas, como: e-mail, listas de discusso, chat. Utilizando tais ferramentas possvel discutir o andamento do projeto, as funcionalidades que precisam ser adicionadas, os bugs que precisam ser corrigidos, dentre outros assuntos. Portanto, a comunicao de suma importncia nestes projetos, pois prov um certo dinamismo ao andamento do projeto (Michlmayr, Hunt et al, 2005).
3.5 Manuteno
A fase de manuteno essencial em projetos de software, caracterizando um processo constante de alteraes. As alteraes originalmente so sugeridas pelos usurios do sistema atravs do informe de bugs e sugestes de melhorias no projeto. O processo de solicitao de uma alterao pode ser feita da forma a seguir: O usurio do software ou mesmo o desenvolvedor solicita alguma alterao. Esta sugesto de alterao ou remoo de algum bug feito atravs de uma ferramenta de issue tracker, como por exemplo, o Bugzilla1. Esta a forma utilizada pelo projeto Apache http Server (Mockus, Fielding et al, 2002). 1. Aps essa solicitao, a equipe de coordenao do projeto se rene e analisa a solicitao de alterao. Caso a sugesto seja realmente pertinente, a equipe implementa a alterao. 2. Implementada a alterao, o cdigo passar por um processo de reviso, testes e outras prticas de controle de qualidade, para ento ser disponibilizado. No caso de outros projetos, como por exemplo, o Linux, aps a observao do defeito ou a possibilidade de melhoria, o colaborador tambm a implementa. Assim, no apenas a proposta de alterao ou melhoria submetida, mas tambm a soluo para este problema. Posteriormente, esta soluo examinada pelo resto da equipe de coordenao do projeto, que seria a equipe fixa e os colaboradores ativos do projeto, para que todos possam aprovar a soluo submetida. Este retorno dado pelos usurios um ciclo constante, onde os usurios encontram os erros, submetem os mesmos, estes so corrigidos e posteriormente lanados na prxima verso do produto. Quanto maior o nmero de usurios de um determinado projeto, maior a eficincia desta seqncia, o que nos leva ao fato de que a disponibilizao adequada de um projeto pode influenciar muito em seu sucesso.
1 http://www.bugzilla.org/
2 http://subversion.org/ 3 http://www.nongnu.org/cvs/
4.1.1
Papis e Responsabilidades
O servidor Apache gerenciado pelo grupo Apache HTTP Project Management Committee (PMC), responsvel por guiar e coordenar o desenvolvimento do projeto. Atualmente, o PMC tem em torno de 25 membros. Todas as decises sobre os rumos do projeto, como: evoluo, possveis problemas, planos de desenvolvimento, adio de novas funcionalidades e a entrada de novos membros so tomadas a partir de votaes feitas por e-mail entre os membros ativos do grupo. Os membros ativos so aqueles que mais produziram cdigo para o projeto durante aquela iterao, seja adicionando funcionalidades ou mesmo o conserto de bugs. O PMC responsvel por boa parte da produo do cdigo do projeto Apache. 4.1.2 Evoluo e Manuteno
O projeto Apache, como a maioria dos projetos open source, possui ferramentas importantes que permitem uma maior interao da comunidade com o projeto. Atravs de emails, listas de discusso e uma ferramenta de Issue Tracker, como por exemplo Bugzilla, a comunidade pode contribuir para a melhoria do projeto. Nesta fase de evoluo, vrios pedidos de solicitaes so feitos, possveis problemas ou sugestes de melhorias podem ser enviadas atravs das listas de discusso ou da ferramenta Bugzilla. Alm disso, qualquer pessoa pode sugerir mudanas ou reportar problemas. Cada bug registrado no Bugzilla possui as seguintes propriedades: Proprietrio (Owner); Resumo (Summary); Anexos (Attachments); Comentrios (Comments); Estado (Status); Prioridade (Priority).
No projeto Apache, uma ou duas pessoas so responsveis por fazer a triagem dos problemas registrados no Bugzilla. Assim, rapidamente problemas crticos podem ser resolvidos e os problemas que no so considerados relevantes so descartados. O ciclo do processo de manuteno da Apache pode ser identificado da seguinte forma: 1. O usurio identifica um problema ou uma melhoria no software. 2. A equipe responsvel pela triagem vai analisar o problema e verificar se realmente relevante. 3. Caso seja relevante, o problema enviado para equipe responsvel por aquele mdulo que est com problemas. 4.1.3 Alocao de Tarefas
O grupo da Apache (PMC) responsvel por delegar as tarefas entre os desenvolvedores ativos do grupo. Cada desenvolvedor responsvel por alguma parte do cdigo, isto , mdulos do projeto. Assim, a alocao das tarefas delegada de acordo com os problemas de cada mdulo e endereada a algum desenvolvedor. Quando uma tarefa alocada a um desenvolvedor, o mesmo responsvel por encontrar a melhor soluo possvel para aquele problema. Portanto, a principal dificul-
dade no encontrar uma soluo para o problema, mas sim, dentre um conjunto de solues decidir qual a mais apropriada. 4.1.4 Testes e Inspees de Cdigo
O projeto Apache possui um sub-projeto chamado de Apache HTTP Test Project, responsvel por realizar os testes nos mdulos do projeto. Os testes que so feitos no projeto so testes unitrios, testes de performance, testes de segurana, dentre outros. Todo cdigo enviado para o repositrio precisa ser inspecionado. Essa inspeo realizada por um grupo responsvel por analisar o cdigo e garantir a qualidade do mesmo. As mudanas em verses estveis do sistema exigem que a reviso do cdigo seja feita antes do cdigo ser enviado para o repositrio. 4.1.5 Gerenciamento de Releases
Quando uma verso estvel do servidor Apache (release) est para ser lanada, feita uma votao entre os membros do grupo para elegerem o Gerente da Release. A funo do gerente da release identificar possveis problemas que venham a prejudicar a estabilidade da verso lanada, controlar o acesso ao repositrio para que os desenvolvedores no venham a fazer alteraes que no deveriam ser feitas e identificar quais mudanas so necessrias para a release. O papel de gerente da release varia entre os membros do grupo a fim de que todos possam adquirir experincia com o projeto. Existem trs classificaes para a release: Alpha: quando a release iniciada, automaticamente uma release alpha. Beta: indica que pelo menos trs membros votaram a favor da release. A release beta ainda pode conter erros srios, porm espera-se que a compilao e a realizao de atividades bsicas possam ser executadas. General Availability (GA): esta release recomendada para ser colocada em produo.
4.2 Mozilla
O projeto Mozilla foi criado pela Netscape para desenvolver um navegador Web (Mockus, Fielding et al, 2002). O projeto Mozilla especialmente interessante por usar e oferecer uma srie de ferramentas para apoiar o processo de desenvolvimento, como Bugzilla, ferramenta de Issue tracker; LXR, uma ferramenta que gera pginas Web a partir do cdigo fonte e; o Bonsai que uma ferramenta que permite fazer consultas no histrico de alteraes no repositrio do cdigo. O projeto Mozilla um exemplo de um projeto open source bem documentado, tanto para o desenvolvedores quanto para os usurios finais. 4.2.1 Papis e Responsabilidades
O projeto Mozilla formado por uma equipe fixa de doze membros que coordenam o projeto. Nessa equipe somente quatro contribuem ativamente com o Mozilla Browser e o restante da equipe contribui com o relesase de milestones.
No projeto Mozilla cada mdulo do projeto possui um proprietrio, isto , um gerente. Este gerente responsvel por coordenar a equipe alocada ao seu mdulo e determinar as mudanas e problemas a serem implementadas pela equipe. 4.2.2 Evoluo e Manuteno
Assim como o projeto Apache descrito na subseo 4.1, o projeto Mozilla possui ferramentas que auxiliam na maior interao da comunidade com os desenvolvedores. Qualquer pessoa pode sugerir mudanas ou reportar problemas atravs das listas de discusso e da ferramenta Bugzilla. Toda requisio de mudana registra tambm fatos conhecidos do problema, que podem incluir: a data em que o problema foi encontrado, sua severidade, detalhes sobre como reproduzir o erro, identificao da pessoa que reportou e quem est corrigindo o problema, entre outras informaes. No site do projeto Mozilla mantido um guia com todas as mudanas para as prximas releases, bem como suas datas. 4.2.3 Testes e Inspees de Cdigo
No projeto Mozilla so construdos diariamente builds que executam testes mnimos para garantir que o cdigo produzido no possui bugs. Assim, existe uma garantia que o cdigo contido no repositrio est coeso. Caso os testes identifiquem bugs, eles so postados na lista do projeto para que os desenvolvedores fiquem cientes do problema. Atualmente, o projeto Mozilla possui seis grupos na rea de teste, que tm a responsabilidade de testar vrias partes e aspectos do produto. Estas equipes mantm todo um padro para a parte de testes, casos de teste, planos de teste. Na parte de inspeo de cdigo, o projeto Mozilla usa dois estgios de inspeo de cdigo: 1. inspeo dos proprietrios dos mdulos; 2. grupo de pessoas (supervisores) que analisam o cdigo dos mdulos. Os proprietrios devem aprovar todas mudanas no seus mdulos, quando feitas pelo supervisores. O objetivo dos testes e das inspees de cdigo manter um nvel de qualidade do produto, para assim garantir que o mesmo esteja se comportando de acordo com os requisitos definidos. 4.2.4 Gerenciamento de Releases
O projeto Mozilla produz mensalmente releases pequenas, os chamados milestones. As decises de gerao de milestones so tomadas pela equipe fixa que gerencia o projeto e o cdigo congelado por alguns dias at que todos os bugs e as funcionalidades mais urgentes estejam prontas. No site do projeto Mozilla so mantidas todas as informaes sobre as releases, as novas funcionalidades e os bugs que foram corrigidos.
10
4.3 Linux
O projeto comeou em 1991 com o estudante Linus Torvalds. O projeto do sistema operacional Linux foi baseado em outro sistema operacional chamado Unix. O Unix tinha seu cdigo aberto, mas qualquer modificao no cdigo fonte necessitava da permisso do autor. ...com duas semanas do anncio de Torvalds [sobre o lanamento do ncleo em outubro de 1991, 30 pessoas tinham contribudo com cerca de 200 informes de erros, contribuies de utilitrios e drivers e melhorias para ser adicionados 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 melhorias. (Moon and Sprooull, 2000) Em (Moon and Sprooull, 2000) explica-se que o sucesso do Linux aconteceu devido a: uma licena de software adequada, a boa coordenao e comunicao, a paralelizao de trabalho, o grande envolvimento da comunidade, bem como a motivao da equipe de desenvolvimento. Assim como nos outros projetos citados nas sees anteriores, o projeto Linux tambm possui uma lista de discusso, na qual so registrados os bugs, os problemas que foram corrigidos e as novas releases do projeto. Os programadores que desejam incluir o seu cdigo no Kernel do Linux devem inicialmente submet-lo a lista de discusso para que o cdigo possa ser aprovado pela equipe ativa do projeto. Assim, os programadores podem baixar, testar e sugerir possveis mudanas, ou seja, necessrio que o cdigo seja aceito pela comunidade. O projeto Linux baseado no modelo de desenvolvimento Bazaar que ser apresentado na subseo 5.1.2.
5 Outros Trabalhos
5.1 Cathedral e Bazaar
Eric Raymond em (Raymond, 1998), define dois processos para o desenvolvimento de software open source: o estilo Cathedral e o Bazaar. A diferena principal entre esses dois processos que o Cathedral caracterizado por uma estrutura de planejamento e esforo centralizado de uma equipe especializada, que trabalha com um cronograma bem estruturado e com pequena abertura para participao externa. J o modelo Bazaar, descreve uma forma de trabalho descentralizada e a participao de voluntrios uma das suas principais caractersticas. 5.1.1 Cathedral
O desenvolvimento em Cathedral caracterizado pela participao de um pequeno grupo e no est aberto para participao externa. O estilo de desenvolvimento Cathedral um modelo hierrquico e liderado por um coordenador. Geralmente a fase de testes feita por uma comunidade maior. A motivao das pessoas que participam do processo de desenvolvimento Cathedral feita atravs do pagamento das suas horas de trabalho. caracterstica deste tipo de projeto longos ciclos de desenvolvimento e demoras na entrega de verses estveis. Este estilo de desenvolvimento tratado por Raymond como uma forma conservadora de desenvolver software.
11
5.1.2
Bazaar
No estilo de desenvolvimento Bazaar o software produzido por uma grande comunidade de desenvolvedores, ou seja, neste modelo de desenvolvimento a participao de voluntrios muito importante, caracterizando um trabalho cooperativo e coletivo. As verses do software so liberadas freqentemente neste tipo de desenvolvimento. O software produzido no pago e as pessoas trabalham de forma voluntria. A organizao neste tipo de desenvolvimento extremamente informal, no existem lderes pr-definidos no projeto, tudo feito de maneira bastante democrtica. O sistema operacional Linux um exemplo deste tipo de desenvolvimento. Na Figura 1 ilustrado o ciclo de vida do estilo de desenvolvimento Bazaar.
A fase inicial de um projeto open source no se inicia com a participao imediata dos voluntrios, estilo de desenvolvimento Bazaar, mas sim com o estilo Cathedral. A implementao de uma verso inicial feita pelo autor da idia ou por uma equipe pequena de desenvolvedores sem a participao voluntria (Senyard and Michlmayr, 2004). O sistema operacional Linux, iniciado por Linus Torvalds, um exemplo deste tipo de transio, do desenvolvimento Cathedral e posteriormente para o estilo de desenvolvimento Bazaar. A maioria dos projetos open source iniciam-se pelo estilo Cathedral e posteriormente fazem uma transio para o estilo Bazaar. Esta uma maneira interessante de atrair colaboradores, pois os voluntrios tm acesso a uma verso inicial do projeto e podem conhec-lo melhor antes de colaborar de forma mais ativa. A Figura 2 ilustra essa fase de transio do estilo Cathedral para o Bazaar.
12
Figura 2: Ciclo de desenvolvimento de um software open source (Senyard & Michlmayr, 2004)
A maior parte dos projetos produz muito pouca discusso, poucos projetos geram comunicao intensa.
Em (Michlmayr, 2005) tambm foram realizados alguns estudos de projetos open source no SourceForge para verificar a maturidade dos processos nestes projetos. Neste trabalho foram escolhidos quarenta projetos de sucesso e quarenta que no tem tanto sucesso. Nas Figuras 3 e 4 so exibidos alguns nmeros destacando alguns aspectos desses projetos, como disponibilidade da documentao e a presena dos testes nestes projetos. interessante notar que na Figura 3, tanto os projetos de sucesso quanto os que no tem tanto sucesso possuem deficincia na parte de documentao para o desenvolvedor (75% em projetos de sucesso e 87,5% em projeto que no tem sucesso). Na Figura 4 so exibidos detalhes do uso de gerenciamento de releases, testes automatizados e ferramentas de Issue Tracker. Vale ressaltar a falta de testes automatizados na maioria dos projetos de sucesso (87,5%) e no sucesso (80%), como ponto importante neste estudo.
4 http://sourceforge.net/
13
Em (Michlmayr, Hunt et al, 2005) so apontados alguns problemas que prejudicam a qualidade dos projetos open source. Dentre esses problemas pode-se citar: falta de um gerenciamento de configurao; falta de informao sobre como contribuir para o projeto, prejudicando assim a evoluo do mesmo; dificuldade de alguns projetos para atrair voluntrios; falta de coordenao e comunicao dentro do projeto. Atrair voluntrios uma tarefa extremamente difcil, porm muito importante para o sucesso de um projeto open source. Existem vrias formas para se contribuir em um projeto, como foi mencionado na Seo 2, porm a dificuldade em atrair pessoas que tenham interesse para as atividades de testes e documentao do projeto bastante crtica. Diante disso, s vezes os desenvolvedores ativos ficam sobrecarregados devido a falta de interesse por essas atividades. Segundo Fuggetta em (Fuggetta, 2003), o software open source possui um relacionamento de causa-efeito que garante uma certa qualidade ao produto, como visto na Figura 5. Na Figura 5, possvel perceber o relacionamento de causaefeito, onde uma srie de fatos so desencadeadas devido ao fato do software ser open source, que so: desenvolvedores motivados, o software pode ser testado de uma forma mais efetiva, dentre outros. Assim, todos esses fatos tendem a garantir uma melhor qualidade do software, proporcionando assim uma grande quantidade de usurios satisfeitos.
14
15
Necessidades Idias
Usurio Participante/Desenvolvedor Usurio Participante/ Desenvolvedor
Especificar Requisitos
Desenvolvimento
Controlar Qualidade
Coordenador
Priorizar Melhorias
Usurio Participante
Coordenador
Utilizar Produto
Lanar Verso
Ferramentas de Comunicao
16
mas tambm tente documentar o porqu das alteraes e o seus objetivos. Obviamente, essa uma maneira um pouco conflitante com as caractersticas dos projetos open source em geral, onde no existe uma especificao cuidadosa, porm no processo aqui proposto busca-se pelo menos ter uma documentao mnima, para assim facilitar a evoluo do projeto e a entrada de novos colaboradores. Vale ressaltar que esta tentativa pode no ter tanto xito na maioria dos projetos open source devido ao seu desenvolvimento distribudo e informal. Como descrito na subseo 3.1, em grande parte dos projetos de software open source os requisitos so iniciados pelo prprio autor.
6.3 Desenvolvimento
A fase de desenvolvimento compreende a codificao do projeto. Nesta fase, caractersticas so incorporadas ao cdigo, bugs so corrigidos, so feitos refatoramentos de cdigo. A fase de desenvolvimento ocorre de maneira pouco formal na maioria dos projetos open source e o tempo de desenvolvimento pode variar de projeto para projeto.
Um processo de desenvolvimento de qualidade freqentemente tem como resultado um produto de qualidade. O conceito de qualidade um pouco difcil de se definir, pois cada um percebe a qualidade de maneira diferente. De uma forma geral, a qualidade de software definida neste processo que o software esteja funcionando de acordo com o seus requisitos explcitos e implcitos e que o cdigo fonte esteja legvel e bem documentado.
17
18
Os projetos open source possuem um processo evolutivo constante e dificilmente chegam a um final definitivo, visto que quando o software atinge um estgio de desenvolvimento considerado satisfatrio para os autores, este estgio pode no ser considerado satisfatrio para alguns colaboradores do projeto. Mesmo que o grupo de desenvolvedores originais abandone o projeto em algum momento, nada impede que outros desenvolvedores continuem o desenvolvimento do projeto em uma verso paralela. Portanto, um projeto open source est sempre em evoluo. Os benefcios do modelo de desenvolvimento open source que podem ser citados so a gerao de cdigo de alta qualidade (menos defeitos), correo rpida de falhas e a colaborao na construo de produtos que no poderiam ser construdos por cada participante isoladamente, devido a sua complexidade ou custo. Alm dos detalhes do processo de desenvolvimento dos projetos Mozilla e Apache Server em (Mockus, Fielding et al, 2002), os autores levantam algumas hipteses sobre o desenvolvimento de software open source, sendo as mais relevantes: 1. Um software open source tem um ncleo de desenvolvedores que controlam o cdigo base. Esta equipe de desenvolvedores formada de dez a quinze pessoas e possui o domnio de cerca de 80% do cdigo. 2. Em projetos open source de sucesso, um grupo maior de desenvolvedores ir submeter reparos para defeitos e outro grupo ainda maior, ir informar defeitos. 3. Os desenvolvedores tambm so usurios do software. 4. Projetos open source oferecem resposta rpida a problemas reportados por usurios finais. Portanto, pode-se dizer que o processo de desenvolvimento de software open source um estilo de desenvolvimento que valoriza a participao ativa dos colaboradores, visto que a sua participao essencial para o sucesso do projeto, bem como para a manuteno do processo de desenvolvimento. Nestes projetos existe a satisfao e o reconhecimento aos desenvolvedores e usurios participantes. Como trabalhos futuros, espera-se realizar alguns experimentos a fim de validar o processo de software open source proposto neste trabalho. Alm disso, com base nestes experimentos pretende-se realizar alguns estudos estatsticos para efetivamente formalizar os experimentos realizados.
Referncias
Becta ICT Advice (2004), FITS Release www.becta.org.uk/tsas/docs/fits_release.pdf. Management. Disponvel em:
Crowston, K., Annabi, H. & Howison, J. (2003). Defining Open Source Software Project Success. In Proceedings of the International Conference on Information Systems (ICIS), Association for Information Systems, Seattle, Washington, USA, pp. 327-340. Cubranic, D. & Booth, K. S. (1999). Coordinating open-source software development. In Eighth IEEE International Workshop on Enabling Technologies: Infrastructure for Collaborative Enterprises, IEEE Computer Society Press, Stanford, CA, USA, pp. 61-65. Fuggetta, A. (2003), Open source software - an evaluation., Journal of Systems and Software 66(1), 77-90.
19
Godfrey, M. W. & Tu, Q. (2000), Evolution in Open Source Software: A Case Study, In International Conference on Software Maintenance (ICSM), San Jose, California, USA, pp. 131-142. Humphrey, Watts S. (1989). Managing the Software Process. Addison-Wesley. Krishnamurthy, S. (2002). Cave or Community? An Empirical Investigation of 100 Mature Open Source Projects. First Monday. Massey, B. (2002), Where Do Open Source Requirements Come From (And What Should We Do About It)?. In Proceedings of the 2nd Workshop On Open-Source Software Engineering, Orlando, USA, pp. 36-38. Michlmayr, M. (2005), Software Process Maturity and the Success of Free Software Projects. In Software Engineering: Evolution and Emerging Technologies, IOS Press, pp. 3-14. Michlmayr, M., Hunt, F. & Probert, D. (2005), Quality Practices and Problems in Free Software Projects, in M. Scotto & G. Succi, eds, Proceedings of the First International Conference on Open Source Systems, Genova, Italy, pp. 24 - 28. Mockus, A., Fielding, R. T. & Herbsleb, J. D. (2002). Two case studies of open source software development: Apache and Mozilla.. ACM Trans. Software Engineering and Methodology 11(3), 309-346. Moon, J. Y.; Sproull, L. Essence of Distributed Work: The Case of the Linux Kernel. First Monday, v. 5, n. 11, novembro 2000. Disponvel em: http://www.firstmonday.org/issues/issue5_11/moon. Acesso em julho de 2007. Netcraft (1995), Netcraft Ltd. Disponvel em: http://news.netcraft.com Acesso em julho de 2007. Raymond, E. S. (1998), The Cathedral and the Bazaar. Disponvel em: http://www.freesoft.org/literature/papers/esr/cathedral-bazaar/. Acesso em agosto de 2007. Reis, C. R. (2003). Caracterizao de um Processo de Software para Projetos de Software Livre. Dissertao de Mestrado, Universidade de So Paulo, So Carlos - SP. Robbins, J. E. (2002). Adopting OSS Methods by Adopting OSS Tools. In `Meeting Challenges and Surviving Success: The 2nd Workshop on Open Source Software Engineering', ACM, pp. 42-44. Senyard, A. & Michlmayr, M. (2004). How to Have a Successful Free Software Project. In `APSEC '04: Proceedings of the 11th Asia-Pacific Software Engineering Conference (APSEC'04)', IEEE Computer Society, Washington, DC, USA, pp. 84-91. Sommerville, I. (2004), Software Engineering, International computer science series, 2nd ed., Addison-Wesley, Wokingham.
20