Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicit� Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Real-Time Systems Design and Analysis
Recensito da Roberto Casadei il 26-11-2012 ore 10:24
Copertina ISBN: 9780470768648
Autori: Phillip A. Laplante, Seppo J. Ovaska
Editore: Wiley
Lingua: Inglese
Anno: 2011
Pagine: 584
Allegati: Nessuno
Nei sistemi real-time la nozione di "tempo" centrale. In questi sistemi, la correttezza funzionale non dipende solamente dalla correttezza degli output, ma anche dalla puntualit con cui tali risultati sono forniti. In altre parole, esistono vincoli sui tempi di risposta che devono essere soddisfatti. Ci che succede nel caso tali vincoli non siano rispettati permette di classificare i sistemi real-time in due tipologie principali, soft o hard, nel caso i ritardi siano tollerati entro certi limiti o meno; tuttavia, pi definizioni si possono trovare in letteratura. La presenza di requisiti temporali, spesso stringenti, aggiunge una complessit rispetto ai sistemi software tradizionali che deve essere gestita opportunamente.

La presente recensione ha come oggetto il libro Real-Time Systems Design and Analysis: Tools for the Pratictioner alla sua quarta edizione, pubblicata alla fine del 2011, che vede come autori Phillip Laplante e Seppo Ovaska, il primo professore di ingegneria del software alla Pennsylvania State University, mentre il secondo professore di elettronica industriale alla Aalto University. Rispetto alla terza edizione, datata 2004, troviamo qui un ulteriore capitolo, il nono, "Future Visions on Real-Time Systems".

Questo testo si differenzia rispetto agli altri classici della materia attraverso una trattazione che esplora in maniera completa lo sviluppo di sistemi real-time, dalla specifica dei requisiti al testing, dalla scelta del sistema operativo alla scelta del linguaggio di programmazione. Tuttavia, questo approccio preclude la possibilit di sviscerare in profondit tutti gli argomenti; in altre parole, il libro esauriente ma non esaustivo. Tale aspetto bene che sia sottolineato perch questa visione panoramica pu rivelarsi la maggior forza o la maggior debolezza in base alle esigenze del lettore. Per meglio rendersi conto del contenuto, invito a visionare la tabella dei contenuti.

Il libro rivolto principalmente a due categorie di lettori: studenti di ingegneria informatica/elettronica ed ingegneri coinvolti nello sviluppo di sistemi real-time che necessitano di un rapido startup. Tra i prerequisiti vi sono le conoscenze di base che tipicamente sono trasmesse complessivamente dai corsi di fondamenti di informatica, architettura dei calcolatori, sistemi operativi e ingegneria del software.

L'ampia copertura degli argomenti senz'altro una qualit importante, mentre l'eventuale mancanza di approfondimenti su certe tematiche pu essere tollerata. Inoltre, al termine di ogni capitolo inclusa un'ampia lista di riferimenti, utile per colmare eventuali prerequisiti o per ricercare risorse aggiuntive. Quello che per rappresenta il principale svantaggio del libro , a mio avviso, un eccesivo distacco rispetto alla teoria dei sistemi real-time; sebbene gli argomenti siano sviluppati secondo tale punto di vista, pu capitare che esso sia applicato in maniera troppo lieve, col rischio di cadere sul generale e di trasformarsi un po' troppo in un testo di ingegneria del software. E' altres vero che i sistemi real-time sono un (a volte) vago sottoinsieme dei sistemi software, ma qualche lettore potrebbe richiedere una pi forte giustificazione della dicitura "real-time" nel titolo del libro.

L'esperienza degli autori contribuisce allo stampo pratico del contenuto. Inoltre, la trattazione disseminata di esempi, con tanto di calcoli e spiegazioni, e, a fine di ogni capitolo, non manca una lista di domande ed esercizi, che rafforza il ruolo didattico del testo, mentre per quanto riguarda la specifica dei requisiti e il design di un sistema real-time sono presenti due casi studio completi. Al termine del libro vi , in aggiunta, un ampio glossario dei termini.

Per quanto concerne il contenuto, vi sono nove capitoli, che possono essere letti in maniera pi o meno indipendente l'uno dall'altro.

Il primo capitolo, "Fundamentals of Real-Time Systems", imposta il quadro concettuale su cui si basa il testo mediante la definizione dei termini che appartengono alla teoria dei sistemi real-time e ripercorre le tappe storiche del loro sviluppo. Vengono inoltre sfatati alcuni dei luoghi comuni, come quello tipico dei sistemi real-time come sistemi "performanti", ed evidenziata la necessit di un approccio multidisciplinare per supportare lo studio e lo sviluppo di sistemi con requisiti di puntualit.

L'organizzazione del libro ordinata, con capitoli che, gradualmente, affrontano le problematiche e i temi che vengono sollevati in ogni livello di astrazione. Il secondo capitolo, "Hardware for Real-Time Systems", appunto focalizzato sul livello pi basso, l'hardware, e presenta quindi tutta una serie di informazioni che sono tipicamente dispensate in corsi universitari di Calcolatori elettronici. Partendo dall'architettura di Von Neumann, sono descritti il ciclo Fetch-Decode-Execute per le istruzioni, la gestione dell'I/O e la gestione delle interruzioni, sottolineando per quest'ultime le fasi che sono sorgenti di jitter. Successivamente sono descritte le tecnologie di memoria, il cui tempo di accesso un elemento di ritardo temporale considerevole, ed introdotto il problema del CPU-memory gap. Una panoramica degli avanzamenti architetturali anche fornita, effettivamente mostrando il tentativo storico di massimizzare l'esecuzione simultanea (e quindi il throughput) di istruzioni. Una sezione inoltre dedicata, prima di soffermarsi sulla distinzione tra microprocessore e microcontrollore, all'interfacciamento con periferiche e sensori/attuatori, mentre una breve digressione sulle architetture real-time distribuite (time triggered e reti Fieldbus) completa questo capitolo dedicato al livello hardware.

Il terzo capitolo, "Real-Time Operating Systems", invece dedicato a quel livello software che si interpone tra l'hardware e il livello applicativo, cio ai sistemi operativi. In prima battuta sono presentate, con corredo di esempi, le soluzioni principali che sono impiegate per realizzare la logica di esecuzione dei processi, da quelle catalogabili sotto il nome di pseudokernel a quelle che coesistono all'interno di sistemi operativi veri e propri. Qui trovano anche spazio dieci pagine sulla teoria dello scheduling, dove si ha un'esposizione formale descrittiva dei sistemi clock-driven e priority-driven. Prima di delineare brevemente alcune questioni legate alla gestione della memoria, sono passati in rassegna alcuni dei servizi e delle strutture di sistema utilizzati dal livello applicativo per risolvere problemi quali la sincronizzazione, il buffering e l'inversione di priorit. L'ultima sezione comprende un breve caso-studio e seleziona alcuni criteri per la scelta di un Real-Time Operating System (RTOS).

Il quarto capitolo, "Programming Languages for Real-Time Systems", avanza un confronto sull'adeguatezza per il real-time di alcuni linguaggi di programmazione, sulla base dei cinque criteri di Cardelli, che valutano un linguaggio dalle prospettive dell'economia di esecuzione, di compilazione, di sviluppo individuale, di sviluppo in team, e di apprendimento delle features del linguaggio. Inizialmente si considerano l'Assembly, il paradigma procedurale e il paradigma object-oriented, confrontandoli fra loro ed evidenziandone le caratteristiche pi rilevanti; in seguito, sono fornite sommarie descrizioni dei linguaggi Ada, C, C++, C#, Java, e Real-Time Java, citando solamente altri linguaggi specifici per il Real-Time. Una parentesi sulla generazione automatica del codice anticipa la chiusura del capitolo, data da una sezione dedicata all'ottimizzazione statica del codice.

Il quinto capitolo, "Requirements Engineering Methodologies", dedicato all'ingegneria dei requisiti, molto importante soprattutto nel contesto dei sistemi real-time dove spesso richiesta una rigorosa verifica della correttezza del sistema. Dopo una breve introduzione sulla materia, sono descritti, anche attraverso esempi di utilizzo, alcuni metodi formali e semi-formali per la specifica dei requisiti: macchine a stati finiti, diagrammi di stato, reti di Petri, Structured Analysis/Structured Design (SA/SD), UML. Successivamente si fa riferimento allo standard IEEE Std 830-1998, Recommended Practice for Software Requirements Specifications, per mostrare il formato di un documento di specifiche. Al termine del capitolo presente un caso studio che consiste in un estratto significativo delle specifiche dei requisiti di un sistema semaforico per un incrocio stradale.

Il sesto capitolo, "Software Design Approaches", descrive inizialmente otto qualit del software real-time e i principi fondamentali dell'ingegneria del software. In seguito, assieme ad esempi e figure, sono presentati approcci per il design procedurale e object-oriented, per poi passare in rassegna i principali modelli del ciclo di vita del software e aprire una parentesi sulle metodologie agili. A fine capitolo presente un ampio caso studio di design orientato agli oggetti basato sulle specifiche dei requisiti sviluppate nel capitolo precedente.

Il settimo capitolo, "Performance Analysis Techniques", espone alcuni metodi di analisi prestazionale che consentono di stimare il tempo di esecuzione del codice, le performance delle unit di I/O, e l'utilizzazione della memoria, quest'ultimo aspetto generalmente rilevante in quel segmento di intersezione tra i sistemi real-time e i sistemi embedded di piccole dimensioni. Nel capitolo trovano inoltre spazio alcune considerazioni legate alla parallelizzazione e a tecniche per l'analisi di sistemi round-robin, periodici e non-periodici, nonch alcune applicazioni di teoria delle code.

L'ottavo capitolo, "Additional Considerations for the Pratictioner", cerca di colmare qualche eventuale lacuna, considerando una serie di aspetti legati all'ingegneria dei sistemi real-time, che non trova diretta inclusione negli altri capitoli. Tra questi vi sono: le metriche nel software, il modello COnstructive COst MOdel (COCOMO) per la stima dei costi, la gestione dell'incertezza, tecniche per realizzare la tolleranza ai guasti, il testing e l'integrazione di sistemi e, infine, alcune tecniche di ottimizzazione legate alla gestione delle operazioni a virgola mobile.

Nell'ultimo capitolo, "Future Visions on Real-Time Systems", si intende fornire un quadro sull'evoluzione delle tecnologie real-time e del contesto a cui saranno impiegate nei prossimi trent'anni. Gli autori evidenziano idee e movimenti che ritengono importanti relativamente allo sviluppo della disciplina, presentando queste visioni in maniera coerente con la struttura del testo, ossia considerando i progressi concernenti l'hardware, i sistemi operativi, i linguaggi di programmazione, l'ingegneria dei sistemi e le applicazioni nel dominio del real-time.
proLibro di qualit, propone un approccio multidisciplinare verso il design e l'analisi dei sistemi real-time. Forse l'unico testo che affronta lo sviluppo nel campo del real-time in maniera cos completa.
controIn alcuni passaggi il libro cade lievemente sul generale.
Precedente: Uno sguardo al futuro JavaScript
Successiva: Cosa ti aspetti da Programmazione.it 7.0?
Copyright Programmazione.it™ 1999-2017. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.137 secondi.