Seminário de Engenharia de Software Fábricas de Software Conceitos, Organizações, Exemplos César França & Eduardo Oliveira 18/Maio/2005 Parte I Conceitos • “Fábrica de Software”: Utilizado pela primeira vez no Japão em 1969 Várias Empresas associam o termo Fábricas de Software Ao mero desenvolvimento de Software Fábricas de Software ? ~ 60/70: Ambiente Incerteza no desenvolvimento de projetos de SW • • • • • Confiabilidade Manutenção Falta de definição dos processos de produção Falta de padronização de métodos e ferramentas Falta de Ferramentas de especificação Fábricas de Software ? ~ 60/70: Ambiente System Development Corporation (EUA) Hitachi Software (JPN) – Manuais de Produção ~ 70 (Final) Toshiba – Soluções Fabris para produção de Software O Processo Fabril “Construirei um carro para as grandes massas, feito com os melhores materiais, pelos melhores homens que puderem ser contratados e seguindo os projetos mais simples que a moderna engenharia pode conceber [...] de preço tão baixo que qualquer homem que ganhe um bom salário seja capaz de possuir – e desfrutar com sua família a bênção das horas de prazer nos grandes espaços abertos da natureza” Henry Ford,1899 O Processo Fabril • Revolução Industrial (Séc XIV) Pessoas Máquinas 1. Especialização Pessoal 2. Planejamento de Processos 3. Controle da Produtividade Taylorismo Frederick Winslow Taylor (1856 - 1915) O Processo Fabril • Produção em Massa (larga escala) • Tarefas simples e padronizadas • Trabalhadores especializados, mas com poucas habilidades • Divisão de trabalho • Mecanização e automação de processos • Controle da Qualidade O Processo Fabril Fordismo: • Padronização de Produtos • Domínio sobre toda a cadeia produtiva vertical 1950 ~ 1960 Surgimento das primeiras Fábricas de Software O Processo Fabril Toshiba 1. Padronizar processos de desenvolvimento de SW 2. Reuso exaustivo de programas 3. Ferramentas de mensuração de desempenho pessoal 4. Treinamento das pessoas Conceitos ~1980 “A Fábrica de Software é uma unidade de produção de programas que aplica os conceitos de industrialização nas atividades e nos componentes do ciclo de programação, em larga escala.” “O objetivo de uma fábrica de software é minimizar custo e maximizar a funcionalidade e a qualidade do produto que está sendo desenvolvido.” Fábrica de Software • Como minimizar o custo? – Padronização de processos – Componentização do software – Divisão do trabalho • Como aumentar a qualidade? – Definição dos requisitos do cliente – Estimativas de custos e prazos baseado em histórico – Controle rigoroso dos recursos envolvidos Fábrica de Software Fernandes (2004) “Um processo estruturado, controlado e melhorado de forma contínua, considerando abordagens de engenharia industrial, orientado para o atendimento a múltiplas demandas de natureza e escopo distintas, visando à geração de produtos de software, conforme os requerimentos documentados dos usuários e/ou clientes, da forma mais produtiva e econômica possível” Fábrica de Software Fernandes (2004) • • • • • Processo Estruturado Controle de Produção Requerimentos Documentados (Qualidade) Produtividade + Economia Produção de Software Fábrica de Software • Pilares de Sustentação Método Experiência Equipe Componentes Vantagens • Gerenciamento facilitado – Divisão do trabalho – Padronização dos processos – Medições sistemáticas dos resultados; • Possibilidade de terceirização de etapas – Especificações padronizadas, – Especialistas que falam a “mesma língua”; Vantagens • ISO/IEC 12207 / CMMI – Normas, procedimentos, métodos, ferramentas e ambientes de desenvolvimento de software – Gerência e engenharia de software – Integração de produtos e serviços; Vantagens • Adequação contínua da infra-estrutura de apoio – Hardware e software • Criação de objetos reutilizáveis – Programação OO – Redução de tempo e custo Parte II Organização Fábricas de Software Classificação (Escopo de atuação no desenvolvimento do SW) • • • • Fábrica de Projetos Fábrica de Projetos Físicos Fábrica de Programas Fábrica de Componentes Tipos de Fábrica Escopo de atuação no desenvolvimento do SW Implementando uma Fábrica Implantação gradativa do conceito de fábrica 1. Seleção do modelo e adequação à realidade da Organização 2. Configuração do conjunto de ferramentas 3. Detalhamento do processo fabril Implementando uma Fábrica • Seleção do modelo e adequação à realidade da Organização Clientes/Entradas Fornecedores/Insumos Fábrica de Programas Produtos Implementando uma Fábrica • Configuração do conjunto de ferramentas – – – – – – – – – Gerenciamento de Projetos Gerenciamento de Processos Análise (Modelagem) IDEs e Tecnologia de Desenvolvimento Gerência de Configuração Gerenciamento de Banco de Dados Metrificação dos Softwares Comunicação ... Implementando uma Fábrica • Detalhamento do processo fabril Analisar Projetar Implementar Testar Implantar Revisar Armazenar Distribuir Parte III Fábricas de Software Brasil x Mundo Fábrica de Software: Brasil x Mundo • Fábricas de Software no mundo: “O sucesso das Fábricas de Software do Japão, dos Estados Unidos, se deve a inclusão de um alto grau de reusabilidade de código, aumento da qualidade e da flexibilidade operacional”. [Cusumano 1991] Fábrica de Software: Brasil x Mundo • Índia: – Na década de 80 o processo de desenvolvimento interno de software substituiu a estratégia de importação. – Implantou a teoria da ISI (Índia Software Industry): • • • • Altas tarifas na importação de software estrangeiro; Controle em cima de investimento estrangeiro direto; Exportação subsidiada, e; Controle rígido nas licenças de importação. Fábrica de Software: Brasil x Mundo • Índia: – Exportação de software: US$ 8 bilhões de dólares – Mão-de-obra abundante, barata e bem treinada – Mais de 50 empresas detentoras do certificado CMMI nos níveis quatro e cinco (o mais alto). – Meta: Exportação de $50 bilhões em software somente para o EUA em 2008 Fábrica de Software: Brasil x Mundo • Brasil: – “Fábrica de software" cresce a olhos vistos no País – Alvo de investimentos de centenas de consultorias, integradores e software houses – Exportação de software: US$ 100 milhões de dólares – Baixo índice de empresas certificadas (~ 30 empresas CMMI) Fábrica de Software: Brasil x Mundo • Brasil (Razões para o crescimento das fábricas de software) – Desvalorização cambial. Nos EUA o custo de hora/homem é de US$ 60; aqui é um terço deste valor. O Brasil se tornou uma opção interessante para exportação de programação. – Muitos trabalhos de fábrica de software são decorrência de revisão de processos ou projetos de integração. Fábrica de Software: Brasil x Mundo • Brasil (Razões para o crescimento das fábricas de software) – Arquitetura dos sistemas muito fragmentada em camadas, o que torna possível desenvolver partes desses fragmentos com diferentes pessoas que nem sabem ao certo como o produto final será. – Crescimento das chamadas fábricas lógicas, que fazem análise de sistemas. Esse tipo de procedimento envolve maior conhecimento de negócios do que apenas a fábrica de software, que é programação pura. O Brasil tem excelente nível de conhecimento em análises de sistemas, sobretudo para o setor financeiro. Fábrica de Software: Brasil x Mundo • Brasil (Razões para o crescimento das fábricas de software) – Tendência de concentração das empresas em suas atividades principais, o que faz crescer a transferência de atividades não ligadas diretamente ao negócio principal para parceiros (terceirização). Fábrica de Software: Brasil x Mundo • Brasil (números) – Politec - Cresceu 30% ao ano nos últimos seis anos. – Resource Informática - Cresceu 25% em 2002 em relação ao ano anterior. – SI - Crescimento de 15% em 2002 e previsão de crescer 25% a 30% este ano. – Stefanini - Crescimento de 50% ao ano ao longo dos últimos seis anos. – AML - Cresceu 162% em 2002. Para 2003 a meta é crescer 100%. Fábricas de Software no Brasil Relatório do MCT (2001) • • • • • Ferramentas de automação: Processo formal documentado: Certificado ISO : Avaliação CMM: Uso de gerência da configuração: 30% 30% 29% 02% 10% Fábrica de Software: Brasil x Mundo • Situação Brasileira (2002) Softex,.2002 Exemplos • Stefanini – – – – – – Fundada em 1987 + 3mil colaboradores em vários países CMMI nível2 ISO 9001 Mais de 820 clientes, cerca de 350 ativos 9 fábricas de software http://www.stefanini.com.br Exemplos • Stefanini (Estrutura Organizacional) http://www.stefanini.com.br Exemplos • Politec – – – – – – 35 anos Fábrica de Software: 1997 CMMI nível3 11 fábricas no Brasil 6mil funcionários Tipos de Fábricas: • Fábrica de Projetos • Fábrica de Software http://www.politec.com.br Exemplos • Politec http://www.politec.com.br Exemplos • CPM – empresa especializada em consultoria, outsourcing e integração independente de TI – uma das pioneiras do setor no Brasil (Fundada em 1982) – faturou R$ 525 milhões em 2003 – cerca de 140 clientes entre as 500 maiores empresas atuantes no Brasil. – possui mais de dois mil profissionais e tem operações nos Estados Unidos e Argentina – Montou sua 6a. fábrica de software em São José dos Campos em 2003 http://www.cpm.com.br Exemplos • EDS – Indústria de TI :: U$ 20 bilhões – 2004: Lucro líquido de 4 milhões de dólares – Presente: Estados Unidos, Japão, Alemanha, China, Índia, Brasil... – EDS Brasil em 1985 – Selecionou o Brasil como um de seus centros mundiais de programação – Crescimento anual: entre 20% e 30% http://www.eds.com Exemplos • EDS – 6mil funcionários – Escritórios: São Paulo, Rio de Janeiro, São Caetano do Sul, São Bernardo do Campo, Barueri, Florianópolis, Salvador, Vitória – Dois Data Centers: • São Bernardo do Campo e Alphaville – CMMI nível 4 http://www.eds.com Exemplos • C.E.S.A.R.: – Faturamento de R$ 29 milhões – 300 funcionários – Mais de 50 clientes (Banco Central, Hipercard, Multibrás e a Embraer) – Primeira fábrica de software do Norte-Nordeste – CMMI nível 2 http://www.cesar.org.br Parte IV Conclusões Conclusão • Processos Fabris • Alta especialização dos profissionais • Componentização de Software Experiência Organizacional Satisfação do Cliente Utopia ? Replicaremos softwares para as “grandes massas empresariais”, feito com os melhores componentes e seguindo projetos mais simples que a moderna engenharia de software possa conceber. O preço do software deve ser baixo que qualquer empresa que tenha um rendimento condizente com a realidade possa crescer utilizando um software que supra as suas necessidades e esteja alinhado com a sua estratégia. Conclusão • Futuro não muito distante o Brasil seja conhecido, além do samba e do futebol, pela qualidade do software e dos sistemas que desenvolve. Referências • Softex – http://www.softex.com.br • MCT – http://www.mct.gov.br • Greenfield, Jack - Moving to Software Factories, Microsoft Corporation • Grupoware e Fábrica de Software • Fabri, José - Desenvolvimento e Replicação de uma Fábrica de Software • Costa, Ivani - Pesquisa em Fábrica de Software para Proposta de uma Fábrica Padrão Brasil • Brito, Regiane - Uma Experiência na Implantação de Processo em uma fábrica de Software Livre • Padron, Alberto - Un Modelo de Negocio certificable basado en Estructura y Capacidades Agradecimentos Obrigado!!! Perguntas