Principali task, skill e pattern del Software Architect
Software Architect: chi è e di cosa si occupa
Il Software Architect è la figura professionale specializzata nella progettazione delle funzioni e delle specifiche di differenti tipologie di software1. Fra i suoi principali compiti vi è lo studio e la progettazione di soluzioni che soddisfino le esigenze aziendali.
Il Software Architect, quindi, definisce le specifiche che i programmi devono avere e realizza il disegno logico dei singoli componenti del software. Egli solitamente cerca di progettare software semplici, fruibili, di facile manutenzione e scalabili (cioè, in grado di gestire volumi crescenti di elaborazione)2.
Nel contesto attuale, il Software Architect opera sempre più spesso su architetture distribuite e cloud-native, progettando sistemi scalabili, resilienti e orientati ai servizi.
Fra i principali compiti del Software Architect vi sono:
- Analizzare e interpretare le necessità esplicite e latenti dell’azienda;
- Elaborare e formalizzare proposte di miglioramento dell’architettura dei software aziendali;
- Valutare la fattibilità delle soluzioni IT dal punto di vista tecnologico ed economico;
- Definire gli aspetti del ciclo di sviluppo del software e della tecnologia in base agli standard richiesti;
- Disegnare l’architettura dei nuovi sistemi, definendo la struttura delle componenti software e le loro modalità di comunicazione in contesti distribuiti;
- Correggere eventuali problematiche legate ai software.
Fra i suoi compiti possono rientrare anche la progettazione di software complessi e l’esecuzione di testing del software (altrimenti delegata a figure specifiche come quella del Software Tester). Nel mondo software vengono di frequente utilizzate la CI (Continuous Integration) e la CD (Continuous Delivery). La prima consiste in un metodo di sviluppo software che permette di individuare e risolvere i bug con maggiore rapidità e migliorare la qualità del software. La seconda consente di automatizzare il testing anche oltre gli unit test, in modo da verificare il corretto funzionamento degli aggiornamenti prima della loro messa a disposizione.
Queste pratiche sono oggi strettamente integrate con metodologie DevOps e con ambienti cloud, permettendo rilasci frequenti, controllati e affidabili.
Software Architect: skill e pattern
Per diventare Software Architect è consigliabile una laurea in Informatica, Ingegneria Informatica o percorsi affini.
L’esperienza sul campo fornisce poi un background di conoscenze e competenze tecniche sempre molto apprezzato nel mondo del lavoro informatico.
Oltre alle competenze di progettazione tradizionali, il Software Architect deve possedere una visione sistemica dell’intero ecosistema applicativo, valutando costantemente compromessi tra prestazioni, sicurezza, scalabilità e costi. Fra le sue principali hard skill possiamo ritrovare:
- Conoscenza dei più diffusi linguaggi di programmazione;
- Conoscenza approfondita delle architetture dei sistemi ICT e del mercato ICT, conoscenze in ambito networking;
- Conoscenze di base di economia aziendale;
- Abilità di applicazione di metodologie nuove che ottimizzino i sistemi informativi;
- Abilità nell’utilizzo di tool che favoriscano la collaborazione, il controllo del sistema e la misurazione delle prestazioni (tra cui, Apache Maven, Jenkins e Docker).
Può, inoltre, essere utile possedere conoscenze di Cyber Security e Data Analysis.
Durante lo svolgimento delle proprie attività, il Software Architect può avvalersi del supporto di alcuni pattern, cioè modelli logici utilizzabili per risolvere eventuali problemi che si possono incontrare durante la progettazione e lo sviluppo di un software. Fra i pattern architetturali maggiormente utilizzati dal Software Architect vi sono3:
- Layers, organizzato a livelli di cui i più utilizzati sono quelli di presentazione, di business, di persistenza e di database;
- Client-server, composto da due parti (client e server);
- Master-slave, utilizzato generalmente nei sistemi che richiedono computazioni significative;
- Peer-to-peer che prevede la presenza di entità considerate uguali e che possono agire alternativamente da client o da server;
- Event sourcing è uno dei pattern utilizzati nei sistemi che utilizzano gli eventi;
- Model-View-Controller (MVC), utilizzato in particolare nelle applicazioni e nei framework web;
- Interpreter, utilizzato soprattutto quando il programma deve interpretare un altro programma scritto con un linguaggio particolare, come SQL o di database query;
- Pipes and Filter;
- Blackboard;
- Broker.
Infine, tra le soft skill che il Software Architect possiede ritroviamo:
- Capacità analitica;
- Capacità organizzativa;
- Capacità di gestire lo stress;
- Capacità di governare il cambiamento tramite le tecnologie;
- Doti comunicative e relazionali;
- Abilità coordinative e gestionali;
- Propensione alla collaborazione;
- Orientamento alla formazione continua;
- Proattività e problem solving.
Fonti
1.Software architect, atlantedelleprofessioni.it
2.Architettura software: introduzione, importanza e compiti di un sw architect, italiancorders.it
3.10 Common Software Architectural Patterns in a nutshell, towardsdatascience.com