DIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE



Documentos relacionados
DIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

UML e seus diagramas

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Análise de Sistemas. Aula 5

Requisitos de Sistemas

Engenharia de Software

Introdução. Introdução. Introdução. Planejamento da disciplina. Modelagem de Processos de Negócio. Prof.: Clarindo Isaías Pereira da Silva e Pádua

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

UML Unified Modeling Language Linguagem de Modelagem Unificada

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas:

UML: Introdução. História Visão geral Modelo conceitual da UML. Bibliografia. UML: introdução

INF1013 MODELAGEM DE SOFTWARE

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

UML (Unified Modelling Language)

Aula 1.7 Introdução a APOO e UML

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Capítulo 5 Modelação do Sistema 1

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

CP Compiladores I Prof. Msc.. Carlos de Salles

Introdução à Análise e Projeto de Sistemas

Compiladores I Prof. Ricardo Santos (cap 1)

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Tópicos da Aula. Conceitos de programação orientada a objetos. Projeto orientado a objetos com UML

MODELAGEM DE DADOS MÓDULO III - UNIDADE V- MAPEAMENTO OBJETO RELACIONAL

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

PUC-GO- ADS: Prof. Vicente P. de Camargo. Desenvolvimento de Aplicações para Cliente Servidor

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

APÊNDICE D Unified Model Language (UML)

INTRODUÇÃO À ENGENHARIA DE SOFTWARE. Prof.: Tiago Alves

Requisitos de Software e UML Básico. Janaína Horácio

Visão Geral do RUP.

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

UML. Trabalho Análise e Projeto de Sistemas. Aluna: Luana Alves Businaro

Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX.

Rational Unified Process (RUP)

Introdução a UML (Unified Modeling Language)

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

RUP Unified Process. Profª Jocelma Rios

Processos de software

Análise e Projeto Orientados a Objetos

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Proposta de Trabalho de Conclusão de Curso

Prof. Dr. Thiago Jabur Bittar

Programa Analítico de Disciplina INF323 Engenharia de Software II

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Introdução a UML e seus diagramas

UML Diagrama de Atividades Diagrama de Caso de Uso. ENG1518/3VB Sistemas de Informação Gerenciais Prof. Marcos Villas

Análise. Orientada a Objetos Modelo Funcional, Modelo Estrutural e Modelo Comportamental. Linguagens: Java, C++, etc.

Compiladores. Conceitos Básicos

Modelos em Sistemas de Informação. Aula 2

5 QCDTool: Uma Ferramenta para Avaliar a Qualidade do Design em Modelos

Visão de Comportamento do Negócio

Visão de Comportamento do Negócio

UML UNIFIED MODELING LANGUAGE LINGUAGEM DE MODELAGEM UNIFICADA

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

IFSC/Florianópolis - CTI - Projeto de Sistemas - prof. Herval Daminelli

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

3. Linguagem de Programação C

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Engenharia de Software

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Engenharia de Software

Sistemas de Banco de Dados

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

Especificação de Sistemas de Software e a UML

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

Análise de Sistemas 3º Bimestre (material 2)

XML - Extensible Markup Language

REUSO E REUSABILIDADE

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

PROGRAMAÇÃO I. Introdução

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Princípios da Engenharia de Software aula 03

Engenharia de Software Orientada a Objetos - OOSE. Método de Jacobson

UML 2.0 Método, Linguagem e Ferramenta. Prof. Cesar Augusto Tacla

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

Análise e projeto de sistemas

Especificação de Sistemas e SysML

Introdução à Programação

3 Tecnologias Relacionadas

5º Congresso de Pós-Graduação

Transcrição:

DIAGRAMAS UML NA VERIFICAÇÃO FORMAL DE SOFTWARE Relatório parcial PIBIC Bolsista: Eduardo Rohde Eras e-mail: eduardorohdeeras@gmail.com Responsável: Prof. Dr. Nandamudi L. Vijaykumar e-mail: vijay@lac.inpe.br Colaborador: MSc. Luciana Brasil R. Santos Julho/2013 São José dos Campos

1 Introdução Métodos de Verificação Formal oferecem grande potencial para prover técnicas de verificação mais efetivas, pois utilizam rigor matemático para estabelecer a correção do sistema (BAIER, 2008). Além disso, Métodos de Verificação Formal, como por exemplo Model Checking, são aplicados de forma mais eficiente nos estágios iniciais do projeto de software, quando os custos são ainda baixos e os benefícios podem ser altos, aumentando a qualidade dos sistemas de software. Todavia, exatamente por utilizarem um rigor matemático que muitas vezes é exigido dos usuários, Métodos de Verificação Formal não são muito adotados como técnica de verificação de sistemas, pois a preferência dos usuários é dada a processos de verificação mais simples. A Linguagem de Modelagem Unificada (UML) é atualmente aceita como padrão para modelagem de projeto de software, e seu uso tem crescido na indústria aeroespacial. UML apresenta diversos diagramas focando em aspectos distintos do software mas, ao mesmo tempo, provê descrições redundantes dos mesmos aspectos do sistema. Isso dá a oportunidade para técnicas de verificação e validação de assegurar a consistência das descrições. Contudo, verificação e validação de sistemas complexos desenvolvidos de acordo com UML não são tarefas triviais, devido a complexidade do software em si, e a diversos diagramas/modelos UML diferentes que podem ser usados para modelar o comportamento e a estrutura do sistema. Nesse contexto, o objetivo do presente trabalho é o estudo, análise e manipulação dos diagramas UML para viabilizar o uso de Verificação Formal (mais precisamente, Model Checking) na indústria de software. Para isso, é necessário projetar e implementar um aplicativo para converter a representação UML para algum formato específico utilizado por uma ferramenta de Model Checking. Diagramas UML, ao serem editados, são representados por XMI. Então, o arquivo com formato XMI é a entrada para o aplicativo para que possa ser processado e convertido em um modelo chamado de Sistema de Transições (TS), base para entrada da ferramenta de Model Checking. Para alcançar tal objetivo, é preciso se familiarizar com os fundamentos da linguagem UML, sua base em XML onde é construída a linguagem XMI (padrão de compartilhamento de metadados UML). A segunda parte é a elaboração de um leitor de XMI em Java para posterior tratamento desses dados. A próxima etapa seria de estudar os fundamentos para elaboração de um conversor do XMI para TS com base na teoria de compiladores, que inclui conhecer a arquitetura de compiladores, máquinas de estado finito (autômatos) e linguagem formal. Este projeto, iniciado em março de 2013, será desenvolvido em conjunto com um trabalho de pesquisa em doutorado no curso de Computação Aplicada (CAP) no Instituto Nacional de Pesquisas Espaciais (INPE).

2 UML Em uma definição formal, (BOOCH, 1998) "A Linguagem de Modelagem Universal (UML) é uma linguagem padrão para escrever diagramas de software". 2.1 Conceitos e Características A UML é uma linguagem gráfica para visualizar, especificar, construir e documentar os artefatos de um sistema de software. A UML proporciona uma maneira padrão para escrever diagramas de sistema, abrangendo conceitos, como processos de sistema, assim como coisas concretas, como classes escritas em uma determinada linguagem de programação, esquemas de banco de dados e componentes reutilizáveis de software (BOOCH, 1998). Os diagramas UML são divididos em estruturais e comportamentais, sendo o foco deste trabalho os diagramas classificados como comportamentais, em especial os de Caso de uso, Sequência, Atividades e Máquinas de Estado. Segundo Booch (BOOCH, 1998), tem-se as seguintes definições: Diagramas de Caso de uso especificam o comportamento de um sistema ou parte de um sistema e é uma descrição de um conjunto de sequências de ações, incluindo variantes, que um sistema executa para produzir um resultado observável de um valor para um ator. Diagramas de sequência são diagramas de interação com ênfase na ordem cronológica das mensagens. Um Diagrama de Sequência mostra uma coleção de objetos e as mensagens enviadas e recebidas por ambos objetos. Diagramas de Atividade são essencialmente um fluxograma, mostrando o fluxo de controle em atividades. Focam em representar atividades ou partes de processamento que podem ou não corresponder a métodos de classes. Uma atividade é um estado com uma ação interna e uma ou mais transições de saída que automaticamente ocorrem com o término da ação interna. Uma Máquina de Estado define o comportamento que especifica os estados de um objeto durante sua vida em resposta a eventos, juntamente a suas respostas a esses eventos. Os diagramas de Sequência, Atividade e Máquina de estado mostram, por três diferentes ângulos, o mesmo processo dentro de um sistema de software. São três diferentes visões do comportamento de uma aplicação quanto à sua sequência de interações, às atividades exercidas e aos estados de cada processo, que juntos serão utilizados para formar um único modelo de estado finito (ou, como já definimos, Sistema de Transições) que servirá de entrada para realizar a Verificação Formal de software. Os diagramas de Caso de uso por sua vez, descrevem o comportamento esperado com a execução da aplicação descrita pelos outros três diagramas.

3 XML e XMI Extensible Markup Language (XML) é uma tecnologia para criar linguagens de marcação que descrevem dados de praticamente qualquer tipo de uma forma estruturada (DEITEL, 2003). A linguagem XML por sua vez é definida por arquivos DTDs e schemas, que descrevem as regras que serão obedecidas no documento XML a eles referenciados. O entendimento de DTDs e schemas é essencial para a real compreensão da linguagem XML. O propósito de um DTD (Documento de Definição de Tipo) é definir os blocos de construção válidos de um documento XML (W3SCHOOLS, 2013). Esses documentos descrevem de forma estruturada, cada elemento que será utilizado no XML que a ele se referir, formalizando sua escrita. Desta forma é possível validar o conteúdo de um documento XML. Um Schema XML é uma alternativa ao DTD baseada em XML que descreve a estrutura de um documento XML (W3SCHOOLS, 2013). Diferente dos DTDs, um Schema XML usa a própria linguagem XML como base, garantindo maior flexibilidade e expansibilidade além de manter os documentos XML e seus schemas no mesmo padrão. XMI, que significa XML para troca de metadados, é o padrão para representação de informações orientadas à objeto usando XML (GROSE, 2002). Como as informações dos diagramas UML de Caso de Uso, Sequência, Atividade e Máquina de Estados são exportados em arquivos XMI pelos softwares de edição UML, sabemos que o produto de entrada da aplicação será por fim, um arquivo XML. Sendo XML é um dos formatos mais usados para troca de informações estruturadas nos dias de hoje (W3C, 2013), dispomos de amplo suporte, documentação atualizada e uma comunidade ativa, facilitando o desenvolvimento de aplicações de leitura e manipulação dessa linguagem. 4 Parsers DOM e SAX Parsers são analisadores sintáticos de uma linguagem de programação. No caso da linguagem XML, um parser deve separar cada tag, (pequenas estruturas de uma linguagem de marcação que indicam o início ou o fim de um bloco) seus atributos e conteúdos, preservando sua estrutura. Os dois parsers estudados para esse projeto são o DOM (Document Object Model) e SAX (Simple API for XML), que segundo Deitel (DEITEL, 2003), têm as seguintes definições: 4.1 Parser DOM O DOM é um modelo baseado em árvore que armazena os dados do documento XML de entrada em uma estrutura hierárquica. Todo o documento XML lido é armazenado

em uma estrutura de árvore na memória, onde os dados podem ser rapidamente acessados. Também existem recursos para modificar o documento (adicionar ou remover informações do arquivo original). 4.2 Parser SAX Os analisadores sintáticos baseados em SAX fazem uma leitura dos documentos XML de entrada invocando métodos quando encontram uma marcação (início ou fim de um documento por exemplo), esses métodos retornam o conteúdo do documento a medida em que o arquivo é lido. Com esse modelo baseado em eventos, não é criado uma estrutura de árvore pelo analisador baseado em SAX para armazenar os dados do documento. 4.3 Escolha do parser Para o projeto foi escolhida a tecnologia SAX como analisador sintático do documento XMI. É mais indicado para criar a própria estrutura de dados para armazenar as informações do arquivo XMI de entrada. Isso facilita na implementação filtros de conteúdo armazenando somente as informações necessárias do documento analisado. 5 Estrutura de Dados As informações estruturadas no arquivo XMI (XML) de entrada serão armazenadas em uma lista encadeada para serem acessados posteriormente pela aplicação que fará a leitura desses dados. Essa lista será uma seleção do arquivo original contendo apenas os valores interessantes para serem trabalhado pela aplicação, porém mantendo sua sequência original. 6 Compiladores (Máquina de estados, autômatos) A segunda parte do projeto é a conversão das informações do documento XMI para um Sistema de Transições. Para esse fim será estudado a teoria dos compiladores, autômatos finitos e expressões regulares. 6.1 Compiladores Segundo Mogensen (MOGENSEN, 2007), um compilador traduz um programa escrito em uma linguagem de programação de alto nível, que é específica para programadores humanos, em linguagem de máquina de baixo nível, que é requerida por computadores. No contexto do projeto de Iniciação Científica em questão, não se trata da conversão de uma linguagem de programação de alto nível para linguagem de máquina de baixo nível, mas sim da conversão de duas linguagens: uma entrada em XML para um Sistema de Transições. Contudo, o processo de leitura e conversão do arquivo continua o

mesmo, além dos benefícios que o estudo da arquitetura de compiladores pode trazer para o desenvolvimento do projeto, como por exemplo, o uso de soluções conhecidas para leitura e análise dos códigos de entrada, aplicação de uma arquitetura otimizada para melhor desempenho e melhor manutenção, ou um melhor embasamento matemático no desenvolvimento do projeto. Parte do estudo de compiladores inclui o estudo de (entre outros) Autômatos Finitos e Expressões Regulares. Segundo Hopcroft (HOPCROFT, 2002), temos as seguintes definições: 6.2 Autômatos Finitos Os autômatos finitos envolvem estados e transições entre estados em resposta às entradas. Eles são úteis na elaboração de vários tipos diferentes de software, inclusive o componente de análise léxica de um compilador. 6.3 Expressões Regulares Expressões regulares formam uma notação estrutural para descrever os mesmos padrões que podem ser representados por autômatos finitos. Elas são usadas em muitos tipos comuns de software que incluem, por exemplo, ferramentas para pesquisa de padrões em textos ou em nomes de arquivos. 7 Sistema de Transições e Model Checking Um pré-requisito para realizar Model Checking é a propriedade a ser checada e um modelo do sistema que está sendo considerado. Modelos de sistema descrevem o comportamento do sistema de maneira clara e precisa. Esses modelos normalmente são expressados usando autômatos de estados finitos, conhecidos por Sistema de Transições. 7.1 Sistema de Transições Um Sistema de Transições é um conjunto finito de estados e um conjunto de transições. São, na ciência da Computação, normalmente utilizados para descrever o comportamento de sistemas. São basicamente grafos direcionados, onde nós representam estados e arestas representam as transições, ou seja, mudanças de estado. Um estado descreve uma informação sobre o sistema em um determinado instante de seu comportamento. As transições especificam como um sistema pode evoluir de um estado para outro (BAIER, 2008). A Figura 1 mostra um exemplo de Sistema de Transição bem simples, composto por dois estados. A transição especifica que o próximo estado é o oposto do estado atual, ou seja, se o estado atual é A, o próximo estado é!a. Se o estado atual é!a, o próximo estado é A. No exemplo, isso é ilustrado com o valor 0 e 1.

0 1 A!A Figura 1: Exemplo de um Sistema de Transição 7.2 Model Checking Model Checking é um método executado automaticamente para verificar se um modelo de um sistema cumpre determinadas especificações (SANTOS, 2012). De acordo com Baier (BAIER, 2008), Model Checking é uma técnica automatizada que, dado um modelo de estado-finito de um sistema e uma propriedade especificada em lógica formal, sistematicamente checa onde essas propriedades suprem um dado estado no modelo. A Figura 2 ilustra o funcionamento do processo de Model Checking. Figura 2: Visão do Model Checking. Fonte: (Baier, 2008) 8 Atividades realizadas e atividades futuras Segue um resumo das atividades realizadas e uma lista das atividades futuras, previstas para conclusão do projeto.

8.1 Atividades Realizadas A primeira etapa realizada foi o estudo da linguagem UML com foco principal nos diagramas de Caso de Uso, Sequência, Atividades e Máquinas de estado (diagramas que serão utilizados no projeto). Foi dado uma atenção especial à sintaxe da linguagem. A segunda etapa foi o estudo completo da linguagem XML, base para compreensão e manipulação dos arquivos XMI gerados pelos editores UML. O estudo foi guiado pelos tutoriais da W3Schools (W3SCHOOLS, 2013). O estudo da linguagem XML incluiu a abordagem detalhada dos documentos DTDs e Schemas XML. Todo o material disponível de XML, DTD e Schema da W3Schools foi abordado. Após um breve estudo sobre a linguagem XMI, o estudo foi direcionado aos parsers XML e a implementação de um leitor em Java. Nessa etapa foram estudados os parsers DOM e SAX, sua teoria e a implementação em Java de cada um deles. Também foi dedicado um estudo à estrutura de dados com foco especial nas listas encadeadas. Após esses estudos foi implementado o leitor XML em Java que tem como entrada um arquivo XML ou XMI, armazenando todo seu conteúdo de forma estruturada em listas encadeadas. O correto funcionamento do leitor foi documentado em classes de teste unitário. A etapa mais recente do projeto abrange o início do estudo da teoria dos compiladores e expressões regulares. 8.2 Atividades Futuras As atividades futuras certamente reservam estudos de grande abrangência, que ainda não podem ser previstos em sua totalidade, pois a cada novo conteúdo estudado, novos conteúdos relacionados aparecem. Contudo, certamente as atividades futuras incluem: Estudo completo da teoria dos compiladores; Estudo de expressões regulares, autômatos e linguagens formais; Estudo de verificação formal e Model Checking; Estudo do Sistema de Transições; Implementação do conversor de XMI para Sistema de Transições; Realização dos testes com o algoritmo implementado; Conclusão do Projeto.

9 Referências BOOCH, G.; JACOBSON, I.; RUMBAUGH, J.; The Unified Modeling Language User Guide. Addison Wesley, 1998. GROSE, T. J.; DONEY, G. C.; BRODSKY, S. A.; Mastering XMI Java Programing with XMI, XML and UML. John Wiley & Sons, Inc., 2002. DEITEL, H. M.; DEITEL, P. J.; NIETO, T. R.; LIN, T. M.; SADHU, P.; XML, como programar. Bookman, 2003. HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R.; Introdução à teoria dos Autômatos, Linguagens e Computação. Elsevier, 2002. BAIER, C.; KATOEN, J. P.; Principles of Model Checking. MIT Press, 2008. MOGENSEN, T. Æ.; Basics of Compiler Design. DIKU University of Copenhagen, 2007. FEOFILOFF, P.; Algoritmos em Linguagem C. Elsevier, 2009. SANTOS, L. R. B.; Formal Verification of UML-Based Software. INPE, 2012. W3C; XML Essentials. Disponível em <http://www.w3.org/standards/xml/core> Acessado em 30 de Junho de 2013. W3SCHOOLS; Introduction to DTD. Disponível em <http://www.w3schools.com/dtd/dtd_intro.asp>.acessado em 29 de Junho de 2013. W3SCHOOLS, Introduction to XML Schema. Disponível em <http://www.w3schools.com/schema/schema_intro.asp> Acessado em 29 de Junho de 2013.