uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em...

22
uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas Embarcados Instituto de Informática - UFRGS Trabalho submetido ao SBES 2008 juntamente com Emilena Specht, Lisane Brisolara, Julio Mattos, Érika Cota e Lui

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy

Ronaldo Rodrigues FerreiraLaboratório de Sistemas Embarcados

Instituto de Informática - UFRGS

Trabalho submetido ao SBES 2008 juntamente comEmilena Specht, Lisane Brisolara, Julio Mattos, Érika Cota e Luigi Carro

Page 2: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

2Seminário PPGInf - 27 de Maio - UCPEL

Page 3: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

3Seminário PPGInf - 27 de Maio - UCPEL

convergência)heterogeneidade

Complexidade SWComplexidade SW

ComunicaçãoComunicação

Page 4: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

4Seminário PPGInf - 27 de Maio - UCPEL

valor agregado está no software)hardware é commodity

Page 5: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

5Seminário PPGInf - 27 de Maio - UCPEL

tempo de projeto

rentabilidade

qualidade

softwarehardware

bateria

restrições físicas

Page 6: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

6Seminário PPGInf - 27 de Maio - UCPEL

desenvolvimento embarcado

Page 7: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)agenda

• Estado atual do SW embarcado• Show me where I can spend some dollars• Alloy

oMáquina de Vendas de Bebidas• Nossa proposta

o Exploração do espaço de projeto• O que tem por aí• O que pretendemos

Seminário PPGInf - 27 de Maio - UCPEL 7

Page 8: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)estado atual SW embarcado

• SW não é o produto, mas parte dele• Pouca automação• Práticas generalistas de Engenharia de SW• UML somente casos de uso• 60% a 90% dos projetos são similares• SW é usado como “cola”• Métodos formais...

Seminário PPGInf - 27 de Maio - UCPEL 8

Page 9: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

Seminário PPGInf - 27 de Maio - UCPEL 9

Page 10: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

Seminário PPGInf - 27 de Maio - UCPEL 10

)abordagens comerciais

Delayinserted

Mathwork Simulink

Esterel SCADE

Page 11: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)alloy

• Linguagem de modelagem• Declarativa• Sintaxe OO, semântica relacional

o Tudo é relação• Alloy analyzer• Small scope hypothesis

o Teste vs. Escopo Completo• Bounded model checking• SAT

Seminário PPGInf - 27 de Maio - UCPEL 11

Completeness threshold

Page 12: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

Seminário PPGInf - 27 de Maio - UCPEL 12

open util/ordering[Estado] as ordabstract sig Bebida { preco: Int }sig Agua extends Bebida {}sig Refrigerante extends Bebida {}sig Cha extends Bebida {}sig Ficha {}sig MaquinaVendas{ fichas: set Ficha, bebidas: set Bebida}sig Estado { maquina: MaquinaVendas }

)alloy

fact EstadoInicial { let s0 = ord/first.maquina | no s0.fichas let s0 = ord/first.maquina | all d:Bebida | d in s0.bebidas some Cha and some Agua and some Refrigerante}fact CompraBebidas { all s: Estado, s': ord/next[s] | some d: Bebida | some c: Ficha | d.preco <= #s.maquina.fichas => compraBebida[s.maquina,s'.maquina,d] else adicionaFicha[s.maquina,s'.maquina,c]}fact Precos { all w: Agua | w.preco = 1 all s: Refrigerante | s.preco = 2 all t: Cha | t.preco = 3}fact QuantidadeMaximaFichas { #Ficha = (sum d : Bebida | d.preco) }fact SempreFazAlgo{ all s:Estado,s': s.ord/next | s.maquina.fichas != s'.maquina.fichas }fact TodasMaquinasEmAlgumEstado{ all m:MaquinaVendas | some s: Estado | m in s.maquina }

pred compraBebida[m, m': MaquinaVenda, d: Bebida] { m'.bebidas = m.bebidas - d #m'.fichas = #m.fichas - d.preco}pred adicionaFicha[m, m': MaquinaVenda, c: Ficha] { m'.fichas = m.fichas + c m'.bebidas = m.bebidas}

Page 13: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)nossa propostaSeminário PPGInf - 27 de Maio - UCPEL 13

Requisitos da Aplicação

Modelo AlloyAlloy Analyzer

Tradutor de Código

Código Java

Anotações Alloy

Repositório Java

Requisitos Funcionais

Código Legado

Verificação do Modelo

Estimador e Avaliador

Requisitos Não-Funcionais

FemtoJavaPipeline

FemtoJavaMulticycle

FemtoJavaVLIW

Plataforma Alvo + SW Bytecode

Exploração do Espaço de

Projeto

Usa a Alloy Annotation Language (espécie de JML) para anotar o código Java.

Oferece reuso e verificação formal.

Geração automática do modelo Alloy correspondente.Implementa a JVM em hardware.

Desenvolvido por nosso grupo.

Não implementa ainda toda a biblioteca padrão do Java.

A tradução está pronta para classes, métodos, herança, polimorfismo.

Somente o modelo de computação untimed.

É gerado O(4k) versões do código Java, onde o 4 é o # de estruturas da Javolution e k é a quantidade de relações n-árias de multiplicidade set no modelo.Ferramenta DESEJOS.

Avalia propriedades físicas: memória ocupada, potência, energia, número de ciclos.

Código deve ser inteiramente Java.

Page 14: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

code generation process step by step

classes and attributes

methods

inheritance and polymorphism

state machine

open util/ordering[State] as ordabstract sig Drink { price: Int }sig Water extends Drink{}sig Softdrink extends Drink{}sig Tea extends Drink{}sig Coin {}sig VendingMachine{ coinStorage: set Coin, drinkStorage: set Drink}sig State{ machine: VendingMachine}

public class VendingMachine { protected LinkedList<Drink> drinkStorage; protected LinkedList<String> coinStorage; public VendingMachine() { this.drinkStorage = new LinkedList<Drink>(); this.coinStorage = new LinkedList<String>(); } ...

Here is where the generation processtakes advantages on the amount of generated lines of code

Page 15: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

code generation process step by stepclasses and attributesmethods

pred buyDrink[m, m': VendingMachine, d: Drink] { m'.drinkStorage= m.drinkStorage - d #m'.coinStorage = #m.coinStorage - d.price}pred addCoin[m, m': VendingMachine, c: Coin] { m'.coinStorage = m.coinStorage + c m'.drinkStorage = m.drinkStorage}

public class VendingMachine {… public void addCoin(String c) { AlloyOperations.alloyUnion(this.coinStorage,c); } public void buyDrink_Water(Water d) { AlloyOperations.alloySubtraction(this.drinkStorage,new Water(d)); } public void buyDrink_Softdrink(Softdrink d) { AlloyOperations.alloySubtraction(this.drinkStorage,new Softdrink(d)); }public void buyDrink_Tea(Tea d) { AlloyOperations.alloySubtraction(this.drinkStorage,new Tea(d)); }}

if inference is impossible,generate as static withinthe Main class

generate all possiblemethods in order tosimplify the statemachine branchingprocess

Page 16: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

code generation process step by stepmethodsstate machinerun addCoin

run buyDrinkrun { no ord/last.machine.drinkStorage and no ord/last.machine.drinkStorage } for 14

public class Main { public static void main(String[] args) { VendingMachine machine = new VendingMachine(); Menu menu_enum = Menu.done; InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); try { while(true){ if(menu_enum.ordinal()==Menu.addcoin.ordinal()) { try { System.out.println("Enter Coin:"); String c = console.readLine(); machine.addCoin(c); } catch (IOException e) { e.printStackTrace(); } finally { menu_enum = Menu.done; } }...

only manual step in allcode generation process

treatment of I/O based oneach formal parameter list

Untimed MoC only

Page 17: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

exploração do espaço de projeto )nossa proposta

• Uso da ferramenta DESEJOS, desenvolvida no grupo

• Estima memória ocupada, desempenho (ciclos), energia consumida e potência média

• FemtoJava (por isso a Javolution para EDs)• Oferecer seleção automática da solução para

os RNFs da aplicação

Seminário PPGInf - 27 de Maio - UCPEL 17

Page 18: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)linhas de códigoSeminário PPGInf - 27 de Maio - UCPEL 18

Ganhos de até

6.2x!!!!!

Page 19: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

Seminário PPGInf - 27 de Maio - UCPEL 19

)trabalhos relacionados

UC @ BerkeleyPtolemy II

•Suporte a 18 modelos de computação•Geração de código C para alguns

Page 20: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)trabalhos futuros

• Suporte ao modelo de computação Synchronous Data Flow

• Codificação do repositório Java e de anotações AAL

• Melhorar o tratamento de E/S• DSE automática• Utilizar a fórmula booleana produzida (BMC)

para a síntese da máquina de estados

Seminário PPGInf - 27 de Maio - UCPEL 20

Page 21: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

)pessoasSeminário PPGInf - 27 de Maio - UCPEL 21

Érika CotaEmilena SpechtLuigi Carro

Lisane BrisolaraRonaldo Ferreira Julio Mattos

Page 22: Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Ronaldo Rodrigues Ferreira Laboratório de Sistemas

22Seminário PPGInf - 27 de Maio - UCPEL

Trabalho Financiado através de uma bolsa do programa PIBIC/CNPq/UFRGS

[email protected]

http://www.inf.ufrgs.br/~rrferreira

http://www.inf.ufrgs.br/~lse