• Nenhum resultado encontrado

Uso de Sistemas de Transições Modais de Kripke para Representacão de Comportamento Parcial no Desenvolvimento incremental e interativo de software

N/A
N/A
Protected

Academic year: 2021

Share "Uso de Sistemas de Transições Modais de Kripke para Representacão de Comportamento Parcial no Desenvolvimento incremental e interativo de software"

Copied!
182
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DA BAHIA

DISSERTAC

¸ ˜

AO DE MESTRADO

Sistemas de Transi¸

oes Modais de Kripke para Representa¸

ao de

Comportamento Parcial no Desenvolvimento Incremental e

Iterativo de Software

Efraim Zalmoxis de Almeida Machado

Programa de P´

os-Gradua¸

ao em Ciˆ

encia da Computa¸

ao

Salvador

(2)
(3)

EFRAIM ZALMOXIS DE ALMEIDA MACHADO

SISTEMAS DE TRANSIC

¸ ˜

OES MODAIS DE KRIPKE PARA

REPRESENTAC

¸ ˜

AO DE COMPORTAMENTO PARCIAL NO

DESENVOLVIMENTO INCREMENTAL E ITERATIVO DE

SOFTWARE

Esta

Disserta¸c˜

ao de Mestrado foi

apresentada ao Programa de P´

os-Gradua¸c˜

ao em Ciˆ

encia da

Com-puta¸c˜

ao da Universidade Federal da

Bahia, como requisito parcial para

obten¸c˜

ao do grau de

Mestre em

Ciˆ

encia da Computa¸c˜

ao.

Orientadora: Aline Maria Santos Andrade

Salvador

(4)

Sistema de Bibliotecas - UFBA Machado, Efraim Zalmoxis de Almeida.

Sistemas de Transi¸c˜oes Modais de Kripke para Representa¸c˜ao de Com-portamento Parcial no Desenvolvimento Incremental e Iterativo de Software / Efraim Zalmoxis de Almeida Machado – Salvador, 2016.

154p.: il.

Orientadora: Prof. Dr. Aline Maria Santos Andrade.

Disserta¸c˜ao (Mestrado) – Universidade Federal da Bahia, Instituto de Matem´atica, 2016.

1. KMTS. 2. Informa¸c˜ao Parcial. 3. Desenvolvimento de Software. 4. Conjun¸c˜ao. 5. Composi¸c˜ao Paralela. 6. Jogo de Refinamento. 7. Reparo de Refinamento. I. Andrade, Aline Maria Santos. II. Universidade Federal da Bahia. Instituto de Matem´atica. III T´ıtulo.

CDD – XXX.XX CDU – XXX.XX.XXX

(5)

TERMO DE APROVAC

¸ ˜

AO

EFRAIM ZALMOXIS DE ALMEIDA MACHADO

SISTEMAS DE TRANSIC

¸ ˜

OES MODAIS DE

KRIPKE PARA REPRESENTAC

¸ ˜

AO DE

COMPORTAMENTO PARCIAL NO

DESENVOLVIMENTO INCREMENTAL E

ITERATIVO DE SOFTWARE

Esta Disserta¸c˜ao de Mestrado foi julgada adequada `a obten¸c˜ao do t´ıtulo de Mestre em Ciˆencia da Computa¸c˜ao e aprovada em sua forma final pelo Programa de P´os-Gradua¸c˜ao em Ciˆencia da Computa¸c˜ao da Universidade Federal da Bahia.

Salvador, 30 de Novembro de 2016

Profa. Dra. Aline Maria Santos Andrade Universidade Federal da Bahia Prof. Dr. Adolfo Almeida Duran

Universidade Federal da Bahia

Prof. Dr. Alexandre Cabral Mota Universidade Federal de Pernambuco

(6)
(7)

Este trabalho ´e dedicado a todos que, de forma direta ou indireta, contribu´ıram para que eu o conclu´ısse, sem esque-cer daqueles que sentiram minha ausˆencia neste per´ıodo, mas aceitaram e compreenderam que, muitas vezes, minha falta era necess´aria.

(8)
(9)

AGRADECIMENTOS

Agrade¸co `a minha orientadora, Profª Dra. Aline Andrade, pela paciˆencia em ter me ouvido, pela dedica¸c˜ao em ter me ensinado e por todo incentivo dado. Esta aten¸c˜ao foi muito importante para que eu conclu´ısse minha disserta¸c˜ao e por isto, serei eternamente grato.

Agrade¸co tamb´em aos amigos, familiares e todos aqueles que me apoiaram e me ouviram durante este per´ıodo, com especial importˆancia `as discuss˜oes com meu amigo Jandson e ao professor Sandro Andrade, que contribu´ıram para esta pesquisa.

(10)
(11)

Andar sobre as ´aguas e fazer software a partir de uma especifica¸c˜ao ´e simples se ambas estiverem congeladas. —EDWARD V BERARD

(12)
(13)

RESUMO

O projeto de software, na abordagem iterativa e incremental, lida com novos requisitos ao longo do desenvolvimento, que implicam em constantes mudan¸cas no projeto, e me-canismos que deem suporte para o desenvolvimento na presen¸ca de informa¸c˜ao parcial e incompleta s˜ao importantes para reduzir o impacto dessas mudan¸cas. Expressar incerte-zas a respeito do comportamento pretendido do software (ou dos seus componentes) pode evitar a tomada de decis˜oes precipitadas, que poderiam acarretar em erros de projeto. Neste contexto, diversos trabalhos utilizam sistemas de transi¸c˜oes modais na modelagem de sistemas, que permitem expressar incerteza de forma expl´ıcita atrav´es de modalidades em suas transi¸c˜oes.

Um Sistema de Transi¸c˜ao Modal de Kripke (KMTS) al´em de conter modalidades em suas transi¸c˜oes, tamb´em expressa indefini¸c˜oes em n´ıvel de proposi¸c˜oes nos estados. A in-determina¸c˜ao nos estados ´e interessante, pois permite que v´arios estados sejam abstra´ıdos em um mesmo estado, evitando uma defini¸c˜ao pr´evia de todos os estados do sistema nas fases iniciais do desenvolvimento. Todavia, existem poucos trabalhos que utilizam KMTS para especifica¸c˜ao parcial aplicados no desenvolvimento de software.

O presente trabalho estuda o uso de modelos KMTS para explicitar informa¸c˜oes par-ciais durante o desenvolvimento de software, trazendo contribui¸c˜oes na cria¸c˜ao, na an´alise e no reparo destes modelos. Em rela¸c˜ao `a cria¸c˜ao de modelos, propomos um algoritmo de s´ıntese de modelos KMTS a partir de diagramas de sequˆencia, que ´e uma adapta¸c˜ao de um algoritmo proposto na literatura para Modal Transition System (MTS). Em rela¸c˜ao `

a an´alise de modelos, definimos as opera¸c˜oes de conjun¸c˜ao e de composi¸c˜ao paralela bem como a rela¸c˜ao de refinamento modal forte para modelos KMTS. O conceito de refinamento para KMTS ´e tamb´em caracterizado nessa disserta¸c˜ao como um jogo e um algoritmo para o jogo do refinamento ´e proposto, discutido e validado. A contribui¸c˜ao no reparo de modelos se d´a atrav´es do estudo do problema de reparo do refinamento para KMTS, isto ´e, como alterar um modelo KMTS para que ele seja um refinamento de outro modelo KMTS. Para este problema, algoritmos s˜ao tamb´em propostos, discutidos e vali-dados. Entendemos que esta solu¸c˜ao poder´a trazer contribui¸c˜oes no reparo autom´atico de modelos e pode ser aplicada, por exemplo, na an´alise de impacto de mudan¸cas para de-terminar qual a mudan¸ca menos custosa a se fazer em um determinado modelo de forma a satisfazer determinadas propriedades. A partir das contribui¸c˜oes na constru¸c˜ao, an´alise e reparo de modelos KMTS, o presente trabalho define uma base para um framework formal que pode ser utilizado na constru¸c˜ao e evolu¸c˜ao de modelos comportamentais de software.

Palavras-chave: KMTS; Informa¸c˜ao Parcial; Desenvolvimento de Software; Con-jun¸c˜ao; Composi¸c˜ao Paralela; Jogo de Refinamento; Reparo de Refinamento;

(14)
(15)

ABSTRACT

The software design, in the iterative and incremental approach, deals with new require-ments throughout development that imply constant changes in the design, and mecha-nisms that support development in the presence of partial and incomplete information are important to reduce the impact of these Changes. Expressing uncertainties about the intended behavior of the software (or its components) can avoid making hasty decisions that could lead to design errors. In this context, several studies use modal transition system to modeling systems and to express explicitally uncertainty through modalities in their transitions.

A Kripke Modal Transition System (KMTS), besides containing modalities in its transitions, also expresses propositional level indefinits in the states. Indeterminacy in states is interesting because it allows several states to be abstracted in the same state, avoiding a prior definition of all states of the system in the early stages of development. However, there are few papers that use KMTS for partial specification applied in software development.

The present work studies the use of KMTS models to represent partial information du-ring software development, introduzing contributions in the creation, analysis and repair of these models. In relation to the modeling, we propose an algorithm for the synthesis of KMTS models from sequence diagrams, which is an adaptation of an algorithm proposed in the literature for Modal Transition System (MTS). In relation to the model analysis, we define the conjunction and parallel composition operations as well as the strong mo-dal refinement relation for KMTS models. The concept of refinement for KMTS is also characterized in this dissertation as a game and an algorithm for the refinement game is proposed, discussed and validated. The contribution in model repair is through the study of the refinement repair problem for KMTS, that is, how to change a KMTS model so that it is a refinement of another KMTS model. For this problem, algorithms are also proposed, discussed and validated. We believe that this solution can bring contributions to automatic model repair and can be applied, for example, in the impact analysis of changes to determine which is the least costly change to be made in a given model in order to satisfy certain properties

From the contributions in the construction, analysis and repair of KMTS models, the present work defines a basis for a formal framework that can be used in the construction and evolution of software behavioral models.

Keywords: KMTS; Partial Information; Software Development; Conjunction; Parallel Composition; Refinement Game; Refinement Repair;

(16)
(17)

SUM ´

ARIO

Cap´ıtulo 1—Introdu¸c˜ao 1

1.1 Escopo do Trabalho e Contribui¸c˜oes . . . 4

1.2 Organiza¸c˜ao da Disserta¸c˜ao . . . 6

Cap´ıtulo 2—Modelos Comportamentais 7 2.1 Modelos de Software . . . 7

2.2 Sistemas de Transi¸c˜ao e Especifica¸c˜oes Modais . . . 8

2.2.1 Simula¸c˜ao . . . 9

2.2.2 Especifica¸c˜oes Comportamentais Parciais . . . 10

2.2.3 KMTS . . . 11

2.3 Teoria das Especifica¸c˜oes Parciais . . . 12

2.3.1 Rela¸c˜ao de Refinamento . . . 13

2.3.2 Operador de Composi¸c˜ao Paralela . . . 17

2.3.3 Operador de Conjun¸c˜ao . . . 17

Cap´ıtulo 3—Trabalhos Relacionados 21 3.1 Modelos Comportamentais Parciais . . . 21

3.1.1 Sistema de Transi¸c˜ao Modal de Kripke . . . 23

3.2 Constru¸c˜ao de Especifica¸c˜oes Parciais no Desenvolvimento de Software . 24 3.3 An´alise de Especifica¸c˜oes Parciais no Desenvolvimento de Software . . . . 26

3.3.1 Jogo de Refinamento . . . 27

3.4 Reparo de Refinamento . . . 27

3.5 Posicionamento do Presente Trabalho em Rela¸c˜ao aos Demais . . . 28

Cap´ıtulo 4—S´ıntese de Modelos KMTS a partir de Cen´arios 29 4.1 Modelos KMTS com A¸c˜oes . . . 30

4.2 Algoritmo para S´ıntese de KMTS . . . 30

4.2.1 Entradas e Sa´ıdas . . . 30

4.3 Etapas do Algoritmo para S´ıntese de KMTS . . . 34

4.3.1 Etapa I: Restri¸c˜oes por Componente . . . 34

4.3.2 Etapa II: Diagrama de Sequˆencia por Componente . . . 36

4.3.3 Etapa III: KMTS Inicial por Componente . . . 38

4.3.4 Etapa IV: Comportamento Obrigat´orio por Componente . . . 42

4.4 An´alise do Algoritmo de S´ıntese . . . 44

4.5 Valida¸c˜ao do Algoritmo de S´ıntese . . . 47 xv

(18)

xvi SUM ´ARIO

Cap´ıtulo 5—Rela¸c˜oes e Opera¸c˜oes para Modelos KMTS 49

5.1 Refinamento de KMTS . . . 49

5.1.1 Propriedades da Rela¸c˜ao de Refinamento . . . 52

5.1.2 Rela¸c˜ao de Refinamento no Desenvolvimento de Software . . . 53

5.2 Composi¸c˜ao Paralela para Modelos KMTS . . . 57

5.2.1 Propriedades do Operador de Composi¸c˜ao Paralela . . . 59

5.2.2 Exemplo de Opera¸c˜ao de Composi¸c˜ao Paralela no Desenvolvimento de Software . . . 60

5.3 Conjun¸c˜ao de Modelos KMTS . . . 61

5.3.1 Propriedades do Operador de Conjun¸c˜ao . . . 64

5.3.2 Exemplo de Opera¸c˜ao de Conjun¸c˜ao no Desenvolvimento de Software 65 Cap´ıtulo 6—Jogo do Refinamento 69 6.1 Defini¸c˜ao Intuitiva do Jogo de Refinamento . . . 69

6.2 Jogo do Refinamento Como um Grafo . . . 73

6.3 Algoritmo do Jogo de Refinamento . . . 78

6.3.1 An´alise do Algoritmo do Jogo de Refinamento . . . 80

6.3.2 Valida¸c˜ao do Algoritmo do Jogo de Refinamento . . . 82

Cap´ıtulo 7—Reparo de Refinamento 91 7.1 O Problema do Reparo de Refinamento . . . 91

7.1.1 Representando Mudan¸cas em Modelos KMTS . . . 92

7.1.2 An´alise do Problema do Reparo de Refinamento . . . 94

7.1.3 Uma Solu¸c˜ao Algor´ıtmica para o Reparo de Refinamento . . . 100

7.2 Reparo de Refinamento Baseado no Jogo do Refinamento . . . 102

7.3 Algoritmo de Reparo de Refinamento Baseado no Jogo de Refinamento . 107 7.3.1 Varia¸c˜oes do RRBJ . . . 109

7.3.2 An´alise do RRBJ . . . 110

7.3.3 Exemplo de Execu¸c˜ao do RRBJ e Algumas de Suas Varia¸c˜oes . . 113

7.3.4 Valida¸c˜ao dos Algoritmos de Reparo . . . 116

Cap´ıtulo 8—Conclus˜oes 123 8.1 S´ıntese de KMTS a partir de Cen´arios . . . 123

8.2 Rela¸c˜ao de Refinamento e Opera¸c˜oes de Composi¸c˜ao Paralela e Conjun¸c˜ao 123 8.3 Jogo de Refinamento . . . 124

8.4 Reparo do Refinamento . . . 124

8.5 Contribui¸c˜oes . . . 125

8.6 Trabalhos Futuros . . . 125

Apˆendice A—T´opicos de Engenharia de Software 135 A.1 Cen´arios . . . 135

(19)

SUM ´ARIO xvii

A.2 Diagrama de Sequˆencia . . . 135

A.3 Object Constraint Language (OCL) . . . 136

A.4 Desenvolvimento Incremental e Iterativo . . . 138

A.4.1 Especifica¸c˜ao e Implementa¸c˜ao . . . 140

Apˆendice B—Defini¸c˜oes Relacionadas 143 B.1 Bissimula¸c˜ao . . . 143

B.2 Sistema de Transi¸c˜ao Modal - MTS . . . 144

B.3 Variantes do Refinamento Modal Forte . . . 144

(20)
(21)

LISTA DE FIGURAS

1.1 Vis˜ao de alto-n´ıvel de um processo de desenvolvimento que utiliza KMTS suportado por m´etodos formais . . . 5 2.1 Dois sistemas de transi¸c˜ao onde N simula o comportamento de M (BAIER;

KATOEN; LARSEN, 2008) . . . 9 2.2 Exemplo do sinal de trˆansito . . . 11 2.3 Uma estrutura de Kripke . . . 12 2.4 Exemplo de refinamento. A casa mais detalhada ´e um refinamento da

outra casa. Adaptado de Fairbanks (2010) . . . 13 2.5 Exemplo de refinamento com semˆantica fechada (A) e semˆantica aberta

(B). A casa mais detalhada ´e um refinamento da outra casa. Adaptado de Fairbanks (2010) . . . 14 2.6 Um modelo parcial M e uma implementa¸c˜ao N . . . 15 2.7 Dois modelos parciais que n˜ao possuem uma rela¸c˜ao de refinamento modal 15 2.8 Uma especifica¸c˜ao mista que n˜ao possui implementa¸c˜oes . . . 16 2.9 Duas especifica¸c˜oes mistas M e N com IpMq „ IpNq, mas n˜ao vale M ¨ N 16 2.10 Exemplo da incompletude da rela¸c˜ao de refinamento modal em rela¸c˜ao ao

operador de composi¸c˜ao paralela . . . 18 2.11 Exemplos de MRC em (A) e de RCM em (B) . . . 19 3.1 Vis˜ao geral do algoritmo de s´ıntese de MTS proposto por Krka et al. (2009)

(KRKA et al., 2009) . . . 25 4.1 Diagrama de sequˆencia de solicita¸c˜ao e acesso do componente Recurso pelo

componente M´odulo . . . 33 4.2 Diagrama de sequˆencia que representa um cen´ario onde o componente

m´odulo solicita acesso, mas n˜ao pode acessar um recurso . . . 34 4.3 Diagrama de sequˆencia estendido antes (A) e depois da propaga¸c˜ao (B)

para o componente M´odulo baseado no diagrama de sequˆencia da Figura 4.1 38 4.4 KMTS inicial do componente M´odulo da Figura 4.1 . . . 41 4.5 Opera¸c˜ao de Refino para evitar auto-loop obrigat´orio . . . 42 4.6 KMTS inicial do componente M´odulo . . . 44 5.1 KMTSs representando os poss´ıveis comportamentos da cˆamera. Em (A)

uma especifica¸c˜ao do comportamento da cˆamera. Em (B) um poss´ıvel refi-namento da especifica¸c˜ao mostrada em (A). Em (C) um modelo de compor-tamento da cˆamera que n˜ao ´e um refinamento da especifica¸c˜ao mostrada em (A). . . 51

(22)

xx LISTA DE FIGURAS 5.2 Regras das transi¸c˜oes do operador de composi¸c˜ao paralela . . . 58 5.3 Modelos KMTS para o software de vistoria remota, onde (A) representa o

e-Formul´ario e (B) o sincronizador. . . 61 5.4 Composi¸c˜ao paralela dos modelos e-Formul´ario e Sincronizador. . . 62 5.5 Regras do transi¸c˜oes do operador de conjun¸c˜ao . . . 63 5.6 Duas vers˜oes do componente e-Formul´ario para atender a requisitos de

georreferenciamento e fotografia . . . 66 5.7 Conjun¸c˜ao entre os modelos exibidos na Figura 5.6 . . . 66 6.1 Dois KMTS M, N, onde vale M ¨ N. . . 71 6.2 Configura¸c˜oes poss´ıveis de um jogo de refinamento entre os modelos M e

N da Figura 6.1 . . . 74 6.3 Jogo do refinamento entre os modelos M e N da Figura 6.1 expressos em

um grafo . . . 75 6.4 Estrutura dos testes realizados por grupo . . . 84 6.5 Gr´afico do tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo

de refinamento de acordo com a quantidade de estados . . . 85 6.6 Gr´afico do tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo

de refinamento de acordo com a quantidade de transi¸c˜oes por estado . . . 86 6.7 Gr´afico do tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo

de refinamento de acordo com a quantidade de proposi¸c˜oes por estado . . 86 6.8 Gr´afico do tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo

de refinamento de acordo com o crescimento proporcional do modelo . . . 87 6.9 Gr´afico do cruzamento dos dados do Grupo-estado e Grupo-proporcao . . 88 7.1 Gr´afico do tempo de execu¸c˜ao (em milissegundos) do Algoritmo 10 em

rela¸c˜ao n´umero de mudan¸cas primitivas aplic´aveis . . . 101 7.2 Dois Modelos M e N tal que M ª N e duas sa´ıdas do algoritmo RRE . . 101 7.3 Jogo de refinamento entre os modelos M e N da Figura 7.1 . . . 102 7.4 Exemplo de execu¸c˜ao do algoritmo de reparo de refinamento entre os

mo-delos M e N . . . 107 7.5 Examplo de uma solu¸c˜ao n˜ao minimal retornada pelo algoritmo de reparo

de refinamento. . . 112 7.6 Modelos M e N tal que M ª N . . . 114 7.7 Jogo do refinamento entre os modelos M e N da Figura 7.6(A) e entre os

modelos M e N 9 da Figura 7.10 . . . 114 7.8 Modelos resultantes das poss´ıveis mudan¸cas para remover a causa de falha

cf1 . . . 115

7.9 Modelos resultantes das poss´ıveis mudan¸cas para remover a causa de falha cf2 . . . 115

7.10 Modelos resultantes das poss´ıveis mudan¸cas para remover a causa de falha cf3 . . . 115

7.11 Um modelo resultante do processo de reparo de refinamento pelos algorit-mos RRBJ, RRBJ-C e RRBJ-U . . . 116

(23)

LISTA DE FIGURAS xxi 7.12 Estrutura dos testes realizados por grupo . . . 118 7.13 Gr´afico do tempo m´edio de execu¸c˜ao, em milissegundos, dos algoritmos de

reparo de refinamento por quantidade de causas de falha do GRUPO-UM 118 7.14 Gr´afico do tempo m´edio de execu¸c˜ao, em milissegundos, dos algoritmos de

reparo de refinamento por quantidade de causas de falha do GRUPO-DOIS 119 7.15 Gr´afico do tempo m´edio de execu¸c˜ao, em milissegundos, dos algoritmos de

reparo de refinamento por quantidade de causas de falha do GRUPO-TRES120 7.16 Gr´afico do tempo m´edio de execu¸c˜ao, em milissegundos, do algoritmo

RRBJ por quantidade de causas de falha e por grupo . . . 121 7.17 Quantidade de modelos encontrados como solu¸c˜ao dos algoritmos de reparo

de refinamento por quantidade de causas de falha do GRUPO-TRES . . 121 A.1 Elementos do Diagrama de Sequˆencia da UML 2.0. Adaptado de Lund e

Stølen (2006) . . . 136 A.2 Exemplo de diagrama de sequˆencia do fluxo de login . . . 137 A.3 Modelo de desenvolvimento incremental . . . 139 A.4 Modelo de desenvolvimento iterativo . . . 140 A.5 Modelo de desenvolvimento iterativo e incremental . . . 141 B.1 Dois sistemas de transi¸c˜ao bissimilares representando uma m´aquina de

vender bebidas e refrigerante (BAIER; KATOEN; LARSEN, 2008) . . . . 144 B.2 Exemplo de dois modelos que n˜ao possuem rela¸c˜ao de refinamento forte,

mas possuem uma rela¸c˜ao de refinamento fraco . . . 145 B.3 Exemplo de refinamento fraco que contradiz o senso de refinamento . . . 146

(24)
(25)

LISTA DE TABELAS

6.1 Vari´aveis de acordo com o grupo de teste . . . 84 6.2 Tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo de

refina-mento de acordo com a quantidade de estados . . . 85 6.3 Tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo de

refina-mento de acordo com a quantidade de transi¸c˜oes por estado . . . 85 6.4 Tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo de

refina-mento de acordo com a quantidade de proposi¸c˜oes por estado . . . 86 6.5 Tempo m´edio de execu¸c˜ao (milissegundos) do algoritmo do jogo de

refina-mento de acordo com o crescirefina-mento proporcional do modelo . . . 87 7.1 Vari´aveis de acordo com o grupo de teste . . . 117 7.2 Tempo m´edio de execu¸c˜ao, em milissegundos, dos algoritmos de reparo de

refinamento por quantidade de causas de falha do GRUPO-UM . . . 118 7.3 Tempo m´edio de execu¸c˜ao, em milissegundos, dos algoritmos de reparo de

refinamento por quantidade de causas de falha do GRUPO-DOIS . . . . 119 7.4 Tempo m´edio de execu¸c˜ao, em milissegundos, do algoritmos de reparo de

refinamento por quantidade de causas de falha do GRUPO-TRES . . . . 120 7.5 Quantidade de modelos encontrados como solu¸c˜ao dos algoritmos de reparo

de refinamento por quantidade de causas de falha do GRUPO-TRES . . 121

(26)
(27)

Cap´ıtulo

1

INTRODUC

¸ ˜

AO

Nos dias atuais, em um ambiente globalizado, onde mudan¸cas ocorrem a todo instante, softwares devem ser produzidos rapidamente para que empresas possam obter proveito das oportunidades e se manterem competitivas (SOMMERVILLE, 2011). Softwares s˜ao constru´ıdos em meio a uma s´erie de d´uvidas decorrentes do conhecimento incompleto da aplica¸c˜ao tanto do cliente quanto dos seus projetistas. Mudan¸cas r´apidas tornam imposs´ıvel obter um conjunto est´avel de requisitos, pois, geralmente, o conhecimento do usu´ario sobre suas reais necessidades e, consequentemente, como o sistema deve se comportar ´e inicialmente parcial e s´o vai se complementando no decorrer do ciclo de desenvolvimento do software. Desta forma, especificar todo o sistema para s´o depois implement´a-lo pode durar um prazo maior que o acordado e o software n˜ao satisfazer as necessidades da aplica¸c˜ao.

Para contornar este problema, o desenvolvimento iterativo se baseia na ideia de dis-ponibilizar uma vers˜ao inicial do software para o usu´ario ir refinando-a, atrav´es de novos requisitos, at´e obter-se o software desejado (SOMMERVILLE, 2011). De maneira geral, no desenvolvimento iterativo, h´a uma intercala¸c˜ao c´ıclica das quatro etapas de desenvol-vimento de software: an´alise de requisitos, projeto, implementa¸c˜ao e teste. Esta inter-cala¸c˜ao faz com que o software seja constru´ıdo em partes e, desta forma, durante o ciclo de desenvolvimento do mesmo, o cliente consegue definir melhor quais as suas necessidades, `

a medida que novos requisitos surgem. Outras abordagens complementares ao desenvol-vimento iterativo focam na constru¸c˜ao r´apida de um software, como o desenvolvimento incremental (PRESSMAN, 2005), no qual o software ´e desenvolvido em incrementos, o que torna a tarefa de entender os requisitos do sistema e propor uma solu¸c˜ao ainda mais desafiadora.

Neste contexto, uma das etapas mais complexas no processo de desenvolvimento ´e a constru¸c˜ao do projeto, devido `as recorrentes mudan¸cas que implicam em constante adapta¸c˜ao de uma solu¸c˜ao. Em geral, os projetos de software s˜ao realizados de modo que o projetista atue com base no comportamento j´a definido, que em geral, n˜ao reflete completamente os requisitos. A imaturidade em rela¸c˜ao ao conhecimento do problema e a necessidade de definir uma solu¸c˜ao completa podem ter como consequˆencia decis˜oes

(28)

2 INTRODUC¸ ˜AO

precipitadas que acarretam em projetos incorretos. Erros no projeto implicam em refazer parte do trabalho j´a realizado e, consequentemente, em um maior custo.

Na fase de projeto, modelos s˜ao constru´ıdos para modelar componentes e o sistema como um todo. Muitas vezes os modelos propostos no projeto de um software s˜ao analisa-dos manualmente ou testaanalisa-dos atrav´es de um prot´otipo. Todavia, softwares s˜ao formados por componentes que interagem entre si ou com outros sistemas e, analisar ou testar o comportamento e a intera¸c˜ao entre os modelos dos componentes ´e uma tarefa exaustiva, principalmente no contexto de constantes mudan¸cas do desenvolvimento iterativo e incre-mental. O uso de t´ecnicas de verifica¸c˜ao formal de modelos permite automatizar a an´alise da corre¸c˜ao de modelos de sistemas e modelos de componentes (CLARKE; GRUMBERG; PELED, 1999).

Considerar poss´ıveis comportamentos do software pode auxiliar na elabora¸c˜ao e im-plementa¸c˜ao de projetos mais fi´eis aos requisitos levantados e menos propensos a erros (D’IPPOLITO et al., 2008a). Quanto mais cedo os erros forem descobertos menos eles ir˜ao implicar no custo do software (VLIET; VLIET; VLIET, 1993), (BOEHM, 1984).

Existem diferentes modelos formais capazes de representar explicitamente informa¸c˜ao parcial como em Uchitel, Kramer e Magee (2003a), em que os autores utilizam Modal Transition System (MTS) para representar comportamento parcial de sistemas. Existem outros modelos que estendem o MTS, aumentando sua expressividade, mas com a mesma finalidade, como Disjuntive Modal Transition System (BENEˇs; ˇCERN´a; KˇrET´ıNSK´y, 2011) ou o Parametric Modal Transition System (PMTS) (BENEˇs et al., 2011).

Um outro modelo proposto na literatura ´e o Kripke Modal Transition System (KMTS) (HUTH; JAGADEESAN; SCHMIDT, 2001a), que ´e um diagrama de transi¸c˜ao de estados que permite expressar comportamentos requeridos e poss´ıveis atrav´es de indefini¸c˜oes nos seus estados e modalidades nas suas transi¸c˜oes. Os KMTS tˆem dois tipos de transi¸c˜oes: obrigat´orias e poss´ıveis, e seus estados podem ser definidos atrav´es de proposi¸c˜oes que podem ser verdade (V), falso (F) ou indefinido (K). Assim, ´e poss´ıvel utilizar um KMTS para modelar, por exemplo, o comportamento de um componente de software, deixando expl´ıcitas as indefini¸c˜oes presentes em seus estados e em suas intera¸c˜oes. ´E v´alido ressaltar que nem o MTS nem suas extens˜oes permitem o uso de indefini¸c˜oes nos estados dos modelos, como o KMTS. A indetermina¸c˜ao nos estados ´e interessante, pois permite que v´arios estados sejam abstra´ıdos em um mesmo estado, evitando uma defini¸c˜ao pr´evia de todos os estados do sistema nas fases iniciais do desenvolvimento. Todavia, existem poucos trabalhos que utilizam KMTS como modelos para especifica¸c˜ao parcial aplicados no desenvolvimento de software.

Independente do modelo utilizado, em cada ciclo, no contexto de desenvolvimento iterativo e incremental, trˆes atividades s˜ao fundamentais: a constru¸c˜ao dos modelos; a an´alise dos modelos; e o reparo dos modelos se for necess´ario. O presente trabalho traz contribui¸c˜oes em cada uma destas atividades.

A cria¸c˜ao de modelos formais (parciais) requer um conhecimento que n˜ao ´e comum entre os projetistas de software. Assim, apesar de m´etodos de an´alise/verifica¸c˜ao for-mal serem eficazes, eles s˜ao menos empregados porque necessitam de expertise para a constru¸c˜ao dos modelos. Projetistas de software, geralmente, representam os softwares atrav´es de linguagens informais ou semiformais como UML. Modelos comportamentais e

(29)

INTRODUC¸ ˜AO 3

de intera¸c˜ao se limitam, muitas vezes, a diagramas de sequˆencia (UCHITEL; KRAMER; MAGEE, 2003a). Como ser´a mostrado posteriormente, existem algumas pesquisas que focam nesta atividade de forma a semi-automatizar a constru¸c˜ao dos modelos parciais tanto a partir de artefatos comumente gerados antes da implementa¸c˜ao dos requisitos quanto a partir do c´odigo-fonte. O presente trabalho contribui nesta atividade atrav´es da adapta¸c˜ao de um algoritmo de s´ıntese de modelos parciais a partir de cen´arios (KRKA et al., 2009) para a constru¸c˜ao de modelos KMTS a partir de diagramas de sequˆencia ano-tados com OCL. N˜ao tratamos neste trabalho o caminho inverso, isto ´e, gerar diagramas de sequˆencia a partir de modelos KMTS.

Em rela¸c˜ao `a an´alise de modelos, uma teoria de especifica¸c˜ao parcial (BAUER, 2012), (ALFARO; HENZINGER, 2005) define as opera¸c˜oes e as rela¸c˜oes sobre modelos parci-ais para que expressem adequadamente o comportamento de um sistema composto por componentes com informa¸c˜ao parcial expl´ıcita ao longo do processo de desenvolvimento (BAUER, 2012). Apesar de n˜ao existir uma defini¸c˜ao exata dos operadores que devem es-tar presentes em uma teoria da especifica¸c˜ao, existem duas opera¸c˜oes presentes na maioria das defini¸c˜oes: a opera¸c˜ao de composi¸c˜ao paralela e a opera¸c˜ao de conjun¸c˜ao. A opera¸c˜ao de composi¸c˜ao paralela consiste em representar o comportamento de diversos componen-tes, que executam em paralelo, em um ´unico modelo que representa o modelo do sistema. A opera¸c˜ao de conjun¸c˜ao tem como finalidade realizar a jun¸c˜ao de v´arios modelos que representam um mesmo componente em um ´unico modelo. Al´em destas opera¸c˜oes, a rela¸c˜ao de refinamento ´e a base de toda teoria de especifica¸c˜ao parcial, pois todos os ope-radores s˜ao definidos com base nesta rela¸c˜ao ao longo do processo de desenvolvimento. O presente trabalho contribui com a defini¸c˜ao de uma teoria da especifica¸c˜ao parcial para modelos KMTS a partir da defini¸c˜ao da rela¸c˜ao de refinamento e das opera¸c˜oes de conjun¸c˜ao e composi¸c˜ao paralela. Ap´os a constru¸c˜ao, em um ciclo de desenvolvimento incremental, os modelos gerados devem ser analisados sob duas perspectivas: se eles sa-tisfazem propriedades pretendidas naquele ciclo e se, para um mesmo componente, os modelos gerados respeitam as propriedades dos modelos dos ciclos anteriores.

Para a segunda perspectiva, ´e necess´ario um meio de verificar se os modelos gerados nas novas itera¸c˜oes e/ou incrementos respeitam os modelos previamente definidos de um determinado componente, isto ´e, se o novo modelo representa um detalhamento maior do modelo anterior sem perder nenhuma propriedade j´a definida. Esta rela¸c˜ao entre os modelos ´e chamada de refinamento. A rela¸c˜ao de refinamento introduz a rela¸c˜ao de ”menos abstrato que” entre dois modelos. Entre dois modelos de um mesmo componente, o modelo mais abstrato possui mais indefini¸c˜oes e ´e chamado de especifica¸c˜ao e o menos abstrato, isto ´e, com menos indefini¸c˜oes, ´e o modelo que refina a especifica¸c˜ao. Diversos trabalhos focam no uso de modelos parciais e nos conceitos de refinamento, como em (UCHITEL; KRAMER; MAGEE, 2003b), para a etapa de an´alise de modelos.

A maior parte dos trabalhos que utilizam modelos parciais para expressar modelos ao longo do desenvolvimento de software definem e caracterizam uma rela¸c˜ao de refinamento para suas estruturas modais e utilizam t´ecnicas para analisar se existe uma rela¸c˜ao de refinamento entre a especifica¸c˜ao e um modelo. Uma abordagem baseada em um jogo entre dois jogadores ´e uma das t´ecnicas utilizadas para verificar se um modelo ´e um refinamento de uma especifica¸c˜ao. O presente trabalho define um jogo de refinamento

(30)

4 INTRODUC¸ ˜AO

para modelos KMTS atrav´es de regras, modela este jogo como um grafo e apresenta um algoritmo para computar a existˆencia de uma rela¸c˜ao de refinamento modal forte a partir deste grafo (at´e onde sabemos nenhum outra pesquisa definiu tal algoritmo). A nossa solu¸c˜ao possui complexidade polinomial, o que garante uma performance compar´avel aos principais algoritmos de verifica¸c˜ao de refinamento encontrados na literatura.

Quando n˜ao h´a uma rela¸c˜ao de refinamento entre a especifica¸c˜ao e o modelo, o ´ultimo deve ser reparado para garantir que ele preserve as propriedades definidas na especifica¸c˜ao. Todavia, nenhum dos trabalhos encontrados focam na altera¸c˜ao do modelo para garantir uma rela¸c˜ao de refinamento com a especifica¸c˜ao. Automatizar esta tarefa n˜ao ´e um problema trivial pois ´e necess´ario detectar os motivos que fazem com que n˜ao haja uma rela¸c˜ao de refinamento. Chamamos esta atividade de reparo de modelos. O presente trabalho contribui com a automatiza¸c˜ao desta atividade atrav´es de um algoritmo de reparo de refinamento, que utiliza o jogo de refinamento para extrair os motivos que fazem com que n˜ao haja uma rela¸c˜ao de refinamento entre o modelo e a sua especifica¸c˜ao. A extra¸c˜ao dos motivos a partir do jogo permite que o modelo em quest˜ao seja reparado automaticamente.

1.1 ESCOPO DO TRABALHO E CONTRIBUIC¸ ˜OES

No processo de desenvolvimento iterativo de software, surge a necessidade de m´etodos e algoritmos que deem suporte cont´ınuo para a constru¸c˜ao, an´alise e corre¸c˜ao de modelos comportamentais que expressam conhecimento parcial expl´ıcito de componentes dentro de um contexto formal. Neste sentido, idealizamos um esbo¸co de um processo de de-senvolvimento incremental e iterativo de software, baseado em componentes e amparado pela teoria das especifica¸c˜oes para especificar o escopo do nosso trabalho e como nossas contribui¸c˜oes se relacionam. Na Figura 1.1 apresentamos uma vis˜ao de alto n´ıvel de um ciclo deste processo. As etapas de an´alise de requisitos, projeto, implementa¸c˜ao, testes e integra¸c˜ao de um ciclo de desenvolvimento s˜ao representadas pelos blocos de cor amarela e s˜ao repetidas a cada novo ciclo. A etapa de integra¸c˜ao ´e respons´avel por integrar as diversas partes desenvolvidas (o que ´e poss´ıvel no desenvolvimento incremental) em um ´

unico artefato.

Esta figura tamb´em destaca o escopo do nosso trabalho mostrando quais as atividades s˜ao suportadas pelo mesmo (blocos de cor azul) e quais ainda n˜ao foram desenvolvidas para KMTS mas que podem ser adaptadas para estes modelos (blocos de cor verde). O bloco “verifica¸c˜ao de modelos” possui duas cores porque m´etodos de verifica¸c˜ao de modelos para modelos KMTS j´a existem, mas o presente trabalho define um operador que permitem representar o sistema em diversos n´ıveis (componentes e sistema), contribuindo de forma indireta para a verifica¸c˜ao de sistemas em diversos n´ıveis.

Assim, o presente trabalho prop˜oe o uso de modelos KMTS ao longo do processo de desenvolvimento de software iterativo e incremental, focando nas trˆes atividades b´asicas ao longo do processo: constru¸c˜ao de modelos KMTS a partir de diagramas de sequˆencias; an´alise de modelos KMTS, suas rela¸c˜oes e suas opera¸c˜oes no processo de desenvolvimento; e reparo de refinamento entre modelos KMTS para que os mesmos satisfa¸cam os requisitos desejados. Para cada um destes pontos, definimos meios e/ou m´etodos que podem auxiliar

(31)

1.1 ESCOPO DO TRABALHO E CONTRIBUIC¸ ˜OES 5

Figura 1.1 Vis˜ao de alto-n´ıvel de um processo de desenvolvimento que utiliza KMTS suportado por m´etodos formais

`

as atividades de constru¸c˜ao, an´alise e reparo de modelos.

Em rela¸c˜ao `a constru¸c˜ao de modelos, definimos e implementamos um algoritmo de s´ıntese de modelos KMTS a partir de diagramas de sequˆencia da UML baseado no al-goritmo de s´ıntese de modelos MTS proposto em (KRKA et al., 2009). ´E importante destacar que este algoritmo apenas converte diagramas de sequˆencia em modelos KMTS. A atividade inversa (KMTS para diagrama de sequˆencia) n˜ao ´e abordado neste trabalho. Em rela¸c˜ao `a an´alise de modelos, definimos rela¸c˜oes e opera¸c˜oes sobre modelos KMTS, de forma a caracterizar uma teoria da especifica¸c˜ao parcial para modelos KMTS:

ˆ Definimos o conceito de refinamento forte e completo para modelos KMTS e suas rela¸c˜oes entre si;

ˆ Caracterizamos o conceito de refinamento como um jogo entre dois jogadores e um algoritmo para verificar o refinamento;

ˆ Definimos um operador de composi¸c˜ao paralela juntamente com o conceito de com-posicionalidade para representar diversos KMTSs interagindo em conjunto, como componentes de um software executando em paralelo;

ˆ Definimos um operador de conjun¸c˜ao para KMTS de forma a permitir a uni˜ao dos diversos modelos KMTS de um mesmo componente e permitir representar o sistema em diversos n´ıveis de abstra¸c˜ao (componente e sistema).

(32)

6 INTRODUC¸ ˜AO

Em rela¸c˜ao ao reparo de modelos:

ˆ Definimos e estudamos o problema do reparo de refinamento, sua complexidade e tipos de solu¸c˜oes;

ˆ Definimos algoritmos para o problema do reparo de refinamento de um modelo em rela¸c˜ao a uma especifica¸c˜ao, isto ´e, m´etodos que realizam modifica¸c˜oes de modelos KMTS com a finalidade de criar uma rela¸c˜ao de refinamento entre a especifica¸c˜ao e o modelo; e

ˆ Implementamos e validamos os algoritmos propostos para o problema do reparo do refinamento.

1.2 ORGANIZAC¸ ˜AO DA DISSERTAC¸ ˜AO

O restante do presente trabalho ´e estruturado da seguinte forma: o Cap´ıtulo 2 apresenta os principais conceitos sobre modelagem comportamental de sistemas e componentes e sobre o desenvolvimento incremental e iterativo. O Cap´ıtulo 3 apresenta modelos com-portamentais parciais, suas rela¸c˜oes e o uso de verifica¸c˜ao formal sobre eles. O Cap´ıtulo 4 apresenta os principais trabalhos relacionados `a nossa proposta. O Cap´ıtulo 5 apre-senta um algoritmo de s´ıntese de modelos KMTS a partir de diagramas de sequˆencia anotados por regras OCL e resultados de sua implementa¸c˜ao. O Cap´ıtulo 6 mostra o uso de KMTS para representar comportamento parcial no desenvolvimento de sistemas, apresentando rela¸c˜oes e operadores sobre modelos KMTS. O Cap´ıtulo 7 caracteriza for-malmente o jogo de refinamento, apresentando um algoritmo para verificar a rela¸c˜ao de refinamento atrav´es do jogo. O Cap´ıtulo 8 aborda o problema do reparo de refinamento, sua complexidade, poss´ıveis solu¸c˜oes e algoritmos para resolver este problema. Por fim, o Cap´ıtulo 9 apresenta as contribui¸c˜oes, resultados alcan¸cados e trabalhos futuros.

(33)

Cap´ıtulo

2

MODELOS COMPORTAMENTAIS

Muitos processos de desenvolvimento de software s˜ao definidos com base em quatro eta-pas: an´alise de requisitos, projeto, desenvolvimento e teste (SOMMERVILLE, 2011). In-dependente do processo escolhido, ´e comum haver d´uvidas a respeito do comportamento pretendido pelo sistema principalmente na etapa de an´alise de requisitos, pois os usu´arios do sistema n˜ao tˆem conhecimento completo do mesmo ou n˜ao conhecem suficientemente o dom´ınio do sistema para orientar a equipe de desenvolvimento. Estas d´uvidas se refletem nas etapas seguintes, impactando a etapa de projeto, pois algumas decis˜oes a respeito do comportamento do software s´o podem ser tomadas quando se conhece o suficiente sobre a necessidade do cliente. Al´em disso, diversas abordagens focam na constru¸c˜ao r´apida de um software, como o desenvolvimento incremental e iterativo (PRESSMAN, 2005), no qual o software ´e desenvolvido por partes e guiado por itera¸c˜oes com o cliente/usu´ario, o que torna a tarefa de entender os requisitos do sistema e propor uma solu¸c˜ao ainda mais desafiador (o Apˆendice A detalha mellhor esta abordagem). Outras abordagens, como a engenharia de software baseada em componentes tamb´em tem como um dos seus objetivos a constru¸c˜ao r´apida de um software atrav´es do reuso de partes j´a testadas e implementadas de um ou mais sistemas.

Independente da abordagem de desenvolvimento escolhida, os projetistas de software costumam utilizar modelos para representar o sistema com base nos seus requisitos.

2.1 MODELOS DE SOFTWARE

Uma modelagem de sistema ´e uma descri¸c˜ao, atrav´es de um modelo abstrato, de um sistema (SOMMERVILLE, 2011). Engenheiros de requisitos utilizam modelos para en-tender melhor o sistema e extrair novos requisitos. Engenheiros e arquitetos de software utilizam estes modelos para entender e projetar o sistema.

Um sistema pode possuir diversos modelos, pois um modelo ´e uma abstra¸c˜ao de um sistema em rela¸c˜ao a diferentes vis˜oes em rela¸c˜ao a requisitos espec´ıficos. Desta forma, ´e poss´ıvel construir diversos modelos a partir das diversas perspectivas de um sistema.

´

E poss´ıvel, por exemplo, descrever uma perspectiva de intera¸c˜ao, onde s˜ao modeladas 7

(34)

8 MODELOS COMPORTAMENTAIS

as intera¸c˜oes entre o ambiente e o sistema ou entre os componentes do sistema, ou uma perspectiva comportamental, onde o comportamento dinˆamico do sistema ´e modelado, descrevendo como o sistema reage a eventos.

A modelagem do sistema pode ser representada por modelos formais ou por alguma nota¸c˜ao gr´afica, como a Unified Modeling Language (UML). Modelos formais s˜ao menos empregados na ind´ustria porque requerem, geralmente, um expertise pelo profissional que os elabora, embora tragam vantagens atrav´es de m´etodos que podem garantir uma maior confiabilidade aos modelos gerados. J´a os modelos que utilizam uma nota¸c˜ao gr´afica menos formal s˜ao mais empregados porque s˜ao mais f´aceis de se ler e escrever. Entretanto, muitas vezes, n˜ao permitem uma verifica¸c˜ao automatizada.

Para a constru¸c˜ao de modelos, analistas de requisitos utilizam v´arios m´etodos para extra¸c˜ao da informa¸c˜ao que servem de base para modelar o sistema. Entrevistas, cen´arios, etnografia, dentre outros, s˜ao exemplos de t´ecnicas aplicadas. Dentre estas t´ecnicas, o uso de cen´arios (Apˆendice A.1 e A.2) se destaca pela sua simplicidade de entendimento e capacidade de detalhar o comportamento do sistema e por isto ´e amplamente utilizado.

Durante o ciclo de desenvolvimento incremental e iterativo ´e comum que os projetistas n˜ao conhe¸cam todos os requisitos do software a ser constru´ıdo ou evolu´ıdo. A incerteza pode estar presente nas mais diversas perspectivas do software. O presente trabalho foca na incerteza em rela¸c˜ao ao comportamento pretendido e em t´ecnicas formais e por isto, neste cap´ıtulo, s˜ao apresentados os principais t´opicos e conceitos que motivam o presente trabalho em rela¸c˜ao a especifica¸c˜oes comportamentais parciais em um contexto formal de desenvolvimento de software.

Especifica¸c˜oes comportamentais ou apenas especifica¸c˜oes (no presente trabalho) s˜ao modelos utilizados para descrever o comportamento de sistemas. Como mostrado poste-riormente, existem diversos modelos para descri¸c˜ao comportamental, sendo o sistema de transi¸c˜ao (TS) (BAIER; KATOEN; LARSEN, 2008), o modelo mais utilizado para esta finalidade.

2.2 SISTEMAS DE TRANSIC¸ ˜AO E ESPECIFICAC¸ ˜OES MODAIS

Um sistema de transi¸c˜ao ´e um modelo descrito por um grafo dirigido onde os n´os s˜ao os estados e as arestas s˜ao as transi¸c˜oes que representam a evolu¸c˜ao temporal dos estados do sistema (BAIER; KATOEN; LARSEN, 2008).

Defini¸c˜ao 2.2.1 (Sistema de Transi¸c˜ao (BAIER; KATOEN; LARSEN, 2008)). Um sis-tema de transi¸c˜ao TS ´e uma tupla pS, Σ, R, I, AP, Lq onde S ´e um conjunto de estados, Σ um conjunto de a¸c˜oes, R P S  Σ  S ´e uma rela¸c˜ao de transi¸c˜ao, I P S ´e o conjunto de estados iniciais, AP o conjunto de proposi¸c˜oes atˆomicas e L : S Ñ 2AP ´e uma fun¸c˜ao

rotuladora.

Esta defini¸c˜ao ´e gen´erica e, muitas vezes, alguns elementos da defini¸c˜ao n˜ao s˜ao utili-zados, como por exemplo o conjunto de proposi¸c˜oes ou as a¸c˜oes que rotulam as transi¸c˜oes. A partir deste ponto, omitiremos o conjunto de estados iniciais e assumiremos, para fins de simplifica¸c˜ao, que cada sistema de transi¸c˜ao possui um ´unico estado inicial, ao qual chamaremos de s0 sendo S o conjunto de estados do modelo em quest˜ao.

(35)

2.2 SISTEMAS DE TRANSIC¸ ˜AO E ESPECIFICAC¸ ˜OES MODAIS 9

Sistemas de transi¸c˜ao s˜ao ´uteis para a an´alise e verifica¸c˜ao formal de propriedades (BAIER; KATOEN; LARSEN, 2008). Diversas t´ecnicas ou m´etodos podem ser utilizados para esta finalidade, como por exemplo a verifica¸c˜ao de modelos (CLARKE; LERDA, 2007). Todavia, muitas vezes, quando existe mais de um sistema de transi¸c˜ao que descreve o comportamento de um software (ou componente de software) ´e necess´ario compar´ a-los entre si de forma a entender melhor a rela¸c˜ao entre os seus comportamentos. Esta compara¸c˜ao pode ser utilizada, por exemplo, para descobrir se dois modelos descrevem o mesmo comportamento ou se um modelo N consegue simular um outro modelo M , de forma que N ´e capaz de reproduzir todo o comportamento de M , al´em de possuir outros comportamentos.

2.2.1 Simula¸c˜ao

A simula¸c˜ao ´e uma rela¸c˜ao bin´aria entre sistemas de transi¸c˜ao que associa sistemas que se comportam, em parte, da mesma maneira, no sentido que um sistema simule o outro. De maneira intuitiva, podemos imaginar que um sistema de transi¸c˜ao T SN simula um

sistema de transi¸c˜ao T SM se todo comportamento que T SM descreve o modelo T SN

tamb´em descreve. ´E importante observar que o modelo T SN pode descrever tamb´em

outros comportamentos que n˜ao s˜ao descritos em T SM.

Defini¸c˜ao 2.2.2 (Simula¸c˜ao (BAIER; KATOEN; LARSEN, 2008)). Seja T SM  pSM, Σ,

RM, APM, LMq e T SN  pSN, Σ, RN, APN, LNq dois sistemas de transi¸c˜ao tal que

ps0, t0q P SMSN com s0 e t0os estados iniciais de T SM e T SN respectivamente. Dizemos

que t0 simula s0 sse existir uma rela¸c˜ao < „ SM  SN tal que ps0, t0q P < e para todo

ps, tq P < vale:

1. Se ps, a, s1q P RM ent˜ao existe t1 tal que pt, a, t1q P RN com ps1, t1q P <;

2. LMpsq  LNptq.

O seguinte exemplo esclarece melhor a rela¸c˜ao de simula¸c˜ao: suponha dois sistemas de transi¸c˜ao que descrevem o comportamento de uma m´aquina de vender refrigerantes e bebidas alc´oolicas. Existem trˆes proposi¸c˜oes que indicam qual a a¸c˜ao que o usu´ario deve fazer no estado em que o sistema se encontra: pagar - indica que o usu´ario deve pagar; bebida - indica que o usu´ario deve escolher uma bebida alc´oolica; e soda - indica que o usu´ario deve escolher um refrigerante, considerando que ap´os realizar o pagamento, o usu´ario deve informar se deseja uma bebida alc´oolica ou um refrigerante. Dois sistemas de transi¸c˜ao que descrevem este comportamento s˜ao apresentados na Figura 2.1 e, para simplificar este exemplo, as a¸c˜oes foram ocultadas.

´

E poss´ıvel notar que nos modelos mostrados na Figura 2.1, o modelo N simula o comportamento do modelo M atrav´es da seguinte rela¸c˜ao:

R  tps0, t0q, ps1, t1q, ps2, t1q, ps3, t2q, ps4, t3qu

Todavia, o modelo N n˜ao ´e simulado por M porque n˜ao existe nenhum estado em M que “imite” o comportamento do estado t1 pois, a partir de t1 ´e poss´ıvel alcan¸car um

(36)

10 MODELOS COMPORTAMENTAIS

Figura 2.1 Dois sistemas de transi¸c˜ao onde N simula o comportamento de M (BAIER; KA-TOEN; LARSEN, 2008)

Existem situa¸c˜oes em que M simula N e N simula M simultaneamente atrav´es de uma rela¸c˜ao R e sua rela¸c˜ao inversa, R. Quando este fato ocorre, dizemos que R ´e uma rela¸c˜ao de bissimula¸c˜ao e que M e N s˜ao bissimilares. Uma defini¸c˜ao de bissimula¸c˜ao pode ser encontrada no Apˆendice B.1.

2.2.2 Especifica¸c˜oes Comportamentais Parciais

Especifica¸c˜oes parciais s˜ao uma extens˜ao de sistemas de transi¸c˜ao que permitem expressar parcialmente (ou integramente) o comportamento de um software (ou seu componente), possibilitando explicitar comportamentos em que n˜ao est˜ao totalmente definidos (com-portamentos poss´ıveis) e com(com-portamentos j´a definidos (obrigat´orios) atrav´es de modali-dades nas suas transi¸c˜oes e indefini¸c˜oes nas proposi¸c˜oes dos seus estados (ANTONIK et al., 2008). Existem dois tipos de especifica¸c˜oes parciais: especifica¸c˜oes mistas e especi-fica¸c˜oes modais. A diferen¸ca b´asica entre estas defini¸c˜oes dizem respeito `a defini¸c˜ao de comportamentos obrigat´orios e poss´ıveis.

Defini¸c˜ao 2.2.3 (Especifica¸c˜ao Mista (ANTONIK et al., 2008)). Seja Σ um conjunto n˜ao vazio de a¸c˜oes e AP um conjunto n˜ao vazio de proposi¸c˜oes atˆomicas, uma especifica¸c˜ao mista M ´e a tuplapS, R , R, L , Lq tal que pS, R , L q e pS, R, Lq s˜ao sistemas de transi¸c˜ao. Em particular, R e R s˜ao subconjuntos de SΣS, e L , L s˜ao membros de S Ñ 2AP.

Assim, uma especifica¸c˜ao mista ´e composta de duas partes separadas: pS, R , L q que especifica as proposi¸c˜oes e comportamento obrigat´orio e pS, R, Lq que especifica

(37)

2.2 SISTEMAS DE TRANSIC¸ ˜AO E ESPECIFICAC¸ ˜OES MODAIS 11

as proposi¸c˜oes e comportamento poss´ıvel. Uma especifica¸c˜ao modal ´e uma especifica¸c˜ao mista com restri¸c˜oes nos seus componentes obrigat´orios e poss´ıveis de forma que todo comportamento obrigat´orio ´e necessariamente poss´ıvel.

Defini¸c˜ao 2.2.4 (Especifica¸c˜ao Modal (ANTONIK et al., 2008)). Uma especifica¸c˜ao modal M ´e uma especifica¸c˜ao mista onde R „ R e L psq „ Lpsq para todo s P S. 2.2.3 KMTS

Existem diversos modelos para expressar especifica¸c˜oes parciais na literatura que s˜ao apresentados no cap´ıtulo 3. Para o presente trabalho dois modelos se destacam: o Sis-tema de Transi¸c˜ao Modal (Modal Transition System - MTS) (Se¸c˜ao B.2 e o Sistema de Transi¸c˜ao Modal de Kripke (Kripke Modal Transistion System - KMTS).

Defini¸c˜ao 2.2.5 (KMTS (HUTH; JAGADEESAN; SCHMIDT, 2001a)). Seja AP um conjunto de proposi¸c˜oes atˆomicas e Lit  AP Yt p | p P AP u o conjunto de literais sobre AP . Um Sistema de Transi¸c˜oes Modais de Kripke ´e uma tupla M  pAP, S, R , R, Lq, onde S ´e um conjunto finito de estados, R „ S  S e R „ S  S s˜ao rela¸c˜oes de transi¸c˜ao tal que R „ R, e L : S Ñ 2Lit ´e uma fun¸c˜ao rotuladora, tal que para todo

estado s e pP AP , pelo menos um ente p e p occore.

A partir de agora, para facilitar a leitura do texto, definimos que s0 ÝÑ s1 representa

ps0, s1q P R e s0 99K s1 representa ps0, s1q P R.

Figura 2.2 Exemplo do sinal de trˆansito

Na Figura 2.2 ´e apresentado um KMTS com trˆes estados s0, s1 e s2, onde no estado

s0 e s2 valem p e em s1 vale p K. As linhas tracejadas representam as transi¸c˜oes may

(R) enquanto as linhas s´olidas representam as transi¸c˜oes must (R ).

Quando o KMTS ´e utilizado como um modelo parcial, suas poss´ıveis implementa¸c˜oes s˜ao expressas como estruturas de Kripke. Uma estrutura de Kripke ´e um grafo dirigido onde os v´ertices, que representam os estados do sistema, s˜ao rotulados com um conjunto de proposi¸c˜oes atˆomicas que representam propriedades b´asicas que s˜ao verdade no estado correspondente ao v´ertice. As arestas do grafo s˜ao chamadas de transi¸c˜oes (CLARKE; LERDA, 2007).

Defini¸c˜ao 2.2.6 (Estrutura de Kripke). Uma estrutura de Kripke ´e uma tupla K = (AP, S, S0, R, L) onde AP ´e o conjunto de proposi¸c˜oes atˆomicas; S ´e um conjunto finito de

estados, S0 „ S s˜ao os estados iniciais, R „ S  S e uma rela¸c˜ao de transi¸c˜ao sobre S, e

(38)

12 MODELOS COMPORTAMENTAIS

1

A Figura 2.3 apresenta uma estrutura de Kripke.

Figura 2.3 Uma estrutura de Kripke

Com o crescente uso de especifica¸c˜oes parciais para modelagem comportamental de sistemas, alguns estudos (BAUER, 2012) prop˜oem uma teoria das especifica¸c˜oes parciais que define um conjunto m´ınimo de elementos (classes de modelos, rela¸c˜oes e opera¸c˜oes sobre estes modelos) com determinadas propriedades que permitem expressar o compor-tamento de um sistema, de forma parcial, adequadamente.

2.3 TEORIA DAS ESPECIFICAC¸ ˜OES PARCIAIS

N˜ao h´a um consenso sobre a defini¸c˜ao exata do conjunto b´asico de opera¸c˜oes que definem uma teoria da especifica¸c˜ao, isto ´e, alguns autores definem algumas opera¸c˜oes que outros autores n˜ao consideram como sendo opera¸c˜oes b´asicas. A maior parte das pesquisas so-bre especifica¸c˜oes comportamentais parciais est˜ao concentradas nos modelos MTS, suas opera¸c˜oes e suas extens˜oes. Modelos KMTS s˜ao uma extens˜ao de modelos MTS com a possibilidade de expressar indefini¸c˜oes nos estados (HUTH; JAGADEESAN; SCHMIDT, 2001a). Todavia, modelos KMTS s˜ao pouco estudados no contexto de desenvolvimento comportamental parcial. Esta ´e uma das motiva¸c˜oes do presente trabalho: considerando que modelos KTMS s˜ao uma extens˜ao de modelos MTS, analisar quais opera¸c˜oes e propri-edades podem ser adaptados para modelos KMTS e o impacto da indefini¸c˜ao nos estados nestas adapta¸c˜oes. De qualquer maneira, uma classe de modelos parciais e a rela¸c˜ao de refinamento est´a presente em todos os trabalhos e os principais operadores definidos pe-los principais trabalhos sobre teoria das especifica¸c˜oes at´e o presente momento (at´e onde sabemos) s˜ao os operadores de composi¸c˜ao paralela e o operador de conjun¸c˜ao.

Assim, uma teoria da especifica¸c˜ao T h ´e definida por uma tupla T h pS , ¨, k, ^q

Onde S ´e o espa¸co de modelos, ¨ ´e a rela¸c˜ao de refinamento, k ´e o operador de com-posi¸c˜ao paralela e ^ ´e o operador de composi¸c˜ao. Outros estudos ampliam teorias das

1Estruturas de Kripke s˜ao normalmente definidas com uma rela¸ao total de transi¸ao, tal requerimento

´

e desprezado aqui. Assumimos estruturas de Kripke com uma rela¸c˜ao de transi¸c˜ao parcial sem nenhum impacto nesta pesquisa.

(39)

2.3 TEORIA DAS ESPECIFICAC¸ ˜OES PARCIAIS 13

especifica¸c˜oes para contratos (BAUER et al., 2012a), acrescentando a descri¸c˜ao compor-tamental do ambiente e definindo as rela¸c˜oes e opera¸c˜oes considerando sempre o modelo do componente e o modelo do ambiente. Todavia, o estudo de contratos n˜ao faz parte do escopo do presente trabalho e, por isto, n˜ao ser´a detalhado.

Assim como acontece nos sistemas de transi¸c˜ao, muitas vezes ´e necess´ario comparar o comportamento de duas especifica¸c˜oes parciais pois, ao longo do processo de desenvolvi-mento, existir˜ao diversas vers˜oes de modelos comportamentais de um mesmo componente (ou software). As vers˜oes podem ser diferentes porque em uma delas h´a um detalhamento maior a respeito de algo que ainda n˜ao tinha sido definido quando a vers˜ao foi criada. To-davia, os conceitos de simula¸c˜ao e bissimula¸c˜ao n˜ao podem ser empregados diretamente em especifica¸c˜oes parciais porque pode haver diferen¸cas nos comportamentos dos modelos devido a novos requisitos. Neste caso, os modelos podem descrever o mesmo comporta-mento em diferentes n´ıveis de abstra¸c˜ao e isto deve ser levado em considera¸c˜ao. Uma rela¸c˜ao que pode ser usada para comparar o comportamento de dois modelos parciais considerando diferentes n´ıveis de abstra¸c˜ao ´e a rela¸c˜ao de refinamento.

2.3.1 Rela¸c˜ao de Refinamento

Numa abordagem informal, o refinamento ´e uma rela¸c˜ao entre duas representa¸c˜oes (uma mais e a outra menos detalhada) de um mesmo componente. A ideia de refinamento ´e utilizada para comparar modelos de uma mesma entidade em diferentes ciclos. Um exemplo de rela¸c˜ao de refinamento pode ser visto na Figura 2.4, onde a casa com portas e janelas ´e um refinamento da outra casa.

Figura 2.4 Exemplo de refinamento. A casa mais detalhada ´e um refinamento da outra casa. Adaptado de Fairbanks (2010)

A semˆantica do refinamento especifica qual tipo de detalhes pode ser introduzido. Duas semˆanticas s˜ao poss´ıveis, a semˆantica aberta e a semˆantica fechada (FAIRBANKS, 2010).

ˆ Semˆantica fechada: na semˆantica fechada, o refinamento s´o pode introduzir detalhes restritos a uma lista de poss´ıveis detalhamentos.

ˆ Semˆantica aberta: na semˆantica aberta, o refinamento pode introduzir qualquer tipo de mudan¸ca que for necess´aria.

A Figura 2.5 exibe um exemplo de refinamento fechado e aberto na casa: janelas ou portas seriam detalhes que poderiam ser adicionados no refinamento de semˆantica fe-chada; adi¸c˜ao de uma garagem e chamin´es representaria um refinamento com a semˆantica aberta.

(40)

14 MODELOS COMPORTAMENTAIS

Figura 2.5 Exemplo de refinamento com semˆantica fechada (A) e semˆantica aberta (B). A casa mais detalhada ´e um refinamento da outra casa. Adaptado de Fairbanks (2010)

Considerando o uso especifica¸c˜oes modais, quando dois modelos parciais descrevem o mesmo comportamento em diferentes n´ıveis de abstra¸c˜ao (ou de detalhamento), dizemos que o modelo mais detalhado ´e um refinamento do outro modelo (o mais abstrato). Em rela¸c˜ao a modelos parciais, a exclus˜ao de certas possibilidades de comportamento pela remo¸c˜ao de incertezas (atrav´es da remo¸c˜ao de comportamentos poss´ıveis ou convers˜ao deles em comportamentos obrigat´orios) representa o conceito informal de refinamento. Este conceito introduz a rela¸c˜ao ”menos abstrato que” entre dois modelos. De forma similar `a rela¸c˜ao de simula¸c˜ao (ou bissimula¸c˜ao), a rela¸c˜ao de refinamento mapeia estados entre os modelos. Se um estado s do modelo M ´e mapeado em um estado t do modelo N , diz-se que t ´e refinamento do estado s. Um estado t ´e um refinamento de um estado s se o comportamento obrigat´orio de s ´e preservado em t e se todo comportamento poss´ıvel de t ´e herdado de s. Observe que t pode ter os mesmos comportamentos poss´ıveis ou menos comportamentos poss´ıveis do que s, mas o inverso nunca ´e verdade. Esta verifica¸c˜ao ´e aplicada de forma co-indutiva para os estados sucessores de s e t.

O refinamento ´e baseado na ideia de simula¸c˜ao/bissimula¸c˜ao sobre sistemas de transi¸c˜ao (PARK, 1981) e pode ser entendido da seguinte forma: o modelo N ´e um refinamento de um modelo M se e somente se N simula todo o comportamento obrigat´orio de M e M simula todo o comportamento poss´ıvel de N . Quando isto acontece qualquer com-portamento poss´ıvel foi adicionado em N . Este conceito de refinamento ´e chamado de refinamento modal e sua defini¸c˜ao segue abaixo:

Defini¸c˜ao 2.3.1 (Refinamento Modal (ANTONIK et al., 2008)). Seja M  pSM, RM, RM,

LM, LMq e N  pSN, RN, RN, LN, LNq duas especifica¸c˜oes mistas e ps0, t0q P SM  SN

com s0 e t0 os estados iniciais de M e N , respectivamente. Dizemos que t0 refina s0 sse

existir uma rela¸c˜ao < „ SM  SN tal que ps0, t0q P < e para todo ps, tq P < vale:

1. Para todops, a, s1q P RM existe algum pt, a, t1q P RN com ps1, t1q P <; 2. Para todopt, a, t1q P RN existe algum ps, a, s1q P RM com ps1, t1q P <; 3. LM „ LN;

(41)

2.3 TEORIA DAS ESPECIFICAC¸ ˜OES PARCIAIS 15

Quando o modelo N ´e um refinamento do modelo M, escrevemos M ¨ N. Esta rela¸c˜a de refinamento ´e reflexiva e transitiva, garantindo assim um ordenamento (no sentido de “mais abstrato que”) entre especifica¸c˜oes parciais (ANTONIK et al., 2008).

A Figura 2.6 e a Figura 2.7 exibem dois casos onde h´a e onde n˜ao h´a uma rela¸c˜ao de refinamento entre os modelos (respectivamente) pois, n˜ao h´a nenhum estado de N que pode ser mapeado em s0 do modelo M. As setas tracejadas representam as transi¸c˜oes

poss´ıveis enquanto que as setas s´olidas representam as transi¸c˜oes obrigat´orias. Voltando para a Figura 2.6, podemos observar que existe uma rela¸c˜ao de refinamento modal entre o modelo M e o modelo N . Tamb´em ´e poss´ıvel observar, que neste exemplo, o modelo N n˜ao expressa nenhum comportamento poss´ıvel que n˜ao seja obrigat´orio. Quando uma especifica¸c˜ao parcial n˜ao expressa nenhum comportamento pass´ıvel de mudan¸ca, d´a-se o nome de implementa¸c˜ao a esta especifica¸c˜ao.

Defini¸c˜ao 2.3.2 (Implementa¸c˜ao (ANTONIK et al., 2008)). Uma implementa¸c˜ao ´e uma especifica¸c˜ao parcial onde R  R e L  L.

Figura 2.6 Um modelo parcial M e uma implementa¸c˜ao N

Figura 2.7 Dois modelos parciais que n˜ao possuem uma rela¸c˜ao de refinamento modal

A rela¸c˜ao de refinamento modal pode ser utilizada entre especifica¸c˜oes parciais e entre implementa¸c˜oes. Quando usada para comparar apenas implementa¸c˜oes, vale notar que a rela¸c˜ao coincide com a defini¸c˜ao de bissimula¸c˜ao B.1.

Como um modelo parcial pode ser constitu´ıdo de diversas indetermina¸c˜oes, ´e poss´ıvel que ele possa originar diversas implementa¸c˜oes, e por isto, definimos o conjunto de im-plementa¸c˜oes do modelo parcial M como IpMq  tI } M ¨ Iu.

(42)

16 MODELOS COMPORTAMENTAIS

Existem casos em que um modelo parcial n˜ao possui implementa¸c˜oes. Dizemos que uma especifica¸c˜ao parcial ´e consistente se e somente se ela possui pelo menos uma imple-menta¸c˜ao.

Defini¸c˜ao 2.3.3 (Consistˆencia em especifica¸c˜ao parcial (ANTONIK et al., 2008)). Uma especifica¸c˜ao parcial M ´e consistente sse IpMq ´e n˜ao-vazio.

A Figura 2.8 mostra uma especifica¸c˜ao mista que n˜ao possui implementa¸c˜oes poss´ıveis. As setas tracejadas representam as transi¸c˜oes poss´ıveis enquanto que as setas s´olidas representam as transi¸c˜oes obrigat´orias. Antonik et al. (2008) mostram que o problema de determinar se uma especifica¸c˜ao mista ´e consistente tem seu limite inferior localizado na classes de problemas PSPACE-hard enquanto que o limite superior est´a em EXPTIME. Toda especifica¸c˜ao modal ´e consistente porque toda transi¸c˜ao obrigat´oria ´e uma transi¸c˜ao poss´ıvel (sempre existe uma implementa¸c˜ao poss´ıvel, escolhendo o modelo formado por todo comportamento must ) e por isto apenas uma seta s´olida ´e utilizada para representar as transi¸c˜oes obrigat´orias, diferentemente das especifica¸c˜oes mistas.

Figura 2.8 Uma especifica¸c˜ao mista que n˜ao possui implementa¸c˜oes

Independente do modelo ser consistente ou n˜ao, existem casos em que a rela¸c˜ao de refinamento n˜ao reproduz a ideia intuitiva de refinamento porque dados dois modelos parciais M e N , se M ¨ N ent˜ao IpNq „ IpMq, todavia, o inverso, se IpNq „ IpMq ent˜ao M ¨ N nem sempre ´e verdade (ANTONIK et al., 2008). Autores em (BENEˇs et al., 2009) mostram que o inverso ´e verdade quando um dos modelos ´e determin´ıstico. Este resultado ´e demonstrado para modelos KMTS no presente trabalho. A Figura 2.9 exibe dois modelos que possuem o mesmo conjunto de implementa¸c˜ao, mas um n˜ao refina o outro.

Para evitar estes casos, ´e poss´ıvel definir um conceito de refinamento baseado apenas na inclus˜ao do conjunto de implementa¸c˜oes e este conceito ´e chamado de refinamento completo.

Defini¸c˜ao 2.3.4 (Refinamento Completo (ANTONIK et al., 2008)). O Modelo N ´e um refinamento completo do modelo M , M ¨c N , sse IpNq „ IpMq.

Todavia, calcular o refinamento completo tem um custo computacional elevado, e por isto o refinamento modal continua sendo utilizado (ANTONIK et al., 2008). Antonik

(43)

2.3 TEORIA DAS ESPECIFICAC¸ ˜OES PARCIAIS 17

Figura 2.9 Duas especifica¸c˜oes mistas M e N com IpMq „ IpNq, mas n˜ao vale M ¨ N

et al. (2008) mostram que o limite inferior para c´alculo do refinamento completo para especifica¸c˜oes parciais encontra-se na classe de problemas PSPACE-hard enquanto seu limite superior na classe EXPTIME.

Existem na literatura, varia¸c˜oes do refinamento modal, que podem ser vistas na Se¸c˜ao B.3. O presente trabalho utiliza o conceito de Refinamento Modal Forte (BAIER; KA-TOEN; LARSEN, 2008) sobre modelos KMTS por entender que este ´e o conceito base para todas as outras varia¸c˜oes de refinamento.

2.3.2 Operador de Composi¸c˜ao Paralela

Um software pode ser formado por v´arios componentes que s˜ao executados de forma paralela e interagem entre si. Todavia, existem propriedades que n˜ao s˜ao satisfeitas por nenhum componente isoladamente e sim pelo sistema como um todo, ou seja, propriedades que somente se tornam presentes quando determinados componentes interagem entre si. Assim, modelos em n´ıvel de sistema se fazem necess´arios para uma an´alise mais precisa de um sofware (KRKA et al., 2009).

´

E poss´ıvel sintetizar modelos comportamentais do sistema a partir da composi¸c˜ao dos modelos dos seus componentes atrav´es do operador de composi¸c˜ao paralela. O operador de composi¸c˜ao paralela definido por uma teoria da especifica¸c˜ao ´e comumente estrutural, isto ´e, cada estado do sistema ´e composto da uni˜ao dos estados dos componentes indivi-duais, onde a¸c˜oes dos componentes s˜ao convertidas em a¸c˜oes na composi¸c˜ao. A¸c˜oes em comum entre os componentes s˜ao representadas como transi¸c˜oes na composi¸c˜ao que al-teram os estados de v´arios componentes simultaneamente e as a¸c˜oes n˜ao-compartilhadas s˜ao simuladas por interleaving, representando, na composi¸c˜ao, a altera¸c˜ao do estado um ou mais componentes.

O operador de composi¸c˜ao paralela deve ser comutativo e associativo para garantir que a ordem de execu¸c˜ao da composi¸c˜ao n˜ao influencie no resultado final da composi¸c˜ao. A Figura 2.10 mostra um exemplo de composi¸c˜ao paralela, representada por M k N dos modelos M e N . A figura tamb´em mostra um exemplo em que a rela¸c˜ao de refinamento modal n˜ao ´e completa com respeito ao operador de composi¸c˜ao paralela, isto ´e, a composi¸c˜ao paralela dos modelos parciais M e N pode ser vista no modelo M k N e o modelo I representa uma implementa¸c˜ao do modelo M k N que n˜ao consegue ser

(44)

18 MODELOS COMPORTAMENTAIS

formado a partir da composi¸c˜ao de quaisquer implementa¸c˜oes dos modelos M e N .

Figura 2.10 Exemplo da incompletude da rela¸c˜ao de refinamento modal em rela¸c˜ao ao opera-dor de composi¸c˜ao paralela

2.3.3 Operador de Conjun¸c˜ao

Muitas vezes, um componente (ou um software) ´e desenvolvido por diversas equipes. Cada uma pode ser respons´avel por uma vis˜ao do componente o que resultar´a em dife-rentes modelos a respeito de um mesmo componente. Unificar os diversos modelos em apenas um ´e a fun¸c˜ao do operador de conjun¸c˜ao. Considerando que todos os modelos descrevem um mesmo componente, a abordagem mais utilizada para calcular o operador de conjun¸c˜ao consiste em encontrar um modelo que seja um refinamento em comum dos modelos desejados.

Defini¸c˜ao 2.3.5 (Refinamento Comum). Dados os modelos parciais M e N , um modelo X ´e um refinamento comum entre M e N sse M ¨ X e N ¨ X.

Antonik et al. (2008) definem o refinamento comum como um dos principais problemas de especifica¸c˜oes parciais e mostram que seu limite inferior em termos de complexidade ´

e PSPACE-hard (para especifica¸c˜oes mistas e modais) e o limite superior ainda n˜ao ´e preciso, mas fica localizado na classe de problemas EXPTIME.

Intuitivamente, dois modelos M e N que descrevem parcialmente um mesmo sistema ou componente devem ser consistentes, isto ´e, o comportamento obrigat´orio e poss´ıvel dos dois deve ser compat´ıvel. Todavia, em alguns casos n˜ao existe refinamento comum entre dois componentes. Quando existe refinamento comum (baseado no conceito de refinamento modal forte) entre dois componentes dizemos que eles s˜ao consistentes.

(45)

2.3 TEORIA DAS ESPECIFICAC¸ ˜OES PARCIAIS 19

Defini¸c˜ao 2.3.6 (Consistˆencia). Duas especifica¸c˜oes modais, M e N s˜ao ditos consistentes se existe um modelo parcial C tal que C ´e um refinamento comum de M e de N.

A consistˆencia tamb´em pode ser definida como uma rela¸c˜ao sobre especifica¸c˜oes mo-dais (RACLET et al., 2011).

Defini¸c˜ao 2.3.7 (Consistˆencia (RACLET et al., 2011)). Seja M  pSM, RM, RMq e

N  pSN, RN, RNq duas especifica¸c˜oes modais e ps0, t0q P SM SN com s0 e t0 os estados

iniciais de M e N , respectivamente. Dizemos que os modelos M e N s˜ao consistentes sse existir uma rela¸c˜ao <„ SM  SN tal que ps0, t0q P < e para todo ps, tq P < vale:

1. (@l, s1qpps, a, s1q P RM existe algum pt, a, t1q P RN com ps1, t1q P <q; 2. (@l, t1qppt, a, t1q P RN existe algum ps, a, s1q P RM com ps1, t1q P <q.

Considerando que a rela¸c˜ao de refinamento define uma pr´e-ordem no espa¸co dos mo-delos (RACLET et al., 2011), podem existir diversos (ou um ou nenhum) refinamento comum entre dois modelos. No caso do operador de conjun¸c˜ao, busca-se o refinamento comum mais pr´oximo dos dois modelos de entrada, isto ´e, o refinamento comum com mais indefini¸c˜oes. Esta restri¸c˜ao ´e justificada porque busca-se o modelo que represente os outros modelos, mas que perca o m´ınimo poss´ıvel de indefini¸c˜oes. Caso os modelos se-jam consistentes, chamamos o conjunto formado por todos os refinamentos comuns mais pr´oximos dos modelos de entrada de Refinamento Comum Minimal (RCM) (vale lembrar que como a rela¸c˜ao de refinamento ´e uma pr´e-ordem, estes elementos do RCM n˜ao s˜ao compar´aveis entre si). Alguns trabalhos chamam a opera¸c˜ao de conjun¸c˜ao de merge.

Caso exista apenas um menor refinamento comum, chamamos este modelo de Menor Refinamento Comum (MRC). O MRC ´e o refinamento comum mais abstrato (ou com mais indefini¸c˜oes) e o RCM ´e um conjunto formado pelos refinamentos comuns mais abstratos e n˜ao compar´aveis entre si pela rela¸c˜ao de refinamento(BRUNET; CHECHIK; UCHITEL, 2006a). A Figura 2.11 mostra a ideia de Menor Refinamento Comum em (A) e do conjunto de Refinamento Comum Minimal em (B). Cada n´o do grafo representa uma especifica¸c˜ao parcial e a seta representa a rela¸c˜ao de refinamento.

Defini¸c˜ao 2.3.8 (Refinamento Comum Minimal). Dados dois modelos M e N , o modelo X pertence ao RCM de M e N sse X ´e um refinamento comum entre M e N e para todo modelo X1 tal que M ¨ 1X e N ¨ X1 ent˜ao X ª X1 e X1 ª X.

Defini¸c˜ao 2.3.9 (Menor Refinamento Comum). Dados dois modelos M e N , o modelo X ´e o MRC de M e N sse X ´e um refinamento comum entre M e N e para todo modelo X1 tal que M ¨ X1 e N ¨ X1 ent˜ao X ¨ X1.

Segundo (RACLET et al., 2011), o operador de conjun¸c˜ao deve ser associativo e co-mutativo para garantir que a ordem de execu¸c˜ao da conjun¸c˜ao n˜ao influencie o resultado final. Al´em disto, as seguintes propriedades devem valer para que o operador de con-jun¸c˜ao (representado por ^) retorne de fato a conjun¸c˜ao entre os dois modelos (e n˜ao o refinamento comum):

(46)

20 MODELOS COMPORTAMENTAIS

Figura 2.11 Exemplos de MRC em (A) e de RCM em (B)

1. M ^ N ´e definido sse existe um modelo parcial X tal que M ¨ X e N ¨ X; 2. Se M ^ N ´e definido ent˜ao para todo modelo parcial X tal que M ¨ X e N ¨ X

Referências

Documentos relacionados

Nesta reunião, o ScrumMaster trabalha junto com o Proprietário do Produto e a Equipe de Desenvolvimento para definir qual a carga de tempo que cada funcionalidade do Product

Esse conjunto de função consiste naquelas funções não diretamente relacionada à definição, ao gerenciamento, ao desenvolvimento e ao teste de software, mas que não

Processo de Desenvolvimento de Software: Analises iniciais, ciclo de vida de um processo, modelos de processos de desenvolvimento, padrões de processos, processo unificado;

• Gerar nos alunos de Análise e desenvolvimento de software a capacidade de analisa, documentar e especificar sistemas computacionais de informação.. Estes devem fazer uso

• O ciclo de vida iterativo e incremental pode ser visto como uma generalização da abordagem em cascata: o software é desenvolvimento em incrementos e cada incremento é desenvolvido

• Deve-se avaliar o conjunto de requisitos essenciais para a definição do Documento de Visão do software e este deve incluir o escopo do projeto e suas limitações, bem como

• Depois de determinar os custos e benefícios para uma possível solução, você pode realizar a análise de custo- benefício.. Estudo

• Requisitos são tipicamente utilizados como informações fundamentais para a fase de projeto de um produto ou serviço, especificando as propriedades e funções necessárias