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
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.
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 Processo centrado na montagem (reuso e arquitetura)
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.
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
Atividades Essenciais Os ativos base são desenvolvidos visando a família de produtos O produto é desenvolvido a partir de ativos base O desenvolvimento do produto gera novos ativos base Fonte: Software Engineering Institute 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
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 Cada ativo tem um processo anexo (atached) específico.
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 Desenvolvimento do produto Fonte: Software Engineering Institute
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.
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 Mineração de componentes legados de produtos anteriores