Principali task, skill e pattern del Software Architect

13.09.2022
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.

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;
  • 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.

Software Architect: skill e pattern

Per diventare Software Architect è consigliabile una laurea in Informatica (LM-18), Ingegneria Informatica (LM-32) o percorsi affini. 

L’esperienza sul campo fornisce poi un background di conoscenze e competenze tecniche sempre molto apprezzato nel mondo del lavoro informatico. 

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 e 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).

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, più conosciuto come MVC e 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

Benvenuto.