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

51
Introdução a Linha de Produto de Software Kécio Santos [email protected] 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.

description

Engenharia de Software

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

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

Introdução a Linha de Produto

de SoftwareKécio Santos

[email protected]

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.

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

Roteiro

Motivação

Customização em massa

Linha de Produto de Software

Desenvolvimento de uma LPS

Conclusão

Referências

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

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

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

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?

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

Customização em massa

Produção em larga escala de bens moldados à necessidade do

cliente

Fabricar carros em massa

Diferentes necessidades

Tamanho

Cor

Opcionais...

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

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

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

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

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

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

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

Qual é o menor custo?

Desenvolver uma plataforma e seus componentes reusáveis?

Desenvolver produtos únicos?

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

Custo de desenvolvimentoSistemas únicos vs Famílias de Produtos

Custo de Desenvolvimento

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

Time to MarketSistemas únicos vs Famílias de Produtos

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

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

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

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

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

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

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

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 !!

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

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)

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

Linha de Produto de Software (LPS)

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

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

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

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

Page 20: Es   parte do capítulo 16 - linhas de produtos de software
Page 21: Es   parte do capítulo 16 - linhas de produtos de software

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??

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

Você vê os

componentes, a

arquitetura e o

reuso nesses

produtos?

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

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

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

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%

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

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

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

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”

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

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.

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

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

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

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).

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

Modelo de Features

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

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.

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

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.

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

Exemplo de Modelo de Caract.

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

Exemplo de Modelo de Caract. (1)

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

Exemplo de Modelo de Caract. (2)

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

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

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

Desenvolvimento de uma Linha de

Produto de Software

Page 38: Es   parte do capítulo 16 - linhas de produtos 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

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

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

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

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

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

Metodologias para Linha de Produto

de Software

Diferentes Propostas na Literatura

FORM

PuLSE

KobrA

FAST

PLUS

Framework do SEI

Framework proposto em Pohl

Etc.

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

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

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

Desenvolvimento de LPSFramework SEI

Engenharia

de Domínio

Engenharia

de

Aplicação

Técnico e Organizacional

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

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

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

Engenharia de DomínioFramework SEI

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

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

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

Engenharia de AplicaçãoFramework SEI

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

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

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

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?

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

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.

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

Obrigado!