Linhas de Produtos de Software Ivan Cardim, Pedro Matos Jr {icc2, poamj}@cin.ufpe.br Linha de Produtos 2 de 25 O que é Linha de Produtos de Software “Conjunto de sistemas de software que compartilham um conjunto comum e gerenciado de features que satisfazem as necessidades de um mercado específico e que são desenvolvidos a partir de um conjunto de recursos comum de uma maneira pré-definida.” Software Engineering Institute 3 de 25 Ou seja Vários softwares com recursos em comum Artefatos Código Funcionalidades Exemplo SIG@ 4 de 25 Alguns conceitos Instanciação A construção de novos produtos consiste mais em montagem do que em criação; a atividade predominante é integração, e não programação Núcleo Conjunto de recursos comum a diversos produtos de uma LP A LP é “O” produto; existem diversas instâncias desse mesmo produto Variações Diferenças entre instâncias 5 de 25 Uma Linha de Produtos de Software Funcionalidades e Artefatos Comuns Compartilhadas por todos os produtos da LPS Devem ser reusados por todos os produtos a fim de aumentar a produtividade e qualidade Variações Devem ser identificadas e gerenciadas nos vários níveis de abstração 6 de 25 Composição de uma LPS 7 de 25 Por que usar? Menor tempo para reagir às necessidades do mercado (time-to-market) Produtos lançados a custos menores Maior garantia de qualidade para os componentes/artefatos comuns São usados e testados exaustivamente em vários produtos Maior facilidade de realizar manutenções Manutenções são realizadas na LPS e não em vários produtos individuais 8 de 25 O que não é Reuso de alta granularidade Apenas reuso de código Desenvolvimento baseado em componentes Releases e versões de um mesmo produto 9 de 25 Atividades Essenciais A Framework for Software Product Line Practice Software Engineering Institute - SEI Version 4.2 10 de 25 Criação e Evolução de LPS Pró-ativa Tenta “prever o futuro” Custos concentrados no início do ciclo de desenvolvimento Risco elevado Extrativa Usada para criar/evoluir uma LPS quando produtos individuais já foram criados Possui como objetivo criar um núcleo que representa a intersecção de todos os produtos e extrair as diferenças (variações) 11 de 25 Criação e Evolução de LPS • Reativa – Usada para evoluir a LPS para incorporar um novo produto – Pode demandar o desenvolvimento de novos artefatos/componentes – Permite que a LPS evolua de acordo com as necessidades do mercado, distribuindo os custos ao longo do tempo As abordagens não são mutuamente exclusivas! 12 de 25 Custos Custo Inicial Elevado Pode ser reduzido usando as abordagens extrativa e reativa Necessidade de profissionais qualificados Custos com treinamento Mudança na cultura organizacional da Empresa 13 de 25 Programação Gerativa Paradigma de ES modelando família de sistemas Especificação de requisitos geração automática de produto Produto customizado intermediário ou final Geração a partir de componentes reusáveis 14 de 25 15 de 25 Programação Gerativa Análise de domínio orientada a features Diagrama de features Features Mandatórias (ou comuns) Features Opcionais Features Alternativas Or-Features 16 de 25 Programação Gerativa Exemplo de um diagrama de features 17 de 25 Histórias de Sucesso de LPS U.S National Reconnaissance Office LPS para controle de satélites encomendada para a Raytheon Ganhos de 10x na qualidade e 7x em produtividade. Cummins, Inc. LPS para motores Conseguem construir e integrar o software para um novo motor a diesel em certa de uma semana, o que antes levava 1 ano Sua capacidade de produção permitiu que entrassem rapidamente no mercado de motores a diesel e o dominassem 18 de 25 Histórias de Sucesso de LPS Nokia Aumento na produção de telefones móveis 5-10 novos modelos por ano para mais de 30 novos modelos por ano Hewlett Packard Linhas de produtos de impressoras Aumento de 400% na produtividade Melhora de 2-7x no time-to-market 19 de 25 Jogos para dispositivos móveis • • Várias versões do mesmo jogo para vários aparelhos Aparelhos com características e APIs diferentes 20 de 25 Jogos para dispositivos móveis Meantime Mobile Creations Estudo da possibilidade de implantação de LPS em jogos móveis Pesquisa em convênio com o Centro de Informática Desenvolvimento de um processo de desenvolvimento e ferramenta de apoio 21 de 25 Conclusões e Palavras Finais LPS podem aumentar bastante a produtividade de empresas produtoras de software Reduzindo custos Reduzindo tempo de desenvolvimento Aumentando a qualidade do produto final Facilitando manutenção e evolução Investimentos iniciais e mudança da cultura organizacional são necessários 22 de 25 Conclusões e Palavras Finais Em alguns domínios, pode ser a diferença entre permanecer no mercado e ser esmagado pelos concorrentes Ainda existe pouco suporte para criação e evolução de LPS A maioria das metodologias ainda consiste num pequeno conjunto de práticas; não são processos completos Falta de ferramentas maduras para gerenciamento de LPS 23 de 25 Referências A Framework for Software Product Line Practice: http://www.sei.cmu.edu/productlines KRUEGER, C. W. Variation Management for Software Product Lines KRUEGER, C. W. Easing the Transition to Software Mass Customization WITHEY, J. Investment Analysis of Software Assets for Product Lines 24 de 25 Referências Krzystof Czarnecki and Ulrich Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley.2000 Software Productivity Group – SPG http://www.cin.ufpe.br/spg 25 de 25 Perguntas ? Slides extras Ferramentas de Apoio Diagramas FODA: captainfeature / featureplugin Feat: Feature exploration and analysis tool Pure::Variants Vários niveis de abstracao. Granularidade de arquivo. Covamof (em desenvolvimento) Plug-in para eclipse e visual studio. Granularidade de código Vários níveis de abstração. 28 de 25 Linha de Produtos x Linha de Produção 29 de 25 30 de 25 31 de 25 32 de 25