A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior Agosto de 2004.

Apresentações semelhantes


Apresentação em tema: "Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior Agosto de 2004."— Transcrição da apresentação:

1 Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

2 Roteiro  Introdução Software Livre Código Aberto Licenças  Modelos de Organização Catedral e Bazar  Sites de suporte SourceForge.net Java.net  Considerações sobre Open Source Software  Open Source Software Development

3 Software Livre  Refere-se à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro tipos de liberdade, para os usuários do software : Liberdade de executar o programa Liberdade de estudar o programa e adaptá-lo à suas necessidades Liberdade de redistribuir as cópias Liberdade de aperfieçoar o programa  Ideologia defendida pela comunidade Free Software Foundation GNU/Linux

4 Open Source Software  A definição de software aberto é um pouco menos restritiva que a definição de software livre  Questões ideológicas Uma maneira de fazer negócios e uma metodologia de desenvolvimento  Definição Distribuição Livre  A licença não deve restringir a vontade de vender ou dar um software como componente de distribuição, não deve requerer royalties Código Fonte Derivação de trabalho Integridade do código fonte do autor …

5 Licenças  Distinguir as várias licenças disponíveis, assim como conceitos abordados por elas Software livre x Software não-livre  Software semi-livre – Software semi-livre é software que não é livre, mas que vem com permissão para indivíduos usarem, copiarem, distribuírem e modificarem (incluindo a distribuição de versões modificadas) para fins não lucrativos – Possuem restrições adicionais

6 Licenças  Domínio Publico Todo software que não está protegido com copyright  Freeware Distribuição de pacotes sem taxação, porém sem acesso ao código fonte  Shareware – Shareware é software que vem com permissão para redistribuir cópias, mas diz que qualquer um que continue usando uma cópia deve pagar por uma licença Não é livre ou até mesmo semi-livre

7 Categorias de Distribuição

8  Copyleft – O software protegido com copyleft é um software livre cujos termos de distribuição não permite que redistribuidores incluam restrições adicionais quando eles redistribuem ou modificam o software. Para tornar um programa copyleft  Primeiro registra o copyright  Em seguida é adicionado os termos de distribuição Copyright usado para garantir a liberdade dos usuários

9 Copyleft  GPL é um conjunto de termos de distribuição específico para proteger um programa com copyleft. http://www.gnu.org/licenses/gpl.html  LGPL Aplicado, geralmente, a bibliotecas. http://www.gnu.org/licenses/lgpl.html  FDL Aplicado a manual, livro-texto http://www.gnu.org/licenses/fdl.html

10 Licenças  XFree86 Style Grupo de licenças que não são copyleft, são baseadas nas Licenças BSD. O redistribuidor pode acrescentar restrições Licenças do grupo FreeBSD, XFree86, X11 Exemplo: X Window System (X11)

11 Compatibilidade de Licenças

12 Modelos de Organização  Modelo Catedral Modelo seguido pelas grandes empresas de software proprietário, onde se tem equipes de desenvolvedores, projetistas, gerentes que trabalham de uma maneira mais fechada ao ambiente externo Funcionalidades do software são controlados por projetistas, pressões de mercado, possivelmente dirigido por um departamento de marketing

13 Modelos de Organização  Modelo Bazar Estilo adotado no desenvolvimento do Linux, com características diferentes do modelo catedral, que inspirou vários modelos de desenvolvimento opensource Funcionalidades orientadas pelos usuários, especialmente, desenvolvedores. Evolução ocorre de acordo com a disponibilidade dos programadores

14 Modelo Bazar  Modo de tratamento dos usuários Tratá-los como co-desenvolvedores e/ou beta testers  Liberar cedo e freqüentemente Estimula os usuários Dados olhos suficientes, todos os erros são triviais, impacta no tempo de depuração

15 Modelo Bazar  Pré-condições A comunidade nascente de desenvolvedores deve ter algo real para se testar e utilizar Convencer os possíveis co-desenvolvedores que o código pode evoluir para algo elegante num futuro próximo O projeto deve ter uma ótima via de comunicação Boa habilidade do coordenador com comunicação e relacionamento

16 Sites de Suporte OSD  SourceForge.net É um Web Site de desenvolvimento de software open source e provê um repositório de milhares(mais de 30.000) de projetos Tem a meta de enriquecer a comunidade Open Source provendo um lugar centralizado para desenvolvedores controlar e gerenciar seus projetos, assim como uma forma de dar visibilidade necessária

17 SourceForge.net Services  SourceForge Collaborative Development System (CDS) web tools Conjunto de ferramentas que auxilia no gerenciamento de equipes virtuais, postar notícias, gerenciar outros serviços providos pelo site  Tracker: Tools for Managing Support Conjunto de ferramentas que ajudam aos usuários postar bugs, sugestões, submeter patches para revisão  Mailing lists and discussion forums

18 SourceForge.net Services  MySQL Database Services Se um projeto necessitar de usar um banco de dados de teste este é provido pelo site  Shell services and compile farm Acesso aos servidores via SSH, pode-se manipular o conteúdo da página diretamente Acesso à vários sistemas operacionais para testar e gerar binários de distribuição do software  Project CVS Services

19 Sites de Suporte OSD  Java.net Site criado para desenvolvedores trocar experiências, compartilhar código e idéias e participar de projetos e comunidades No Site temos weblogs, espaço para publicar eventos e encontros Incentivar a colaboração e fortalecer as comunidades

20 Java.net  Acompanhamento do projeto por Comunity Managers, caso alguma empresa se enteresse pelo projeto o Community Manager apresenta o projeto e contata a equipe  Visibilidade dos projetos mais “movimentados”

21 Java.net  Idéia de categorias de usuários pré- configurados no sistema Project Owner Developer Content Developer Observer  Serviços providos pelo site Web CVS

22 Java.net  Issue Tracker Ferramenta de acompanhamento de pendências  Documents & Files  Announcements  Listas de e-mail  Fórum  Wiki

23 Open Source Software  Algumas considerações: Maior confiabilidade;  O software é controlado pelos próprios clientes e não pode ser arbitrariamente modificado por uma decisão do vendedor; Custos menores; Ciclos de desenvolvimento pequenos; Código com mais qualidade  Incluindo segurança;  Tecnicamente, código proprietário está se afundando por conta das elevadas taxas de erro; Cuidado: Qualidade não significa livre de bugs;

24 Open Source Software  Algumas considerações: A evidência da superioridade do software de código aberto não está na academia, mas no mundo real;  Ex.: Linux, Apache; Quem perde?  Monopolistas de software e investidores especulativos; Mito:  Desenvolver software de código aberto em escalas maiores que “projeto de garagem” é insustentável e não é capaz de ter retorno do mercado;  Software de código aberto deve ser mais centrado no serviço do que no produto;

25 Open Source Software  Algumas considerações: Software de código aberto não se encaixa em qualquer modelo; Programadores devem ter uma motivação direta;  Esta motivação não se aplica às organizações; Usuários querem soluções estáveis;  Usuários não programadores não devem ser testadores ou debuggers; A maioria dos softwares de código aberto carecem de aspectos de usabilidade;

26 Open Source Software  Algumas considerações: Qual o custo da qualidade?  Ter centenas ou milhares de programadores purificando o código é totalmente produtivo;  Mas isto não é evidente com trabalho voluntário;  Isto é justificável para algumas infra-estruturas altamente utilizadas;

27 Open Source Software Development Ciclo genérico para desenvolvimento de software de código aberto

28 Open Source Software Development  Como processo de criação de software, open source development (OSD) é incompleto [2]; Alguém deve entender as necessidades/requisitos; Alguém deve projetar uma arquitetura e adaptá-la ao longo da evolução do produto; Alguém (ou um grupo) deve estar centrada em coordenar/gerenciar; Suporte e treinamento devem ser fornecidos;

29 Open Source Software Development “Qualquer grupo de pessoas (ou indivíduos únicos) desenvolvendo software e oferecendo seus resultados ao público sob uma licença Open Source” (Open Source Definition)  Algumas Características: Altamente Colaborativo; Geograficamente Distribuído;  Cenário não apresenta favorecimento ao sucesso do projeto devido: Ao número de pessoas envolvidas; Condições de trabalhos destas pessoas;

30 Open Source Software Development  Metas não voltadas para o mercado;  Desenvolvedores freqüentemente são voluntários;  Concentração de esforços de acordo com o interesse do desenvolvedor;  Difícil convencimento para execução de tarefas essenciais; Testes sistemáticos; Reestruturação de código;

31 Open Source Software Development  Cronograma Imune ao “time-to-market”;  Qualidade de código;  Padronização do código;  Código instável; 2 formas de manter desenvolvimento concorrente:  “development” release;  “stable” release;  Evolução planejada, testes e manutenção preventiva;

32 Open Source Software Development  Características Marcantes Colaboração Descentralizada; Liderança; Motivação interna;  Contribuições por razões como: comunidade, status, oportunidades, satisfação pessoal; Comunicação assíncrona;

33 Open Source Software Development Desenv. ConvencionalDesenv. Open Source DesenvolvimentoLinearParalelo Custo do Desenv.AltoBaixo OrganizaçãoCentralizadoDescentralizado GerênciaHierárquicaComunidade Colaborativa Liderança Emergente Aprendizagem Organizacional LinearParalela Usuários- desenvolvedores SeparadosSobrepostos Nº de participantesLimitadoIlimitado SistemaFechadoAberto Flexibilidade de plataforma BaixaAlta

34 Open Source Software Development “Equipes virtuais são equipes que enfatizam três fatores básicos: compartilham uma meta ou interesse, estão geograficamente distribuídos e fazem uso de tecnologias de comunicação e informação para comunicar e gerenciar interdependências” (Ahuja and Carley 1998) Relacionamentos múltiplos com diferentes pessoas Meio convencional de gerência Necessariamente, não fazem parte da mesma organização Todos os membros dentro de uma organização Distribuídos geograficamenteMesmo espaço físico Equipes VirtuaisEquipes Convencionais

35 Open Source Software Development  Contextos favoráveis: Comunidades com necessidades de software não satisfeitas; Comunidades de usuários tecnicamente sofisticada; Software de infra-estrutura e propósito geral;  Contextos desfavoráveis: Domínios altamente verticais; Domínios altamente competitivos; Domínios de alta segurança; Domínios de alta confiança;

36 Open Source Software Development  Porque open source funciona? Redução de custos de aquisição; Diversidade e escala; Simplificação do processo de colaboração; Integração efetiva da comunidade de usuários; Divisão do trabalho em alta escala; Pequenos ciclos de feedback; Inversão de conceitos;

37 Como OSD está afetando o desenvolvimento de software?  Mais praticidade Possibilidade de reutilizar componentes, bibliotecas, frameworks, etc.  Pela perspectiva do desenvolvedor, open source tem 2 propriedades importantes: Código fonte visível; Direito de fazer derivações; Estas 2 propriedades afetam o produto e o processo de desenvolvimento;

38 Como OSD está afetando o desenvolvimento de software?  Influência no produto: Impacto mais óbvio  Reutilizar elementos de software existentes;  2 benefícios:  O código reusado terá tipicamente mais qualidade;  A funcionalidade do elemento reusado será mais completa;  Granularidade do reuso:  Linhas de código, métodos, classes, biblioteca, componentes, ferramentas ou sistemas completos;

39 Como OSD está afetando o desenvolvimento de software?  Influência no produto: Disponibilidade do código fonte Leva a melhorias, consertos e suporte aos elementos reusados;  Mitigam os riscos com componentes órfãos ou com caminhos evolutivos incompletos; É preciso ter cuidado com as dependências entre os elementos utilizados; Reusar componentes também pode afetar o modelo de licença do produto final; Nenhum processo padrão conjunto de métricas são utilizados para avaliar a qualidade;

40 Como OSD está afetando o desenvolvimento de software?  Influência no processo: Acesso a ferramentas mais sofisticadas; Se o software reusado não está evoluindo ou está evoluindo num sentido inconsistente com a necessidade da organização, então a organização deve alocar recursos para contribuir com sua melhoria; Os elementos de software que estão sendo reusados precisam ser integrados ao processo de desenvolvimento;

41 Como OSD está afetando o desenvolvimento de software?  Influência no processo: A adoção de práticas de desenvolvimento de código aberto pode causar desatenção:  No plano estratégico;  No detalhamento dos requisitos;  Nos testes;  No suporte;

42 Open Source Projects [8]  Investigação em 80 projetos open source; Linux, Apache, Mozilla, outros.  Características Comuns: Adesão ao Open Source Definition; Desenvolvedores são usuários;  Características Variáveis: Ponto de Partida; Motivação; Comunidade; Suporte ao desenvolvimento de software; Licença; Tamanho;

43 Open Source Projects Classificação dos usuários e desenvolvedores open source

44 Gerência de Configuração  Controle de Versão;  Gerenciamento de builds;  Seleção de Configuração;  Gerenciamento de Wokspace;  Controle de concorrência;  Gerenciamento de mudanças;  Gerenciamento de release;

45 Referências  [1] RAYMOND, Eric S. Up from Alchemy. IEEE Software, January/February 2004.  [2] MESSERSCHMITT, David G. Back to the User. IEEE Software, January/February 2004.  [3] WU, Ming-Wei, LIN, Ying-Dar. Open Source Software Development: An Overview. IEEE Software, June 2001.  [4] SPINELLIS, Diomidis, SZYPERSKI, Clemens. How is Open Source Affecting Software Development? IEEE Software, January/February 2004.  [5] DAFERMOS, George N. Management and Virtual Descentralised Networks: The Linux Project. Disponível em: http://www.firstmonday.dk/issues/issue6_11/dafermos. Acessado em: 10 de Agosto de 2004 http://www.firstmonday.dk/issues/issue6_11/dafermos

46 Referências  [6] ASKLUND, Ulf; BENDIX, Lars. A Study of Configuration Management in Open Source Software Projects. Lind Institute of Technology.  [7] LIMA, Carlos A.;GUERRA, Fabricio V. Desenvolvimento de Open Source – Gerenciando Equipes Virtuais para Alcançar Bons Resultados. Universidade Federal de Campina Grande, 2003.  [8] GACEK, Cristina; ARIEF, Budi. The Many Meanings of Open Source. IEEE Software, January/February 2004.  [9] GODFREY, Michael W. Evolution in Open Source Software: A Case Study. Proceedings of the International Conference on Software Maintenance, 2000.

47 Bibliografia  Raymond, Eric S.: The Cathedral & the Bazaar, 1998 http://www.catb.org/~esr/writings/cathedral- bazaar/cathedral-bazaar/  Open Source Initiative: The Open Source Definition, http://www.opensource.org/docs/definition.php  GNU Operating System - Free Software Foundation, http://www.fsf.org  http://sourceforge.net/index.php  The Source for java Technology Collaboration http://www.java.net/


Carregar ppt "Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior Agosto de 2004."

Apresentações semelhantes


Anúncios Google