linhas de processos de software - minicurso - sbqs 2011

219
Linhas de Processo de Software: Conceitos, Técnicas e Ferramentas Uirá Kulesza DIMAp / UFRN [email protected] Em colaboração com Fellipe Aleixo, Marilia Freire e Daniel Alencar

Upload: uira-kulesza

Post on 11-Jun-2015

1.733 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software: Conceitos, Técnicas e Ferramentas

Uirá Kulesza DIMAp / UFRN

[email protected]

Em colaboração com Fellipe Aleixo, Marilia Freire e Daniel Alencar

Page 2: Linhas de Processos de Software - Minicurso - SBQS 2011

Breve Apresentação •  Acadêmico

– Professor do DIMAp, UFRN – Doutor em Informática pela PUC-Rio – Pós-doutorado – Projeto Europeu

AMPLE •  Indústria

– Engenheiro de Processos e Software do CESAR, Qualiti e Radix

– Pesquisador Sênior do CESAR

Page 3: Linhas de Processos de Software - Minicurso - SBQS 2011

Objetivos do Curso

•  Descrever desafios atuais para gerência e customização de variabilidades em processos de software

•  Apresentar o estado-da-arte da área de linhas de processos de software – Co-relacionando com os avanços da área de

processos

Page 4: Linhas de Processos de Software - Minicurso - SBQS 2011

Agenda

•  Contexto e Motivação •  Engenharia de Processos de

Software •  Linhas de Produto de Software •  Linhas de Processo de Software

Page 5: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação •  Demanda crescente pela definição e

melhoria contínua de processos para promover o desenvolvimento produtivo de software de qualidade

Page 6: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação •  Ao longo dos últimos anos, pode se

observar a evolução da área de processos de software: –  Modelos de maturidade –  Frameworks de processos –  Metodologias e práticas agéis –  Processos alinhados com técnicas

existentes (orientação a objetos) –  Avanços em técnicas para diferentes

disciplinas

Page 7: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação •  De forma geral, podemos dizer que

estamos bem servidos de informações, técnicas e mecanismos que nos auxiliem na definição e avaliação de processos de software

Page 8: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação •  Apesar dos avanços na área, ainda

existe uma forte demanda pela rápida e efetiva customização de processos de software atuais para endereçar a variedade de projetos, tecnologias, cultura e escala existentes

Page 9: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafios •  Como lidar com redundância e

inconsistências oriundas de processos definidos para uma organização?

Page 10: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafios •  Como incorporar mudanças que

ocorrem durante a execução de processos em outros processos futuros?

•  Como lidar com a evolução simultânea de vários processos?

Page 11: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafios •  Como garantir que não se gasta

tempo relacionado a definição e manutenção de processos em tarefas improdutivas?

•  Como promover o reuso de práticas, métricas, técnicas entre processos de uma empresa?

Page 12: Linhas de Processos de Software - Minicurso - SBQS 2011

Complexidade na Eng. de Processos

Page 13: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafio Geral

•  Como promover o reuso dentro de uma família de processos relacionados ?

•  Como gerenciar variabilidades que ocorrem em tal família?

Page 14: Linhas de Processos de Software - Minicurso - SBQS 2011

Agenda

•  Contexto e Motivação •  Engenharia de Processos de

Software •  Linhas de Produto de Software •  Linhas de Processo de Software

Page 15: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia de Processo

•  Área responsável pela criação, modelagem, adaptação e representação de processos de software

Page 16: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão do SWEBOK

Page 17: Linhas de Processos de Software - Minicurso - SBQS 2011

Como vocês definem seus processos de software?

Page 18: Linhas de Processos de Software - Minicurso - SBQS 2011

Conhecimento na área

•  Modelos de Ciclo de Vida

•  Frameworks de Processos (RUP)

•  Práticas Agéis (XP, SCRUM)

•  Modelos de Maturidade

Page 19: Linhas de Processos de Software - Minicurso - SBQS 2011

Cultura da Equipe e Escala do Projeto (Contexto)

•  Experiência da Equipe

•  Conhecimento de tecnologias –  Técnicas, métodos, ferramentas

•  Escopo/Complexidade do Projeto

•  Custo do Projeto

Page 20: Linhas de Processos de Software - Minicurso - SBQS 2011

Como especificar processos de software?

Page 21: Linhas de Processos de Software - Minicurso - SBQS 2011

Linguagens de Modelagem de Processos de Software

•  Na década de 90, diversas linguagens de modelagem de processos de software foram propostas –  Marvel, SPADE, SPELL, APL/A

•  Forte ênfase em formalismos complexos e pouca flexibilidade foram uma das principais razões para receber pouca atenção da indústria

Page 22: Linhas de Processos de Software - Minicurso - SBQS 2011

Linguagens de Modelagem de Processos de Software

•  Ao longo dos últimos anos, novas linguagens baseadas em UML foram propostas

•  Duas vertentes principais: –  Industrial:

•  SPEM 1.1, SPEM 2.0 –  Projetos de Pesquisa:

•  Promenade, UML4SPM, Chous, DiNittos

Page 23: Linhas de Processos de Software - Minicurso - SBQS 2011

Linguagens de Modelagem de Processos de Software

•  Estudo comparativo recente avalia tais linguagens sob diferentes perspectivas: –  Riqueza Semântica –  Aderência a UML –  Representação Gráfica –  Executabilidade –  Modularidade –  Formalismo –  Suporte Ferramental

Page 24: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo Comparativo

R. Bendraou, J. Jézéquel, M. Gervais, X. Blanc: A Comparison of Six UML-Based Languages for Software Process Modeling. IEEE Trans. Software Eng. 36(5): 662-675 (2010)

Page 25: Linhas de Processos de Software - Minicurso - SBQS 2011

SPEM 1.1 •  Linguagem de modelagem de processos

de software proposta pela OMG em 2005 •  Reutiliza diagramas de UML (classe,

atividade, estado, ...) para permitir a especificação de processos de software

•  Possibilidade de uso de diferentes modelos para especificação de processos

•  Sem suporte para executabilidade

Page 26: Linhas de Processos de Software - Minicurso - SBQS 2011

SPEM 2.0 •  Define abstracões de processos

independentes de UML em metamodelo MOF próprio

•  Modularidade: –  Separação clara entre conteúdo de processo

da sua instanciação para processos específicos

•  Suporte Ferramental Industrial •  Não explicita mecanismos para promover

a execução de processos

Page 27: Linhas de Processos de Software - Minicurso - SBQS 2011

UML4SPM •  Permite modelagem e execução de

processos em uma única linguagem •  Reusa o diagrama de atividade de UML

para especificação de processos •  Execução do processo pode ser

realizada através do seu mapeamento para linguagens de workflow (BPEL), ou do uso da semântica operacional oferecida por um modelo próprio de execução

Page 28: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramentas de Definição de Processos

•  Surgimento de ferramentas para definição de processos, e gerência de seus diferentes elementos (atividades, guias, papéis)

•  Ferramentas industriais: –  Eclipse Process Framework –  Rational Method Composer

Page 29: Linhas de Processos de Software - Minicurso - SBQS 2011

Reuso em Processos de Software

Page 30: Linhas de Processos de Software - Minicurso - SBQS 2011

Eclipse Process Framework

•  Projeto open-source da comunidade Eclipse

•  Objetivos: –  Framework extensível e ferramenta para

definição, configuração e publicação de processos

–  Disponibilização de processos de referência

Page 31: Linhas de Processos de Software - Minicurso - SBQS 2011

Eclipse Process Framework

Page 32: Linhas de Processos de Software - Minicurso - SBQS 2011

EPF - Conceitos

•  Permite estruturar frameworks de processos em pequenas unidades modulares – method content – para promover o seu reuso

•  Cada method content é definido usando o metamodelo Unified Method Architecture (UMA) –  UMA representa um subconjunto do

SPEM 2.0

Page 33: Linhas de Processos de Software - Minicurso - SBQS 2011

EPF - Conceitos

•  Cada method content define um papel realizando um conjunto de tarefas usando guias específicos com artefatos de entrada e saída

•  Os processos são definidos a partir do reuso de method contents

Page 34: Linhas de Processos de Software - Minicurso - SBQS 2011

Method Content x Processos

Page 35: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de Conteúdo de Método

•  Transformar documento de requisitos em modelo de análise

•  Definir arquitetura que atenda requisitos funcionais e não funcionais

•  Criar plano de projeto para iteração

Page 36: Linhas de Processos de Software - Minicurso - SBQS 2011

Conteúdo de Métodos x Processos

Page 37: Linhas de Processos de Software - Minicurso - SBQS 2011

OpenUP •  É uma versão leve e ágil do framework

de processo RUP •  Adota uma estratégia incremental e

iterativa similar

•  Estrutura enxuta não cobrindo questões de alocação de equipe, guias específicos, estabelecimento de contratos

•  Disponibilizado como um processo open-source no projeto EPF

Page 38: Linhas de Processos de Software - Minicurso - SBQS 2011

EPF Composer

•  Ferramenta que permite a implementação e manutenção de processos de software para empresas ou projetos individuais

•  Gerência e customização de módulos específicos de um processo

•  Adota metamodelo Unified Method Architecture (UMA) uma evolução do SPEM 1.1 –  Tem ajudado na evolução do SPEM 2.0

Page 39: Linhas de Processos de Software - Minicurso - SBQS 2011

EPF Composer - Conceitos

Page 40: Linhas de Processos de Software - Minicurso - SBQS 2011

EPF Composer - Conceitos

Page 41: Linhas de Processos de Software - Minicurso - SBQS 2011

Customizações Específicas

•  Globais (tempo de desenvolvimento) –  Configuração de conteúdo de método

ou do processo –  Exemplo: modificação direta em tais

elementos •  Específicas de um Processo Existente

(tempo de instanciação) –  Adicionar, remover ou modificar

elementos existentes –  Exemplo: Ao instanciar o OpenUP desejo

remover determinadas atividades ou tarefas

Page 42: Linhas de Processos de Software - Minicurso - SBQS 2011

Padrões de Capacidade e Variabilidade

•  Padrões de capacidade (templates): –  Um conjunto de atividades reusáveis de uma

área de processo comum, que são recorrentemente encontrados durante a definição de um dado processo

•  Variabilidades –  Permite modificar (contributes, extends e

replace) o conteúdo existente de um processo sem modificar sua estrutura original

Exemplo: adição de passos a atividades de um processo OpenUP

Page 43: Linhas de Processos de Software - Minicurso - SBQS 2011

Reuso de conteúdo entre processos

Page 44: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafios de Customização

•  Não torna explícito características opcionais e alternativas de uma família de processos

•  Não define dependências e restrições entre características de forma explícita

•  Unidades de variações bem localizadas

•  Não permite gerência de variabilidades finas e grossas

Page 45: Linhas de Processos de Software - Minicurso - SBQS 2011

Agenda

•  Contexto e Motivação •  Engenharia de Processos de

Software •  Linhas de Produto de Software •  Linhas de Processo de Software

Page 46: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação

•  Engenharia de Software objetiva proposição de métodos, técnicas e ferramentas para a produção de software com qualidade e produtividade

•  Desde o início, reutilização tem sido um dos caminhos naturais explorado para garantir mais produtividade e qualidade no processo de desenvolvimento

Page 47: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação

•  Reutilização no nível de código: – Componentes, Bibliotecas, Frameworks – Servidores, Serviços

•  Reutilização no nível de projeto: – Padrões arquiteturais e projeto

•  Mas...

Page 48: Linhas de Processos de Software - Minicurso - SBQS 2011

Motivação •  Reuso de código e projeto tem sido útil

e gera impacto para a produção de software, mas ainda de forma localizada

•  Carência de métodos e técnicas para promover o reuso em larga escala entre famílias de sistemas do mesmo domínio

•  Reuso sistemático em larga escala é, em geral, artesanal (copy/paste, merge de código, patches)

Page 49: Linhas de Processos de Software - Minicurso - SBQS 2011

Evolução do Reuso

•  Funções (década de 70 e 80) •  Bibliotecas de classes (80 e 90) •  Padrões de projeto e arquitetura (90

e 00) •  Frameworks (90 e 00)

•  Linhas de Produto de Software !!

Page 50: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Produto de Software

•  LPS é uma família de sistemas que atende um determinado segmento de mercado [Clements and Northrop, 2001]

•  Uma família de sistemas é um conjunto de aplicações que compartilham funcionalidades comuns e mantém funcionalidades específicas que variam de acordo com o sistema sendo considerado [Parnas, 1976]

Page 51: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Produto de Software

•  Promovem o reuso de: – Um conjunto de features comuns e

variáveis – Uma arquitetura comum – Implementação de classes e

componentes do núcleo da arquitetura

Page 52: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos do mundo não software •  Indústria automotiva

–  Fiat (Uno, Palio, Siena, ...)

•  Indústria aeronáutica –  Família de aviões da Embraer e da Boeing

•  Indústria de eletrodomésticos –  Televisão –  Máquinas Fotográficas –  Computadores, Laptops

•  Indústria alimentícia –  Fast Food (McDonald’s)

Page 53: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de LPS

•  Fones móveis (Nokia) •  Software para análise de ações (Market

Maker) •  Aplicações embarcadas de tempo real que

suportam funções operacionais do piloto (Boeing)

•  Software para dispositivos de TV (Philips) •  Hall of Fame, SPLC

–  http://www.sei.cmu.edu/productlines/plp_hof.html

Page 54: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de LPS mais acessíveis

•  Games ou software para dispositivos portáteis

•  IDEs customizáveis •  Sistemas web de segmento específicos

– Comércio eletrônico – Rede social

•  Middlewares •  Sistemas de informação corporativos

Page 55: Linhas de Processos de Software - Minicurso - SBQS 2011

Conceitos Básicos

Page 56: Linhas de Processos de Software - Minicurso - SBQS 2011

Feature (Característica)

•  Uma LPS é tipicamente especificada, modelada e implementada em termos de seus features

•  Definição: – É uma propriedade ou funcionalidade que é

relevante para algum interessado na LPS, e que é usado para identificar similaridades ou variabilidades existentes entre os diferentes produtos/sistemas da LPS. [Czarnecki, et al, 2006]

Page 57: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de Features

•  Rain of Fire (jogo para dispositivo portátil) – Jogo clássico na qual o usuário tenta proteger

uma vila de ataques de dragões usando uma catapulta

•  Features – Ações do jogo (nível, armas bônus, dragões) –  Imagens opcionais – Tamanho da tela – Estratégia de carga de imagens (por

demanda, no início)

Page 58: Linhas de Processos de Software - Minicurso - SBQS 2011

Similaridades e Variabilidades

•  Em uma LPS pode existir: – Features comuns

• Similaridades (commonalities) entre todos os seus produtos

– Features variáveis • Variabilidades (variabilities) que definem as

diferenças entre produtos existentes

Page 59: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de Features Comuns e Variáveis

•  Rain of Fire

Page 60: Linhas de Processos de Software - Minicurso - SBQS 2011

Conceitos básicos •  Variabilidade (variability)

– Um feature que varia de um produto para outro

•  Ponto de variação (variation point) – Um ponto/lugar onde uma variabilidade

ocorre em um artefato de desenvolvimento da LPS (domain asset)

•  Variantes (variants) – As diferentes possibilidades que existem para

satisfazer um dado ponto de variação

Page 61: Linhas de Processos de Software - Minicurso - SBQS 2011

Desenvolver LPSs consiste em gerenciar adequadamente

suas variabilidades !

Page 62: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia de LPSs

•  Objetivos: – Prover métodos, técnicas e ferramentas

para produção em larga escala de família de produtos relacionados

– Permitir a gerência de variabilidades dos diferentes produtos pertencentes a LPS •  Busca especificar, modelar, projetar, implementar,

customizar diferentes variabilidades existentes na LPS

Page 63: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia de LPSs

•  Tipicamente organizada em: – Engenharia de Domínio

• Desenvolvimento para Reuso – Engenharia de Aplicação

• Desenvolvimento com Reuso

Page 64: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia de LPSs Engenharia de Domínio

Engenharia de Aplicação

Análise de Domínio

Projeto do Domínio

Implem. do Domínio

Análise de Requisitos

Configuração do Produto

Integração e Testes

Conhecimento

do domínio

Modelo do

domínio

Arquitetura da família de sistemas

Necessidades dos

clientes

Features Configuração

do produto Produto

Linguagem específica do domínio

Componentes

Geradores

Novos requisitos

Novos requisitos Customização

Projeto Customização

Desenvolvimento

Czarnecki, K., Eisenecker, U.: “Generative Programming: Methods, Tools, and Applications”, Addison-Wesley, 2000.

Page 65: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia de LPSs

Page 66: Linhas de Processos de Software - Minicurso - SBQS 2011

Representação de Variabilidades na Engenharia de Domínio

•  Requisitos – Modelagem de features – Modelos de Requisitos com Variações

•  Arquitetura & Projeto – Definição de uma arquitetura flexível e

adaptável capaz de atender seus features comuns e variáveis

•  Implementação – Mecanismos que facilitem a adição/remoção

das implementações de features variáveis

Page 67: Linhas de Processos de Software - Minicurso - SBQS 2011

Benefícios

•  Maior produtividade – Redução no tempo de entrega

•  Maior qualidade •  Diminuição do custo total de produção

– Apesar do alto investimento inicial •  Geração de produtos customizados •  Redução na manutenção

– Correção para um, vale para vários •  Pode facilitar a estimativa de custos

Page 68: Linhas de Processos de Software - Minicurso - SBQS 2011

Problema

Instanciar manualmente variabilidades de uma LPS é uma

atividade bastante custosa

Page 69: Linhas de Processos de Software - Minicurso - SBQS 2011

Engenharia da Aplicação

•  Objetivos: – Construção de produtos/aplicações a

partir dos artefatos produzidos na Engenharia de Domínio

– Pode ocorrer de forma manual ou de forma automatizada (derivação automática)

•  Artefatos Produzidos: – Produto final (parcial ou completo)

Page 70: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação de Produto •  Automação da Engenharia de Aplicação •  Seleciona, compõe e monta uma aplicação

final (produto) a partir dos artefatos produzidos para a arquitetura da LPS

•  Uso de ferramentas de mais alto nível para selecionar os features desejados do produto: – Modelo de Feature – Linguagens Específicas de Domínio

(domain-specific language)

Page 71: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação de Produtos

•  Derivação/Instanciação de Produtos diz respeito ao processo de construção do produto a partir de um conjunto de artefatos de implementação (frameworks, componentes, bibliotecas, aspectos, etc) desenvolvidos durante a Engenharia de Domínio

•  Promove a automação da Engenharia de Aplicação

Page 72: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramentas de Derivação

•  São complementares ao conjunto de técnicas, métodos e ferramentas já propostas pela Engenharia de Domínio

•  Permite a geração e customização de produtos / sistemas, a partir dos artefatos reusáveis produzidos na engenharia de domínio

Page 73: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramentas de Derivação

•  Várias ferramentas industriais propostas nos últimos anos: – Pure::Variants

• www.pure-systems.com – Gears

• www.biglever.com – MetaEdit

• www.metacase.com

Page 74: Linhas de Processos de Software - Minicurso - SBQS 2011

74

Que tal seguirmos um exemplo para aprendermos como de fato funciona

a engenharia de LPS?

Page 75: Linhas de Processos de Software - Minicurso - SBQS 2011

Rain of Fire •  Jogo para dispositivo portátil desenvolvido

pela Meantime/CESAR – Jogo clássico na qual o usuário tenta proteger

uma vila de ataques de dragões usando uma catapulta

•  Features – Ações do jogo (nível, armas bônus, dragões) –  Imagens opcionais – Tamanho da tela – Estratégia de carga de imagens (por

demanda, no início)

Page 76: Linhas de Processos de Software - Minicurso - SBQS 2011

Rain of Fire

Page 77: Linhas de Processos de Software - Minicurso - SBQS 2011

Similaridades e Variabilidades

•  Em uma LPS pode existir: – Features comuns

• Similaridades (commonalities) entre todos os seus produtos

– Features variáveis • Variabilidades (variabilities) que definem as

diferenças entre produtos existentes

Page 78: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de Features Comuns e Variáveis

•  Rain of Fire

Page 79: Linhas de Processos de Software - Minicurso - SBQS 2011

Projeto de Domínio •  Objetivos:

–  Definição de uma arquitetura comum e componentes que contemple toda a LPS

–  Especificação de um plano de produção

•  Artefatos Produzidos: –  Representação arquitetural na forma de componentes

da arquitetura –  Projeto detalhado de cada variação a ser

implementada –  Definição de um plano de produção que indica como

produtos podem ser construídos a partir dos artefatos disponíveis.

Page 80: Linhas de Processos de Software - Minicurso - SBQS 2011

Arquitetura do Rain of Fire

Page 81: Linhas de Processos de Software - Minicurso - SBQS 2011

Implementação de Domínio •  Objetivos:

–  Implementação da arquitetura e componente previamente especificados

– Escolha de tecnologias para implementação das variações

– Estratégias de derivação manual ou automática dos artefatos de código produzidos

•  Artefatos Produzidos: – Componentes, bibliotecas de classes – Linguagens específicas de domínio (wizards,

diagramas, ...) + geradores (derivação automática)

Page 82: Linhas de Processos de Software - Minicurso - SBQS 2011

ESTRUTURA GERAL

BUILD

ARQUITETURA DE LINHA DE PRODUTO

FRAMEWORK CORE DO JOGO

DIFERENTES PRODUTOS

ARQUIVO DE CONFIGURAÇÃO

COMPILAÇÃO CONDICIONAL

Page 83: Linhas de Processos de Software - Minicurso - SBQS 2011

Jogo – Rain of Fire •  Framework Core

–  Conjunto de classes que definem máquina de estado com transições ocorrendo em função do tempo decorrido e interações com o usuário

•  Exemplos de variações

–  Imagens decorativas opcionais (nuvens no fundo da tela)

–  Carga de imagens por demanda ou inicialização

–  API de manipulação de imagens proprietária (Nokia, Samsung, Motorola) de diferentes dispositivos

Page 84: Linhas de Processos de Software - Minicurso - SBQS 2011

CÓDIGO DE JOGO COM COMPILAÇÃO CONDICIONAL public class GameScreen extends Screen { ... public void paint(Graphics g) { Enemy myEnemy; ... if (this.scroll.isScrolling) { ... } else if(!isGameOver){ if (!this.isPaused) { this.drawBk(g); this.drawRain(g); // #ifdef CLOUDS g.drawImage(Resources.clouds01, clouds01_x, 87, g.TOP | g.LEFT); g.drawImage(Resources.clouds02, clouds02_x, 66, g.TOP | g.LEFT); g.drawImage(Resources.clouds03, clouds03_x, 31, g.TOP | g.LEFT); // #endif this.drawCity(g); this.drawCatapults(g); } } ... }

Page 85: Linhas de Processos de Software - Minicurso - SBQS 2011

BUILD

ARQUITETURA DE LINHA DE PRODUTO FRAMEWORK

CORE DO JOGO

ASPECTOS

DIFERENTES PRODUTOS

ESCOLHA DE FEATURES (DSLS, XML, ETC)‏

Page 86: Linhas de Processos de Software - Minicurso - SBQS 2011

CÓDIGO DE JOGO COM ASPECTOS

public aspect Clouds { private static Image clouds01 = null; private static Image clouds02 = null; ... void around (GameScreen gs): call(public void GameScreen.updateClouds(GameScreen))‏ && this(gs); { updateClouds(gs); } void around (Graphics g): call(public void GameScreen.drawClouds(Graphics))‏ && args(g); {

drawClouds(g); } protected void drawClouds(Graphics g) { // draws the clouds. g.drawImage(clouds01, clouds01_x, 87, g.TOP | g.LEFT); g.drawImage(clouds02, clouds02_x, 66, g.TOP | g.LEFT); g.drawImage(clouds03, clouds03_x, 31, g.TOP | g.LEFT); } ... }

Exemplo de Aspecto

Page 87: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação Automática com GenArch

E. Cirilo, et al. A Product Derivation Tool Based on Model-Driven Techniques and Annotations. J. UCS, 14(8):1344–1367, 2008.

Page 88: Linhas de Processos de Software - Minicurso - SBQS 2011

Modelos de Feature e Arquitetura

Page 89: Linhas de Processos de Software - Minicurso - SBQS 2011

Modelo de Configuração

Page 90: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação Automática •  Seleção de quais

variabilidades serão endereçadas pelo produto gerado

•  Cópia dos elementos, em função das características selecionadas, para um novo projeto Eclipse/Java

•  Pode demandar geração de 400 variações de um mesmo jogo em segundos

Page 91: Linhas de Processos de Software - Minicurso - SBQS 2011

91

Outro Exemplo

Eclipse IDE como uma Linha de Produto de Software

Page 92: Linhas de Processos de Software - Minicurso - SBQS 2011

Eclipse como uma Linha de Produto

Platform Runtime

Workspace

Help

Team

Workbench

JFace

SWT

Eclipse Project

Java Development

Tools (JDT)

Their Tool

Your Tool

Another Tool

Plug-in Development Environment

(PDE)

Eclipse Platform

Debug

Page 93: Linhas de Processos de Software - Minicurso - SBQS 2011

Features do Eclipse

•  Features Comuns (Similaridades) – Gerência de Plugins – Ambiente Desenvolvimento Java e Plugins –  Infra-estrutura (criação de visões,

perspectivas, editores, projeto, etc) •  Features Variáveis (Variabilidades)

– Novas visões, editores, perspectivas, projeto – Novas linguagens, builders – Look-and-Feel (Visual Gráfico) baseado no

SO

Page 94: Linhas de Processos de Software - Minicurso - SBQS 2011

Arquitetura do Eclipse

•  Núcleo da Arquitetura – Framework OO Extensível com Pontos

Flexíveis para Instalação de Plugins

•  Variabilidades – Plugins que estendem a plataforma

base ou pontos extensíveis de outros plugins instalados

Page 95: Linhas de Processos de Software - Minicurso - SBQS 2011

200303331 95

Pontos Flexíveis do Eclipse

Tool bar

Perspective and Fast View bar

Resource Navigator view

Stacked views

Properties view

Tasks view

Outline view

Bookmarks view

Menu bar

Message area

Editor Status area

Text editor

Page 96: Linhas de Processos de Software - Minicurso - SBQS 2011

Plataforma Eclipse

Platform Runtime

Eclipse Platform

Workspace

Workbench

SWT JFace

Team Help Debug

Ant “Core”

“UI”

Page 97: Linhas de Processos de Software - Minicurso - SBQS 2011

Agenda

•  Contexto e Motivação •  Engenharia de Processos de

Software •  Linhas de Produto de Software •  Linhas de Processo de Software

Page 98: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software

•  Estudo de técnicas e mecanismos para gerência de variabilidades em processos de software

•  Proposição e adaptação de técnicas existentes da área de engenharia de linhas de produto

Page 99: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software

•  Objetivos: –  Gerência de variabilidades em famílias

de processos de software –  Composição e Customização de

processos de software

Page 100: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software •  Definição:

–  Uma família de processos de software com um conjunto gerenciado de características que satisfazem necessidades específicas de uma organização e que são desenvolvidos a partir de um conjunto de processos básicos comuns [Ambrust 2009]

O. Armbrust, M. Katahira, Y. Miyamoto, J. Münch, H. Nakao, A. Ocampo: Scoping software process lines. Software Process: Improvement and Practice 14(3): 181-197 (2009).

Page 101: Linhas de Processos de Software - Minicurso - SBQS 2011

Abordagens Propostas

•  Diferentes abordagens propostas sob diferentes perspectivas: –  Processo de engenharia de linha de

processo –  Mecanismos, técnicas e ferramentas

para gerenciar variabilidades

Page 102: Linhas de Processos de Software - Minicurso - SBQS 2011

102

H. Dieter Rombach

Integrated Software Process and Product Lines

Proceedings of ISPW 2005

Page 103: Linhas de Processos de Software - Minicurso - SBQS 2011

Rombach

•  Propõe a combinação do uso de técnicas de linhas de produto de software em processos

•  Adota o termo “linhas de processo de software”

•  Artefatos e produtos podem ser escolhidos baseados num conjunto de requisitos de produto e processo, e em restrições de projeto

Page 104: Linhas de Processos de Software - Minicurso - SBQS 2011

Integrando Processos de Software e Linhas de Produto

•  Ao iniciar um projeto, caracteriza-se o projeto e então submete-se uma query ao repositório

•  Como resultado, um conjunto combinado de artefatos e processos são fornecidos permitindo o planejamento e execução do projeto

Page 105: Linhas de Processos de Software - Minicurso - SBQS 2011

Considerações

•  Uma linha de processo deve criar um conjunto de processos genéricos, capturar as similaridades e controlar as variabilidades sobre um domínio

•  Vantagens: – aumentar a previsibilidade – diminuir prazo e custo – minimizar riscos (abordagem de reuso).

Page 106: Linhas de Processos de Software - Minicurso - SBQS 2011

106

Ove Armbrust, et al

Scoping Software Process Lines

Journal of Software Process Improvement and Practice, 2009

Page 107: Linhas de Processos de Software - Minicurso - SBQS 2011

Ambrust et al

•  Adapta processos de LPS para serem aplicados a processos de software

•  Foco principal na definição do escopo da linha de processo

•  Priorização de técnicas e processos a serem usados na linha de processo em função de projetos e produtos sendo desenvolvidos por uma empresa

Page 108: Linhas de Processos de Software - Minicurso - SBQS 2011

Scoping Process Lines

Page 109: Linhas de Processos de Software - Minicurso - SBQS 2011

Definição do Escopo da Linha de Processo de Software

•  Atividades a serem realizadas: –  Análise dos Produtos e dos Projetos da

Empresa •  Necessidades específicas para seus

processos –  Análise do Processo –  Priorização de Atributos –  Determinação do Escopo

Page 110: Linhas de Processos de Software - Minicurso - SBQS 2011

Análise de Produtos e Projetos

•  Levantamento de produtos e/ou projetos atuais e futuros da empresa

•  Caracterização dos mesmos em função de atributos específicos de interesse

Page 111: Linhas de Processos de Software - Minicurso - SBQS 2011

Análise de Produtos

•  Probabilidade de desenvolvimento versus caracterização de atributos

Page 112: Linhas de Processos de Software - Minicurso - SBQS 2011

Análise de Projetos

•  Probabilidade de desenvolvimento versus caracterização de atributos

Page 113: Linhas de Processos de Software - Minicurso - SBQS 2011

Análise de Processos

•  Avaliação dos processos, métodos e técnicas utilizados em função dos atributos de produto e projeto

Page 114: Linhas de Processos de Software - Minicurso - SBQS 2011

Priorização de Atributos

•  Avaliação de atributos mais importantes para produtos e projetos através de comparações dois-a-dois

Page 115: Linhas de Processos de Software - Minicurso - SBQS 2011

Determinação do Escopo

•  Definição de métodos, técnicas e processos mais relevantes em função de atributos de produto e projeto

Page 116: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudos de Caso

•  Adoção parcial em alguns projetos no Japan Aerospace Exploration Agency (JAXA) –  Desenvolvimento de software para satélites

•  Aplicação para apenas alguns atributos, sem comparação dois-a-dois

•  Resultados preliminares mostram viabilidade da proposta, mas não aplicabilidade geral –  Torna explícito aspectos e decisões

relacionados a definição do processo

Page 117: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo de Caso

Page 118: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo de Caso

Page 119: Linhas de Processos de Software - Minicurso - SBQS 2011

119

Thomas Ternité

Process Lines: A Product Line Approach Designed for Process

Model Development

Proceedings of EUROMICRO-SEAA 2009

Page 120: Linhas de Processos de Software - Minicurso - SBQS 2011

Ternité et al

•  Aplica conceitos de linhas de produto para modelos de processo

•  Define tipos de features e tipos de variabilidades –  Semântica de “change operations”

Tipo de Variabilidade Significado

Positive Novos elementos ou relações Negative Elementos ou relações são removidos Extending Elementos ou relações são estendidos Replacing Elementos ou relações são substituídos.

Page 121: Linhas de Processos de Software - Minicurso - SBQS 2011

Um metamodelo para descrever Linha de Processo

Classes específicas de uma arquitetura de linha de processo

Classes core da linha de processo.

Page 122: Linhas de Processos de Software - Minicurso - SBQS 2011

Uma instância do modelo de processo

Instâncias dos elementos do modelo

Variante do modelo de processo

Page 123: Linhas de Processos de Software - Minicurso - SBQS 2011

Considerações •  Apresenta uma terminologia e um

metamodelo para criar um modelo de processo.

•  Fornece uma separação clara entre conteúdo e mudanças. – Os modelos de referência e extensão podem

ser desenvolvidos separadamente e mesclados no final. •  O modelo de referência pode ser alterado através

das “change operations” sem alterar seu conteúdo.

Page 124: Linhas de Processos de Software - Minicurso - SBQS 2011

124

Simidchieva, et al

Representing Process Variation with a Process Family

Proceedings of ICSP 2007

Page 125: Linhas de Processos de Software - Minicurso - SBQS 2011

Simidchieva et al

•  Propõem a aplicação da abordagem de família de produtos como forma de gerenciar a variação em processos

•  Utilizam linguagem Little-JIL para a definição da família de processos – modelagem de variações

Page 126: Linhas de Processos de Software - Minicurso - SBQS 2011

Instâncias da Linha de Processo

•  Definem três técnicas de geração de instâncias – Modificando o comportamento de agentes – Modificando a forma de execução das tarefas – Modificando a estrutura dos artefatos

Page 127: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral

Page 128: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo de caso

•  Apresenta um estudo de caso em parceria com o National Mediation Board (NMB) – Aplica e valida as diferentes técnicas para a

derivação de instâncias

Page 129: Linhas de Processos de Software - Minicurso - SBQS 2011

129

Hironori Washizaki

Building Software Process Line Architectures from Bottom Up

Proceedings of PROFES 2006

Page 130: Linhas de Processos de Software - Minicurso - SBQS 2011

Washizaki et al

•  Propõe uma nova técnica de customização de processos com uma abordagem baseada em componentes e generativa construindo uma PLA (Process Line Architecture) e derivando processos para projetos específicos.

•  A PLA é construída a partir de uma extensão do SPEM.

Page 131: Linhas de Processos de Software - Minicurso - SBQS 2011

Product Line Architecture

Page 132: Linhas de Processos de Software - Minicurso - SBQS 2011

Considerações

•  A PLA pode ser usado como base para comparar processos similares.

•  A comparação das similaridades entre elementos do processo é realizada manualmente

•  Utiliza os labels <<variationPoint>>, <<variant>>, <<optional>> e <<requires>>

Page 133: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo de Caso: Arquitetura da Linha de Processo Co-Design

Page 134: Linhas de Processos de Software - Minicurso - SBQS 2011

134

Barreto, et al

Supporting the Definition of Software Processes at Consulting Organizations

via Software Process Lines

Proceedings of QUATIC 2010

Page 135: Linhas de Processos de Software - Minicurso - SBQS 2011

Barreto, et al   Propõe uma abordagem para as SPCOs

(Software Process Consulting Organizations), com o objetivo de facilitar a definição de processos reusáveis.

  Considera a SPL como uma Software Process Architecture, composta por componentes de processos, atividades, ou combinações entre estes.

  Apresenta uma ferramenta Web de apoio à definição de processos reusáveis.

Page 136: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral

Page 137: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramenta Web de Apoio

Page 138: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramenta Web de Apoio (cont.)

Page 139: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramenta Web de Apoio (cont.)

Page 140: Linhas de Processos de Software - Minicurso - SBQS 2011

140

Bendraou, et al

Combining Aspect and Model-Driven Engineering Approaches for

Software Process Modeling and Execution

Proceedings of ICSP 2009

Page 141: Linhas de Processos de Software - Minicurso - SBQS 2011

Bendraou et al   Propõe um framework e uma abordagem

para a modelagem e execução dos processos de software

  Define um modelo de execução que é um diagrama de classe representando o comportamento operacional de cada elemento do UML4SPM

Page 142: Linhas de Processos de Software - Minicurso - SBQS 2011

Bendraou et al

  Implementa o modelo de execução utilizando a linguagem Kermeta e realiza uma composição (weaving) desta implementação no meta-modelo UML4SPM

  Possibilita a execução de modelos sem um passo adicional de compilação ou transformação

Page 143: Linhas de Processos de Software - Minicurso - SBQS 2011

Modelagem UML4SPM

para a fase de Concepção

Page 144: Linhas de Processos de Software - Minicurso - SBQS 2011

Modelo de Execução

Page 145: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral da Abordagem

Page 146: Linhas de Processos de Software - Minicurso - SBQS 2011

146

Aleixo, et al

Automating the Variability Management, Customization and Deployment of Software

Processes: A Model-Driven Approach

Proceedings of ICEIS 2010, LNBIP 73 Springer Verlag

Page 147: Linhas de Processos de Software - Minicurso - SBQS 2011

147

Aleixo, et al

Uma Abordagem para Gerência e Customização de Variabilidades em

Processos de Software

Proceedings of SBES 2010

(nominated to the best paper)

Page 148: Linhas de Processos de Software - Minicurso - SBQS 2011

Limitações de Ferramentas Atuais

(1ª) Edição e

configuração manual de processos de software

Page 149: Linhas de Processos de Software - Minicurso - SBQS 2011

(2ª) Reuso de

elementos de processos de

software através da cópia

destes entre diferentes processos

Limitações de Ferramentas Atuais

Page 150: Linhas de Processos de Software - Minicurso - SBQS 2011

(3ª) Sem

suporte para a

execução de um

processo customizado

Limitações de Ferramentas Atuais

Page 151: Linhas de Processos de Software - Minicurso - SBQS 2011

Nosso Trabalho •  Promover o reuso sistemático de componentes de

processo de software, através da organização de uma linha (ou família) de processos

•  Aplicar princípios e técnicas de abordagem de linhas de produto de software

•  Propor uma abordagem que dê suporte: 1.  ao gerenciamento de variabilidades em processos de

software; 2.  à derivação automática de processos, oriundos da

customização automática das especificações de famílias de processos de software

3.  à execução de processos de software em sistemas de workflow, através da transformação de suas especificações

Page 152: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral

Definição e Modelagem da Linha de Processo Usando uma ferramenta

de especificação de processos, como o Eclipse Process Framework Composer

Page 153: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral

Definição e Modelagem da Linha de Processos

Gestão de Variabilidades da Linha de Processos

Gerência automatizada de variabilidades dos elementos da linha de processo, utilizando uma ferramenta de derivação de produtos, como o GenArch

Page 154: Linhas de Processos de Software - Minicurso - SBQS 2011

Visão Geral

Definição e Modelagem da Linha de Processos

Gestão de Variabilidades da Linha de Processos

Derivação Automática do Processo Customizado

Page 155: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 1 – Definição e Modelagem da LPS

Page 156: Linhas de Processos de Software - Minicurso - SBQS 2011

Estudo de Similaridades e Variabilidades

•  Estudo das similaridades e variabilidades da família de processos –  OpenUP usado como exemplo de família de

processos –  Foram pesquisados três projetos de pesquisa e

desenvolvimento em execução no IFRN –  Identificadas 586 features:

•  273 features mandatórias •  239 features opcionais •  74 features alternativas

Page 157: Linhas de Processos de Software - Minicurso - SBQS 2011

Dependências e Restrições

•  Estudo de Modelagem do OpenUP apresentou conjunto de heurísticas que podem ser modeladas em linhas de processo

•  Exemplos: – Atividades que tenham pelo menos uma

tarefa obrigatória, também são obrigatórias – Atividades com todas as tarefas opcionais,

são também opcionais – Seleção da atividade pode determinar a

inclusão de um dado artefato, papel ou guia

Page 158: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplos de Features Identificadas para o OpenUP

Page 159: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 2 – Gerência das Variabilidades

Page 160: Linhas de Processos de Software - Minicurso - SBQS 2011

Identificação das Variabilidades •  Anotar o modelo de processo com as variações

–  Exemplo (trecho de um arquivo da especificação do OpenUP): /process.openup.base/capabilitypatterns/

initiate_project/model.xmi

Page 161: Linhas de Processos de Software - Minicurso - SBQS 2011

Importação da Especificação de Processo pelo GenArch

Especificação do Processo em EPF

Modelos do GenArch

Page 162: Linhas de Processos de Software - Minicurso - SBQS 2011

Modelagem de Variabilidades em Diferentes Granularidades

1. Granularidade grossa – arquivos XMI que representam elementos de processo EPF

2. Granularidade fina – fragmentos de arquivos XMI que contém informações de detalhamento de um dado elemento de processo

Page 163: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplo de Variabilidades em Diferentes nos Diferentes Níveis de Granularidades

Feature de granularidade grossa:

Atividade

Features de granularidade fina: Tarefas, Artefatos de entradas e

Artefatos de saída

Page 164: Linhas de Processos de Software - Minicurso - SBQS 2011

Resultado Final do Processo de Importação

Page 165: Linhas de Processos de Software - Minicurso - SBQS 2011

Extensão do GenArch para Processos EPF

Page 166: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 3 – Derivação de Processos

Page 167: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação de Processos Customizados

Nova configuração do modelo de

features

Geração automática

de uma especificação

de processo no GenArch

Seleção das features

desejadas

Page 168: Linhas de Processos de Software - Minicurso - SBQS 2011

Execução de Processos de Software

•  Tão importante quanto oferecer suporte para definição e customização de processos, é permitir e monitorar a sua execução

•  Nossas pesquisas vêm atualmente explorando a transformação do processo para especificações de workflows que podem ser efetivamente executados

Page 169: Linhas de Processos de Software - Minicurso - SBQS 2011

Execução de Processos de Software

Page 170: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 4 – Transformação Processo-to-Workflow

Page 171: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 4 – Transformação Processo-to-Workflow

•  Transformação da especificação do metamodelo de processo UMA, para uma especificação de metamodelo de workflow JPDL

•  Mapeamento entre as propriedades dos metamodelos

•  QVT Operational

Page 172: Linhas de Processos de Software - Minicurso - SBQS 2011

Tabela de Mapeamento: Process-to-Workflow

Page 173: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 5 – Transformação Workflow-para-Texto

Page 174: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 5 – Transformação Workflow-para-Texto

•  A transformação de modelo para texto da nossa abordagem utiliza como entrada o modelo jPDL, resultante da transformação de modelo para modelo

•  Ela permite a geração automática de código a partir de um meta-modelo que esteja de acordo com o EMF

•  Essa transformação ocorre a partir da construção de templates do Acceleo.

Page 175: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 5 – Transformação Workflow-para-Texto

•  O resultado da transformação de modelo para texto pode ser importado como um projeto jBPM e seu conteúdo pode ser visualizado de forma gráfica pelo plugin editor de workflow do Eclipse Designer (GPD)

Page 176: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 5 – Transformação Workflow-para-Texto

•  O jBPM permite a criação de formulários web implementados no framework Java Server Faces (JSF)

•  Esses formulários podem ser usados para acompanhar o fluxo de execução do processo

•  Eles podem ser customizados usando uma conjunto de tags específicas do jBPM o que habilita a sua implantação no motor de execução jBPM.

Page 177: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 6 – Implantação e Execução do Workflow

Page 178: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 6 – Implantação e Execução do Workflow

Page 179: Linhas de Processos de Software - Minicurso - SBQS 2011

Atividade 7 – Gerenciamento do Workflow

Page 180: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramenta de Transformação de Modelos

•  Ferramenta de transformação de modelos de processos especificados de acordo com o metamodelo UMA, para modelos e arquivos de configuração do motor de workflow jBPM. – Uma transformação modelo-para-modelo

mapeamento do modelo de processo de software definido pelo metamodelo UMA em modelo de workflow definido pelo metamodelo jPDL

– Uma transformação modelo-para-texto – mapeamento as informações contidas no modelo de workflow para um projeto de workflow executável.

Page 181: Linhas de Processos de Software - Minicurso - SBQS 2011

Ferramenta de Transformação Processo-para-Workflow

Page 182: Linhas de Processos de Software - Minicurso - SBQS 2011

Novas Perspectivas e Refinamentos

•  Integração do código do workflow com ferramentas de engenharia de software – Repositórios, IDEs, Relatórios de Gerência de

Projeto

•  Independência de plataforma de workflow – Criação de transformações de modelos UMA

para outras linguagens de workflow (platform specific models)

Page 183: Linhas de Processos de Software - Minicurso - SBQS 2011

Novas Perspectivas e Refinamentos •  Modelagem e Deployment de Métricas

– Seleção de métricas do processo e quantificação automática

•  Modelo de Característica Multi-Nível – 1o Nível: perguntas específicas de

características do processo (ex: técnica ou linguagem usada, nível de maturidade/projeto)

– 2o Nível: elementos do processo

M. Freire, F. Aleixo, U. Kulesza, E. Aranha, R. Coelho. Automatic Deployment and Monitoring of Software Processes: A Model-Driven Approach. Proceedings of SEKE 2011 (to appear)

Page 184: Linhas de Processos de Software - Minicurso - SBQS 2011

184

Considerações Finais e Desafios Futuros

Page 185: Linhas de Processos de Software - Minicurso - SBQS 2011

Considerações Finais •  Engenharia de Linhas de Processo de

Software – Reuso sistematizado e planejado dentro de

famílias de processos relacionados – Carência de métodos e ferramentas que

adotem práticas e técnicas consolidadas de LPS

– Validação na prática dos ganhos efetivos da abordagem

– Desafios específicos de pesquisa e aplicação industrial na área

Page 186: Linhas de Processos de Software - Minicurso - SBQS 2011

Considerações Finais

•  Execução de Processos de Software – Promove o monitoramento efetivo das

atividades em execução em processos – Forte sinergia com a área de gerenciamento

de processos de negócio e sistemas de workflow

– Quantificação de métricas de produtividade

Page 187: Linhas de Processos de Software - Minicurso - SBQS 2011

Desafios Futuros

•  Avaliação da utilidade e escalabilidade de mecanismos de gerência de variabilidade

•  Caracterização de variabilidades em diferentes tempos de instanciação – Definição, Deployment e Execução

•  Criação de repositórios de linhas e componentes de processo

•  Exploração de técnicas de BPMN para execução de processos

Page 188: Linhas de Processos de Software - Minicurso - SBQS 2011

Perguntas, Dúvidas...

Uirá Kulesza DIMAp/UFRN

[email protected]

Page 189: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software: Conceitos, Técnicas e Ferramentas

Uirá Kulesza DIMAp / UFRN

[email protected]

Em colaboração com Fellipe Aleixo, Marilia Freire e Daniel Alencar

Page 190: Linhas de Processos de Software - Minicurso - SBQS 2011

Linhas de Processo de Software: Conceitos, Técnicas e Ferramentas

Uirá Kulesza DIMAp/UFRN

[email protected]

Page 191: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

GenArch na Prática

Page 192: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Características

•  Representa as características (variabilidades) do domínio

•  Permite a criação de instancias da LPS (Produtos) baseada na seleção de características

•  Pode apresentar regras globais (Se característica ‘x’ está selecionada então característica ‘y’ não pode ser selecionada)

Configurações

Page 193: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Implementação da Arquitetura

•  Contém uma visão, organizada em containers dos artefatos de código da LPS –  Componentes –  Classes –  Aspectos –  etc

•  É a partir do modelo de arquitetura que os artefatos de código são mapeados para expressões booleanas de características

Page 194: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Configuração

•  Contém o conhecimento de configuração da LPS. Mapeamento entre elementos de implementação e expressões booleana de features.

•  Responde a questão –  Quando cada artefato de

código está habilitado para compor uma aplicação?

Page 195: Linhas de Processos de Software - Minicurso - SBQS 2011

Abordagem em Ação

•  Ilustrar as funcionalidades da ferramenta através de um exemplo.

•  Passos da abordagem: 1.  Anotação de código com Features e

Variabilidades 2.  Geração e refinamento dos modelos 3.  Implementando variabilidades com Templates 4.  Geração de uma instância da LPS

Page 196: Linhas de Processos de Software - Minicurso - SBQS 2011

Passo I – Anotação de Código da LPS

•  Inicialmente, são criadas anotações no código de classes.

•  Em geral, apenas classes representando variabilidades são anotadas, porque são as únicas manipuladas no processo de derivação.

@Feature(name="Adicao",parent="Operacao", type=FeatureType.optional)

public class OperacaoAdicao extends Operacao { public float resultado() { return getTermoUm() + getTermoDois(); }

}

Page 197: Linhas de Processos de Software - Minicurso - SBQS 2011

197

Passo II – Processamento das Anotações

•  Em seguidas, as anotações são processadas pelo plugin GenArch, usando a API Eclipse JDT de navegação na AST de programas Java.

•  Uma versão inicial dos modelos é gerada baseado nas anotações.

•  Além dos modelos, templates são criados para cada variabilidade da LPS anotada com @Variability

Page 198: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplo: Modelos Gerados

Page 199: Linhas de Processos de Software - Minicurso - SBQS 2011

199

Exemplo: Modelos Gerados

Page 200: Linhas de Processos de Software - Minicurso - SBQS 2011

200

Passo II: Preparação dos Modelos e Templates

•  Modificações manual nos modelos: – Criação de novas características

– Relacionamento das características com elementos de implementação

•  Codificação dos templates

Page 201: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplo: Modelos Completos

Page 202: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplo: Janela de Configuração

Page 203: Linhas de Processos de Software - Minicurso - SBQS 2011

Passo II: Sincronização entre modelos e código

•  Os modelos de derivação também podem ser revisitados para incorporar novas modificações ou novos requisitos.

Page 204: Linhas de Processos de Software - Minicurso - SBQS 2011

Passo III: Implementando Variabilidades com Templates

«IMPORT br::pucrio::inf::les::genarch::models::instance» «EXTENSION br::pucrio::inf::les::genarch::models::Model» «DEFINE Main FOR Instance» «FILE "MSTestSuite.java"» «LET feature("Operacao",featureInstance) AS operacaoFeature» package br.pucrio.inf.les.genarch.exemplos.teste; public class MSTestSuite extends TestSuite {

public static Test suite() { TestSuite suite = new TestSuite(); «FOREACH operacaoFeature.features AS child» suite.addTestSuite(Operacao«child.name»Teste.class); «ENDFOREACH» return suite; }

} «ENDLET» «ENDFILE» «ENDDEFINE»

Page 205: Linhas de Processos de Software - Minicurso - SBQS 2011

Passo V: Derivação •  A partir de uma configuração (instância) do

Modelo de Características, do Modelo de Configuração e do Modelo de Arquitetura (que expressa os elementos de implementação - classes, aspectos, arquivos, etc.) um novo produto (ou instância de um framework) é derivado em um projeto Eclipse/Java.

•  Tal projeto contém apenas os elementos de implementação do modelo de arquitetura que são necessários para implementar a instância solicitada via Modelo de Características.

Page 206: Linhas de Processos de Software - Minicurso - SBQS 2011

Passo IV: Derivação

206

Page 207: Linhas de Processos de Software - Minicurso - SBQS 2011

Outro Exemplo: Rain of Fire

Page 208: Linhas de Processos de Software - Minicurso - SBQS 2011

Jogo Rain of Fire

Page 209: Linhas de Processos de Software - Minicurso - SBQS 2011

Jogo Rain of Fire

•  (I) Anotação do código-fonte – Maior parte das variabilidades implementadas

com AspectJ

•  (II) Processamento das anotações – Geração dos modelos – Não foi necessária a geração de templates – Similar a um framework Black-Box

Page 210: Linhas de Processos de Software - Minicurso - SBQS 2011

Rain of Fire: Modelos

Page 211: Linhas de Processos de Software - Minicurso - SBQS 2011

Rain of Fire: Modelos

Page 212: Linhas de Processos de Software - Minicurso - SBQS 2011

Jogo Rain of Fire: Derivação

•  Seleção de quais variabilidades serão endereças pelo produto gerado

•  Cópia dos elementos, em função das características selecionadas, para um novo projeto Eclipse/Java

Page 213: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

GenArch •  Ferramenta de Derivação Baseada em

Modelos – Mestrado de Elder Cirilo na PUC-Rio, co-

orientado com Carlos Lucena

•  Deriva produtos automaticamente a partir de informações presentes nos modelos

Page 214: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

GenArch •  Centrada na definição de três modelos:

– Modelo de Características • Modela as variabilidades da LPS

– Modelo de Arquitetura • Representação visual dos artefatos de código

– Modelo de Configuração • Define o mapeamento entre características e

artefatos de código. • Representa o conhecimento de configuração

em Programação Generativa

Page 215: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Características

•  Representa as características (variabilidades) do domínio

•  Permite a criação de instancias da LPS (Produtos) baseada na seleção de características

•  Pode apresentar regras globais (Se característica ‘x’ está selecionada então característica ‘y’ não pode ser selecionada)

Configurações

Page 216: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Implementação da Arquitetura

•  Contém uma visão, organizada em containers dos artefatos de código da LPS –  Componentes –  Classes –  Aspectos –  etc

•  É a partir do modelo de arquitetura que os artefatos de código são mapeados para expressões booleanas de características

Page 217: Linhas de Processos de Software - Minicurso - SBQS 2011

6/6/11

Modelo de Configuração

•  Contém o conhecimento de configuração da LPS. Mapeamento entre elementos de implementação e expressões booleana de features.

•  Responde a questão –  Quando cada artefato de

código está habilitado para compor uma aplicação?

Page 218: Linhas de Processos de Software - Minicurso - SBQS 2011

Exemplo: Janela de Configuração

Page 219: Linhas de Processos de Software - Minicurso - SBQS 2011

Derivação Automática com GenArch

219