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

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

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

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

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

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

DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY

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

CIS 500 Software Foundations Fall September(continued) IS 500, 8 September(continued) 1

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

BR localization: Hotfix 108. Technical documentation Documentação Técnica Version Oct 16, de outubro de 2018

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

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

PROJETO DE INTERFACES PARA ÁLGEBRA DE MAPAS EM GEOPROCESSAMENTO NO AMBIENTE SPRING

English version at the end of this document

Power Estimation FPGA ASIC

Criando um Editor de Diagramas com Sirius

CANape/vSignalyzer. Data Mining and Report Examples Offline Analysis V

Second Exam 13/7/2010

Usando a abordagem MDA no desenvolvimento de sistemas multi-agentes

Engenharia de Software para Sistemas Embarcados

Programação Orientada a Objetos em Java

Statecharts Yakindu Tool

Aula 12 - Correção de erros

BR localization: Hotfix 004. Technical documentation Documentação Técnica Version Apr 16, de abril de 2019

Laboratório 01 NetBeans

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

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

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

English version at the end of this document

Linguagem de Programação C

MySQL: Comece com o principal banco de dados open source do mercado (Portuguese Edition)

Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

Orientação a Objetos - Programação em C++

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

How to use the system. Meike Borstelmann

Ciclo de vida: fases x atividades

Software Testing with Visual Studio 2013 (20497)

Gestão de Recursos Naturais

ELETRÔNICA DIGITAL I

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

ALGEBRA 2 PRACTICE FINAL EXAM

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

Computação II Orientação a Objetos

PMR 5237 Modelagem e Design de Sistemas Discretos em Redes de Petri

Encapsulamento e Modularização

Classe Abstrata e Interface

Encapsulamento e Modularização

Course Review for Midterm Exam 1. Cpt S 223 Fall 2010

Designing Solutions for Microsoft SQL Server 2014 (20465)

English version at the end of this document

VGM. VGM information. ALIANÇA VGM WEB PORTAL USER GUIDE June 2016

INTRODUÇÃO. RPC x RMI

Pragmática das Linguagens de

BR localization: Hotfix 003. Technical documentation Documentação Técnica Version Dec 12, de Dezembro de 2018

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

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

Métodos Formais em Engenharia de Software. VDMToolTutorial

Idiomas de Programação

English version at the end of this document

Algoritmos e Programação

BR localization: Hotfix 002. Technical documentation Documentação Técnica Version Nov 27, de novembro de 2018

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

CAPÍTULO. Oliveira, Leandro 1 *; Borges, Romes 2

BR localization: Hotfix 107. Technical documentation Documentação Técnica Version Oct 09, de outubro de 2018

PCS 5869 INTELIGÊNCIA ARTIFICIAL

Programação Orientada a Objetos

Métodos Computacionais

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

Implementing a Data Warehouse with Microsoft SQL Server 2014 (20463)

English version at the end of this document

Programação de Computadores:

AULAS TEÓRICO-PRÁTICAS DE COMPILADORES. 2º semestre de 2002/ Algoritmo Iterativo para Determinar Funções Recursivas

BR localization: Hotfix 113. Technical documentation Version Nov 27, 2018

Java Collections Framework II

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001

Computação e Programação 2009 / 2010

Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO

Técnicas para Reutilização de Software

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

Transcript name: 1. Introduction to DB2 Express-C

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools

Arquitetura de Software

Implementing a Data Warehouse with Microsoft SQL Server 2014 (20463)

Criação de uma aplicação Web ASP.NET MVC 4

GILBERTO IGARASHI Estudo da IEC e o seu Impacto no Sistema de Automação de Subestações

Deploying and Managing Windows 10 Using Enterprise Services ( )

Algoritmos I Aula 13 Linguagem de Programação Java

Programação Estruturada e Orientada a Objetos

Aula 7: Portas Lógicas: AND, OR, NOT, XOR, NAND e NOR

AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção

Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto.

BR localization: Hotfix 111. Technical documentation Documentação Técnica Version Nov 06, de novembro de 2018

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

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Planning for and Managing Devices in the Enterprise: Enterprise Management Suite (EMS) & On-Premises Tools (20398)

Transcrição:

DCC / ICEx / UFMG Agenda Feature Oriented Programming with AHEAD Feature Oriented Programming (FOP) By Don Batory Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo AHEAD by Examples FeatureIDE Definition of Feature Feature Oriented Programming (FOP) A feature is an increment in program development or functionality Features can be classified Mandatory features Optional features Or features Alternative features (XOR) Program Configuration Feature Oriented Programming Programs are described or differentiated by features Entry-level versions have a minimal set of features Deluxe versions include most features The ability to add and remove features implies that features are modularized FOP is the study of programming models that support feature modularity It is a general paradigm for programming software product lines. FOP is based on step-wise refinement 1

Step-wise Refinement Step-wise refinement advocates that complex programs can be constructed from simple programs By incrementally adding details In FOP, simple incremental units are called features SPL is the complex program Example of Refinement Let s consider two different implementations of a class C class C { int field1; void method2() {... void method3() {... void method4() {... equivalent class C1 { int field1; void method2() {... class C2 extends C1 { void method3() {... class C extends C2 { void method4() {... A Bit of History FOSD arose out of layer-based designs and levels of abstraction in database systems A program was a stack of layers Each layer added functionality to previously composed layers Different compositions of layers produced different programs From Layers to Features Later, the idea of layers was generalized to features Why using features? A program is composed of several artifacts, such as models and code A feature unifies all artifacts in a single modular unit FOP and AOP Some ideas behind FOP are similar to Aspect-Oriented Programming (AOP) Both cases aim to improve separation of concerns Their goal is to make programs easy to extend and maintain Both FOP and POA can be used to implement a software product line GenVoca 2

GenVoca Example of Refinement GenVoca is a compositional paradigm for defining programs of a SPL Combination of the names Genesis and Avoca GenVoca is based on the stepwise development of programs Programs are constants Refinements are functions Let s consider a program P class B { int x; P has only a class B Program P Extension R of P refines class B { int y; void z() {... = Program N class B { int x; int y; void z() {... Constants and Refinements We can use algebras In the previous example The program P is a constant (base) The refinement R is a function The program N is a the resulting expression N = R(P) equivalent to N = R P GenVoca is a FOP Notation Á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)) Examples of Notation Definições j i h j ( i (h) ) j i h 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 3

Exemplo 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 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 Implementações de GenVoca GenVoca é uma notação com várias implementações possíveis Originalmente, características em GenVoca eram implementadas usando diretivas de pre-processamento (#ifdef) AHEAD by Example A técnica que surgiu recentemente é chamada mixin layers Solução adotada em AHEAD Conceitos de AHEAD AHEAD Tool Suite Algebraic Hierarchical Equations for Application Design AHEAD fornece fundamentação matemática para as expressões GenVoca e seus relacionamentos 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 4

Código da Aplicação Base Aplicação Base + Inteiro Características da LPS Base, BigI, BigD, Iadd, Idiv, Isub, Dadd, Ddivd, Ddivu, Dsub Aplicação Base + Decimal Base + Operações Inteiro BigI e BigD são mutuamente exclusivos (XOR) Inteiro Decimal Decimal Base + Operações Inteiro Instância da LPS Uma calculadora (produto da LPS) é definida por uma equação GenVoca Idiv e Ddivd são mutuamente exclusivos (XOR) Decimal 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 5

Código do Produto i3 Compor, Traduzir e Compilar 1 2 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 Jampack x Mixin Mixin and Unmixin AHEAD têm duas formas de compor módulos jampack: resulta em uma única classe mixin: cada refinamento em uma classe Usando mixin, cada classe é precedida por uma anotação SoUrCe Esta anotação indica a característica da qual a classe é derivada Exemplo de Produto (Mixin) Característica Iadd Exemplo: Jampack x Mixin Mixin Característica Idiv... Jampack... 6

Código Composto por Mixin Todas as classes da cadeia de refinamentos são abstratas Exceto a última classe Um sufixo é adicionada para cada classes com o nome da característica O objetivo é manter nomes únicos Por que usar mixin? Usar mixin ao invés de jampack permite rastreamento reverso para o código fonte Exemplo Após usar o jak2java, o código gerado pode possuir um erro Se todo o código estiver em uma única classe, como saber em qual característica está o erro? O rastreamento é possível usando mixin Unmixin Mecanismo de AHEAD para propagar alterações do código java para o jak AHEAD with FeatureIDE Caso o código java seja alterado, ao usar o comando unmixin, as alterações são propagadas para o jak original FeatureIDE Eclipse extension for FOP Project Wizard Requires selecting a composition language It supports several composition languages AHEAD AspectJ FeatureC++ FeatureHouse, etc. 7

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 Default Product The equations folder has configurations of products from the feature model Each equation represents a product Current product is marked Product Configuration The FeatureIDE Process Manual selection Automatic selection Consistency check Products 8

Bibliography Don Batory. A Tutorial on Feature Oriented Programming and the AHEAD Tool Suite. GTTSE, 2006. 9