linhas de produtos de software ivan cardim, pedro matos jr {icc2, poamj}@cin.ufpe.br
TRANSCRIPT
Linhas de Produtos de SoftwareIvan Cardim, Pedro Matos Jr{icc2, poamj}@cin.ufpe.br
2 de 25
Linha de Produtos
3 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
4 de 25
Ou sejaVários softwares com recursos em comum Artefatos Código FuncionalidadesExemplo SIG@
5 de 25
Alguns conceitosInstanciaçã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 LPA LP é “O” produto; existem diversas instâncias desse mesmo produtoVariações Diferenças entre instâncias
6 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
7 de 25
Composição de uma LPS
8 de 25
Por que usar?Menor tempo para reagir às necessidades do mercado (time-to-market)Produtos lançados a custos menoresMaior garantia de qualidade para os componentes/artefatos comuns São usados e testados exaustivamente em
vários produtosMaior facilidade de realizar manutenções Manutenções são realizadas na LPS e não em
vários produtos individuais
9 de 25
O que não éReuso de alta granularidadeApenas reuso de códigoDesenvolvimento baseado em componentesReleases e versões de um mesmo produto
10 de 25
Atividades Essenciais
A Framework for Software Product Line Practice Version 4.2Software Engineering Institute - SEI
11 de 25
Criação e Evolução de LPSPró-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)
12 de 25
• 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!
Criação e Evolução de LPSCriação e Evolução de LPS
13 de 25
CustosCusto Inicial Elevado Pode ser reduzido usando as
abordagens extrativa e reativaNecessidade de profissionais qualificados Custos com treinamentoMudança na cultura organizacional da Empresa
14 de 25
Programação GerativaParadigma de ES modelando família de sistemasEspecificação de requisitos geração automática de produtoProduto customizado intermediário ou finalGeração a partir de componentes reusáveis
15 de 25
16 de 25
Análise de domínio orientada a features Diagrama de features
Features Mandatórias (ou comuns)Features OpcionaisFeatures AlternativasOr-Features
Programação Gerativa
17 de 25
Exemplo de um diagrama de features
Programação Gerativa
18 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
19 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 anoHewlett Packard Linhas de produtos de impressoras Aumento de 400% na produtividade Melhora de 2-7x no time-to-market
20 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
21 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
22 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
23 de 25
Conclusões e Palavras Finais
Em alguns domínios, pode ser a diferença entre permanecer no mercado e ser esmagado pelos concorrentesAinda 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
24 de 25
ReferênciasA Framework for Software Product Line Practice: http://www.sei.cmu.edu/productlinesKRUEGER, C. W. Variation Management for Software Product LinesKRUEGER, C. W. Easing the Transition to Software Mass CustomizationWITHEY, J. Investment Analysis of Software Assets for Product Lines
25 de 25
ReferênciasKrzystof Czarnecki and Ulrich Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley.2000Software Productivity Group – SPGhttp://www.cin.ufpe.br/spg
Perguntas
?
Slides extras
28 de 25
Ferramentas de ApoioDiagramas FODA: captainfeature / feature-pluginFeat: Feature exploration and analysis toolPure::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.
29 de 25
Linha de Produtos x Linha de Produção
30 de 25
31 de 25
32 de 25