Linha de Produtos de Software (SPL) em Java: Teoria e Prática



Documentos relacionados
Processo de Desenvolvimento de Software Linhas de Produtos de Software

Usando RDL para Derivação de Produtos em uma Linha de Produtos de Software

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Programa de Pós-Graduação em Desenvolvimento de Sistemas para Web

Software product lines. Paulo Borba Informatics Center Federal University of Pernambuco

Introdução à Engenharia de Software

Marcelo Henrique dos Santos

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

Uma Abordagem Dinâmica de Linha de Produto para Gestão de Processos de Negócio

Marcelo Henrique dos Santos

Desenvolvimento de software orientado a características e dirigido por modelos

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Uma Abordagem de Engenharia de Requisitos Para Linhas de Produtos de Software

MODELAGEM DE UM SUBSISTEMA IMOBILIÁRIO UTILIZANDO LINHAS DE PRODUTO DE SOFTWARE MODELING A REAL ESTATE SUBSYSTEM USING SOFTWARE PRODUCT LINES

Princípios de Linhas de Produtos de Software. Prof. Alberto Costa Neto

Histórico: Linha de Produção. Linha de Produtos de Software. Reuso vs. Customização. Mercado Competitivo. Linha de Produtos de Software

Table 1. Dados do trabalho

Fundamentos de Engenharia de Software. Josino Rodrigues

Linha de Produto de Software

Engenharia de Linha de Produtos de Software e o Processo de Análise Automática: uma visão geral

Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software

A contribuição da Análise para Arquitetura de Software

Fase 1: Engenharia de Produto

Um Processo de Engenharia de Domínio com foco no Projeto Arquitetural Baseado em Componentes

Engenharia de Software Processo de Desenvolvimento de Software

Uma Arquitetura de Linha de Produto Baseada em Componentes para Sistemas de Gerenciamento de Workflow

Linhas de Produtos de Software. Professor: Uirá DIMAp / UFRN,

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

UMA ABORDAGEM DE PROJETO ARQUITETURAL BASEADO EM COMPONENTES NO CONTEXTO DE ENGENHARIA DE DOMÍNIO

UML - Unified Modeling Language

Análise qualitativa sobre as metodologias do desenvolvimento de software em product in line.

3 Descrição do Problema

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Introdução ao Design

Arquitetura de Software

Engenharia de Domínio baseada na Reengenharia de Sistemas Legados

PROJETO DE FÁBRICA DE SOFTWARE

Obtendo Qualidade com SOA

ENGENHARIA DE SOFTWARE I

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Motivação. Motivação (software) Customização em massa. Outros exemplos de uso de plataformas

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

ANÁLISE DE REQUISITOS EM LINHAS DE PRODUTO DE SOFTWARE

Engenharia de Requisitos

Transformação de um Modelo de Empresa em Requisitos de Software

Fábrica de Software 29/04/2015

Arquitetura Orientado por Modelos aplicada a Linha de Produto de Software. Eduardo Barbosa da Costa

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Software Architectures ACM Reference Format

Frameworks. Pasteur Ottoni de Miranda Junior

Desenvolvimento de Software Orientado a Características e Dirigido por Modelos Revisitado

Universidade Federal de Pernambuco

1. Introdução. Anderson Fonseca e Silva 1, Vinicius Cardoso Garcia 2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Processo de Desenvolvimento de Software. Engenharia de Software.

Introdução a INGENIAS:

ECOSSISTEMAS DE SOFTWARE

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Model Assets: Um padrão de arquitetura de utilização de técnicas de MDE para geração de artefatos

Engenharia de Software

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Minicurso do Simpósio Brasileiro de Engenharia de Software - SBES Sérgio Soares

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Uma ferramenta para rastreabilidade de core assets em linha de produtos de software

Processos de Software

Programa do Curso de Pós-Graduação Lato Sensu MBA em Engenharia de Software Orientada a Serviços (SOA)

Engenharia de Software Aula 7 (Versão )

Engenharia de software para desenvolvimento com LabVIEW: Validação

EMF. Eclipse Modeling Framework. José G. de Souza Júnior. direção: Dr. Denivaldo Lopes

Professor: Curso: Disciplina:

Análise e Projeto Orientados a Objeto

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Notas de Aula 04: Casos de uso de um sistema

Introdução à Plataforma Eclipse. Leandro Daflon

Projeto de Arquitetura

Em Busca de uma Arquitetura de Referência para Frameworks de Aplicação Dirigidos por Modelos para Sistemas de Informação

Engenharia de Software III

ProgramaTchê Programação OO com PHP

Um Componente de Gerenciamento de Execução de Workflow Segundo a Abordagem de Linha de Produto de Software

Processo Unificado (RUP)

Um Framework para definição de processos de testes de software que atenda ao nível 3 do TMM-e

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UML: Casos de Uso. Projeto de Sistemas de Software

Engenharia de Software

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

5 Um Modelo Generativo Orientado a Aspectos

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Requisitos de Software

Ontologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

O Processo de Desenvolvimento de Software

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Etapas e Desafios. plataforma de BPM corporativa. BPMS Showcase Kelly Sganderla Consultora de Processos, CBPP Kelly.sganderla@iprocess.com.

Transcrição:

Linha de Produtos de Software (SPL) em Java: Teoria e Prática Prof. Me. Djan Almeida Santos Prof. Me. Pablo Freire Matos Slides baseados no material elaborado pelos professores: Ingrid Oliveira de Nunes, PUC-Rio Eduardo Santana de Almeida, UFBA Agenda Motivação Definição Objetivo Vantagens Riscos Desenvolvimento do núcleo de artefatos Gerenciamento do projeto Geração de produtos Estudo de Caso 2 Motivação Motivação Linhas de produtos de carros Limpador de Pára-brisa Traseiro: opcional Motor: 1.0, 1.6 ou 2.0 Você vê os componentes, a arquitetura e o reuso nesses produtos? 3 Ar Condicionado: opcional Portas: 3 ou 5 Câmbio: automático ou manual 4 Linhas de Produto Família de Produtos Linhas de Produtos de Software História do Reuso: do Ad-Hoc ao Sistemático Características Comuns Características Variáveis Customização em Massa Produção em larga escala de bens adaptados de acordo com as necessidades individuais do usuário Plataforma Qualquer base de tecnologias sobre a qual outras tecnologias ou processos são construídos Desenvolvimento baseado em Plataformas + Customização em Massa Reuso de uma base comum de tecnologia Produtos (quase) de acordo com o desejo do usuário 5 Reuso de baixa granularidade e oportunístico 6 1

Linhas de Produtos de Software Software Product Lines (SPL) Produtos Sistemas de Software Algumas funcionalidades comuns Algumas funcionalidades variáveis Desenvolvimento de partes (assets) reusáveis Reusados por diferentes membros da família Derivação de Produtos Processo de construção de um produto a partir do conjunto de assets especificados ou implementados para uma SPL 7 SPL Algumas Definições A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy the specific need of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. Clements and Northrop, 2002 Software product line engineering is a paradigm to develop software applications (software-intensive systems and software products) using platforms and mass customisation. Pohl, Böckle and van der Linden, 2005 A software platform is a set of software subsystems and interfaces that form a common structure from which a set of derivative products can be efficiently developed and produced. Gomaa, 2004 8 Linhas de Produto de Software pertencem a Domínio de Aplicação / Estratégia de Mercado é satisfeito por Linhas de Produto de Software - Objetivo Uso de uma base comum de assets para produção de um conjunto de produtos relacionados Produtos compartilham uma Arquitetura usada para estruturar construídos por Componentes Linhas de Produtos: Tiram vantagens econômicas sobre partes comuns (commonality) Ligam (bound) a variabilidade 9 Arquitetura Plano de Produção Definição de Escopo Juntar semelhanças e gerir as variações 10 SPL - Vantagens SPL - Vantagens Redução dos Custos de desenvolvimento Redução de esforço Aumento da produtividade Aumento da Qualidade Qualidade melhorada através do reuso Redução do time-to-market Ciclos de desenvolvimento mais curtos 11 Outras Vantagens Redução dos Esforços de Manutenção Propagação da Correção de Erros Melhor estimação de custos Plataforma simplifica estimação de custos Benefícios para Consumidores Maior qualidade Menor preço Copiando com Evolução Evolução Organizada 12 2

SPL - 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 uma Engenharia Experiente Gerenciamento Técnico e Organizacional Features Característica do sistema visível pelo usuário final Permite expressar partes comuns e variáveis entre instâncias Nome conciso e descritivo Representam requisitos reusáveis e configuráveis Cada feature deve fazer diferença a alguém 13 14 Features Expressar partes comuns e variáveis em termos de features é natural e intuitivo, pois clientes e engenheiros falam das características do produto em termos das features que o produto tem ou oferece. Podem ser Obrigatórias: devem estar em todos os produtos Opcionais: podem ou não estar em um produto Alternativas: exatamente uma das features deve estar no produto Or-features: um subconjunto das features deve estar no produto Parametrizáveis: recebem algum parâmetro como entrada 15 Representa Features comuns e variáveis aos produtos Dependência entre as features variáveis Criado durante o Feature Modeling Atividade de modelar propriedades comuns e variáveis dos produtos e suas interdependências, e organizando-as em um modelo coerente referido como um modelo de features Cada feature pode ter alguma informação adicional Constraints Regras de Dependências 16 Notação FODA (Feature Oriented Domain Analysis) Feature Obrigatória Feature Opcional Ferramentas Feature Modeling Plug-in (fmp) Eclipse plug-in Permite edição e configuração de modelos de feature Download http://gsd.uwaterloo.ca/projects/fmp-plugin/ Feature Alternativa Or-feature 17 18 3

FMP XFeature Eclipse Plugin Suporta a modelagem de famílias de produto e de aplicações instanciadas a partir delas Permite que os usuários definam seu próprio meta-modelo Download http://www.pnp-software.com/xfeature/ 19 20 XFeature SPLOT uma plataforma aberta, baseada na Web Várias ferramentas para editar, analisar e configurar modelos de features; Site: http://www.splot-research.org/ 21 22 SPLOT FeatureIDE Baseado em Eclipse Suporta várias atividades no processo de desenvolvimento de SPL; framework está integrado a várias ferramentas de composição e de anotação (AHEAD); Suporte a muitas linguagens, por exemplo, Java, C++, Haskell, C, C#, JavaCC e XML; Desenvolvido para suportar programação orientada a aspectos e programação orientada a features; 23 24 4

FeatureIDE Princípios de Engenharia Separação de concerns Features devem ser modularizadas do início ao fim do desenvolvimento da SPL 25 26 Todas as três atividades Estão interrelacionadas São altamente interativas Não existe primeira atividade Em alguns contextos Produtos existentes são a base para os core assets Em outros Core assets podem ser desenvolvidos e procurados para futuro reuso Forte feedback loop entre os core assets e os produtos As três atividades essenciais para SPL 27 Necessidade de forte gerenciamento entre múltiplos níveis Gerenciamento orquestra os processos para fazer as três atividades essenciais trabalharem juntas 28 29 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 30 5

31 32 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 Recompensar empregados apropriadamente Desenvolver e comunicar uma estratégia de aquisição Gerenciar interfaces externas Criar e implementar um plano de adoção da linha de produto 33 Terminologia Alternativa Product Line Core Assets Business Unit Product Core Asset Development Product Development Product Family Plataform Product Line Customization Domain Engineering Application Engineering 34 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 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 Análise do Domínio Arquitetura Projeto SPL 35 SPL 36 6

Abordagens para Construção de SPL Mapa de produtos Customização de produtos SPL + Requirements for a new product instance, Product 4 React Iterate Gerenciamento de variabilidades Tabela com mapeamento das features que estarão presentes em cada produto SPL Reativa Desenvolvimento incrementa de SPLs Product 4 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. 37 38 Estudo de Caso E-Event SPL Definição do Domínio do Sistema Construção dos artefatos de entrada Análise de Requisitos 22 Requisitos funcionais 07 Requisitos não funcionais 26 Regras de Negócios 39 Tela do e-event SPL 40 Mapa de Produtos Modelo de Feature 41 5 F 8 F 14 F 42 7

Mapa de Produtos Ferramentas e Arquitetura Linguagem de programação JAVA Netbeans Biblioteca Itext (geração de documento) Biblioteca SwingX (Painel) Architecture Model JavaApp (//#IF DEF) FeatureIDE (Modelo de Feature) SPL-TuPI (Configuração de XML) 43 44 Software Product Line Engineering Foundations, Principles, and Techniques Pohl, Böckle e van der Linden Framework para o desenvolvimento de SPLs, dividido em dois processos-chave Domain Engineering Application Engineering 45 46 Designing Softare Product Lines with UML From Use Cases to Pattern-Based Software Architectures Gomaa Apresenta o método PLUS Extensão de métodos baseados em UML para o desenvolvimento de sistemas únicos para enderaçar SPL 47 Atkinson, C., Bayer, J., Muthig, D.: Component-based product line development: The kobra approach. In Donohoe, P., ed.: Proceedings of thefirstsoftware Product Line Conference. (2000) 289-309. Cirilo, E., Kulesza, U., Lucena, C.: GenArch: A Model-Based Product Derivation Tool. In: Proceedings of the 1º Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software (SBCARS 2007), Campinas, Brazil (2007) 17-24. 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/ Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison Wesley Longman (2000). Gomaa H. Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA, 2004. 48 8

Kang K. C., Kim S., Lee J., Kim K., Shin E., and Huh M.. Form: A feature-oriented reuse method with domain-specific reference architectures. Ann. Softw. Eng., 5:143 168, 1998. Matinlassi M. Comparison of software product line architecture design methods: Copa, fast, form, kobra and qada. In ICSE 04: Proceedings of the 26th International Conference on Software Engineering, pages 127 136, Washington, DC, USA, 2004. IEEE Computer Society. Nunes I., Nunes C., Kulesza U., and Lucena C. Developing and Evolving a Multi-Agent System Product Line: An Exploratory Study. In: 9th International Workshop on Agent- Oriented Software Engineering, 2008, Estoril. 9th International Workshop on Agent- Oriented Software Engineering, 2008. p. 177-188. Pohl, K., Bckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag, New York,USA (2005). Djan Almeida Santos djan.info@gmail.com Weiss D. M., Lai C. T. R.: Software Product-line Engineering: A Family-Based Software Development Process, Addison-Wesley, 1999. 49 Pablo Freire Matos pablofmatos@gmail.com 50 9