Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Swiss Army Knife

Sicuri che vogliamo costruire un coltellino svizzero? La trappola del "software definitivo"
Sicuri che vogliamo costruire un coltellino svizzero? La trappola del "software definitivo"
Link copiato negli appunti

L'antipattern Swiss Army Knife (coltellino svizzero) è un problema architetturale, frutto del desiderio di creare un componente dai mille usi. Un'espressione tipica di chi sta per incorre in questo antipattern è: "Questo componente sarà estremamente versatile".

Contesto

La realizzazione di un componente è uno dei momenti più importanti nello sviluppo di un software. Rappresentano il cuore di qualsiasi prodotto e una loro corretta progettazione può condizionare il successo dell'applicazione.

I propositi da cui si parte sono sempre lodevoli, le buone intenzioni non mancano, e l'entusiasmo nel progettare l'architettura è sempre una motivazione insostituibile. Si vuole cercare di stupire a tutti i costi, provando a realizzare non un componente qualsiasi, ma "il componente per eccellenza".

In questo modo ci si "tuffa" in una progettazione minuziosa, con l'intenzione di non lasciare nulla al caso. Tuttavia, l'idea di realizzare un componente "tutto fare", spesso sfugge di mano, e i nobili intenti che sono alla base del progetto, diventano fonte di problemi, ed innescano quest'ennesimo antipattern.

Si incorre nello "Swiss Army Knife" quando un team di sviluppo (o l'architetto responsabile) vuole realizzare un componente che possa soddisfare tutti i possibili utilizzi ipotizzabili, col risultato, invece, di produrre un'interfaccia troppo complessa ed articolata, di difficile comprensione.

Cause

Le cause che sono alla base di questo antipattern sono:

  • Assenza di un'adeguata pianificazione
  • Errata convinzione di poter prevedere tutti gli utilizzi del componente
  • Poca esperienza di progettazione
  • Errata pianificazione del lavoro
  • Sintomi

    I dettagli che permettono di individuare questo antipattern sono:

    • Interfaccia articolata e complessa, di non facile comprensione
    • Impossibilità di produrre un'adeguata documentazione
    • Ore di lavoro superiori a quelle preventivate

    Conseguenze

    Le conseguenze a cui porta tale antipattern sono:

    • Ritardi nella consegna
    • Aumento indiscriminato delle funzionalità di un componente
    • Specifiche difficili da comprendere
    • Difficoltà nell'eseguire il testing

    Soluzione

    È possibile adottare degli accorgimenti per evitare quest'antipattern:

    • Stabilire i corretti termini d'uso delle tecnologie disponibili
    • Attenersi agli usi "realistici" del componente
    • Dedicare un'adeguata fase d'analisi alle funzioni da implementare
    • Analizzare e pianificare il comportamento dinamico delle applicazioni che adoperano le interfacce

    Nota

    È inevitabile riscontare una certa similitudine tra questo antipattern ed il Blob, ma è bene sottolineare che quest'ultimo si ottiene in fase d'implementazione del codice e non in fase architetturale. Se è vero che l'antipattern "Swiss Army Knife" è una delle cause alla base di un Blob, non necessariamente, però, le "classi di Dio" nascono da un'errata progettazione architetturale, ma spesso sono frutto di errate valutazioni (concezioni) dello sviluppatore.

    Ti consigliamo anche