Visualizza il feed RSS

Titolo provvisorio...

Quattro salti (quantistici) in padella?

Valutazione: 3 voti, con una media del 5.00.
di pubblicato il 13-01-2010 alle 23:43 (4223 Visite)
Abbiamo recentemente parlato di metodi progettuali basati su FSM.

In questa occasione vorrei segnalare un progetto che, in modo ammirevole, riesce a coniugare software engineering, opensource, qualità elevata e perfino l'applicazione a sistemi embedded non critici.

Mi riferisco a QP di Quantum Leaps, società statunitense condotta da un fisico che ha elaborato un articolato sistema nel quale rientrano principalmente:

- Una metodologia progettuale basata sui diagrammi di Harel e MSC (Message Sequence Charts), ambedue parte di UML;

- Un vero e proprio testo di riferimento, ormai giunto alla seconda edizione, nel quale viene affrontato l'uso concreto della metodologia, con taglio fortemente pratico e operativo;

- Un completo framework opensource (in versioni per C, C++ e "nano") per il supporto a runtime di macchine a stati finiti progettate con tale metodologia;

- Tra le varie meraviglie del framework, una completa interfaccia verso sistemi realtime di ogni taglia (es. uC/OS-II, Salvo RTOS, FreeRTOS, QNX, ThreadX, VxWorks...) complementata da un proprio kernel per esecuzione standalone.

Come funziona il gioco ? Molto semplice.

Si progetta la propria applicazione, seguendo criteri asseverati di engineering, strutturandola come un insieme coordinato di macchine a stati finiti.

Ciò sarebbe tranquillamente fattibile, come molti di noi ben sanno, usando in pratica solo carta e matita. Ma l'applicazione offre un ambiente grafico per disegnare e convalidare staticamente il progetto delle proprie FSM, dal quale viene poi direttamente generato il codice sorgente con le necessarie chiamate al framework QP, minimizzando il numero di passaggi e quindi i possibili errori.

Eventuali modifiche a ritroso sono sempre possibili e facilitate, andando ad agire direttamente sulla rappresentazione dell'automa e sulla relativa implementazione.

Semplice non solo a dirsi, ma anche nella pratica.


Il framework si presenta senza mezzi termini fin dalle prime pagine come "lightweight", dunque dedicato a usi non eccessivamente complessi: risulta in realtà utilizzabile in una vastissima gamma di progetti, sia basati su PC che su sistemi embedded di taglia anche molto ridotta (es. AVR e PIC midrange), ma anche su architetture avanzate a 16 e 32 bit (es. ARM, FreeScale, Renesas, Texas, Rabbit...).

Merita il dovuto rilievo il fatto che, pur nella relativa semplicità e compattezza del framework, i sorgenti offerti e la relativa documentazione sono di qualità comparabile con quella di prodotti commerciali offerti in sorgente (con clausole non-disclosure) con costi notevoli.

Anche la documentazione, accompagnata dall'uso del testo di riferimento, è decisamente all'altezza delle aspettative.

Tutti i sorgenti disponibili per il download sono stati sottoposti ad una accurata progettazione e verifica statica; documenti dedicati ne declinano la compatibilità con le norme MISRA/C e con PC-Lint, motivando le decisioni di progetto che causano discrepanze con talune singole voci di controllo.

Viene inoltre fornito il completo standard interno di codifica C e C++, un documento già da solo preziosissimo per studenti e practitioner !

Molto interessanti anche le licenze disponibili: dalla GPL2 a formule più tradizionali, laddove sia necessaria una più stringente protezione della IP - fondamentale nell'embedded, in quanto sorgenti e driver incorporano numerose informazioni di valore su hardware e firmware proprietario non standard, quasi sempre proprietà di terze parti.

Vale la pena di rammentare qui che i diagrammi MSC, pur risultando un valido supporto progettuale, non catturano ogni possibile aspetto dei requisiti, ma si limitano sostanzialmente a tratteggiare uno scenario possibile.

Per mitigare questo problema, la letteratura concorda che occorre integrare questo metodo semiformale con altri strumenti progettuali: la metodologia della quale stiamo parlando non fa certo eccezione, essendo fin dal titolo del testo fortemente incentrata sulle statecharts.


Invito in particolare gli studenti a prendere visione del testo e possibilmente metterlo al centro della tesi, di una tesina o altro elaborato individuale analogo.
Data la libera disponibilità dell'intero eccellente lavoro di Samek e soci, invito comunque tutti i miei lettori a scaricare la documentazione e sperimentare almeno gli esempi più semplici con il sistema sulle piattaforme Windows, Linux e *BSD (tutte supportate egregiamente).

Come già ripetuto abbondantemente, la progettazione tramite sistemi di FSM coordinate comporta benefici diretti non solo per i destinatari più ovvi (embedded systems designer), ma per tutti i programmatori senza distinzione, che ne trarrano senz'altro beneficio sia in termini pratici di pulizia del progetto, sia in termini più generali di capacità analitica.

Lo stato di degrado qualitativo in cui versa il mainstream, inclusi purtroppo numerosi progetti i cui sorgenti sono consultabili (al contrario del presente lavoro, la cui superiore qualità e aderenza alle convenzioni normative è palese e tangibile), purtroppo conferma l'opportunità di insistere sull'acquisizione di solide capacità di engineering e progettazione indistintamente da parte di studenti e practitioners.

Ben vengano dunque offerte complete come la presente, che coniugano in modo elegante e anche divertente teoria, pratica, ampia documentazione, pieno supporto progettuale e un completo framework applicativo, nella migliore tradizione del mondo embedded e per giunta a costi nulli per la maggioranza degli utilizzatori.

aggiornamento da 01-02-2016 a 12:11 di M.A.W. 1968

Categorie
Programmazione , Open Source , Tecnologia

Commenti