Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)

Documentos relacionados
Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)

05/10/2014. Agenda. Feature Oriented Programming with AHEAD. Definition of Feature. Feature Oriented Programming (FOP) Program Configuration

18/10/2013. Resumo. Os mecanismos. Introdução. Padrões de projeto (OO) Compilação condicional

Agenda da Aula FMP. Feature Modeling Plug-in (FMP) Tela 2: Produto da LPS. Tecnologias para Linhas de Produtos de Software

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Extração e Evolução de Linhas de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features

DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY

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

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Tela Principal do ArgoUML. ArgoUML: Diagrama de Casos de Uso. Elementos do diagrama. Criar um novo diagrama. Elementos do diagrama

Composição e Geração de Aplicações usando Aspectos

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

Programação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação. Prof. Bruno Moreno

Introdução ao IDE Netbeans (Programação Java)

Extração de uma Linha de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Reinaldo Gomes Análise/projeto estruturado

UMA AVALIAÇÃO QUANTITATIVA DE MÓDULOS DE CARACTERÍSTICAS ASPECTUAIS PARA EVOLUÇÃO DE LINHAS DE PRODUTOS DE SOFTWARE

Técnicas para Reutilização de Software

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Agenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada

Paradigmas de Linguagens

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Reuso de Software Aula Maio 2012

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Arquitetura de Software

Implementação de Linguagens

English version at the end of this document

English version at the end of this document

Avoiding code pitfalls in Aspect-Oriented Programming

Análise Semântica. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 40

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Criando um Editor de Diagramas com Sirius

English version at the end of this document

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas:

Programação de Computadores:

Avoiding Code Pitfalls in Aspect-Oriented Programming

O USO DE PROGRAMAÇÃO ORIENTADA A CARACTERÍSTICAS PARA EVOLUÇÃO DE LINHAS DE PRODUTOS DE SOFTWARE

Agenda Atual do Curso. Desenvolvimento Dirigido por Modelos (MDD) Abordagem MDD. Agenda da Aula. Abordagem MDD. Manutenção e Geração

TE091 Programação Orientada a Objetos Engenharia Elétrica

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Programming in C# Conteúdo Programático. Área de formação Plataforma e Tecnologias de Informação

Projeto de Linguagem. Linguagens de Programação

Laboratório 01 NetBeans

Ciclo de vida: fases x atividades

English version at the end of this document

Encapsulamento e Modularização

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

INF1013 MODELAGEM DE SOFTWARE

Encapsulamento e Modularização

Seminário de aspectos: conceitos, características e exemplos

Programação Orientada a Objetos

UML e seus diagramas

Programação em Comunicações. Programação Orientada por Objectos. Ademar Aguiar.

SCALA! Mariah Barros Cardoso Ruann Magalhães Homem Rudá Martinez Pimentel Deeke Yuri Pereira Constante

Aspectos preliminares

Aula 02 Conceitos e Princípios de Modularidade 1

Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG

Implementação da programação modular II

Introdução à UML. Prof. Jesus José de Oliveira Neto

Fundamentos de Programação

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS EXTRAÇÃO DE LINHAS DE PRODUTOS DE SOFTWARE: UM ESTUDO DE CASO USANDO COMPILAÇÃO CONDICIONAL

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Visão Geral do RUP.

Análise de Sistemas. Aula 5

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Weby - O Gerenciador de Conteúdo Web para IFES

Qualidade Contínua de Software

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

3 GenArch: Uma Ferramenta Baseada em Modelos para Derivação de Produtos de Software

7 Conclusão e Trabalhos Futuros

Aula 02 Conceitos e Princípios de Modularidade 1

Uma ferramenta CASE para o Desenvolvimento de Software Orientado a Aspectos

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

2 Desenvolvimento de Software Orientado a Aspectos

3 Kuaba: Uma Ontologia para Design Rationale

Especificação de Sistemas de Software e a UML

Organização e Arquitetura de Computadores I

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Aula 11 Introdução ao Java Script

4 O Framework de Avaliação

FIC-POO. Aula 1.1 Apresentação do Curso e Introdução aos Paradigmas de Programação. Prof. Dr. Bruno Moreno

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

Algoritmos e Programação

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO AVANÇADA Ano Lectivo 2017/2018

3 Estado da Arte e Trabalhos Relacionados

Algoritmos e Programação

Aplicando regras de programação para refatoração de programas em Dafny: uma linguagem imperativa com especificação nativa

Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Composição de UML Profiles

Transcrição:

Reuso de Software Aula 17 Agenda da Aula Programação Orientada a Características com AHEAD Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 07 Maio 2012 Programação Orientada a Características (FOP) Segundo Don Batory AHEAD e FeatureIDE Exemplos de Programas Estudo Comparativo FOP vs. Compilação Condicional FOP vs. Padrões de Projeto Característica Modular Programação Orientada a Características (FOP) Um sistema é descrito através de suas características A diferença entre uma versão básica e completa de um software são as características disponíveis A implementação de uma característica tende a ser não modular Entretanto, é desejável que ela seja modular para facilitar a plugabilidade Definições Característica é um incremento funcional no desenvolvimento do software Programação orientada a características Paradigma para desenvolvimento de linha de produtos de software Considera características como entidades primárias de projeto e implementação Busca a modularidade de características Refinamento Sucessivo Um dos alicerces de FOP é o refinamento sucessivo O conceito de refinamento sucessivo é simples e antigo Programas complexos devem ser desenvolvidos a partir de partes simples Partes Simples = Características Programas Complexos = LPS

Exemplos de Decomposições Considere as seguintes implementações da classe C class C { int field1; void method2() {... void method3() {... void method4() {... equivalentes class C1 { int field1; void method2() {... class C2 extends C1 { void method3() {... class C extends C2 { void method4() {... Histórico de FOP Surgir da proposta de modelagem em camadas para sistemas BD extensíveis Início da década de 90 Estrutura geral em camadas Um programa é uma pilha de camadas Cada camada adiciona novas funcionalidades às camadas anteriores Diferentes composições das camadas resultam em programas diferentes De Camada para Característica FOP vs. DSOA Com FOP, a idéia de camadas foi generalizada para características Por que considerar as características? Um programa tem várias representações (código, modelos, documentação, etc.) Uma característica aparece em todas as representações As representações devem ser consistentes Semelhanças Ambos procuram modularizar interesses transversais Ambos buscam facilidade de extensão de programas Ambos podem ser usados no desenvolvimento de linha de produtos FOP vs. DSOA O modelo de composição é diferente Modelo de Composição FOP Decomposição funcional Refinamento sucessivo Notação GenVoca Modelo de Composição DSOA Mais intrusivo Não requer refinamento sucessivo

Entendendo o Refines Considere o seguinte programa P P possui apenas uma classe B Valores e Funções Podemos expressar refinamentos de programas algebricamente Programa P class B { int x; Extensão R de P refines class B { int y; void z() {... = Programa N class B { int x; int y; void z() {... No exemplo anterior O programa P é um valor (base) O refinamento R é uma função O programa resultante N é uma expressão N = R(P) equivalente a N = R P Notação de FOP Exemplos da Notação Álgebra elementar pode ser usada para expressar o conceito de composição Uma função adiciona novo código ao programa Uma expressão (formada por funções) representa o programa Exemplo: fun1 (fun2 (fun3)) h i j j ( i (h) ) j i h Definições Exemplo GenVoca é uma notação para definir produtos de uma linha de produtos Cada expressão define um produto Exemplo: p1 = j i h Características são representadas como funções na expressão Nem todas as combinações são possíveis O modelo de características define as restrições i base Expressões j Um produto da linha é chamado expressão O símbolo denota composição i significa o programa base com a característica i j significa o programa base com a característica j i j significa adicionar i ao programa j (acima)

Refinamento Sucessivo Implementações de GenVoca GenVoca é voltado para o refinamento sucessivo no desenvolvimento O processo enfatiza a simplicidade e facilidade de compreensão Considere o produto p1 = i j h 1. O desenvolvimento começa com o refinamento h 2. Então a característica j é adicionada 3. Finalmente a característica i é adicionada GenVoca é uma notação com várias implementações possíveis Originalmente, características em GenVoca eram implementadas usando diretivas de pre-processamento (#ifdef) A técnica que surgiu recentemente é chamada mixin layers Solução adotada em AHEAD Conceitos de AHEAD AHEAD by Exemplos Algebraic Hierarchical Equations for Applications Design AHEAD fornece fundamentação matemática para as expressões GenVoca e seus relacionamentos AHEAD Tool Suite Código da Aplicação Base A linguagem AHEAD implementa os conceitos da formalização Arquivos em AHEAD tem extensão.jak Sintaxe semelhante a Java Exemplo da Calculadora Linha de produtos para inteiros (BigInteger) e decimais (BigDecimal) Operações matemáticas de adição, divisão e subtração Características da LPS Base, BigI, BigD, Iadd, Idiv, Isub, Dadd, Ddivd, Ddivu, Dsub

Aplicação Base + Inteiro Aplicação Base + Decimal BigI e BigD são mutuamente exclusivos Base + Operações Inteiro Base + Operações Inteiro Inteiro Decimal Decimal Idiv e Ddivd são mutuamente exclusivos Decimal Instância da LPS Código do Produto i3 Uma calculadora (produto da LPS) é definida por uma equação GenVoca 1 Alguns produtos possíveis i1 = Iadd BigI Base i2 = Isub Iadd BigI Base i3 = Idiv Iadd BigI Base d1 = Dadd BigD Base d2 = Ddivd Dadd BigD Base 2

Slides in English Compor, Traduzir e Compilar Cria um produto (compor) composer target=i3 Base BigI Idiv Iadd A composição cria um arquivo.jak (calc.jak) Comando para traduzir para Java jak2java *.jak ou jak2java calc.jak Compilar Java javac *.java FeatureIDE to AHEAD FeatureIDE Eclipse Extension for FOP Project Wizard Requires selecting a composition language It supports several composition languages AHEAD AspectJ FeatureC++ FeatureHouse, etc. Feature Model Editor Constraints To create cross-tree constraints Mandatory Optional XOR-Group Or-Group

Model to Code Source code contains a folder for each concrete feature Including files to compose Product Configuration The equations folder has configurations of products from the feature model Each equation represents a product Current product is marked Product Configuration FeatureIDE Process Manual selection Automatic selection Consistency check Products Slides in English Study Settings On the Use of FOP for Evolving Software Product Lines Research question Which variability mechanism best supports SLP evolution with respect to design stability? G. Ferreira, F. Gaia, E. Figueiredo and M. Maia. On the Use of Feature-Oriented Programming for Evolving Software Product Lines - A Comparative Study. SBLP 2011. Variability mechanisms Conditional Compilation (CC) OO Design Patterns (DP) AHEAD (FOP)

Target Software Product Line 5 Releases of WebStore (~1.3 KLOC) Metrics for Analyses Change Propagation Components added / removed / modified Methods added / removed / modified Lines of code added / removed / modified Modularity Feature Diffusion over Components (CDC) / Methods (CDO) / Lines of Code (CDLOC) Lines of Concern Code (LOCC) and Number of Concern Attributes (NOCA) Components Added Components Added All components were added in the 1st release Fewer components were added to the CC version Components Added Components Added Several components were added to the DP version As the SPL evolves, fewer components are added

Components Modified Components Modified Code Erosion Fewer components require changes in FOP More components modified as the SLP evolves Conclusion for FOP Other Conclusions Adheres more closely to the Open-Closed principle Open to extensions (additions) Closed to modifications FOP succeeds in modularizing features with no shared code The use of DP makes the SPL architecture unstable when optional features are turned mandatory Bibliografia da Aula Próxima Aula... Don Batory. A Tutorial on Feature Oriented Programming and the AHEAD Tool Suite. GTTSE, 2006. G. Ferreira, F. Gaia, E. Figueiredo and M. Maia. On the Use of Feature- Oriented Programming for Evolving Software Product Lines - A Comparative Study. SBLP 2011. No laboratório 2011 Assunto Programação Orientada a Característica com AHEAD (e FeatureIDE)