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
Download

Linhas de Produtos - Centro de Informática da UFPE