L'architettura object oriented di un sistema software così come per il DisegnoObjectOrientedviene fatto a partire da:
una lista di requisiti funzionali che il sistema deve soddisfare
una lista di requisiti non funzionali che descrivono la qualità attesa del sistema nel suo insieme, suddivisi in cinque categorie principali (ogniuna suddivisa in sottoattributi ogniuno dei quali espresso con metriche per le quali va definito un intervallo di accettabilità):
affidabilità e sicurezza
usabilità
efficienza
manutenibilità
portabilità, interoperabilità, accessibilità
vincoli di tempo di realizzazione a cui il sistema deve sottostare (sforzo necessario e data di clendario di )
vincoli di costo
altri eventuali vincoli
vincoli legistaliti e normativi
vincoli di interazione con altri sistemi software estenti
...
ma a confronto del DisegnoObjectOriented hanno maggiore rilevanza i requisiti non funzionali ed i vincoli.
Anche per il resto l'architettura è simile al disegno e così i compiti dell'architetto, ciò che cambia è il focus.
Il compito dell'architetto
I compiti di un architetto software sono questi:
individuare i componenti del sistema che sono più importanti per il successo del progetto e quindi per la implementazione delle funzionalità richieste con la qualità attesa, entro i vincoli (tempi, costi, ...) fissati, per soddisfare i bisogni che hanno portato a commissionare lo sviluppo del software
assicurarsi che tutto il team abbia una comprensione chiara e condivisa di questi compomenti e del loro disegno
contribuire a disegnare questi componenti
tenere sotto controllo le questioni più importanti, risolverle prima che diventino problemi seri e cogliere le opportunità per effettuare i cambiamenti che portano maggiore beneficio
individuare le scelte di disegno irreversibili (quelle il cui costo del cambiamento è maggiore), posticiparle (e quindi beneficiare dei feedback, della maggiore comprensione ed esperienza del sistema maturata nel frattempo) all'ultimo momento responsabile utilizzando il disegno, l'esperienza, l'organizzazione e l'immaginazione per rendere la scelta reversibile
contribuire agli studi di fattibilità e alla raccolta requisiti comunicando con linguaggio non tecnico le conseguenze tecniche e in termini di tempo e costi delle diverse scelte possibili e le coseguenze delle varie idee espresse
avere sempre chiara la quantita minima di disegno necessaria per il successo del sistema, la massima semplicità applicabile e i punti del sistema che hanno bisogno di ulteriore disegno
contribuire alla crescita del team aumentando la sua capacità di contribuire all'architettura del sistema.
Il risultato del lavoro di un architetto è il disegno delle parti più importanti del sistema che sia il più semplice possibile, noto e comprensibile al team, con il minor numero di scelte di disegno irreversibili effettuate con il maggior numero di informazioni a disposizione e col massimo beneficio, evitando disegno e complessità inutili. Oltre a ciò contribuisce alla crescita del team e alla raccolta dei requisiti.
Quando l'infrastruttura fa parte dell'architettura?