Questo varia da persona a persona, ma ecco una domanda per voi. Siete assolutamente certi di sapere cos'è un sistema? Potete identificare un sistema, qualsiasi sistema, e identificarne gli esatti confini? Il sito Quora è un sistema? Sei sicuro di saperlo? Quali sono i suoi confini esatti?
Per me, rispondere a queste domande è dove inizia l'architettura del software.
C'è un libro che ha alcuni capitoli sui fondamenti dell'analisi dei sistemi. È l'unico che ho visto. È un libro vecchio, ma i principi di base di ciò che sono i sistemi non cambiano.
Senza queste basi, l'architettura del software non ha senso per me. La gente fa sempre cose senza legami saldi con i principi di base, quindi dipende da voi. Per le basi che ho appena menzionato, "Modern Systems Analysys", di Ed Yourdon. La maggior parte del libro è dedicata allo studio dei diagrammi di flusso dei dati. Quell'argomento in quel libro dovrebbe essere ignorato e rifiutato come inutile e un cattivo uso del tempo. I capitoli sulle basi dei sistemi sono quasi impagabili.
Vuoi sapere i confini esatti del sistema Quora? Ve lo dico io, e sarete voi a giudicare la sua correttezza. I confini esatti possono essere determinati solo da definizioni arbitrarie. Forse questa schermata sul mio telefono fa parte di Quora, forse no, dipende da dove si vuole tracciare la linea. Tuttavia, anche se i confini esatti sono arbitrari, sono importanti, perché dove metti il confine influisce su come gestisci il tuo sforzo nel tuo lavoro con il sistema. Suona bene?
Ed fornisce una lista di cose che è bene sapere sui sistemi. Il fatto che i confini siano arbitrari è una voce. Quella lista è grande. Aiuta molto sapere che i sistemi crescono. Questo è un altro punto della lista.
Argomento bonus: assicuratevi di sapere abbastanza sul software orientato agli oggetti da sapere perché è buono e anche perché il software non orientato agli oggetti è altrettanto buono. Dovrete litigare con la saggezza convenzionale per questo, e affrontare i fanatici.
BONUS 2: Per capire l'architettura dei dati, scrivete programmi che usano sql. Sql è il linguaggio dei dati, non c'è modo più efficace di comprendere i dati e la loro struttura che immergersi in sql per realizzare le cose di cui avete bisogno. Tutti gli altri costrutti di dati sono complicazioni.
BONUS 3: capire i file system e il ruolo che giocano nel software.
BONUS 4: sapere cos'è una rete.
BONUS 5: tutto il software è fatto con file che contengono comandi per leggere e scrivere dati e altri file che sono accessibili su una rete. Una volta che siete pratici di questo concetto, tutta la roba dell'architettura è molto più facile da capire.
BONUS 6: l'architettura del software richiede un minuto e poi avete finito. Far funzionare i sistemi indipendentemente dall'architettura è dove il tempo se ne va.
Divertitevi a leggere.