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

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

1 Método Formal B Alunos: Eduardo Akira Yonekura Rogério Esteves Salustiano.

Apresentações semelhantes


Apresentação em tema: "1 Método Formal B Alunos: Eduardo Akira Yonekura Rogério Esteves Salustiano."— Transcrição da apresentação:

1 1 Método Formal B Alunos: Eduardo Akira Yonekura Rogério Esteves Salustiano

2 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Tópicos abordados zHistórico zIntrodução zNotação zAplicação ao Estudo de Caso zB-Toolkit zConclusões zDesvantagens zVantagens zReferências Bibliográficas

3 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Histórico zDesenvolvido por J.R. Abrial em zUma extensão com melhorias de VDM e Z. zAceitação na indústria a partir de 1992, a partir de estudos de casos bem sucedidos. zO método B foi utilizado no projeto do controle dos trens do metrô de Paris (1998)

4 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Introdução zB utiliza o conceito de Máquinas Abstratas (Abstract Machines), que encapsulam: estados: que consistem de variáveis restringidas por invariantes (tipos das variáveis). operações: que modificam o estado das variáveis, porém sem alterar os invariantes. zAs MACHINEs podem ser vistas como Classes, porém com um nível de detalhamento muito mais rigoroso. zAs MACHINEs trabalham com o conceito de substituição: a única maneira de fazer a máquina ter progresso é alterar (substituir) o valor do seu estado.

5 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Notação – cláusulas de uma máquina MACHINE define o nome da máquina abstrata EXTENDS permite importar instâncias de outras máquinas SEES outras máquinas que serão utilizadas dentro desta SETS especifica os conjuntos que são manipulados CONSTANTS define todas as constantes que são manipuladas PROPERTIES expressões lógicas que são satisfeitas pelas constantes VARIABLES define as variáveis utilizadas na máquina DEFINITIONS uma série de definições utilizadas na máquina INVARIANT propriedade dos atributos definidos nas VARIABLES INITIALIZATION atribuição de valores iniciais às VARIABLES OPERATIONS define todas as operações (procedimentos e funções) da máquina; deve ser a última cláusula a ser declarada END fim da máquina abstrata

6 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Notação – exemplo MACHINE machine_name VARIABLES var1, var2... SEES machine1, machine2,... INVARIANT var1 tipo1, var2 tipo2,... INITIALIZATION var1 := val1, var2 := var2... OPERATIONS operação_1(var_aux1, var_aux2,...) PRE var_aux1 tipo1, var_aux2 tipo2,... THEN END; ret_value operação_2 BEGIN END;... END

7 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Diagrama de Classes do Sistema de Elevadores

8 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Notação zMACHINE yEx: MACHINE Elevador zSETS yEx: DIREC = {sobe,desce}; P_STATUS = {aberta,fechada}; BOTAO_ESTADO = {botao_on,botao_off}; ELEV_ESTADO = {pronto,em_mov,em_visita} zPROPERTIES yEx: terreo : NAT & ultimo : NAT

9 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Notação zVARIABLES yEx: elev, dir, andar_dest, por_stat, est_elev zINVARIANT yEx: elev <: ELEVADOR & botao <: BOTAO ultimo > terreo

10 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Notação zOPERATIONS chama_elevador(ll,fl) = PRE ll : elev & fl : ANDAR THEN... WHEN est_elev(ll) = pronto & fl > andar_dest(ll) THEN andar_dest(ll):= fl || dir(ll) := sobe || est_elev(ll) := em_mov

11 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Ferramenta B-Toolkit

12 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Ferramenta B-Toolkit

13 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Especificação B para o sistema de elevadores

14 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Vantagens e Desvantagens zDesvantagens yAlto grau de complexidade. yNão é trivial encontrar bons invariantes. yPoucas ferramentas disponíveis (Atelier-B e B-Toolkit). zVantagens yMétodos de prova exatos (gerados automaticamente ou pelo usuário). yAs especificações são geradas utilizando uma abordagem incremental, o que facilita a especificação de um sistema complexo. yBoa interação com UML e Statecharts. yExtensa bibliografia com estudos de casos complexos. yBoa aceitação na indústria.

15 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Referências Bibliográficas zUsing the B formal approach for incremental specification design of interactive systems. Yamine Ait- Ameur, et. al. zSupplementing a UML development process with B. Helen Treharne. FME zUsing B formal specifications for analysis and verification of UML/OCL models. R. Marcano. UML 2002, Model Engineering, Concepts and Tools. Workshop on Consistency Problems in UML-based Software Development. zB Toolkit - User´s manual

16 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de elevadores MACHINE Types MACHINE Types SETS OBJECTS; DIREC = {sobe,desce}; P_STATUS = {aberta,fechada}; BOTAO_ESTADO = {botao_on,botao_off}; ELEV_ESTADO = {pronto,em_mov,em_visita} CONSTANTS terreo, ultimo, ELEVADOR, BOTAO PROPERTIES terreo : NAT & ultimo : NAT & terreo < ultimo & ELEVADOR <: OBJECTS & BOTAO <: OBJECTS END

17 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de elevadores MACHINE Elevador MACHINE Elevador SEES Types VARIABLES elev, dir, andar_dest, por_stat, est_elev INVARIANT elev <: ELEVADOR & dir : elev-->DIREC & andar_dest : elev-->ANDAR & por_stat : elev-->P_STATUS & est_elev : elev-->ELEV_ESTADO INITIALISATION ANY ll WHERE ll <: ELEVADOR & ll /= {} THEN elev := ll /* || */ /* dir := ll * {dir_sobe} /* || */ /* andar_dest := ll * {terreo} || */ /* por_stat := ll * {p_fechado} || */ /* est_elev := ll * {pronto} */ END DEFINITIONS ANDAR == {terreo,ultimo} OPERATIONS elevador_desce(ll) = PRE ll : elev THEN dir(ll) := desce END; elevador_sobe(ll) = PRE ll : elev THEN dir(ll) := sobe END; elevador_setdestino(ll,fl) = PRE ll : elev & fl : ANDAR THEN andar_dest(ll) := fl END; fl <-- elevador_getDestino(ll) = PRE ll : elev THEN fl := andar_dest(ll) END;

18 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de elevadores MACHINE Elevador (cont.) elevador_fechport(ll) = PRE ll : elev THEN por_stat(ll) := p_fechado END; elevador_abrport(ll) = PRE ll : elev THEN por_stat(ll) := p_aberta END

19 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de elevadores MACHINE Botão MACHINE Botao SEES Types USES Elevador VARIABLES botao, botao_andar, botao_estado, elev_botao INVARIANT botao <: BOTAO & botao_andar : botao --> ANDAR & ran(botao_andar) = ANDAR & botao_estado : botao --> BOTAO_ESTADO & elev_botao : botao --> elev & ran(botao_elev) = elev & !(ll,fl).(ll:elev & fl : ANDAR => card(botao_elev~[{ll}]/\botao_andar~[{fl}] ) = 2 ) INITIALISATION ANY bb, ff, lb WHERE bb <: BOTAO & ff : bb --> ANDAR & ran(ff) = ANDAR & lb : bb -->elev & !(ll,fl).(ll:elev & fl : ANDAR => card(lb~[{ll}]/\ff~[{fl}] ) = 2 ) THEN botao := bb || botao_andar := ff || botao_estado := bb * {botao_off} || elev_botao := lb END DEFINITIONS ANDAR == (terreo...ultimo) OPERATIONS fl <-- botao_getAndar(bt) = PRE bt : botao THEN fl := botao_andar(bt) END; botao_mudaOffOn(bt) = PRE bt : botao & botao_estado(bt) = botao_off THEN botao_estado(bt) := botao_on END;

20 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de elevadores MACHINE Botão (cont.) botao_mudaOnOff(bt) = PRE bt: botao & botao_estado(bt) = botao_on THEN botao_estado(bt) := botao_off END; bt1,bt2 <-- getBotao(ll,fl) = PRE ll : elev & fl : ANDAR THEN ANY b1,b2 WHERE b1 : botao & b2 : botao & (b1,b2) = botao_elev~[{ll}] /\ botao_andar~[{fl}] THEN bt1 := b1 || bt2 := b2 END END; ll <-- getElevador(bt) = PRE bt : botao THEN ll := elev_botao(bt) END

21 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de Elevadores MACHINE Controle MACHINE Controle SEES Types VARIABLES elev, dir, andar_dest, por_stat, est_elev, botao, botao_andar, botao_estado, elev_botao INVARIANT elev <: ELEVADOR & dir : elev --> DIREC & andar_dest : elev--> ANDAR & por_stat : P_STATUS & est_elev : elev --> ELEV_ESTADO & botao <: BOTAO & botao_andar : botao --> ANDAR & /* ran(botao_andar) : botao --> ANDAR & */ botao_estado : botao --> BOTAO_ESTADO elev_botao : botao --> elev /* & */ /* ran(elev_botao) = elev /* & */ /* !(ll,fl).(ll:elev & fl : ANDAR => card(botao_elev~[{ll}]/\botao_andar~[{fl}] ) = 2 ) */ INITIALISATION ANY ll,bb,ff,lb WHERE ll <: ELEVADOR & ll /= {} & bb <: BOTAO & ff : bb --> ANDAR & ran(ff) = ANDAR & lb : bb --> ll & /* ran(lb) = ll & */ /* !(li,fl).(li:elev & fl : ANDAR => card(lb~[{li}]/\ff~[{fl}] ) = 2 ) */ THEN elev := ll || dir := ll * {sobe} || andar_dest := ll * {terreo} || por_stat := ll * {} || est_elev := ll * {pronto} || botao := bb || botao_andar := ff || botao_estado := bb * {botao_off} || elev_botao := lb END DEFINITIONS ANDAR == {terreo..ultimo}

22 Eduardo Akira Yonekura (025989) - Rogério Esteves Salustiano(982094) MO409 Sistema de Elevadores MACHINE Controle (cont.) OPERATIONS elevador_ocupado(ll) = PRE ll : elev THEN SELECT est_elev(ll) = em_visita THEN por_stat(ll) := fechada || est_elev(ll) := pronto ELSE skip END END; chama_elevador(ll,fl) = PRE ll : elev & fl : ANDAR THEN SELECT est_elev(ll) = em_visita & fl = andar_dest(ll) THEN por_stat(ll) := aberta || est_elev(ll) := em_visita WHEN est_elev(ll) = pronto & fl > andar_dest(ll) THEN andar_dest(ll):= fl || dir(ll) := sobe || est_elev(ll) := em_mov ELSE skip END END; elevador_chega(ll,fl) = PRE ll : elev & fl : ANDAR THEN SELECT est_elev(ll) = em_mov & fl = andar_dest(ll) THEN ANY b1,b2 WHERE b1 : botao & b2 : botao & (b1,b2) = elev_botao~[{ll}] /\ botao_andar~[{fl}] THEN botao_estado := botao_estado botao_off,b2|- >botao_off} END || est_elev(ll) := em_visita || por_stat(ll) := aberta ELSE skip END END; aperta_botao(bt) = PRE bt : botao THEN SELECT botao_estado(bt) = botao_off THEN botao_estado(bt) := botao_on ELSE skip END END


Carregar ppt "1 Método Formal B Alunos: Eduardo Akira Yonekura Rogério Esteves Salustiano."

Apresentações semelhantes


Anúncios Google