Summaries
University notes in Markdown format from Obsidian.
Riutilizzo del software
download Download MDI sistemi sono spesso progettati componendo componenti esistenti che sono stati utilizzati in altri sistemi.
Il riutilizzo sistematico del software può ottenere un software migliore, più rapidamente e a costi inferiori.
Il riuso si può applicare ad ogni livello del software:
- Riutilizzo del sistema applicativo: l'intero sistema applicativo può essere riutilizzato incorporandolo senza modifiche in altri sistemi (riutilizzo COTS) o sviluppando famiglie applicative;
- Riutilizzo dei componenti: i componenti di un'applicazione dai sottosistemi ai singoli oggetti possono essere riutilizzati;
- Riutilizzo di oggetti e funzioni: i componenti software che implementano un singolo oggetto o funzione ben definiti possono essere riutilizzati.
Ci sono modi diversi per applicare il riuso, di fatto lo sviluppo del software è basato sul riuso.
Il riutilizzo è possibile a vari livelli, da semplici funzioni a sistemi applicativi completi.
Approcci al riuso

- Modelli di progettazione: le astrazioni generiche che si verificano tra le applicazioni sono rappresentate come modelli di progettazione che mostrano oggetti e interazioni astratti e concreti;
- Sviluppo basato su componenti: i sistemi vengono sviluppati integrando componenti (raccolte di oggetti) conformi agli standard dei modelli dei componenti;
- Framework applicativi: raccolte di classi astratte e concrete che possono essere adattate ed estese per creare sistemi applicativi;
- Wrapping del sistema legacy: sistemi legacy che possono essere "avvolti" definendo un insieme di interfacce e fornendo accesso a questi sistemi legacy attraverso queste interfacce;
- Sistemi orientati ai servizi: i sistemi sono sviluppati collegando servizi condivisi che possono essere forniti esternamente;
- Linee di prodotti applicativi: un tipo di applicazione è generalizzato attorno a un'architettura comune in modo che possa essere adattato in modi diversi per i diversi clienti;
- Integrazione COTS: i sistemi vengono sviluppati integrando sistemi applicativi esistenti;
- Applicazioni verticali configurabili: un sistema generico è progettato in modo da poter essere configurato in base alle esigenze dei clienti del sistema specifico;
- Librerie di programmi: sono disponibili per il riutilizzo librerie di classi e funzioni che implementano le astrazioni di uso comune;
- Generatori di programmi: un sistema generatore incorpora la conoscenza di un particolare tipo di applicazione e può generare sistemi o frammenti di sistema in quel dominio;
- Sviluppo software orientato all'aspetto: i componenti condivisi vengono intrecciati in un'applicazione in punti diversi quando il programma viene compilato.
Design pattern
Un modello di progettazione è un modo per riutilizzare la conoscenza astratta di un problema e della sua soluzione. Un modello è una descrizione del problema e l'essenza della sua soluzione. Dovrebbe essere sufficientemente astratto da essere riutilizzato in contesti diversi. I modelli si basano spesso su caratteristiche dell'oggetto come l'ereditarietà e il polimorfismo.
Riutilizzo dei prodotti COTS
Detto anche COTS - Commercial Off-The-Shelf systems, i sistemi COTS sono generalmente sistemi applicativi completi che offrono un'API (Application Programming Interface). La realizzazione di grandi sistemi integrando i sistemi COTS è ora una strategia di sviluppo praticabile per alcuni tipi di sistemi come i sistemi di e-commerce. Il vantaggio principale è lo sviluppo più rapido delle applicazioni e, di solito, costi di sviluppo inferiori.
Problemi di integrazione del sistema COTS
- Mancanza di controllo su funzionalità e prestazioni: i sistemi COTS possono essere meno efficaci di quanto sembri;
- Problemi con l'interoperabilità del sistema COTS: diversi sistemi COTS possono fare ipotesi diverse, il che significa che l'integrazione è difficile;
- Nessun controllo sull'evoluzione del sistema: i fornitori COTS, non gli utenti del sistema, controllano l'evoluzione;
- Supporto dai fornitori COTS: i fornitori COTS potrebbero non offrire supporto per tutta la durata del prodotto.
Molto spesso un sistema già pronto non è sempre una buona cosa, infatti può prendere strade differenti oppure non essere più aggiornato per perdita di interesse.
Linee di prodotti software
Le linee di prodotti software o le famiglie di applicazioni sono applicazioni con funzionalità generiche: possono essere adattate e configurate.
L'adattamento può comportare: configurazione dei componenti e del sistema, aggiunta di nuovi componenti al sistema, selezione da una libreria di componenti esistenti e modifica dei componenti per soddisfare nuovi requisiti.
Sistemi ERP
Un sistema ERP (Enterprise Resource Planning) è un sistema generico che supporta processi aziendali comuni come ordini e fatturazione, produzione, ecc.
Sono molto utilizzati nelle grandi aziende: rappresentano probabilmente la forma più comune di riutilizzo del software.
Il nucleo generico viene adattato includendo moduli e incorporando la conoscenza dei processi e delle regole aziendali.