Upload
felipe-oliveira
View
172
Download
0
Embed Size (px)
DESCRIPTION
Engenharia de Software
Citation preview
Introdução a Linha de Produto
de SoftwareKécio Santos
Universidade Federal da ParaíbaDepartamento 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 desenvolvimentoSistemas únicos vs Famílias de Produtos
Custo de Desenvolvimento
Time to MarketSistemas ú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. FordFord 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 grandesempresas 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 avariabilidade de uma LPS;
Um modelo de características possibilita a visualização hierárquicadas 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
ReceiveMedia
SortingFavouritesBasic Media Operations
View Favourites
Edit Media Label
Media Selection
Photo Music Video
Play MusicPlay 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 3SPL
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 LPSFramework 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 LPSFramework SEI
Engenharia de DomínioFramework 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çãoFramework SEI
Desenvolvimento de SPLFramework 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!