Integrando UML e Métodos Formais



Documentos relacionados
Utilização da modelagem UML em um sistema de gerenciamento de uma franquia do setor de alimentação

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

Transformação de um Modelo de Empresa em Requisitos de Software

2 Engenharia de Software

PROVA DISCURSIVA (P )

REQUISITOS DE SISTEMAS

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

Um Framework para definição de processos de testes de software que atenda ao nível 3 do TMM-e

Modelagem de Processos. Prof.: Fernando Ascani

Introdução a UML. Hélder Antero Amaral Nunes haanunes@gmail.com

Ciência da Computação ENGENHARIA DE SOFTWARE. UML-Unified Modeling Language Linguagem de Modelagem Unificada

Desenvolvimento estruturado versus orientado a objetos.

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

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Processos de Software

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

Professor: Curso: Disciplina: Aula 4-5-6

são capturados de forma sistemática e intuitiva por meio de casos de uso.

Projeto de Desenvolvimento de Software. Apresentação (Ementa) e Introdução

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Um Framework para Desenvolvimento de Aplicações Móveis Orientadas a Serviços

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Especificação Formal. Especificação no Processo de Software

SISTEMAS DE INFORMAÇÃO GERENCIAIS

Uma Abordagem para Tratamento de Regras de Negócio nas Fases Iniciais do Desenvolvimento

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Análise e Projeto Orientados a Objeto

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Gestão de Projectos de Software - 1

Ontologias na Computação

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

Ficha da Unidade Curricular

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Unidade II MODELAGEM DE PROCESSOS

Orientação a Objetos I

Programação orientada a objetos usando a linguagem C++ CDTN Centro de Desenvolvimento de Tecnologia Nuclear

Modelagem de Sistemas

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Gerenciamento de Requisitos

Table 1. Dados do trabalho

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Levantamento, Análise e Gestão Requisitos. Aula 06

Mapa Mental de Engenharia de Software - Diagramas UML

LINGUAGEM DE ESPECIFICAÇÃO E DESCRIÇÃO (SDL) APLICADA AO PROCESSO DE VERIFICAÇÃO E VALIDAÇÃO DE SISTEMAS REATIVOS

Estimativa & Planejamento de Projeto de Software.

A abordagem da Engenharia Semiótica para o desenvolvimento de software centrado no usuário

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

Notas de Aula 04: Casos de uso de um sistema

Engenharia de Software

UMA PROPOSTA DE MODELO DE PROCESSO PARA DESENVOLVIMENTO DE TECNOLOGIAS EDUCACIONAIS

Introdução ao Processo Unificado (PU)

No capítulo 3 estão concentrados todos os assuntos relacionados à metodologia utilizada nesse trabalho de pesquisa. Ou seja, tipo de pesquisa, método

Ouvir o cliente e reconhecer o problema: ingredientes essenciais à gestão de projetos

Avaliando modelos arquiteturais através de um checklist baseado em atributos de qualidade

UML - Unified Modeling Language

Classificação: Determinístico

ATENAS: Um Sistema Gerenciador de Regras de Negócio

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML

Curso de Especialização em Tecnologia da Informação. Engenharia de Software

Especificação de Testes Funcionais usando Redes de Petri a Objetos para Softwares Orientados a Objetos

Ambientes Computacionais para o Desenvolvimento e Aplicação de Sistemas de Documentação Ativa

Modelando com UML Unified Modeling Language

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

Visão Geral Parte 1. O que é engenharia de software?

18º Congresso de Iniciação Científica UM ESTUDO EXPLORATÓRIO SOBRE TÉCNICAS DE MODELAGEM DE REQUISITOS DE SOFTWARE PARA SISTEMA EMBARCADO

O ENSINO DE CÁLCULO NUMÉRICO: UMA EXPERIÊNCIA COM ALUNOS DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

5 Considerações finais

Análise e Projeto de Software

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Comunicado. Técnico. Uso da Linguagem de Especificação SDL como Alternativa ao Diagrama de Estados Proposto pela Linguagem UML

Curso Superior de Tecnologia em Banco de Dados e Sistemas para Internet Disciplina: Projeto Integrador III Prof.: Fernando Hadad Zaidan

Programação Extrema. Luis Fernando Machado. Engenharia de Software

Engenharia de Software

REPRESENTAÇÃO DE REQUISITOS VARIÁVEIS COM UML, SEGUINDO O MÉTODO ICONIX

Diagramas de Casos de Uso

Especialização em Engenharia de Software e Banco de Dados

Cinco restrições de desenvolvimento/teste que afetam a velocidade, o custo e a qualidade dos seus aplicativos

Controle da produção baseado em códigos de barras

RECONHECIMENTO DE AVES DE NOMES ONOMATOPÉICOS

USO DOS CONCEITOS DE INTERAÇÃO HUMANO-COMPUTADOR NO DESENVOLVIMENTO WEB PARA EDUCAÇÃO A DISTÂNCIA

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

Análise comparativa sobre bases de dados para armazenamento e consulta de dados não estruturados no formato JSON.

PROCESSOS DE CRIAÇÃO DE APLICATIVOS

Capítulo 7: Engenharia de Software

Projeto de Desenvolvimento de Software

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

METODOLOGIA DE DESENVOLVIMENTO DE SISTEMAS

PMBoK Comentários das Provas TRE-PR 2009

CASTILHO, Grazielle (Acadêmica); Curso de graduação da Faculdade de Educação Física da Universidade Federal de Goiás (FEF/UFG).

Introdução a UML. Agenda. Definição Histórico Contribuições Diagramas Observações. Cleidson de Souza (Rodrigo Reis)

3 Qualidade de Software

Unidade I Conceitos BásicosB. Conceitos BásicosB

Universidade Federal de Santa Catarina Departamento de Informática e Estatística Bacharelado em Sistemas de Informação

1. O Contexto do SBTVD

Transcrição:

Universidade Federal de Pernambuco Graduação em Ciência da Computação Centro de Informática Proposta de Trabalho de Graduação Integrando UML e Métodos Formais Aluno: Orientador: Co-orientador: Rafael Magalhães Borges (rmb2@cin.ufpe.br) Alexandre Cabral Mota (acm@cin.ufpe.br) Augusto Cézar Alves Sampaio (acas@cin.ufpe.br) Recife, 1 de Junho de 2004.

1 Contexto A crise de software é, ainda hoje, o maior problema da Engenharia de Software. Diversos projetos são cancelados e outros tantos estouram custos e prazos. Poucos são aqueles concluídos com sucesso, sem erros ou atrasos. Este problema se agrava quando falamos dos sistemas considerados críticos: sistemas que envolvem elevadas somas de dinheiro ou vidas humanas. Um erro pode ser fatal, como o caso do Therac-25, que aplicava doses radioativas letais nos pacientes [18], ou caríssimo, como o do Ariane 5, cujas falhas de lançamento custaram milhões ao programa espacial europeu [15]. Alguns trabalhos [11, 4, 3] sugerem que as causas desta crise são a instabilidade dos requisitos e a complexidade inerente do software. Outros [13], mais filosóficos, comparam os desenvolvedores atuais aos artesãos pré-industriais: ambos produzem seus artefatos utilizando técnicas baseadas no empirismo, desconhecendo a ciência por trás dos seus ofícios. Inclusive, [7] vai além: sugere não só o embasamento, mas também a verificação formal dos programas. Vale ressaltar que todos concordam que produzir software de qualidade (cuja maior componente é a corretude) é essencial. Diversas balas de prata para essa crise foram propostas: ferramentas especializadas, orientação a objetos e inteligência artificial são exemplos disso [3]. Dentre elas, Métodos Formais merecem destaque. Estabelecer a matemática como alicerce do desenvolvimento de software dá rigor científico a diversos conceitos outrora informais; é agora possível verificar formalmente a corretude dos programas através de provas. Noções de refinamento passaram a ter uma importância muito grande: especificar um sistema utilizando estruturas matemáticas e abstraindo detalhes operacionais permite um maior entendimento do problema. A prova das propriedades dos sistemas passa a ser bastante intuitiva e relativamente fácil. Depois, a substituição dessa especificação por outras mais concretas (cujas relações com a original sejam demonstradas), com estruturas de dados cada vez mais computacionais e menos abstratas, garante as propriedades do modelo original [32]. Por fim, a aplicação de transformações (ou leis) matemáticas leva-nos à derivação de uma implementação que, por construção, está correta [20, 8]. Contudo, mesmo com casos de sucesso como o CICS [32], TCAS II [12] e muitos outros [1], Métodos Formais ainda não são utilizados em larga escala na indústria. Como destacam [6, 30], isso se deve à sua forte notação matemática e ao uso de ferramentas ineficientes e não-amigáveis. Porém, é importante frisar que nenhum método foi universalmente aceito até hoje. Para suprir essas deficiências e tornar Métodos Formais mais acessíveis, existem duas alternativas mais comuns: a simplificação da linguagem formal, 1

o que inclui até a adição elementos gráficos [14], ou a utilização de uma outra linguagem, geralmente informal, mapeando-a para uma formal [21, 26, 33]. Apesar dessa primeira alternativa possuir seus méritos, acreditamos que a segunda é mais promissora. Podemos assim utilizar, como intermediárias, as linguagens com as quais o desenvolvedor já está habituado e mapeá-las numa linguagem formal mais poderosa, concebida sem maiores restrições conceituais (embora sejam necessárias algumas para a utilização prática). Como linguagem intermediária, UML [22, 24] aparece como a opção mais importante. Ela utiliza elementos gráficos para representar as diversas entidades assim como seus relacionamentos e graças a essa simplicidade, aliada à facilidade de entendimento, tornou-se o padrão do mercado. Porém, é uma linguagem informal (portanto ambígua) e insuficiente para representar até propriedades mais simples [23]. Já para o papel de linguagem formal, OhCircus [5] é uma excelente escolha. OhCircus integra conceitos bem estabelecidos na comunidade formal: a linguagem baseada em modelos Z [31], a álgebra de processos CSP [27] e o cálculo de refinamentos [20], além dos conceitos de orientação a objetos, provendo uma linguagem unificada para classes e processos. Vale destacar que algumas idéias foram obtidas a partir de UML-RT 1 [19, 29], o que a torna ainda mais apropriada para esse mapeamento. Atualmente, essa integração entre linguagens de mercado e formais é uma área de pesquisa bastante ativa, permitindo que as práticas da Engenharia de Software sejam provadas formalmente, enquanto os resultados dos Métodos Formais são aplicados na indústria. Em particular, hidden formal methods vai além, utilizando na prática os resultados estabelecidos formalmente, mas sem que o desenvolvedor perceba o uso de Métodos Formais. 2 Objetivos O objetivo deste trabalho é capturar os principais elementos que constituem os diagramas de classes anotados de UML e mapeá-los em especificações Oh- Circus. Este é um tópico de pesquisa bastante ativo [2, 16, 17, 25], mas nossa abordagem difere das demais porque utiliza uma linguagem projetada para acomodar várias construções de UML(-RT) e procura preservar a estrutura do diagrama de classes. Vale destacar que a semântica de OhCircus ainda está incompleta; porém, como as vantagens de utilizá-la superam as desvantagens, esperamos que esse trabalho seja uma contribuição para a evolução da própria linguagem. 1 UML-RT é uma extensão de UML que contempla concorrência. 2

Como discutido no contexto, UML é por si só insuficiente para capturar todas as propriedades relevantes do sistema [23], sendo também necessárias anotações (invariantes, pré- e pós-condições etc). Por outro lado, a linguagem proposta pela OMG para suprir este papel, OCL [23], é limitada: apenas especifica restrições (semelhantes a asserções) e ainda não possui semântica formal bem definida. Neste trabalho, consideraremos algumas características e construções dessa linguagem, mas OhCircus será utilizada nas anotações. Além de tratar dos elementos individuais do diagrama de classes (as próprias classes), também preservamos toda a sua estrutura, como relacionamentos, propriedades globais e aspectos dinâmicos do sistema (via system history [10]). Isto é realizado através de uma (meta-)classe, sintaticamente equivalente às demais, que concentra tal estrutura (classe-modelo). A principal motivação para isso é explorar refinamento em UML [28]. Por fim, diversos trabalhos [2, 9, 17], inclusive [24], tomam como verdade a noção de equivalência entre associações e atributos. Utilizando nossa abordagem, propomos demonstrar que as associações representam uma visão abstrata do diagrama de classes, enquanto a interpretação delas como atributos é um dos refinamentos possíveis. O objetivo principal é, além do próprio resultado, dar uma intuição de (e possivelmente consolidar) o mapeamento e a noção de classe-modelo. É importante ressaltar que este trabalho é apenas um passo inicial em direção ao mapeamento completo de UML-RT para OhCircus. Várias pesquisas podem ser exploradas a partir desta, como a construção do mapeamento inverso (a partir da preservação das características) e futuras extensões, contemplando, por exemplo, os aspectos dinâmicos (o uso de uma classe-modelo) e OCL. 3 Cronograma Mês Atividade Junho Julho Agosto Investigar classes-modelo Preparar o mapeamento Abordar o refinamento Elaborar o relatório Elaborar a apresentação Tabela 1: Cronograma 3

Referências [1] J. Bowen and M. Hinchey. Applications of Formal Methods. Prentice Hall PTR, 1995. [2] R. Breu, U. Hinkel, C. Hofmann, C. Klein, B. Paech, B. Rumpe, and V. Thurner. Towards a Formalization of the Unified Modeling Language. In Proceedings of ECOOP 97. Springer Verlag, LNCS, 1997. [3] F. Brooks, Jr. No Silver Bullet: Essence and Accidents of Software Engineering. Computer Magazine, 20(4):10 19, 1987. [4] F. Brooks, Jr. The Mythical Man-Month (Anniversary ed.). Addison- Wesley Longman Publishing Co., Inc., 1995. [5] A. Cavalcanti, A. Sampaio, and J. Woodcock. A Unified Language of Classes and Processes. In St Eve: State-Oriented vs. Event-Oriented Thinking in Requirements Analysis, Formal Specification and Software Engineering, Satellite Workshop at FM 03, unknown 2003. [6] E. Clarke and J. Wing. Formal Methods: State of the Art and Future Directions. ACM Computing Surveys, 1996. [7] E. Dijkstra. The Humble Programmer. Communications of the ACM, 15(10):859 866, 1972. [8] E. Dijkstra. A Discipline of Programming. Prentice Hall PTR, 1997. [9] A. Evans. Reasoning with UML Class Diagrams. In 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques. IEEE, 1998. [10] R. Gheyi and P. Borba. Refactoring Alloy Specifications. In WMF 2003: 6th Workshop on Formal Methods, Brazil, pages 166 181, 2003. [11] W. Gibbs. Software s Chronic Crisis. Scientific American (International ed.), 271(3):86 95, 1994. [12] M. Heimdahl. Experiences and lessons from the analysis of tcas ii. SIG- SOFT Softw. Eng. Notes, 21(3):79 83, 1996. [13] C. Hoare. Programming: Sorcery or Science? IEEE Software, 1(2):5 12, 15 16, April 1984. [14] D. Jackson. Micromodels of Software: Lightweight Modelling and Analysis with Alloy. Technical report, Software Design Group, MIT Lab for Computer Science, 2002. 4

[15] J.-M. Jézéquel and B. Meyer. Design by Contract: The Lessons of Ariane. IEEE Computer, 30(2):129 130, January 1997. [16] S. Kim and D. Carrington. A Formal Mapping between UMLModels and Object-Z Specifications. Lecture Notes in Computer Science, 1878:2 21, 2000. [17] K. Lano and J. Bicarregui. UML Refinement and Abstraction Transformations. ROOM 2 Workshop, Bradford University, 1998. [18] N. Leveson and C. Turner. An Investigation of the Therac-25 Accidents. IEEE Computer, 26(7):18 41, June 1993. [19] A. Lyons. UML for Real-Time Overview. Whitepaper, ObjecTime Limited, April 1998. [20] C. Morgan. Programming from Specifications (2nd ed.). Prentice Hall International (UK) Ltd., 1994. [21] P. Moura, R. Borges, and A. Mota. Experimenting Formal Methods through UML. Submitted to WMF 2003, July 2003. [22] OMG. UML 2 Infrastructure Final Adopted Specifcation. Whitepaper, Object Management Group, September 2003. [23] OMG. UML 2 OCL Final Adopted Specification. Whitepaper, Object Management Group, October 2003. [24] OMG. UML 2 Superstructure Final Adopted specification. Whitepaper, Object Management Group, August 2003. [25] R. Paige. Integrating a program design calculus and a subset of UML. The Computer Journal, 42(2), 1999. [26] D. Roe, K. Broda, and A. Russo. Mapping UML Models incorporating OCL Constraints into Object-Z. Technical Report 2003/9, Imperial College London, 2003. [27] A. Roscoe, C. Hoare, and R. Bird. The Theory and Practice of Concurrency. Prentice Hall PTR, 1997. [28] A. Sampaio, A. Mota, and R. Ramos. Class and Capsule Refinement for UML-RT. In WMF 2003: 6th Workshop on Formal Methods, Brazil, pages 16 34, 2003. Extended version to appear in Electronic Notes in Theoretical Computer Science, Elsevier, 2004. 5

[29] B. Selic and J. Rumbaugh. Using UML for Modeling Complex Real- Time Systems. Whitepaper, Rational Software Corp., March 1998. [30] I. Sommerville. Software Engineering. Addison-Wesley, 2002. [31] M. Spivey. The Z Notation. Prentice-Hall, 1992. [32] J. Woodcock and J. Davies. Using Z: Specification, Refinement, and Proof. Prentice Hall, 1996. [33] P. Zeppo. From UML to B Specifications. Master s thesis, Dept. of Computer Science, King s College London, 2002. 6

Datas e Assinaturas 1 de Junho de 2004 Alexandre Cabral Mota (Orientador) Augusto Cézar Alves Sampaio (Co-orientador) Rafael Magalhães Borges (Proponente) 7