L’Importanza della Progettazione del Software

“Senza requisiti o design, la programmazione è l’arte di aggiungere bug a un file di testo vuoto”
Louise Srygley
Salve “Developers!, Developers!, Developers!” (cit. Ballmer)
Sto notando una tendenza in cui la maggior parte degli sviluppatori tende a passare direttamente alla scrittura del codice, il che è abbastanza ovvio perché è ciò che ci è stato insegnato: scrivere codice. Questo è successo un po’ a tutti, anche a me, durante i miei progetti iniziali, sono sempre passato direttamente al codice. E non ho mai capito l’importanza del design perché tutti quei progetti erano piccoli e sviluppati solo da me. Proprio per la loro natura non ho mai riscontrato alcun problema durante la modifica del software o la manutenzione. Quando ho iniziato a lavorare su un progetto su larga scala che richiedeva la collaborazione di molti sviluppatori e aveva un’implementazione molto complessa, ho iniziato a rendermi conto dell’importanza della “progettazione del software”.
Cos’è la progettazione del software?
La progettazione del software è il processo di definizione dei metodi, delle funzioni, degli oggetti e della struttura e le interazione complessive del codice in modo che la funzionalità risultante soddisfi i requisiti dell’utente.
È il metodo per creare una rappresentazione dei componenti e dei loro comportamenti completi prima di implementare il software vero e proprio.
È necessario seguire i principi di progettazione, che ti porteranno a sviluppare un software più robusto, manutenibile e flessibile.
Ora potresti pensare: “Non ho mai usato la progettazione ma ho sviluppato molti software e indovina un po? funzionano!“.
Bene, congratulazioni, ma lo sviluppo non riguarda solo la creazione del software. È necessario modificarlo regolarmente e mantenerlo per un lungo periodo di tempo.
Quindi permettimi di farti le seguenti domande, per favore dedica un minuto e prova a rispondere.
- Quanto è stato facile apportare modifiche al codice?
- Una piccola modifica al codice ha prodotto un effetto a catena per le modifiche in altre parti del codice?
- Il tuo codice è stato difficile da riutilizzare?
- Il software è stato difficile da mantenere dopo un rilascio?
- Avevano un buon design? Il design poteva essere fatto meglio?
- Hai avuto difficolta a condividere il codice con i membri del team?
Se hai risposto sì a una di queste domande, è probabile che potresti trarre vantaggio da una migliore progettazione del software. Un buon design non riguarda solo il codice. Si tratta di essere in grado di esprimere idee per il tuo software con altri sviluppatori, altri team e i tuoi clienti. Avere un design ben congegnato rende il tuo software più facile da implementare, riduce la necessità di modifiche importanti in seguito e ti evita mal di testa su tutta la linea.
Che tu sia un nuovo sviluppatore che cerca di espandere le tue conoscenze o un esperto, la conoscenza dell’architettura di progettazione del software aiuterà il tuo software a diventare flessibile, riutilizzabile e gestibile.
Potresti pensare a come puoi progettare software. Bene, ci sono vari modi che possono essere usati per progettare software. Il metodo più utilizzato sono i diagrammi UML, le schede CRC, i mockup, ecc.
La progettazione del software può essere riassunta in due fasi principali:
Design concettuale
Design tecnico
Design concettuale
Nella progettazione concettuale, potresti essere interessato a mettere insieme parti di software in modo non tecnico. Ad esempio, potresti voler elencare tutti i componenti e il loro comportamento, creare alcuni wireframe, diagrammi di flusso, ecc. Quindi, nella progettazione concettuale, ci concentriamo sulla rappresentazione del software in modo non tecnico.
Permettimi un consiglio, il tempo investito in questa fase è quello meglio investito, non sottovalutarlo.
I metodi comuni utilizzati per i progetti concettuali sono:
Wireframe
Mockup e diagramma di flusso
Diagrammi dei componenti
Schede Class-Responsibility-Collaboration (CRC).
Design tecnico
Dopo aver completato il progetto concettuale, ora potresti pensare agli elementi tecnici. Ora potresti farti domande come:
Come verrà implementato?
Come interagirà con il server / database?
Come interagirà con altri moduli?
Avrò dei requirements/vincoli da rispettare?
Tutte queste domande trovano risposta nella fase di progettazione tecnica. Nella progettazione tecnica, ti occupi fondamentalmente di come viene eseguita l’implementazione.
I metodi comuni di progettazione tecnica sono:
Diagrammi di classe
Diagramma delle attività
Diagramma di sequenza
Diagramma di stato
Vantaggi di una buona progettazione del software
Perché imparare a progettare software?
Potreste pensare: “perché questo lavoro extra? Perché la progettazione del software è così importante? “
Sarai sopraffatto quando capirai l’importanza di una buona progettazione del software.
Uno dei vantaggi più importanti di una buona progettazione del software è che puoi facilmente modificare il tuo software. Come forse già saprai
“L’unica costante nello sviluppo del software è il CAMBIAMENTO“.
Un software progettato meglio è più flessibile. Quindi, è possibile aggiungere un nuovo componente al software esistente senza influire sul software esistente.
Un software ben progettato aumenta la riusabilità. Perché se segui rigorosamente i modelli di progettazione, il tuo software sarà più modulare, ad es. costituito da piccoli componenti che svolgono un solo compito, otterrai che questi piccoli componenti potranno essere riutilizzati facilmente.
Facile da capire. È sempre stato un grattacapo spiegare i progetti ai nuovi assunti / membri del team. Ma se hai una buona progettazione e documentazione, puoi facilmente comunicare l’idea del software al tuo nuovo membro del team.
L’efficienza in termini di costi aumenta. Potresti pensare in che modo la progettazione può influire sul costo del software. Per capirlo, considera una situazione in cui tu e il tuo team avete iniziato a creare software sulla base di alcuni presupposti, ma dopo aver sviluppato il 50% del software, ti rendi conto di aver incontrato un vicolo cieco e non puoi andare avanti con quell’ ipotesi. Ora dovrai ripartire da capo con il software, il che sarebbe sicuramente molto costoso. Quindi, se ti fossi concentrato prima sul design concettuale, avresti potuto capire prima il vicolo cieco e risparmiare un sacco di tempo, forza lavoro e denaro. Ricorda sempre: “La progettazione è molto più efficiente in termini di costi rispetto allo sviluppo“
Questo è tutto per questo post, credo (ti auguro) che ora penserai prima alla progettazione piuttosto che saltare direttamente alla console di sviluppo. Ci vorrà del tempo e del duro lavoro, ma alla fine sarà sicuramente ripagato e ridurrà tutti i tipi di rischi con il software. Se non mi credi, fai un piccolo progetto e prova a “disegnarlo” e poi a svilupparlo!