.. meta:: :language: it :description language=it: Appunti di Complex Systems Design - Edinburgh Concurrency Workbench :description language=en: Notes on Complex Systems Design - Edinburgh Concurrency Workbench :keywords: Complex Systems Design, Edinburgh Concurrency Workbench, CWB :author: Luciano De Falco Alfano .. index:: concurrency workbench of the new century .. _ref_concurrency_workbench_of_the_new_century: Concurrency WorkBench of the New Century ========================================== .. contents:: :local: Il `Concurrency Workbench of the New Century `_ è un programma derivato dal :ref:`Edinburgh Concurrency Workbench `. Inizialmente sviluppato nella `North Carolina State University `_ [#]_, successivamente il suo gruppo di sviluppo si è trasferito in blocco alla `Stony Brook State University of New York `_. *CWB-NC* ha un numero di comandi inferiori a quelli esposti dal *CWB*. D'altro canto: * gestisce un numero superiore di linguaggi di specifica; * la sintassi è leggermente semplificata [#]_; * esiste una versione precompilata per MS Windows di cui parliamo in questo capitolo. .. index:: cwb-nc installation .. _ref_cwb-nc_installation: CWB-NC installation ----------------------- Il programma per installare in MS Windows è in un archivio (``.zip``) che può essere scaricato da questo link: https://sourceforge.net/projects/cwb-nc/. Come usuale quando si lavora in MS Windows, è necessario: * estrarre i file dall'archivio, * eseguire, con diritti di amministrazione, il file ``setup.exe`` estratto. Scegliere la directory su cui installare, ad esempio: ``c:\bin\cwb-nc``. Mettere la sottodirectory ``bin`` nel *path* della macchina. Nel caso in esempio aggiungeremo al *path* la directory ``c:\bin\cwb-nc\bin``. .. index:: cwb-nc note d'uso .. _ref_cwb-nc_notes: CWB-NC notes ----------------------- Eseguita l'installazione: * aprire una shell comando, * portarsi nella directory in cui sono i file con la definizione dei processi, ad esempio ``C:\bin\cwb-nc\examples\ccs\abp`` dove è un esempio di *alternate bit protocol* in linguaggio ccs (file ``abp.ccs``), * eseguire ``cwb-nc ccs`` [#]_, quindi ci si troverà nell'ambiente di comando del *CWB-NC*, come nel seguente esempio, in cui si esegue l'help dei suoi comandi: .. code:: console Microsoft Windows [Versione 10.0.17134.590] (c) 2018 Microsoft Corporation. Tutti i diritti sono riservati. C:\Users\...>cd "C:\Bin\cwb-nc\bin C:\Bin\cwb-nc\bin>cwb-nc ccs Currently supported languages are : ccs, pccs, sccs, tccs, csp, lotos The Concurrency Workbench of the New Century (Version 1.2 --- June, 2000) cwb-nc> help Available CWB-NC commands are: caching {on | off} cat identifier cd directory chk agent formula compile agent [ agent ... ] eq [-S {obseq | bisim | may | must}] agent1 agent2 es filename1 [filename2] fd agent help [command-name] le [-S {may | must}] agent1 agent2 load filename ls min [-S {obseq | bisim}] agent identifier quit save filename [ identifier ... ] search agent formula sim agent size agent sort agent trans [-S {obseq | bisim}] agent Execution time (user,system,gc,real):(0.008,0.000,0.000,0.008) cwb-nc> Il comando di base da ricordare é **load**, che permette il caricamento del file con le definizioni dei processi. Ad esempio: load .. code:: console C:\Bin\cwb-nc\examples\ccs\abp>cwb-nc ccs Currently supported languages are : ccs, pccs, sccs, tccs, csp, lotos Current directory will be C:\bin\cwb-nc The Concurrency Workbench of the New Century (Version 1.2 --- June, 2000) cwb-nc> load abp.ccs Execution time (user,system,gc,real):(0.005,0.000,0.000,0.005) cwb-nc> ls ===Agent=== Spec S0 S0' S1 S1' R0 R1 Msafe Mlossy ABP-safe ABP-lossy Spec2 Spec2' Spec2'' Two-link-netw Spec3 Spec3' Spec3'' Spec3''' Three-link-netw Vi sono delle differenze tra la sintassi dei comandi di CWB-NC rispetto l'Edinburgh CWB, quindi: leggere il relativo manuale disponibile in ``c:\bin\cwb-nc\doc``. Inoltre raccomandiamo anche il seguente: *Reactive Systems: How to use the Concurrency Workbench* ([HENN2008]_) che è una buona introduzione all'uso di CWB-NC. Tra le differenze osservate, spiccano le seguenti: * in Edinburgh CWB è possibile definire un processo interattivamente, da linea di comando; in CWB-NC questo non è possibile: si deve scrivere la definizione in un file (con filename terminante in ``.ccs``) e poi caricarla in CWB-NC con il comando ``load``; * la definizione di un agente non usa la parola chiave ``agent``, ma la parola chiave ``proc``. --------------------- .. [#] Infatti originariamente la sigla *nc* indicava proprio il North Carolina. .. [#] Ad esempio, non è necessario il punto e virgola per terminare il comando. .. [#] Chi è interessato alle versioni Linux (x86) e Sparc-Solaris, può visitare questo sito: http://sens.cse.msu.edu/local_only/Software/cwb-nc.html. .. [#] Si noti la presenza dell'opzione che identifica il linguaggio di specifica da utilizzare, nell'esempio il *CCS*. Altri linguaggi disponibili sono: CSP, LOTOS, PCCS, SCCS, TCCS.