Inovação, Geração de Conhecimento e Renda com Fábricas de Sofware Open-Source José Damico [email protected] Breve História das Fábricas de Software ● ● ● ● “Perhaps the earliest proponent, R. W. Bemer of General Electric, made many proposals that culminated in a 1968 paper suggesting that General Electric develop a software factory to reduce variability in programmer productivity through standardized tools, a computer-based interface, and a historical database useful for financial and management controls. ... Bemer's paper gave the first working definition of what might constitute a software factory.” “While Bemer focused on standardized tools and controls, M.D. McIlroy of AT&T emphasized another factory-like concept: systematic reusability of code when constructing new programs.” “Reaction to McIlroy's ideas was mixed ... Nonetheless, by the late 1960s, the term ‘factory’ had arrived in software engineering and was being associated with computeraided tools, management-control systems, modularization, and reusability.” “The first company in the world to adopt the term ‘factory’ (actually, its Japanese equivalent ‘kojo’, which translates to either ‘factory’ or ‘work’') to label a software facility was Hitachi, which founded the Hitachi Software Works in 1969.” Software News of 1987 March, page 38, in an article entitled “‘Factories’ for Software?”, reported McNamara's talk in the distinguished lecturer series at the Wang Institute. “Design code for re-use, and register it. Re-use is a secret to productivity”, he said. Objetivo da Fábrica de Software ● Desenvolvimento de softwares de qualidade sob demanda, com gestão de performance e produtividade, com base em componentes reutiliáveis, ferramentas e metodologias padronizadas. Os números da produção de Software (USA) ● 250 bilhões de US$ / ano ● 430.000 – 2.300.000 US$ - custo de projeto ● 16% terminam no prazo e no budget ● ● ● 31% são cancelados devido a problemas de qualidade (81 bi US$ de prejuízo / ano) 53% excedem o custo na média de 189% (59 bi US$ de prejuízo / ano) 42% recursos previstos nos projetos que terminam Standish Group [2002] Um novo modelo de desenvolvimento “Tratar seus usuários como co-desenvolvedores é seu caminho mais fácil para uma melhora do código e depuração eficaz. O poder deste efeito é fácil de se subestimar. De fato, todos nós do mundo do código aberto subestimamos drasticamente como isto iria incrementar o número de usuários e diminuir a complexidade do sistema, até que Linus Torvalds nos mostrou de outra forma. De fato, eu penso que a engenhosidade do Linus e a maior parte do que desenvolveu não foram a construção do kernel do Linux em si, mas sim a sua invenção do modelo de desenvolvimento do Linux.” Eric Raymond (The Cathedral and the Bazaar) Reuso e Gestão do Conhecimento Modelo proposto por em 1989: V.R. Basili, “Software Development: A Paradigm for the Future” Experiência realmente aplicada no Linux a partir de 1991 Experiência amadurecida com Google, Wikipedia e Web 2.0 Comunidade Open-Source O que é uma Fábrica de Software Open-Source? ● Produtora de aplicações em série ● Utiliza padrões abertos ● Desenvolve e distribui sob licenças abertas • • • • • • • • • Apache License, 2.0 New BSD license GNU General Public License (GPL) GNU Library or "Lesser" General Public License (LGPL) MIT license Mozilla Public License 1.1 (MPL) Common Development and Distribution License Common Public License 1.0 Eclipse Public License Como gerar renda nesse modelo? ● Venda – “Actually we encourage people who redistribute free software to charge as much as they wish or can.” (FSF) ● Desenvolvimento patrocinado ● Hospedagem de serviço ● Adaptação ● Integração (empacotamento) ● Treinamento ● Suporte ● Interoperabilidade ● Virtualização Para cada US$ 1 gasto em pacotes, são gastos de 5 a 9 com sua integração Modelos de sucesso (Lucrativos) ● Asterisk ● Compiere / Adempiere ● Conectiva ● JBoss ● SugarCRM ● SourceFire “(...)when a Forrester survey asked respondents about the benefits and concerns associated with open source software, 57% cited lack of support as a key concern. This explains why Red Hat and JBoss are doing well with their model.” As Demandas do Mercado ● ● Soluções dinâmicas e moldáveis Independência de S.O. em virtude de novos produtos microprocessados ● Possibilidade de múltiplas integrações ● Padrões livres de segurança ● Implementações estruturais vs. processamento de dados cotidiano ● Virtualização sobre uma base mínima ● Transações SOA As Demandas da Academia ● Indepência em pesquisas ● Domínio de todo ambiente de pesquisa ● Padrões livres de segurança ● ● ● Treinamento em Computação (Reciclagem de computadores) SOs para infraestrutura de sistemas embarcados de pesquisa Modelo sistêmico Como gerar inovação e conhecimento? ● ● ● ● Acesso a uma base livre de softwares Liberdade de redesenvolvimento e implementação a partir de bases de código-aberto Velocidade de comunicação Re-distribuição em larga escala dos resultados A Influência das Fábricas de Software Open-Source ● ● ● ● Criação de uma base de usuários e desenvolvedores que formam um ecossistema sem fronteiras regionais Fomento de bases de conhecimento públicas Multi-disciplinaridade dos usuários Formação de grupos locais de desenvolvimento e integração Exemplo de Inovação no Mercado ● India-based Encore Software has designed a handheld Internet appliance, called Simputer, based on Linux. Simputer uses the Intel StrongARM chip (known for its low power consumption), 64 Mbytes of RAM, 32Mbytes of flash memory, and a modem to connect to a telephone line. At a cost of less than US$200, Simputer provides Internet and email access in local languages, microbanking, speech recognition, and text-to-speech conversion. Time magazine described Simputer as among the 10 best technological innovations of 2001. India, which has two official languages (Hindi and English), 18 major languages, and 418 officially listed languages, has benefited from Simputer’s low cost, efficiency, and local-language capabilities. For example, India’s Karnataka state accountants use Simputers to collect and upload village data to the government servers, cutting data collection time by an estimated 80 to 90 percent. ● Minha Fábrica de Software Linux Server, Firewall, NAT, www, ftp, samba, nfs ● Eclipse ● Database (MySQL,PostgreSQL,DB2,OracleXE,Derby) ● IBM DevWorks ● Documentacao – (Xdoclets + Javadoc + Readme + ChangeLog) ● Colaboracao ● Controle de versao (CVS) ● Test Case ● Junit, JMeter ● Deploy (Ant,InstallJammer) ● Servers Farm ● IRC, Jabber A escolha das Linguagens ● C ● Java ● Framework Mono ● PHP (simplicidade produtiva) ● Python (simplicidade produtiva) Fábricas de software tradicionais I Fábricas de software tradicionais II Uma nova metodologia para um novo modelo ● eXtreme Programming Valores Princípios Básicos • Comunicação • Feedback rápido • Simplicidade • Presumir simplicidade • Feedback • Mudanças incrementais • Coragem • Abraçar mudanças • Respeito • Trabalho de qualidade. ● Testes obcessivos + Curtas Iterações Passos práticos ● Escolha um problema comum ● Tenha uma abordagem sistêmica ● Desenvolva em módulos reutilizáveis ● Documente ● Distribua Determinantes do reuso ● Publicação completa do código do componente (ativo de software) ● Documentação intuitiva ● Processo simplificado de identificação Lições do Debian ● ● ● ● ● ● Debian developers assemble a comprehensive universe of software products. Debian contains programs which are actually used, as at least one person insisted it be included in the repository. Rules and guidelines ensure a standardized process of including software into the distribution. As a result, the information available for each package is usually complete and dates back until up to 1993. Packages within one version of the distribution are designed to be compatible, hence form an integrated environment of software products. Categories, or sections, within the distribution provide possible sampling foci (sections include editors, web, admin, libs, mail, and so on) For each package, a maintainer assumes personal responsibility and is knowledgeable about the software he or she maintains for Debian. Estudo de Caso: DB2JMIN ● ● ● ● A necessidade de um cliente leve rápido e multiplataforma para o DB2 Primeiro release: 22 de agosto de 2006 (v.: 0.0.1) Segundo release: 06 de setembro de 2006 (v.: 0.0.9) Downloads: – 367 em setembro de 2006 – 1.459 em setembro de 2007 http://sourceforge.net/projects/db2-jmin/ Oportunidades gerais I Volume negociado em 2005 em US$ milhões 5.7 17.7 17.5 Microsoft Unix Linux Segundo o Gartner Group Linux e Microsoft terão seu grande confronto entre 2008 e 2010 Oportunidades gerais II Venda de Computadores com Linux 18 16 14 milhões 12 2006 10 2008 8 6 4 2 0 Row 20 fonte: IDC Oportunidades gerais III 3/ 4 das empresas usam Linux em servidores (fonte: IDC 2006) Oportunidades gerais IV 23% do mercado de dispositivos móveis (fonte: IBM) Oportunidades específicas de negócio ● SOA ● Web 2.0 ● Sistemas de segurança para aplicações proprietárias ● Adempiere ● Sistemas de gestão de processos ● Plugins ● Sistemas móveis ● E-learning ● Gestão do conhecimento Porquê optar por esse modelo? ● “The path you tread is narrow And the drop is sheer and very high The ravens all are watching From a vantage point nearby” Pela identificação pessoal com os princípios: – Mercado restritivo vs. Mercado de Serviços – Renda pela oportunidade vs. Renda pela solução – Foco no benefício individual vs. Foco na solução – Contribuir com uma parte e se beneficiar pelo todo Perguntas? 10/16/07 José Damico Template Documentation [email protected] 30