Nella prima parte della guida abbiamo analizzato gli antipattern del project management, descrivendo i
più frequenti e pericolosi nemici della comunicazione. In questa seconda parte analizzeremo invece gli antipattern che si nascondono dietro gli aspetti architetturali del progetto software.
Nonostante lo scopo di questa guida non sia analizzarne i diversi aspetti, è bene soffermarci una attimo su cosa voglia dire architettura del software (dando una breve e veloce descrizione).
L'ANSIIEEE Std 1471-2000 fornisce la seguente definizione:
«L'architettura del software è l'organizzazione basilare di un sistema, rappresentato dalle sue componenti, dalle relazioni che esistono tra di loro e con l'ambiente circostante, e dai principi che governano la sua progettazione ed evoluzione.»
Per componente software s'intende qualsiasi entità che fa parte si un sistema, dal semplice modulo (es. classe) fino ai sottoinsiemi più complessi (es. DBMS).
Lo scopo principale è quello di scomporre il sistema in sottoinsiemi: la realizzazione di singoli componenti è più semplice della realizzazione di un unico sistema. Ovviamente vi sono molti altri motivi che rendono importante lavorare ad una buona architettura del software, eccone alcuni:
- Interoperabilità e portabilità
- Riuso
- Prestazioni
- Sicurezza
- Modificabilità
- Rilascio incrementale
Un architettura può essere descritta con UML e l'ausilio delle viste. Una vista non è altro che una visione dell'architettura secondo uno specifico criterio. Possiamo avere quattro diversi tipi differenti di viste:
- Use case view: si riferisce a come gli utenti e sviluppatori vedono il sistema
- Logical view: si riferisce alle classi e alle interfacce. Questa vista è strettamente legata ai requisiti funzionali del sistema
- Process view: rappresenta le attività del sistema
- Implementation view: rappresenta le problematiche di implementazione e configurazione
- Deployment view: si riferisce ai componenti hardware che ospiteranno il sistema
La fase di studio architetturale è una fase che spesso viene trascurata nello sviluppo di un software, tale mancanza causa ritardi di consegna, aumento dei costi, fallimento degli obiettivi prefissati, ma anche la perdita di tutti quei vantaggi che l'analisi comporta.
Questo step non implica solo uno scambio d'idee, ma anche l'adozione di soluzioni migliori, nonché l'individuazione di quelle scelte che possono rivelarsi critiche o errate. Il valore dell'analisi è proprio questo: un corretto studio architetturale permette di evitare l'introduzione di scelte inefficienti ovvero antipattern.
È bene notare, quindi, come la figura di un architetto del software sia di fondamentale importanza e non un optional, dalle sue scelte può dipendere il buon esito del progetto e la giusta ottimizzazione delle risorse a disposizione.
Iniziamo dunque la nostra analisi sugli antipattern più comuni legati alla fase architetturale. Anche in
questo caso abbiamo deciso di offrire una panoramica sui più popolari e significativi software architecture antipattern.