Introdução a Linha de Produto
de Software
Kécio Santos
keciossantos@gmail.com
Universidade Federal da Paraíba
Departamento de Informática
Programa de Pós-Graduação em Informática
Engenharia de Software
João Pessoa – PB, Maio de 2014.
Roteiro
 Motivação
 Customização em massa
 Linha de Produto de Software
 Desenvolvimento de uma LPS
 Conclusão
 Referências
Motivação
 Produtos desenvolvidos manualmente para clientes
individuais
 Com o crescimento da sociedade e do consumo era preciso
aumentar a quantidade de produtos fabricados
➔Como atender a esta demanda?
 Na área automotiva, Henry Ford inventou a linha de produtos
 Produção em massa
Motivação (Software)
 Produtos desenvolvidos manualmente para clientes individuais
 Produtos desenvolvidos em massa
Como customizar um produto/software a necessidades específicas de um
cliente?
Customização em massa
 Produção em larga escala de bens moldados à necessidade do
cliente
 Fabricar carros em massa
 Diferentes necessidades
 Tamanho
 Cor
 Opcionais...
Pré-requisito para customização em
massa
 Definição de uma plataforma
 Exemplo: Partes que podem ser usadas em diferentes carros /chassis,
suspensão, motor, transmissão
 Criar um novo carro do zero ou partir de uma plataforma já
existente?
 aumento de 35% nas vendas de carros baseados em plataformas
 aumento de 7% nas vendas de carros desenvolvidos do zero
Customização em massae
desenvolvimento baseado em plataformas
 Uso de plataformas
 Mesmo motor em diferentes carros
 Mesma suspensão em diferentes carros
 Mesma transmissão em diferentes carros
 Com customização em massa
 Diferentes tipos de motor
 Diferentes tipos de suspensão
 Diferentes tipos de transmissão
Todos aplicáveis a diferentes tipos de carro
Primeiros conceitos chaves
 Variabilidade
 flexibilidade da plataforma
 Família (Linha) de produtos
 diferentes produtos que compartilham uma plataforma
Um dos objetivos de uma Linha de Produtos é provê produtos
customizados a um preço razoável
Qual é o menor custo?
 Desenvolver uma plataforma e seus componentes reusáveis?
 Desenvolver produtos únicos?
Custo de desenvolvimento
Sistemas únicos vs Famílias de Produtos
 Custo de Desenvolvimento
Time to Market
Sistemas únicos vs Famílias de Produtos
Motivações adicionais
 Aumento da qualidade
 Revisão e testes dos artefatos para vários produtos
 Redução dos custo de manutenção
 Mudanças nos artefatos são propagados
 Evolução organizada
 Novos artefatos geram oportunidades de evolução de vários produtos
 Menor complexidade
 Reuso do código diminui a quantidade de código a ser mantido
Motivações adicionais
 Melhor estimativa de custo/menor risco
 Extensões na plataforma para adaptar um novo produto
 Benefícios para o cliente
 Mudanças entre produtos mais fácil
 Melhor qualidade por preços menores
LPS - Riscos
 Maior Nível de Risco
 Grande investimento inicial que pode se tornar inútil se importantes
requisitos mudam
 Maior time-to-market para o primeiro produto baseado na
arquitetura da SPL
 Requer:
 Engenharia Experiente
 Gerenciamento Técnico e Organizacional
Por que investir em Linha de Produto?
 Aumento de produtividade
 Produtos entregues mais rápidos
 •Aumento de Qualidade
 •Redução de custos
 Exemplo: Modelos 757 e 767 da Boeing compartilham 60% de
componentes comuns - Economia de produção e manutenção !!
Contextualização
 Como é possível:
 aumentar a reusabilidade
 diminuir esforço de produção
 diminuir o tempo que o produto leva para chegar ao mercado
 aumentar a qualidade do software
 diminuir custos e aumentar o lucro
 Resp.: Equacionando…
Engenharia de Domínio + Desenvolvimento Tradicional + Outras técnicas
= n produtos = Linha de Produto de Software (LPS)
Linha de Produto de Software (LPS)
Linha de Produto de Software (LPS)
 Não é um assunto “novo”
 Desenvolvimento customizado:
 Ideia de Henry Ford
 Produção de carros com equipamentos customizados (adicionais,
acessórios)
 Linhas de produção e montagem
 Produtos com características:
 Comuns
 Variáveis
Linha de Produção de H. Ford
Ford de Bigode (Brasil) 1908 (US$850) – 1927 (US$290)
Características:
- Pintura: “qualquer cor, desde que
seja preta” (H. Ford)
- Bancos: veludo, tecido, couro
- Carroceria: Pickup, Camionete,
Cupês e Sedãs
- Painel: Amperímetro e Odômetro
- Opcionais: Faróis, Buzina
Linha de Produção
 Hoje encontramos linhas de produção para:
 Carros
 Produtos alimentícios (MacDonalds, Burger King, Pizza Hut...)
 Relógios
 Computadores (iMac, Vaio, Pavilion...)
 Impressoras
 SmartPhones
 Aviões
 Mais alguma??
Você vê os
componentes, a
arquitetura e o
reuso nesses
produtos?
Objetivo de LPS
 Resumidamente, LPS visa estabelecer uma capacidade de produção
que possa:
 Rapidamente, e de forma correta, produzir múltiplos produtos com base em
um contexto bem definido
 Alcançar metas de negócio específicas que podem ser afetadas pela
forma como uma organização produz seus produtos
Alguns Número Reais sobre LPS
 Melhoria de Produtividade: ~10x
 Aumento de Qualidade: ~10x
 Redução de Custos: até 60%
 Redução de mão de obra: até 87%
 Redução do time to market: até 98%
Casos de Sucesso de LPS
 Segundo o Hall of Fame do SEI:
 Boeing
 Controle de instrumentos e funcionalidades de cockpit de aviões
 HP
 Firmware de impressoras, scanners, fax e etc.
 LG
 Controle de elevadores
 Philips
 Componentes presentes em vários tipos de aparelhos eletrônicos
 Bosh
 Assistência de direção
 Siemens
 Controle de radiologia
Linha de Produto de Software (LPS)
 Definições de LPS:
 Termos importantes e sinônimos:
 Característica (feature)
 Características comuns  similaridades
 Segmento de mercado particular  domínio
 Customização em massa  desenvolvimento em série
“conjunto de sistemas que compartilham características comuns e
gerenciáveis que satisfazem as necessidades específicas de um
segmento de mercado particular ou missão, desenvolvidas a partir
de ativos centrais comuns de maneira prescritiva”
“paradigma para desenvolver aplicações de software usando
customização em massa e de plataforma”
Linha de Produto de Software
 Em LPS, características comuns a um domínio formam o núcleo e
outras características definem pontos de variação;
 Em uma LPS, o domínio do sistema é decomposto em
características coerentes, bem definidas, independentes e
facilmente combináveis;
 A comercialização de produtos que se diferenciam por variações
em suas características está se tornando comum e grandes
empresas têm investido em LPS.
Features
 Característica do sistema visível pelo usuário final
 Representam requisitos reusáveis e configuráveis
 Podem ocorrem em qualquer nível
 Requisitos de alto nível do sistema
 Nível de arquitetura
 Nível de subsistema e componentes
 Nível de implementação-construção
Modelo de Features
 Modelo de características é o padrão de fato para representar a
variabilidade de uma LPS;
 Um modelo de características possibilita a visualização hierárquica
das características de uma LPS e suas relações;
 Permite a identificação das primeiras variabilidades de uma LPS;
 As características do modelo de características são classificadas:
 mandatórias
 opcionais
 alternativas não exclusivas (OR) e
 alternativas exclusivas (XOR).
Modelo de Features
Linha de Produto de Software
 Modelo de características pode incluir regras de composição;
 As regras de composição são responsáveis pela validação das
configurações de produtos;
 Por exemplo, no modelo de características de um autorama, uma
regra de composição pode ser que o Som Automotivo requer
(inclusão) uma Bateria do Tipo 1.
Modelo de Features - Modelagem
 Modelagem de Características - Diferentes notações existentes:
 FODA (KANG et al., 1990)
 FORM (KANG et al., 2002, LEE et al., 2002),
 FeatuRSEB (GRISS et al., 1998),
 Notação de RIEBISCH (RIEBISCH et al., 2002),
 Notação de CECHTICKY (CECHTICKY et al.,2004)
 Notacao de CZARNECKI (CZARNECKI et al., 2004, 2005),
 Notacao Odyssey-FEX (OLIVEIRA, 2006)
 Notacao definida por GOMAA (2004),
 Etc.
Exemplo de Modelo de Caract.
Exemplo de Modelo de Caract. (1)
Exemplo de Modelo de Caract. (2)
Exemplo de Modelo de Caract. (3)
Media
Management
Mobile
Media
Delete
Media
Create
Media
View
Photo
Copy
Media
SMS
Transfer
Send
Media
Receive
Media
SortingFavourites
Basic Media
Operations
View
Favourites
Edit Media
Label
Media
Selection
Photo Music Video
Play Music
Play
Video
Album
Management
Create
Album
Delete
Album
Desenvolvimento de uma Linha de
Produto de Software
Abordagens para Construção de SPL
 Pró-ativa
 Desenvolvimento de linhas de produto considerando todos
os produtos a serem gerados previamente
 Um conjuntos completo de artefatos é desenvolvido para
a SPL
SPL
Product 1
Product 2
Product 3
Análise do
Domínio
Arquitetura
Projeto
Abordagens para Construção de SPL
 Extrativa
 A SPL é desenvolvida a partir de sistemas já existentes
 Features variáveis e comuns são extraídas desses sistemas
para derivar uma versão inicial da SPL
Product 1
Product 2
Product 3
SPL
Product 1
Product 2
Product 3
Abordagens para Construção de SPL
 Reativa
 Desenvolvimento incremental de SPLs
 Artefatos da SPL atendem apenas a alguns produtos.
Quando há uma demanda para incorporar novos requisitos
ou produtos, artefatos comuns e variáveis são
incrementalmente estendidos em reação a eles.
SPL
Product 1
Product 2
Product 3
Requirements for a new
product instance, Product 4
+
SPL
React
Iterate
Product 1
Product 2
Product 3
Product 4
Metodologias para Linha de Produto
de Software
 Diferentes Propostas na Literatura
 FORM
 PuLSE
 KobrA
 FAST
 PLUS
 Framework do SEI
 Framework proposto em Pohl
 Etc.
Desenvolvimento de LPS
 Etapas principais:
 Engenharia de domínio:
 Desenvolvimento de ativos centrais
 Engenharia de aplicação:
 Desenvolvimento do produto
 Gerenciamento:
 Técnico e Organizacional
Desenvolvimento de LPS
Framework SEI
Engenharia
de Domínio
Engenharia
de
Aplicação
Técnico e
Organizacional
 Todas as três atividades:
 Estão inter-relacionadas
 São altamente interativas
 Não existe “primeira” atividade
 Forte feedback entre os core assets e os produtos
 Necessidade de forte gerenciamento entre múltiplos níveis
Desenvolvimento de LPS
Framework SEI
Engenharia de Domínio
Framework SEI
Desenvolvimento de SPL
 Core Assets incluem:
 Requisitos e análise de
requisitos
 Modelo de domínio
 Arquitetura de software
 Engenharia de performance
 Documentação
 Planos de teste, casos de
teste e dados
 Conhecimento humano e
habilidades
 Processos, métodos e
ferramentas
 Despesas, cronogramas,
planos de trabalho
... e Software
Engenharia de Aplicação
Framework SEI
Desenvolvimento de SPL
Framework SEI
 Gerenciamento em múltiplos níveis tem um papel importante no sucesso
da linha de produto
 Responsabilidades
 Atingir a estrutura organizacional certa
 Alocar recursos
 Coordenar e supervisionar
 Oferecer treinamento
Exercícios
 Pense em um exemplo de projeto de software que possa ser
uma linha de produto de software.
 Quais seriam os produtos gerados por essa linha?
Referências
 Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns.
Addison-Wesley, Boston, MA, USA (2002).
 Software Product Lines. http://www.sei.cmu.edu/productlines/
 Pohl, K., Bckle, G., van der Linden, F.J.: Software Product Line Engineering:
Foundations, Principles and Techniques. Springer-Verlag, New York,USA
(2005).
 McGregor, J. D.; Muthig, D.; Yoshimura, K.; Jensen, P. Successful Software
Product Line Practices. IEEE Software, v. 27, n. 3. 2010.
Obrigado!

Es parte do capítulo 16 - linhas de produtos de software

  • 1.
    Introdução a Linhade Produto de Software Kécio Santos keciossantos@gmail.com Universidade Federal da Paraíba Departamento de Informática Programa de Pós-Graduação em Informática Engenharia de Software João Pessoa – PB, Maio de 2014.
  • 2.
    Roteiro  Motivação  Customizaçãoem massa  Linha de Produto de Software  Desenvolvimento de uma LPS  Conclusão  Referências
  • 3.
    Motivação  Produtos desenvolvidosmanualmente para clientes individuais  Com o crescimento da sociedade e do consumo era preciso aumentar a quantidade de produtos fabricados ➔Como atender a esta demanda?  Na área automotiva, Henry Ford inventou a linha de produtos  Produção em massa
  • 4.
    Motivação (Software)  Produtosdesenvolvidos manualmente para clientes individuais  Produtos desenvolvidos em massa Como customizar um produto/software a necessidades específicas de um cliente?
  • 5.
    Customização em massa Produção em larga escala de bens moldados à necessidade do cliente  Fabricar carros em massa  Diferentes necessidades  Tamanho  Cor  Opcionais...
  • 6.
    Pré-requisito para customizaçãoem massa  Definição de uma plataforma  Exemplo: Partes que podem ser usadas em diferentes carros /chassis, suspensão, motor, transmissão  Criar um novo carro do zero ou partir de uma plataforma já existente?  aumento de 35% nas vendas de carros baseados em plataformas  aumento de 7% nas vendas de carros desenvolvidos do zero
  • 7.
    Customização em massae desenvolvimentobaseado em plataformas  Uso de plataformas  Mesmo motor em diferentes carros  Mesma suspensão em diferentes carros  Mesma transmissão em diferentes carros  Com customização em massa  Diferentes tipos de motor  Diferentes tipos de suspensão  Diferentes tipos de transmissão Todos aplicáveis a diferentes tipos de carro
  • 8.
    Primeiros conceitos chaves Variabilidade  flexibilidade da plataforma  Família (Linha) de produtos  diferentes produtos que compartilham uma plataforma Um dos objetivos de uma Linha de Produtos é provê produtos customizados a um preço razoável
  • 9.
    Qual é omenor custo?  Desenvolver uma plataforma e seus componentes reusáveis?  Desenvolver produtos únicos?
  • 10.
    Custo de desenvolvimento Sistemasúnicos vs Famílias de Produtos  Custo de Desenvolvimento
  • 11.
    Time to Market Sistemasúnicos vs Famílias de Produtos
  • 12.
    Motivações adicionais  Aumentoda qualidade  Revisão e testes dos artefatos para vários produtos  Redução dos custo de manutenção  Mudanças nos artefatos são propagados  Evolução organizada  Novos artefatos geram oportunidades de evolução de vários produtos  Menor complexidade  Reuso do código diminui a quantidade de código a ser mantido
  • 13.
    Motivações adicionais  Melhorestimativa de custo/menor risco  Extensões na plataforma para adaptar um novo produto  Benefícios para o cliente  Mudanças entre produtos mais fácil  Melhor qualidade por preços menores
  • 14.
    LPS - Riscos Maior Nível de Risco  Grande investimento inicial que pode se tornar inútil se importantes requisitos mudam  Maior time-to-market para o primeiro produto baseado na arquitetura da SPL  Requer:  Engenharia Experiente  Gerenciamento Técnico e Organizacional
  • 15.
    Por que investirem Linha de Produto?  Aumento de produtividade  Produtos entregues mais rápidos  •Aumento de Qualidade  •Redução de custos  Exemplo: Modelos 757 e 767 da Boeing compartilham 60% de componentes comuns - Economia de produção e manutenção !!
  • 16.
    Contextualização  Como épossível:  aumentar a reusabilidade  diminuir esforço de produção  diminuir o tempo que o produto leva para chegar ao mercado  aumentar a qualidade do software  diminuir custos e aumentar o lucro  Resp.: Equacionando… Engenharia de Domínio + Desenvolvimento Tradicional + Outras técnicas = n produtos = Linha de Produto de Software (LPS)
  • 17.
    Linha de Produtode Software (LPS)
  • 18.
    Linha de Produtode Software (LPS)  Não é um assunto “novo”  Desenvolvimento customizado:  Ideia de Henry Ford  Produção de carros com equipamentos customizados (adicionais, acessórios)  Linhas de produção e montagem  Produtos com características:  Comuns  Variáveis
  • 19.
    Linha de Produçãode H. Ford Ford de Bigode (Brasil) 1908 (US$850) – 1927 (US$290) Características: - Pintura: “qualquer cor, desde que seja preta” (H. Ford) - Bancos: veludo, tecido, couro - Carroceria: Pickup, Camionete, Cupês e Sedãs - Painel: Amperímetro e Odômetro - Opcionais: Faróis, Buzina
  • 21.
    Linha de Produção Hoje encontramos linhas de produção para:  Carros  Produtos alimentícios (MacDonalds, Burger King, Pizza Hut...)  Relógios  Computadores (iMac, Vaio, Pavilion...)  Impressoras  SmartPhones  Aviões  Mais alguma??
  • 22.
    Você vê os componentes,a arquitetura e o reuso nesses produtos?
  • 23.
    Objetivo de LPS Resumidamente, LPS visa estabelecer uma capacidade de produção que possa:  Rapidamente, e de forma correta, produzir múltiplos produtos com base em um contexto bem definido  Alcançar metas de negócio específicas que podem ser afetadas pela forma como uma organização produz seus produtos
  • 24.
    Alguns Número Reaissobre LPS  Melhoria de Produtividade: ~10x  Aumento de Qualidade: ~10x  Redução de Custos: até 60%  Redução de mão de obra: até 87%  Redução do time to market: até 98%
  • 25.
    Casos de Sucessode LPS  Segundo o Hall of Fame do SEI:  Boeing  Controle de instrumentos e funcionalidades de cockpit de aviões  HP  Firmware de impressoras, scanners, fax e etc.  LG  Controle de elevadores  Philips  Componentes presentes em vários tipos de aparelhos eletrônicos  Bosh  Assistência de direção  Siemens  Controle de radiologia
  • 26.
    Linha de Produtode Software (LPS)  Definições de LPS:  Termos importantes e sinônimos:  Característica (feature)  Características comuns  similaridades  Segmento de mercado particular  domínio  Customização em massa  desenvolvimento em série “conjunto de sistemas que compartilham características comuns e gerenciáveis que satisfazem as necessidades específicas de um segmento de mercado particular ou missão, desenvolvidas a partir de ativos centrais comuns de maneira prescritiva” “paradigma para desenvolver aplicações de software usando customização em massa e de plataforma”
  • 27.
    Linha de Produtode Software  Em LPS, características comuns a um domínio formam o núcleo e outras características definem pontos de variação;  Em uma LPS, o domínio do sistema é decomposto em características coerentes, bem definidas, independentes e facilmente combináveis;  A comercialização de produtos que se diferenciam por variações em suas características está se tornando comum e grandes empresas têm investido em LPS.
  • 28.
    Features  Característica dosistema visível pelo usuário final  Representam requisitos reusáveis e configuráveis  Podem ocorrem em qualquer nível  Requisitos de alto nível do sistema  Nível de arquitetura  Nível de subsistema e componentes  Nível de implementação-construção
  • 29.
    Modelo de Features Modelo de características é o padrão de fato para representar a variabilidade de uma LPS;  Um modelo de características possibilita a visualização hierárquica das características de uma LPS e suas relações;  Permite a identificação das primeiras variabilidades de uma LPS;  As características do modelo de características são classificadas:  mandatórias  opcionais  alternativas não exclusivas (OR) e  alternativas exclusivas (XOR).
  • 30.
  • 31.
    Linha de Produtode Software  Modelo de características pode incluir regras de composição;  As regras de composição são responsáveis pela validação das configurações de produtos;  Por exemplo, no modelo de características de um autorama, uma regra de composição pode ser que o Som Automotivo requer (inclusão) uma Bateria do Tipo 1.
  • 32.
    Modelo de Features- Modelagem  Modelagem de Características - Diferentes notações existentes:  FODA (KANG et al., 1990)  FORM (KANG et al., 2002, LEE et al., 2002),  FeatuRSEB (GRISS et al., 1998),  Notação de RIEBISCH (RIEBISCH et al., 2002),  Notação de CECHTICKY (CECHTICKY et al.,2004)  Notacao de CZARNECKI (CZARNECKI et al., 2004, 2005),  Notacao Odyssey-FEX (OLIVEIRA, 2006)  Notacao definida por GOMAA (2004),  Etc.
  • 33.
  • 34.
    Exemplo de Modelode Caract. (1)
  • 35.
    Exemplo de Modelode Caract. (2)
  • 36.
    Exemplo de Modelode Caract. (3) Media Management Mobile Media Delete Media Create Media View Photo Copy Media SMS Transfer Send Media Receive Media SortingFavourites Basic Media Operations View Favourites Edit Media Label Media Selection Photo Music Video Play Music Play Video Album Management Create Album Delete Album
  • 37.
    Desenvolvimento de umaLinha de Produto de Software
  • 38.
    Abordagens para Construçãode SPL  Pró-ativa  Desenvolvimento de linhas de produto considerando todos os produtos a serem gerados previamente  Um conjuntos completo de artefatos é desenvolvido para a SPL SPL Product 1 Product 2 Product 3 Análise do Domínio Arquitetura Projeto
  • 39.
    Abordagens para Construçãode SPL  Extrativa  A SPL é desenvolvida a partir de sistemas já existentes  Features variáveis e comuns são extraídas desses sistemas para derivar uma versão inicial da SPL Product 1 Product 2 Product 3 SPL Product 1 Product 2 Product 3
  • 40.
    Abordagens para Construçãode SPL  Reativa  Desenvolvimento incremental de SPLs  Artefatos da SPL atendem apenas a alguns produtos. Quando há uma demanda para incorporar novos requisitos ou produtos, artefatos comuns e variáveis são incrementalmente estendidos em reação a eles. SPL Product 1 Product 2 Product 3 Requirements for a new product instance, Product 4 + SPL React Iterate Product 1 Product 2 Product 3 Product 4
  • 41.
    Metodologias para Linhade Produto de Software  Diferentes Propostas na Literatura  FORM  PuLSE  KobrA  FAST  PLUS  Framework do SEI  Framework proposto em Pohl  Etc.
  • 42.
    Desenvolvimento de LPS Etapas principais:  Engenharia de domínio:  Desenvolvimento de ativos centrais  Engenharia de aplicação:  Desenvolvimento do produto  Gerenciamento:  Técnico e Organizacional
  • 43.
    Desenvolvimento de LPS FrameworkSEI Engenharia de Domínio Engenharia de Aplicação Técnico e Organizacional
  • 44.
     Todas astrês atividades:  Estão inter-relacionadas  São altamente interativas  Não existe “primeira” atividade  Forte feedback entre os core assets e os produtos  Necessidade de forte gerenciamento entre múltiplos níveis Desenvolvimento de LPS Framework SEI
  • 45.
  • 46.
    Desenvolvimento de SPL Core Assets incluem:  Requisitos e análise de requisitos  Modelo de domínio  Arquitetura de software  Engenharia de performance  Documentação  Planos de teste, casos de teste e dados  Conhecimento humano e habilidades  Processos, métodos e ferramentas  Despesas, cronogramas, planos de trabalho ... e Software
  • 47.
  • 48.
    Desenvolvimento de SPL FrameworkSEI  Gerenciamento em múltiplos níveis tem um papel importante no sucesso da linha de produto  Responsabilidades  Atingir a estrutura organizacional certa  Alocar recursos  Coordenar e supervisionar  Oferecer treinamento
  • 49.
    Exercícios  Pense emum exemplo de projeto de software que possa ser uma linha de produto de software.  Quais seriam os produtos gerados por essa linha?
  • 50.
    Referências  Clements, P.,Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Boston, MA, USA (2002).  Software Product Lines. http://www.sei.cmu.edu/productlines/  Pohl, K., Bckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag, New York,USA (2005).  McGregor, J. D.; Muthig, D.; Yoshimura, K.; Jensen, P. Successful Software Product Line Practices. IEEE Software, v. 27, n. 3. 2010.
  • 51.