Agenda da Aula FMP. Feature Modeling Plug-in (FMP) Tela 2: Produto da LPS. Tecnologias para Linhas de Produtos de Software
|
|
- Maria de Fátima Belmonte Azambuja
- 5 Há anos
- Visualizações:
Transcrição
1 Reuso de Software Aula 06 Agenda da Aula Tecnologias para Linhas de Produtos de Software Eduardo Figueiredo 26 Março 2012 Ferramentas para variabilidade Feature Modeling Plug-in (FMP) XFeature Pure::Variants SPLOT Técnicas para implementação de LPS Compilação condicional Programação orientada a aspectos Programação orientada a características FMP Feature Modeling Plug-in (FMP) Permite criar modelos de características para LPS Plug-in para a plataforma Eclipse Protótipo desenvolvido em Criada na Universidade de Waterloo Grupo do Krzysztof Czarnecki que propôs o modelo de características Tela 1: Modelo de Características Tela 2: Produto da LPS Feature do Grupo
2 XFeature XFeature Propósito semelhantes ao FMP Permite criar modelos de características Plug-in para a plataforma Eclipse Protótipo desenvolvido em 2005 Criada em dois centros de pesquisa em Zurique, Suíça P&P Software GmbH Automatic Control Laboratory Tela do XFeature Pure::Variants Pure::Variants Tela 1: Seleção de Características Sistema comercial Mais maduro Integrável ao Eclipse, mas também a outras IDEs (IBM) Enterprise Architect, IBM Rational DOORS, IBM Rational Rhapsody, etc.
3 Tela 2: Editor Gráfico S.P.L.O.T. Histórico do SPLOT Lançada em maio de 2009 Universidade de Waterloo Mesmo grupo do Czarnecki (FMP) Ferramenta Web open source Objetivo é incentivar o compartilhamento de informação Possui um repositório com cerca de 180 modelos de características Modelo de Características Mandatória Grupo (alternativa) Opcional Dependências e Análise Inclui mecanismos para indicar dependências entre características e análise de consistência Configuração do Produto Suporte para instanciação de produtos válidos
4 Compilação Condicional Compilação Condicional Consiste na anotação de trechos de código associados a uma determinada característica Estas anotações são interpretadas por um pré-processador que decide sobre a inclusão do código no produto Exemplos comuns #ifdef, #else, #endif public static final Command viewcommand; public static final Command addcommand; public static final Command deletecommand; public static final Command editlabelcommand; // #ifdef includesorting public static final Command sortcommand; // #ifdef includefavourites public static final Command favoritecommand; public static final Command viewfavoritescommand; O código que implementa as características opcionais delimitado por compilação condicional. S F public static final Command viewcommand; public static final Command addcommand; public static final Command deletecommand; public static final Command editlabelcommand; // #ifdef includesorting public static final Command sortcommand; // #ifdef includefavourites public static final Command favoritecommand; public static final Command viewfavoritescommand; public void initmenu() { this.addcommand(viewcommand); this.addcommand(addcommand); this.addcommand(deletecommand); this.addcommand(editlabelcommand); // #ifdef includesorting this.addcommand(sortcommand); // #ifdef includefavourites this.addcommand(favoritecommand); this.addcommand(viewfavoritescommand); O código que implementa as características pode estar dentro de métodos. S F public void initmenu() { this.addcommand(viewcommand); this.addcommand(addcommand); this.addcommand(deletecommand); this.addcommand(editlabelcommand); // #ifdef includesorting this.addcommand(sortcommand); // #ifdef includefavourites this.addcommand(favoritecommand); this.addcommand(viewfavoritescommand);
5 Configuração Como é feita a configuração Considerando apenas Várias formas Uma característica mandatória (Central) Duas características opcionais (Ordenação e Favoritos) Exemplo: é dito ao pré-processador quais características (símbolos) devem ser incluídos no produto final Instâncias Central Ordenação Favoritos S F preprocessor.symbols = central, includesorting, includefavourites Produto 1 Sim Sim Sim Produto 2 Sim Sim Não Produto 3 Sim Não Sim S F preprocessor.symbols = central, includesorting preprocessor.symbols = central, includefavourites Produto 4 Sim Não Não preprocessor.symbols = central DSOA para LPS DSOA Aspectos Aspectos podem ser usados para separar características que são transversais na LPS Cada característica variável pode ser implementada por um conjunto de classes e aspectos A extração de características para aspectos exige identificação do código que implementa esta característica Características Modularizadas Aspectos fazem a ligação
6 Configuração Feito pela inclusão ou exclusão das classes e aspectos que implementam uma característica Produto 1 Produto 2 S public static final Command viewcommand; public static final Command addcommand; public static final Command deletecommand; public static final Command editlabelcommand; public aspect SortingAspect { public static final Command sortcommand; pointcut initmenu(photolistscreen screen): execution(public void PhotoListScreen.initMenu()) && this(screen); after(photolistscreen screen) : initmenu(screen) { screen.addcommand(sortcommand); Definições FOP Características Programação Orientada a Características (FOP) é um paradigma de programação para desenvolvimento de linha de produtos de software Uma característica é um incremento funcional no desenvolvimento do software Refinamento Sucessivo Notação GenVoca O processo que enfatiza a simplicidade e facilidade de compreensão base Um produto da linha é chamado expressão Considere o produto p1 = j i h 1. O desenvolvimento começa com o característica h 2. A característica i é adicionada refinando h 3. A característica j é adicionada refinando i i Expressões j O símbolo denota composição i : o programa base com a característica i j : o programa base com a característica j i j : adicionar i ao programa j (acima)
7 Exemplos da Notação 1 2 h i 3 j j ( i (h) ) j i h public static final Command backcommand = new Command( ); public void initmenu() { this.addcommand(backcommand); public refines class PhotoListScreen { public static final Command viewfavoritescommand = new Command( ); public void initmenu() { Super().initMenu(); F this.addcommand(viewfavoritescommand); public refines class PhotoListScreen { public static final Command sortcommand = new Command( ); public void initmenu() { S Super().initMenu(); this.addcommand(sortcommand); Study Settings Estudo Comparativo Compilação Condicional vs. Aspectos Figueiredo, E. et al. Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. Int l Conference on Software Engineering (ICSE), Two software product lines MobileMedia BestLap Development and evolution Alignment of the AspectJ (AOP) and Java (CC) versions Implementation of change scenarios (for both AOP and CC) Goal: assessment of design stability Change Scenarios Manage music Manage videos MobileMedia Change MobilePhoto core Exception handling Label photo and count the number of photo views and sorting Specify and view favourite photos Multiple copies of photos Send photo by SMS Feature Mandatory Mandatory and Optional Optional Optional Optional Alternative Alternative BestLap Change 1 Core features for Motorola V220 2 Extended screen size for Motorola V300 and L6 3 Extended sound for Nokia family 4 Extended the shortcut keys for Siemens and Sony Ericsson 5 Allow users to store lap times Feature Alternative Alternative Alternative Optional Multi-Dimensional Analysis Change Impact Analysis Conventional Modularity Metrics Separation of Features Feature Dependency Analysis
8 Multi-Dimensional Analysis Change Impact Analysis Conventional Modularity Metrics Separation of Features Feature Dependency Analysis Change Impact Analysis Metrics Number of components added / removed / changed Number of operations added / removed / changed Number of lines of code added / removed / changed, etc. Classification of Changes Targeting Mandatory Features Targeting Optional Features Targeting Alternative Features Example of Results Result 2: Optional Features Metrics Result 1 Number of components AspectJadded fails / when removed changes / changed Number of operations target added mandatory / removed / features changed Number of lines of code (details added in / the removed paper) / changed, etc. AspectJ adds more elements Components R.4 (%) R.6 (%) Operations R.4 (%) Added Added Removed Removed 0.0 Changed Changed R.6 (%) Classification of Changes Targeting Mandatory Features Targeting Optional Features Targeting Alternative Features Classes (main behaviour) + Aspects (connection / glue) (Releases 4 and 6) New methods (expose joinpoints) + advice CC Splitting Methods AspectJ may require the creation of methods class PhotoController { public boolean savephoto() { String photoname; // #ifdef if (imgbyte.length > 0) addimagedata(); return true; A new method to expose variability joinpoints class PhotoController { public boolean savephoto() { String photoname; return proceedsave(); boolean proceedsave() { return true; AOP Result 2: Optional Features but, AspectJ changes less elements Components R.4 (%) R.6 (%) Operations R.4 (%) R.6 (%) Added Added Removed Removed Changed Changed Changes are more localised into aspects AspectJ conforms more closely the Open-Close Principle [1] (Releases 4 and 6) [1] Meyer, B. Object-Oriented Oriented Software Construction Oriented Software Construction. st ed. Prentice-Hall, Englewood Cliffs, 1988.
9 Result 3: Alternative Features AspectJ fails when turning a mandatory feature into alternative More (classes + aspects) More (methods + advices) Result 3: Alternative Features AspectJ succeeds when including a new alternative It still adds more elements Components R.7 (%) R.8 (%) Operations R.7 (%) R.8 (%) Components R.7 (%) R.8 (%) Operations R.7 (%) R.8 (%) Added Added Added Added Removed Removed Removed Removed Changed Changed Changed Changed Changes in joinpoints may cause core->variability ripple effects (Release 7) But, with fewer changes since they do not target the core (Release 8) Multi-Dimensional Analysis Modularity Analysis Change Impact Analysis Conventional Modularity Metrics Separation of Features Feature Dependency Analysis The main goal is to evaluate the stability Variation in Coupling, cohesion, and size Traditional Modularity Metrics Coupling between Components (CBC) Lack of Cohesion in Operations (LCOM) Number of Lines of Code (LOC) Number of Components (VS), etc. Coupling Between Components Absolute Values Favour Java Java AspectJ MobileMedia Lack of Cohesion Over Operations Higher Coupling and Lower Cohesion New non-cohesive methods to expose joinpoints class PhotoController { public boolean savephoto() { String photoname; // #ifdef includesms capturephoto if (imgbyte.length > 0) addimagedata(); return true; PhotoController savephoto() proceedsave() <<crosscuts>> <<aspect>> CapturePhotoOrSMS proceedsavepointcut() proceedsaveadvice() Releases Key factor: overhead of AspectJ Releases - heterogeneous aspects - little reuse CC Aspects coupled to the base code AOP
10 Coupling Between Components Complex Combinations of Features Java AspectJ Releases MobileMedia Lack of Cohesion Over Operations IFDEF uses AND / OR vs. operators (R7 and R8) Releases AspectJ requires several new aspects CC A New Aspect per Combination Aspects modularise the shared code // #ifdef includesms capturephoto // #ifdef includesms && capturephoto // #ifdef includesms && copyphoto Shared code between the SMS and Copy features <<aspect>> CapturePhotoOrSMS <<aspect>> CapturePhotoAndSMS <<aspect>> CopyPhotoAndSMS AOP Concluding Remarks Quantitative data answer When the use of aspects is more adequate? When the use of aspects is more challenging? Questions that may impact the aspectisation decision What is the kind of the change? Which are the target features? Does the target feature share code with others? Are there complex dependencies among features? Concluding Remarks The use of aspects is more adequate Include optional features No shared code No complex dependencies The use of aspects is more challenging Turn mandatory into alternative Shared code Complex dependencies Bibliografia Principal Website das ferramentas Figueiredo, E. et al. Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. Int l Conference on Software Engineering (ICSE), Leitura adicional G. Ferreira, F. Gaia, E. Figueiredo e M. Maia. On the Use of Feature-Oriented Programming for Evolving Software Product Lines - A Comparative Study. Simpósio Brasileiro de Linguagens de Programação (SBLP), Próxima Aula Laboratório 2011 Assunto Linha de produtos de software
Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)
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
Tela Principal do ArgoUML. ArgoUML: Diagrama de Casos de Uso. Elementos do diagrama. Criar um novo diagrama. Elementos do diagrama
DCC / ICEx / UFMG Tela Principal do ArgoUML ArgoUML: Diagrama de Casos de Uso Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Criar um novo diagrama Novo Diagrama de Casos de Uso Ator Caso de Uso
Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)
DCC / ICEx / UFMG Agenda da Aula Programação Orientada a Características com AHEAD Programação Orientada a Características (FOP) Segundo Don Batory Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo
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
Reutilização de Software Aula 13 Aula 01: Apresentação Revisão para Prova 1 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 23 Setembro 2013 Bibliografia Método de avaliação
05/10/2014. Agenda. Feature Oriented Programming with AHEAD. Definition of Feature. Feature Oriented Programming (FOP) Program Configuration
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
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
Software Reuse Lecture 13 Aula 01: Apresentação Review to 1 st Exam Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 15 September 2014 Bibliografia Método de avaliação Provas
18/10/2013. Resumo. Os mecanismos. Introdução. Padrões de projeto (OO) Compilação condicional
On the Use of Feature-Oriented Programming for Evolving Software Product Lines A Comparative Study Gabriel Coutinho Sousa Ferreira, Felipe Nunes Gaia, Eduardo Figueiredo and Marcelo de Almeida Maia {gabriel,
Extração e Evolução de Linhas de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features
Extração e Evolução de Linhas de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features Rogério Celestino dos Santos Orientador: Marco Túlio Valente Instituto de
DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY
DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY APRESENTADO POR: BRUNO LUAN DE SOUSA QUA L I DA DE E MEDIÇÃO DE SOFTWA R E U N I V E R S I DA D E F E D E R A L D E MINAS G E
By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa
By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa Problema; AOP; Aspect J; Proposta ao Problema; Conclusões; Referências. Desenvolver os tipos abstratos de dados: lista, fila, pilha e deque. Estes
AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção
DCC / ICEx / UFMG AspectJ AspectJ Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Linguagem orientada a aspectos mais madura e difundida Extensão simples da linguagem Java Gera arquivos.class compatíveis
Orientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Algoritmos I Aula 13 Linguagem de Programação Java
Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto
CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER
FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER
Agenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada
Engenharia de Software Aula 23 Agenda da Aula Desenvolvimento de Software Orientado a Aspectos Introdução a desenvolvimento de software orientado a aspectos Interesses centrais e interesses transversais
Histórico: Linha de Produção
Escola Regional de Informática ERI-MG Linha de Produtos de Software: Conceitos Histórico: Linha de Produção Produtos em geral eram feitos manualmente Com o crescimento do consumo, foi necessário automatizar
Second Exam 13/7/2010
Instituto Superior Técnico Programação Avançada Second Exam 13/7/2010 Name: Number: Write your number on every page. Your answers should not be longer than the available space. You can use the other side
Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software
Reuso de Software Aula 02 Agenda da Aula Introdução a Reuso de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Introdução a Reuso de Software Abordagens de Reuso
3 GenArch: Uma Ferramenta Baseada em Modelos para Derivação de Produtos de Software
35 3 GenArch: Uma Ferramenta Baseada em Modelos para Derivação de Produtos de Software Este capítulo apresenta a abordagem de derivação de LPS implementada pela ferramenta GenArch. A abordagem tem como
Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos
Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos 1. Para a construção de uma aplicação gráfica se faz necessário conceber a interface de aplicação, identificando-se
9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Desenvolvimento Dirigido por Modelos: Ferramentas
DCC / ICEx / UFMG Desenvolvimento Dirigido por Modelos: Ferramentas Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Existe MDD na prática? Poucos sistemas ainda são desenvolvidos usando a filosofia
Referências bibliográficas
Referências bibliográficas AL BELUSHI, W.; BAGHDADI, Y., "An Approach to Wrap Legacy Applications into Web Services," Service Systems and Service Management, 2007 International Conference on, vol., no.,
2 Desenvolvimento de Software Orientado a Aspectos
20 2 Desenvolvimento de Software Orientado a Aspectos A divisão em partes é um importante instrumento para se reduzir a complexidade de sistemas de software. É muito difícil para o ser humano compreender
PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo
PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 6: Polimorfismo Escola Politécnica da Universidade de São Paulo Conceito de polimorfismo 2 Polimorfismo A palavra vem
Definição de Conjuntos de Junção Robustos usando Aspect-Aware Interfaces e Aspectos Anotadores
Definição de Conjuntos de Junção Robustos usando Aspect-Aware Interfaces e Aspectos Anotadores Leonardo Humberto Guimarães Silva Orientador: Marco Túlio de Oliveira Valente Programa de Pós-graduação em
Implementação da programação modular II
Implementação da programação modular II - 1 Implementação da programação modular II Aula 11 Agenda Declaração e definição de dados Os conceitos relacionados com a ligação de programas Os elementos essenciais
AULAS TEÓRICO-PRÁTICAS DE COMPILADORES. 2º semestre de 2002/ Algoritmo Iterativo para Determinar Funções Recursivas
AULA EÓICO-ÁICA DE COMILADOE AULA Nº 3 (3 horas) 2º semestre de 2002/2003 1 Algoritmo Iterativo para Determinar Funções ecursivas Esta aula pretende representar uma classe de algoritmos muito utilizada
Orientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
AspectJ. Silvio do Lago Pereira. Doutorando em Ciência da Computação
AspectJ Silvio do Lago Pereira Doutorando em Ciência da Computação slago@ime.usp.br Sumário Programação Orientada a Objetos (POO) Programação Orientada a Aspectos (POA) AspectJ Exemplos Novembro/2002 Silvio
Padrões de Testes Automatizados
Padrões de Testes Automatizados Paulo Cheque 10/02/2009 Verão2009 2 Introdução Testes codificados Exigem boa programação Mesmos problemas de um software Devem receber o mesmo tratamento Exigem manutenção
JBoss AOP para quem já conhece AspectJ
JBoss AOP para quem já conhece AspectJ Francisco Reverbel Departmento de Ciência da Computação Universidade de São Paulo 1 MAC-413/5715 - IME-USP - 2004 Características do JBoss AOP Arcabouço para programação
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Qualidade Contínua de Software
Qualidade Contínua de Software Alessandro Garcia afgarcia@inf.puc-rio.br Departamento de Informática Plethora of (SE) Software Engineering Paradigms promoting quality by construction syndrome of *-based
Avoiding code pitfalls in Aspect-Oriented Programming
Avoiding code pitfalls in Aspect-Oriented Programming Adriano Santos, Péricles Alves, Eduardo Figueiredo, Fabiano Ferrari 18º Simpósio Brasileiro de Linguagens de Programação Maceió, 2014 Apresentação:
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Exercício de Estrutura de dados. Java Fila
Exercício de Estrutura de dados Java Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado
10/10/2012. Artigo: Autores:
Artigo: Apresentar um estudo sistemático sobre as métricas de acoplamento na Programação Orientada a Aspectos e seu impacto na manutenibilidade e estabilidade do projeto. Autores: Rachel Burrows, Alessandro
Programação Orientada a Objeto: Introdução. Professor: Adonai Estrela Medrado Data: 22/07/2008
Programação Orientada a Objeto: Introdução Professor: Adonai Estrela Medrado Data: 22/07/2008 Programação Programação É o ato de fazer um programa. Um programa é conjunto de ordens dadas a um computador
Paradigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
Mineração de Repositórios de Software Aplicada aos SIGs/UFRN
Workshop SINFO - 2013 Mineração de Repositórios de Software Aplicada aos SIGs/UFRN Uirá Kulesza, Professor Doutor Departamento de Informática e Matemática Aplicada (DIMAp) Universidade Federal do Rio Grande
private void btapresentanomeactionperformed(java.awt.event.actionevent evt) {
Jorge Ferreira 1 NOTAS DE AULA JAVA 5 E NETBEANS 5 Seguindo as configurações iniciais do formulário, devemos definir o comportamento de apresentação da janela quando executarmos o programa. Para tanto,
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Orientação a Objetos. Programação em C++
OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 9: Programação ou Implementação: uma fase da engenharia de software. Projeto (UML) e Programação (C++,...) Prof. Dr. Jean Marcelo
Um Estudo Quantitativo das Implementações Orientadas a Aspectos do Padrão Data Access Object
Um Estudo Quantitativo das Implementações Orientadas a Aspectos do Padrão Data Access Object André L. de Oliveira 1, André L. A. Menolli 2, Ricardo G. Coelho 2, Valter V. de Camargo 3, Ricardo A. Ramos
Linha de Produtos de Software: Conceitos e Ferramentas
Capítulo 1 Linha de Produtos de Software: Conceitos e Ferramentas Juliana Alves Pereira 1, Eduardo Figueiredo 1, Heitor Augustus Costa 2 1 Departamento de Ciência da Computação, Universidade Federal de
Revisão Sistemática da Literatura sobre Métodos de Localização de Características
Revisão Sistemática da Literatura sobre Métodos de Localização de Características Cleice Souza 14 de maio de 2014 Roteiro Introdução Característica ou Feature Planejamento da Revisão Sistemática Condução
Seletores de Pontos de Junção. Cristiano Breuel
Seletores de Pontos de Junção Cristiano Breuel Tópicos Introdução à Programação Orientada a Aspectos Motivação Trabalhos relacionados Proposta deste trabalho Comparação de abordagens 2 Introdução Linguagens
English version at the end of this document
English version at the end of this document Ano Letivo 2016-17 Unidade Curricular PROGRAMAÇÃO ORIENTADA POR OBJETOS Cursos ENGENHARIA ELETRÓNICA E TELECOMUNICAÇÕES (Mestrado Integrado) ENGENHARIA INFORMÁTICA
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão
e Objetos em Java Algoritmos e Programação I Aula 9 Profa. Márcia Cristina Moraes mmoraes@inf.pucrs.br Profa. Sílvia M. W. Moraes silvia@inf.pucrs.br Prof. Marcelo H. Yamaguti yamaguti@inf.pucrs.br Prof.
Composição e Geração de Aplicações usando Aspectos
Composição e Geração de Aplicações usando Aspectos Carlos Alberto de Freitas Pereira Júnior 1 Rosana Teresinha Vaccare Braga 1 1 Programa de Mestrado em Ciências de Computação e Matemática Computacional
English version at the end of this document
English version at the end of this document Ano Letivo 2016-17 Unidade Curricular MICROPROCESSADORES Cursos ENGENHARIA ELÉTRICA E ELETRÓNICA (1.º ciclo) - RAMO DE TECNOLOGIAS DE INFORMAÇÃO E TELECOMUNICAÇÕES
Disciplina Medições e Qualidade de Software. Tópicos da Disciplina. Método de Avaliação. Qualidade de Software.
Engenharia de Software Aula 19 Disciplina 2012-2 Medições e Qualidade de Software Medição e Qualidade de Software Terças e quintas: 9:25 as 11:05 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com
Programação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks
48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o
1 Introdução e Conceitos básicos
1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2
English version at the end of this document
English version at the end of this document Ano Letivo 2017-18 Unidade Curricular PROGRAMAÇÃO ORIENTADA POR OBJETOS Cursos ENGENHARIA INFORMÁTICA (1.º ciclo) ENGENHARIA ELETRÓNICA E TELECOMUNICAÇÕES (Mestrado
Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ
Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ Objetivos O objetivo dessa apresentação é proporcionar uma visão geral sobre a programação orientada
Seminário de aspectos: conceitos, características e exemplos
Seminário de aspectos: conceitos, características e exemplos Daniel Bruno Conrado Thiago Gottardi Departamento de Computação Universidade Federal de São Carlos (UFSCar) São Carlos SP Brasil dbconrado@gmail.com,
//conteúdo do arquivo pacote.h
//conteúdo do arquivo pacote.h #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator
Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes
Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes Antônio Francisco do Prado Daniel Lucrédio e-mail: prado@dc.ufscar.br Resumo Este artigo apresenta a ferramenta CASE
Reinaldo Gomes Análise/projeto estruturado
Programação Orientada a Objetos Objetos, Classes e Mensagens O Modelo de Objetos Objetos e Classes Mensagens e métodos Reinaldo Gomes reinaldo@cefet-al.br Decomposição Análise/projeto estruturado Soluciona
Aspectos para Construção de Aplicações Distribuídas
Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort maffort@gmail.com Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007 Middleware Objetivo:
PROGRAMAÇÃO JAVA. Parte 3
PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos
Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo
Engenharia de Software Aula 21 Agenda do Curso Reuso de Software Aula 23 Data 28/05 Assunto Desenv. Orientado a Aspectos 24 30/05 Laboratório 25 04/06 Apresentações do TP (1) Eduardo Figueiredo 26 06/06
Introdução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
ArgoUML-SPL: Uma Linha de Produtos para Modelagem de Sistemas usando UML
ArgoUML-SPL: Uma Linha de Produtos para Modelagem de Sistemas usando UML Marcus Vinicius Couto 1, Marco Túlio Valente 2 1 Instituto de Informática, PUC Minas 2 Departamento de Ciência da Computação, UFMG
Carlos Eduardo Batista. Centro de Informática - UFPB
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos
Conceitos Básicos de C
Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,
Writing Good Software Engineering Research Papers
Writing Good Software Engineering Research Papers Mary Shaw Proceedings of the 25th International Conference on Software Engineering, IEEE Computer Society, 2003, pp. 726-736. Agenda Introdução Questões
Design de Multimédia e Interacção
índice 1. Interacção 1.1 Definições 2.1 Definições 2.2 Definições - diagrama 1 2.3 Definições - sumário 2.4 Princípios - diagrama 2 2.5 So, What is Interaction Design? Bibliografia 1. Interacção 1.1 Definições
Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:
Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos
Projeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Threads. Leonardo Gresta Paulino Murta
Threads Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos a execução em paralelo de programas em Java por meio de Threads Leonardo Murta Threads 2 Por que usar Threads? Threads
Reuso de Software Aula Maio 2012
Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Componentes Modelos de Componentes
4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
FCUP 2010/11. Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1 o Teste: 27/Abril/2011
1 1 Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1 o Teste: 27/Abril/2011 FCUP 2010/11 duração: 2 horas 1. Teste A (indicar o teste que estão a fazer na folha de resposta) 2. Cotação
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Palavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Avoiding Code Pitfalls in Aspect-Oriented Programming
Avoiding Code Pitfalls in Aspect-Oriented Programming A. Santos, P. Alves, E. Figueiredo, and F. Ferrari Science of Computer Programming (SCP, 2015) Apresentação: Aline Brito Programação Orientada a Aspecto
Controlo de Execução. K&R: Capitulo 3
Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
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
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO
REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração
Aula 18 Métricas e Anomalias de Modularidade
Aula 18 Métricas e Anomalias de Modularidade Marcos Silva LES/DI/PUC-Rio Maio 2010 Hoje... Introdução à Métricas Tipos de Métricas Métricas de Tamanho Métricas de Complexidade Métricas de Acoplamento Métricas
Programação Java (nível intermediário) 4. Polimorfismo
Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo
Programming in C# Conteúdo Programático. Área de formação Plataforma e Tecnologias de Informação
Destinatários Programadores experientes com algum conhecimento de C, C++, JavaScript, Objective-C, Microsoft Visual Basic, ou Java e conheçam os conceitos de programação orientada por objetos. Nº mínimo
Curso Profissional de Técnico de Informática - Sistemas
Planificação Anual 2018/2019 Curso Profissional de Técnico de Informática - Sistemas LINGUAGENS DE PROGRAMAÇÃO 11º ANO 1 MÓDULO 4 - UFCD 0785 - Programação em C/C++ - Formas complexas Data Início/Final:
BR localization: Hotfix 002. Technical documentation Documentação Técnica Version Nov 27, de novembro de 2018
ENTERPRISE MANAGEMENT BR localization: Hotfix 002 Technical documentation Documentação Técnica Version 11.10.0 Nov 27, 2018 27 de novembro de 2018 Contents Prerequisites 3 Patch Installation 4 Instructions