A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Trabalho submetido ao SBES 2008 juntamente.

Apresentações semelhantes


Apresentação em tema: "Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Trabalho submetido ao SBES 2008 juntamente."— Transcrição da apresentação:

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

2 Seminário PPGInf - 27 de Maio - UCPEL

3 convergência Complexidade SW )heterogeneidade Comunicação
Seminário PPGInf - 27 de Maio - UCPEL

4 valor agregado está no software
)hardware é commodity Seminário PPGInf - 27 de Maio - UCPEL

5 bateria qualidade software hardware rentabilidade restrições físicas
tempo de projeto rentabilidade qualidade bateria hardware software Seminário PPGInf - 27 de Maio - UCPEL

6 desenvolvimento embarcado
Seminário PPGInf - 27 de Maio - UCPEL

7 )agenda Estado atual do SW embarcado
Show me where I can spend some dollars Alloy Máquina de Vendas de Bebidas Nossa proposta Exploração do espaço de projeto O que tem por aí O que pretendemos )agenda Seminário PPGInf - 27 de Maio - UCPEL

8 )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... )estado atual SW embarcado Seminário PPGInf - 27 de Maio - UCPEL

9 Seminário PPGInf - 27 de Maio - UCPEL

10 )abordagens comerciais
Esterel SCADE Mathwork Simulink )abordagens comerciais Seminário PPGInf - 27 de Maio - UCPEL

11 )alloy Completeness threshold Linguagem de modelagem Declarativa
Sintaxe OO, semântica relacional Tudo é relação Alloy analyzer Small scope hypothesis Teste vs. Escopo Completo Bounded model checking SAT Completeness threshold )alloy Seminário PPGInf - 27 de Maio - UCPEL

12 )alloy open util/ordering[Estado] as ord
abstract 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 } 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 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 } )alloy Seminário PPGInf - 27 de Maio - UCPEL

13 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. 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. Implementa a JVM em hardware. Desenvolvido por nosso grupo. Não implementa ainda toda a biblioteca padrão do Java. Ferramenta DESEJOS. Avalia propriedades físicas: memória ocupada, potência, energia, número de ciclos. Código deve ser inteiramente Java. )nossa proposta Seminário PPGInf - 27 de Maio - UCPEL

14 code generation process step by step
open util/ordering[State] as ord abstract 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} classes and attributes methods Here is where the generation process takes advantages on the amount of generated lines of code inheritance and polymorphism public class VendingMachine { protected LinkedList<Drink> drinkStorage; protected LinkedList<String> coinStorage; public VendingMachine() { this.drinkStorage = new LinkedList<Drink>(); this.coinStorage = new LinkedList<String>(); } ... state machine

15 code generation process step by step
methods classes and attributes 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 if inference is impossible, generate as static within the Main class 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)); generate all possible methods in order to simplify the state machine branching process

16 code generation process step by step
state machine methods run addCoin run buyDrink run { 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()) { 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 all code generation process treatment of I/O based on each formal parameter list Untimed MoC only

17 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 exploração do espaço de projeto )nossa proposta Seminário PPGInf - 27 de Maio - UCPEL

18 Ganhos de até 6.2x!!!!! )linhas de código
Seminário PPGInf - 27 de Maio - UCPEL

19 )trabalhos relacionados
Berkeley Ptolemy II Suporte a 18 modelos de computação Geração de código C para alguns )trabalhos relacionados Seminário PPGInf - 27 de Maio - UCPEL

20 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 )trabalhos futuros Seminário PPGInf - 27 de Maio - UCPEL

21 )pessoas Luigi Carro Emilena Specht Érika Cota Lisane Brisolara
Ronaldo Ferreira Julio Mattos )pessoas Seminário PPGInf - 27 de Maio - UCPEL

22 rrferreira@inf.ufrgs.br Trabalho Financiado através de uma
Trabalho Financiado através de uma bolsa do programa PIBIC/CNPq/UFRGS Seminário PPGInf - 27 de Maio - UCPEL


Carregar ppt "Uma abordagem para síntese de software embarcado e exploração de espaço de projeto baseada em modelos alloy Trabalho submetido ao SBES 2008 juntamente."

Apresentações semelhantes


Anúncios Google