Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Ciao a tutti. Applico spesso i principi dell'ingegneria dei sistemi nel mio lavoro e vorrei condividere questo approccio con la comunità.

Ingegneria dei sistemi: senza standard, ma in poche parole, è il processo di sviluppo di un sistema come componenti abbastanza astratti, senza riferimento a campioni di dispositivi specifici. Durante questo processo vengono stabilite le proprietà dei componenti del sistema e le connessioni tra loro. Inoltre, è necessario rendere il sistema coerente e ottimale e che soddisfi i requisiti. In questo tutorial mostrerò le tecniche di ingegneria dei sistemi utilizzando l'esempio della progettazione di un sistema di controllo degli accessi (ACS) abbastanza semplice.

Formare l'architettura iniziale

Quando un sistema, qualunque esso sia, inizia appena a svilupparsi, nella nostra testa o sulla carta compaiono rettangoli con frecce. Tali rettangoli sono componenti sistemi. E le frecce lo sono collegamento tra i componenti. E molto spesso non abbiamo tempo per sederci e pensare a come funzioneranno tra loro tutti i componenti che abbiamo definito, e alla fine iniziamo a creare un mucchio di stampelle, inventando progetti ridondanti.

È importante ricordare che dal punto di vista del sistema e della sua architettura, un componente è una cosa piuttosto astratta. Ad esempio, se il nostro sistema ha un microcontrollore, a livello architetturale per noi è importante solo che sia un microcontrollore e non che sia STM32, Arduino o Milander. Inoltre, spesso non ci è affatto chiaro cosa ci sarà esattamente nel sistema e ci rivolgiamo all'ingegneria dei sistemi per sviluppare requisiti per apparecchiature, software, ecc.

Per il nostro esempio con ACS, proveremo a formularne lo scopo. Questo ci aiuterà a identificarne i componenti. Pertanto, il compito del sistema di controllo degli accessi è consentire l'ingresso nella stanza a una cerchia limitata di persone. Cioè, è una serratura intelligente. Di conseguenza, abbiamo il primo componente: una sorta di dispositivo che blocca e sblocca la porta! Chiamiamolo Serratura

Come facciamo a sapere che una persona può entrare? Non vogliamo mettere un guardiano e controllare i passaporti, vero? Diamo alle persone carte speciali con tag RFID, sulle quali registreremo ID univoci o altri dati che ci consentano di identificare con precisione una persona. Quindi, avremo bisogno di un dispositivo in grado di leggere questi tag. Ottimo, abbiamo un componente in più, Lettore RFID

Diamo ancora un'occhiata a ciò che abbiamo ottenuto. Lettore RFID legge alcuni dati, il sistema di controllo degli accessi li utilizza e in base a ciò viene controllato qualcosa Serratura. Poniamoci la seguente domanda: dove archiviare l'elenco delle persone con diritti di accesso? Il migliore nel database. Pertanto, il nostro sistema deve essere in grado di inviare richieste ed elaborare risposte dal database. Quindi abbiamo un componente in più: DBhandler. Abbiamo quindi ricevuto una descrizione del sistema estremamente astratta, ma sufficiente per cominciare. Comprendiamo cosa dovrebbe fare e come funziona.

Invece di un pezzo di carta, utilizzerò System Composer, uno strumento speciale per modellare architetture di sistema nell'ambiente Simulink, e creerò 3 componenti. Sopra ho descritto i collegamenti tra questi componenti, quindi colleghiamoli subito:

Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Espansione dell'architettura

Diamo un'occhiata al nostro diagramma. Sembra che vada tutto bene, ma in realtà non è così. Guarda questo sistema dal punto di vista dell'utente: l'utente avvicina la carta al lettore e...? Come fa un utente a sapere se gli è consentito o negato l'accesso? È necessario informarlo in qualche modo di questo! Pertanto, aggiungiamo un altro componente: la notifica all'utente, Notificautente:

Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Ora scendiamo a un livello inferiore di astrazione. Proviamo a descrivere alcuni componenti un po' più nel dettaglio. Cominciamo dal componente Lettore RFID. Nel nostro sistema questo componente è responsabile della lettura del tag RFID. Il suo output dovrebbe contenere alcuni dati (UID, dati utente...). Ma aspetta, l'RFID, come l'NFC, è principalmente hardware, non software! Pertanto, possiamo supporre di avere separatamente il chip RFID stesso, che trasmette i dati "grezzi" a una sorta di preprocessore. Quindi, abbiamo un componente hardware astratto in grado di leggere i tag RFID e un software astratto in grado di convertire i dati nel formato di cui abbiamo bisogno. Chiamiamoli Sensore RFID и Analizzatore RFID rispettivamente. Come visualizzarlo in System Composer? È possibile rimuovere un componente Lettore RFID e mettere invece due componenti, ma è meglio non farlo, altrimenti perderemo la leggibilità dell'architettura. Entriamo invece in RFIDReader e aggiungiamo 2 nuovi componenti:

Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Ottimo, ora passiamo alla notifica all'utente. In che modo il sistema avviserà l'utente che gli è stato negato o consentito l'accesso ai locali? Una persona percepisce meglio i suoni e qualcosa che lampeggia. Pertanto, è possibile emettere un determinato segnale acustico in modo che l'utente presti attenzione e far lampeggiare il LED. Aggiungiamo i componenti appropriati a Notificautente:

Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Abbiamo creato l'architettura del nostro sistema, ma c'è qualcosa che non va. Che cosa? Diamo un'occhiata ai nomi delle connessioni. InBus и OutBus - nomi non del tutto normali che aiuterebbero lo sviluppatore. Devono essere rinominati:

Progettazione a livello di sistema. Parte 1. Dall'idea al sistema

Quindi, abbiamo esaminato come vengono applicati i metodi di ingegneria dei sistemi con la massima approssimazione. La domanda sorge spontanea: perché usarli? Il sistema è primitivo e sembra che il lavoro svolto non sia necessario. Potresti immediatamente scrivere codice, progettare un database, scrivere query o saldare. Il problema è che se non si pensa al sistema e non si capisce come i suoi componenti sono collegati tra loro, l’integrazione dei componenti del sistema richiederà molto tempo e sarà piuttosto dolorosa.

Il punto principale di questa parte è:

L'uso di metodi di ingegneria dei sistemi e di modellazione dell'architettura nello sviluppo del sistema consente di ridurre i costi di integrazione dei componenti e migliorare la qualità del sistema sviluppato.

Fonte: habr.com

Aggiungi un commento