Questo forum utilizza i cookies
Questo forum fa uso di cookie per memorizzare le informazioni di login se sei registrato, e la tua ultima visita se non lo sei. I cookie sono brevi documenti di testo memorizzati sul tuo computer; i cookie impostati dal forum possono essere utilizzati solo su questo sito e senza rischi per la sicurezza. I cookie su questo forum possono anche monitorare gli argomenti specifici che hai letto e quando li hai letti. Si prega di confermare se si accettano o si rifiutano le impostazioni di questi cookie.

Un cookie viene memorizzato nel browser indipendentemente dalla scelta agita per evitare che sia ripetuta ancora una volta la domanda. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link a piè di pagina


10 – Riusabilità e comprensibilità del software
#1
Il concetto inerente la riusabilità del software va applicato alla possibilità che un’applicazione non venga sviluppata ex – novo ma impegnando componenti pre – esistenti che verranno successivamente assemblati, magari dopo qualche adeguamento apportato in locale. Possiamo affermare che il concetto sopra esposto è indubbiamente mutuato dai settori dell’ingegneria tradizionale dove il fenomeno del riutilizzo è prassi consueta: nell’ingegneria civile, ad esempio, i prefabbricati vengono riutilizzati nelle costruzioni a basso costo. Il discorso è fattibile anche per le automobili che possono contare su una larghissima varietà di componenti riusabili, dal motore ai pneumatici.

Nonostante si siano fatti passi da gigante, un elevato tasso di riusabilità nel campo del software rimane ancora un obbiettivo da raggiungere, come dimostrano gli investimenti corposi stanziati per la ricerca e sviluppo industriali alfine di produrre un miglioramento delle conoscenze e delle tecnologie legate a questo settore. E’ importante sottolineare che un vasto impiego di componenti riusabili è indicatore di grande maturità industriale del settore, infatti denota quanto da un precedente sviluppo sia possibile capitalizzare in relazione ad un successivo sviluppo.

Ciò è paragonabile alla libreria di componenti riusabili che dovrebbe costituire il magazzino in grado di capitalizzare il Know – how dell’azienda produttrice di software. La condizione di fondo risiede nel fatto che, utilizzando componenti riusabili standard affidabili, gli sviluppi conseguenti possono essere realizzati a costi contenuti e con affidabilità sicuramente maggiore. Senza contare che la malleabilità del software consente, in un’applicazione sviluppata con i componenti sopra descritti,che possa in seguito evolvere come applicativo ancor meglio rifinito e personalizzato tramite manutenzione di tipo perfettiva.

Si osservi che riusabilità e manutenibilità sono concetti alquanto simili, talvolta addirittura indistinguibili. Mantenere un’applicazione significa riusarla per produrne una nuova. Tuttavia i due termini sono spesso impiegati in due contesti tra essi leggermente differenti: il riuso vero e proprio è inerente i singoli componenti mentre la manutenzione è applicata all’intera applicazione, stante che l’attività legata al riuso di un componente non abbisogna di modifiche, e qualora queste vengano effettuate, sono da considerarsi assolutamente marginali al componente. La riusabilità può essere applicata al prodotto e al processo, infatti un processo riusabile, con gli opportuni adeguamenti, seppur lievi, può essere impiegato nella produzione di una nuova applicazione. Per quanto riguarda il concetto di riusabilità, per adesso, è tutto!

La comprensibilità è una qualità intersecata a molte delle peculiarità che andremo ad esaminare: è indispensabile che il software prodotto sia comprensibile, quindi corretto, affinché questi possa in seguito essere sottoposto alle opportune modifiche in grado di garantirne la riusabilità. L’ingegnere progettista deve poter comprendere in estrema chiarezza quali siano i requisiti dell’applicazione prima di adoperarsi al progetto, così come l’architettura progettuale deve essere altrettanto chiara alfine di poter essere correttamente implementata.

Alla regola sopra esposta deve assoggettarsi anche il processo, che deve apparire totalmente chiaro in modo che gli appartenenti al gruppo di lavoro sappiano a quali incombenze e responsabilità debbono far fronte, quali siano i tempi e le risorse preventivate ed infine conoscere l’iter attraverso cui si svolgeranno le fasi attraverso le quali è pianificata l’evoluzione del processo. La comprensibilità di un processo si ottiene attraverso la visibilità e trasparenza del medesimo, in base quindi al comportamento organizzativo e gestionale che debbono improntarsi ad un protocollo che preveda massima chiarezza, alfine di responsabilizzare i componenti della squadra e raggiungere in tal modo gli obbiettivi del processo nella loro totalità.

Uno dei principi fondamentali che facilita alquanto la comprensibilità di un software viene indicato come modularità: dicesi modulare un sistema diviso in parti aventi una sostanziale autonomia individuale, una ridotta interazione con le altre parti e che siano comprese separatamente le une dalle altre. Idealmente si raggiunge il massimo grado di comprensibilità quando i singoli componenti non posseggono alcuna interrelazione: ognuno gravita su se stesso, autonomamente, logicamente separato e compreso separatamente da ogni altro componente. Il principio della modularità trae le sue origini dal moto latino divide et impera, secondo il quale la complessità si riduce esponenzialmente se si scompone in parti. Ad esso è anche strettamente correlato il principio che descrive l’astrazione: ciascun componente del sistema modulare può essere caratterizzato astraendo da alcuni dettagli all’apparenza irrilevanti alfine di comprendere gli altri componenti facenti capo al sistema.

In seguito avremo modo di osservare come questi concetti possano essere applicati in ambito della progettazione del software, quando ci appresteremo a scomporre un sistema in una architettura modulare. In tale ambito l’obbiettivo prefissato sarà quello di definire un’architettura entro la quale possa essere facile comprendere il funzionamento di ciascun modulo indipendentemente dagli altri, in modo tale che possano essere eseguite le opportune modifiche senza impattare con la correttezza del software.


Vai al forum:


Utente(i) che stanno guardando questa discussione: 1 Ospite(i)