Engenharia de Software, © 2007 Jair C Leite
Linha de Produto de Software
Jair C Leite
DIMAp/UFRN
O que é linha de produto de software?
• Técnica de produção baseada em outras engenharias –
fábricas que desenvolvem uma mesma família de
produtos com partes e recursos comuns.
• Um conjunto de sistemas de software que:
– Têm uma funcionalidade comum
– São construídos de uma forma prescrita visando uma missão específica ou segmento de mercado.
– São desenvolvidos utilizando componentes e recursos (ativos) de uma base comum.
• Substancial economia de produção de software
• Aplicável em grupos de sistemas similares
Engenharia de Software, © 2007 Jair C Leite
Motivação
• Empresas de software buscam atingir um
segmento de mercado específico.
• Sistemas desenvolvidos para um domínio de
aplicação possui mais coisas em comum do que
particularidades.
• Os produtos para um domínio de aplicação
compartilham elementos que podem ser
reutilizados com adicionamento de requisitos
específicos.
Histórico
• Desenvolvimento baseado em reuso em sendo proposto
desde as origens da engenharia de software (McIlroy's
1969)
• Princípio “escondendo informação” (Parnas, 1972)
• Idéia de “Família de Produtos” (Parnas, 1972)
• Conceito de “Domínio de Aplicação” e Análise Engenharia
de Domínio (Neighbors, 1989)
• Framework para desenvolvimento baseado em reuso para
uma família de produtos relacionados (SEI, 2002)
• Fabrica de Software da Toshiba – abordagem de linha de
produtos para geradores de potência.
Engenharia de Software, © 2007 Jair C Leite
Benefícios de LPS
• Ganhos de produtividade em larga escala
• Diminuição do tempo de entrega
• Melhoria da qualidade do produto e satisfação do
usuário
• Maior eficiência no uso dos recursos humanos
• Maior presença no mercado
• Possibilidades de crescimento da empresa
O que é necessário para adotar LPS?
• Visão antecipada do negócio
– Oportunidades de mercado para produtos – Capacidade de produção da empresa
• Definição de uma família de produtos
– Similaridade – Requisitos comuns – Base comum
– Ex. MS Office, Sistema de vendas de comércio (lojas)
• Investimento antecipado nos ativos (componentes e
recursos) da base comum
• Arquitetura de Linha de Produção
– Elaboração de uma arquitetura de base (framework) visando reuso e múltiplos produtos da mesma família
• Definição de um Plano de Produção
Engenharia de Software, © 2007 Jair C Leite
O que não é linha de produto de software? (1)
• Reuso de software em API’s
– Construir um software reutilizando uma certa API de domínio não é LPS.
– É necessário a API tenha sido definida para uma arquitetura para linha de produção de uma família de software.
• Desenvolvimento de um único sistema com reuso
– Desenvolver um novo sistema reutilizando partes de um outro sistema similar anterior não é LPS.
– LPS requer a produção de vários produtos de uma mesma família de forma deliberada
• Desenvolvimento baseado em componentes
– LPS requer um desenvolvimento baseado em componentes, mas é necessário que os componentes estejam de acordo com a arquitetura de linha de produção.
O que não é linha de produto de software? (2)
• Utilizar uma arquitetura de software reconfigurável ou
frameworks
– São importantes pois precisam ser definidas para aceitar componentes comuns aos vários produtos da família
• Releases e versões de um mesmo produto
– LPS produz múltiplos produtos similares ao mesmo tempo. Cada um tem suas releases e versões
• Conjunto de normas técnicas
– A definição de normas técnicas para os ativos é importantes para direcionar a produção e orientar os engenheiros, mas não são suficientes.
Engenharia de Software, © 2007 Jair C Leite
Ativos base (core assets)
• Ativos base são os artefatos e recursos que formam a
base da linha de produção.
• Incluem
– Arquitetura (chave) – Componentes – Modelos do domínio – Requisitos – Especificações e documentação – Planos e casos de testes– Planejamento, cronogramas, orçamento e processo
Aspectos organizacionais e técnicos
• Estratégias organizacionais
– Centralizada:
• Todos os produtos da família planejados por um núcleo comum de gerentes e especialistas
– Distribuídas:
• Os produtos são distribuídos para equipes distintas • Dificuldades de coordenação
• Aspectos técnicos
– Desenvolvimento dos ativos base – Desenvolvimento do produto – Dinamismo em tempo de execução
Engenharia de Software, © 2007 Jair C Leite
Atividades Essenciais
Fonte: Software Engineering Institute
O produto é desenvolvido a partir de ativos base Os ativos base são
desenvolvidos visando a família de produtos
O desenvolvimento do produto gera novos ativos base
Estratégia de Processo em LPS
• Pró-ativa
– Investimento antecipado nos ativos de produção – Adequado a domínio de aplicação estáveis
• Reativa
– Os ativos são desenvolvidos à medida que forem necessários – Precisam estar de acordo com o planejamento, com padrões e
normas, e com a arquitetura de linha de produto
• Extrativa
– Intermediária – misto de estratégia reativa e pró-ativa – Ideal para empresas que querem migrar para LPS
Engenharia de Software, © 2007 Jair C Leite
Desenvolvimento dos ativos base
Fonte: Software Engineering Institute
Resultados do desenvolvimento dos ativos
base
• Definição do escopo da linha de produto
– Produtos da linha e possibilidades de inclusão de novos produtos – Requisitos comuns (funcionais e não funcionais)
• Plano de produção
– Prescreve como os produtos serão produzidos a partir dos ativos base
• Ativos comuns
– Arquitetura de linha de produto – compartilhada por toda a família de produtos
– Componentes reutilizáveis – desenvolvidos para reuso sistemático na linha de produção
Engenharia de Software, © 2007 Jair C Leite
Requisitos para o desenvolvimento dos
ativos base
• Requisitos e restrições de produtos
– Escopo e características comuns
• Restrições de produção
– Prazos, custos, capacidades
• Inventários de ativos pré-existentes
– Experiência e legado da empresa
• Estratégia de produção
– Gênesis da arquitetura e componentes e capacidade de evolução – Pró-ativa – ativos base antes e produtos depois
– Reativa – um produto da família primeiro antes
Engenharia de Software, © 2007 Jair C Leite
Relacionamento com atividades da ES
Requisitos em LPS
• Os requisitos são definidos e especificados para a família
de sistemas como um todo.
• Os requisitos específicos para cada produto são definidos
como um incremento para a especificação global.
Engenharia de Software, © 2007 Jair C Leite
Arquitetura de Linha de Produção
• Descreve o modelo sobre como o produto será montado a
partir dos componentes da base comum.
• Adequada aos atributos de qualidade da LP
• Definições de interoperabilidade com outros produtos da
família
• Implicações para a origem dos componentes
• Normas e padrões para interfaces dos componentes
• Infra-estrutura de conexão e montagem
– Middleware: CORBA, JEE (EJB) e .NET
Componentes de software de LPS
• Formam a base dos ativos comuns
• O software será montado com reuso dos componentes
• Devem estar de acordo com a arquitetura de linha de
montagem
• Podem ser reutilizados com ou sem alterações
• Origens:
– Desenvolvimento próprio, de acordo com a estratégia de negócios e arquitetura de linha de produtos
– Componentes de prateleira - COTS (Comercial off-the-shelf) – Aquisição de terceiros