160 likes | 310 Views
Programação Concorrente e Distribuída. Parte 2. Alexandre Mota e Augusto Sampaio Centro de Informática UFPE. Detalhes sobre o curso. http://www.cin.ufpe.br/~if711/. Programs. Natural Language. …. Specification language. Programming languages and their auxiliary tools. Executable code.
E N D
Programação Concorrente e Distribuída Parte 2 Alexandre Mota e Augusto Sampaio Centro de Informática UFPE
Detalhes sobre o curso • http://www.cin.ufpe.br/~if711/
Programs Natural Language … Specification language Programming languages and their auxiliary tools Executable code Virtual Machines Logic gates Um cenário ideal de desenvolvimento … but the same meaning. Differentpresentations… Tool support and training! Requirements Specifications Precise semantics required Transformations must preserve behaviour Transformations Tools Rules … Compilers Verifiers Hardware … Concrete Syntax Semantics
Cenário exemplo Requirements Use cases/CNL Specification CSP Models (Diagrams) UML-RT Code Java (JCSP)
Model checking Use Cases Requirements FDR (Automatic validation) CSP Validation Specification UML-RT Models (Diagrams) Java (JCSP) Code
Visão crítica de model checking • Automatic validation (full analysis) • In practice, state explosion • Mechanised abstraction strategies is a challenge • Does not guarantee correctness of code Use Cases FDR (Automatic validation) CSP UML-RT Java (JCSP)
Software (model) checking Use Cases Requirements CSP Specification UML-RT Models (Diagrams) JPF, Bandera, ... Java (JCSP) Validation Code
Alguns exemplos de ferramentas Java PathFinder (JPF), BANDERA Gera modelo formal a partir do código Analisa bytecode Java (JVM específica) Explora todos os caminhos potenciais de execução em busca de violação de propriedades Propriedades de projeto e implementação Limitações Tamanho do código [~10KLOC ou ~30KLOC para aplicações específicas] Suporte limitado para algumas API Java [java.net, java.io]
Propriedades default do JPF NoDeadlocked NoUncaughtExceptions NoAssertionViolated Exemplo: Propriedades novas podem ser implementadas ====================================================== error #1 gov.nasa.jpf.jvm.NoUncaughtExceptionsProperty java.lang.NoSuchMethodException: calling javax.swing.JPanel.<init>(Ljava/awt/LayoutManager;)V at PBookGUI.<init>(PBookGUI.java:21) at PBookGUI.main(PBookGUI.java:47)
CSP • Representação concisa e não ambígua de sistemas críticos e concorrentes • Cada operador representa um padrão de interação entre processo P [] Q P ; Q P [|{|a|}|] Q ... • Tradução para modelos de projeto/implementação pode não ser simples • Linguagem destino pode não ser tão expressiva • A tradução pode facilmente gerar inconsistências • Sincronização de dois ou mais processos (multi-sincronização) • Comportamentos dinâmicos
JCSP • Biblioteca para Java que suporta CSP • Programação concorrente mais abstrata que Java • Comunicação via • passagem de mensagens • memória compartilhada • Todos os recursos de Java
Traduzir CSP para JCSP • Aproxima a fase de especificação de uma implementação • Valida os requisitos especificados operacionalmente (execução) • Modelo de comunicação semelhante das duas linguagens facilita a tradução • MAS ... JCSP implementa apenas um subconjunto dos operadores de CSP • Não há suporte de análise formal específico para JCSP • Mas ferramentas de Software Model Checking como JPF (Java PathFinder) podem ser utilizadas
UML-RT • Representação gráfica da arquitetura de sistemas interativos e concorrentes • Várias visões: • estática (diagrama de classes ativas e protocolos) • estrutural (diagrama de instâncias) e • comportamental (diagrama de estados) • Modelo de comunicação inclui modelo síncrono de CSP • MAS ... UML-RT não oferece operadores para combinar processos (classes ativas) • Difícil de formalizar e provar propriedades quando o modelo é extenso (trabalhos em andamento)
Traduzir CSP para UML-RT • Documenta graficamente o modelo formal • Aproxima a fase de especificação da fase de projeto • Valida os requisitos especificados • Permite gerar código através do Rose RealTime para uma API Java semelhante a JCSP • Traduzir UML-RT para CSP • Permite formalizar parte da notação gráfica (semântica) • Permite verificar propriedades usando FDR
Projeto da segunda parte • A partir do modelo (refinado) em CSP, implementar em JCSP ou UML-RT ou … • Adicionar à implementação requisitos não-funcionais (em particular uma interface) • Analisar a implementação e provar ausência de deadlock, por exemplo, usando o JPF • Resultado: programa executável, analisado e com interface gráfica