Dal corso: Fondamenti di architettura software

Che cos'è l'architettura software?

- Iniziamo parlando di cos'è l'architettura software. Innanzitutto, la parola architetto è un sostantivo. Descrive una persona. Gli architetti non progettano software più di un falegname falegnami edifici. Gli architetti progettano le cose. Più precisamente, progettano sistemi completi. Ora, usare i mestieri dell'edilizia come metafora del software di solito non funziona molto bene, ma ha un senso qui. Gli architetti non progettano ogni dettaglio di un edificio. Capiscono dove vanno i muri, ma non capiscono come costruire un muro. Lo stesso vale per l'architettura software. Gli architetti del software progettano la struttura di un sistema completo. Non compilano i dettagli di implementazione. Questa è la programmazione. Alcune persone guardano all'architettura come se fosse solo un mucchio di componenti che si collegano insieme per formare un sistema, quello che io chiamo un approccio a blocchi LEGO. Gli architetti che la pensano in questo modo trascorrono molto tempo a ricercare e imparare a comunicare con quei blocchi LEGO. Molti di loro si limitano a collegare i blocchi LEGO del software che qualcun altro ha progettato. Questo modo di lavorare è altamente problematico. L'architettura non è solo collegare insieme cose pre-costruite. È vero che non vuoi mai costruire qualcosa che puoi comprare o ottenere in qualche altro modo. Tutte le architetture hanno almeno alcuni componenti che provengono dall'esterno, server di database o infrastruttura di messaggistica, o qualche altra soluzione pronta all'uso a un problema che si presenta in qualche angolo del sistema. Questo non è il nucleo del lavoro, però. Quel lancio del blocco LEGO non è affatto architettura. Non basta scegliere una cosa dalla colonna A e un'altra dalla colonna B. Ad esempio, un database è l'equivalente di una porta o di una finestra prefabbricata. Puoi scegliere di usarlo nel tuo edificio, ma un architetto fa molto di più che selezionare le porte e le finestre e poi collegarle con le pareti. Più precisamente, la decisione su quali finestre usare è piuttosto minore. Potresti anche farcela, infatti, dopo che l'architettura è completa. Non si costruisce l'architettura software attorno al database più di quanto si progetta un edificio attorno alla propria scelta di finestre. Le architetture descrivono intere strutture, interi sistemi nel software. E quelle strutture e sistemi hanno uno scopo. Un buon architetto edile non si limita a creare stanze casuali con componenti prefabbricati. Lui o lei lavora con i loro clienti per creare un edificio che si adatta al modo in cui vivono i loro clienti. Vuoi una cucina che aiuti i proprietari a cucinare. Le altezze del contatore dovrebbero adattarsi ai proprietari. Gli elettrodomestici devono essere posizionati in modo da rendere la cottura efficiente e divertente. I tipi di stanze che hai, le loro dimensioni, il flusso tra di loro, si adattano tutti al modo in cui vive il proprietario. E li personalizzi in base al modo in cui verrà utilizzato l'edificio. Il software funziona allo stesso modo. Tutte le architetture efficaci riflettono le esigenze dei tuoi clienti e del dominio o dell'azienda in cui lavorano. I sistemi informatici risolvono i problemi del mondo reale e le migliori architetture riflettono la struttura di quel mondo reale. In altre parole, un buon architetto di edifici e software inizia con un cliente e lavora verso l'implementazione. Non si costruisce una fondazione senza pensare a dove devono andare i muri. Allo stesso modo, non dovresti mai iniziare con la cosiddetta fase di implementazione, cose come il linguaggio di programmazione e il server di database. Inizi con il problema dell'utente e poi trovi il modo migliore per risolverlo. La tecnologia di implementazione arriva per ultima. Anche l'estetica è importante. Architetti di entrambi i tipi usano parole come pulito ed elegante per descrivere i loro sistemi. Cioè, l'architettura non riguarda interamente le decisioni tecniche. Molto di esso circonda giudizi di valore che non puoi davvero esprimere a parole. Ci vogliono anni di esperienza per costruire quel giudizio. A differenza degli architetti edili, che non devono lavorare come falegnami, i migliori architetti di software hanno tutti lavorato a lungo come programmatori per costruire quel senso estetico.

Contenuti