Tutorials - Informatica

 

Le Librerie Software


Il riutilizzo del codice

E' normale che molte applicazioni abbiano in comune le stesse periferiche utilizzate, ad esempio RTC, display intelligenti, termometri, sensori vari.  Oppure impieghino alcune operazioni, come conversioni di formato, calcoli matematici, comunicazioni su bus seriali, ecc.

Il programmatore può scrivere il codice necessario a risolvere il problema contingente, ma quando, in una successiva applicazione, si troverà di nuovo di fronte allo stesso problema, non gli restano che due vie: scrivere nuovamente la procedura, con impegno di tempo e risorse, oppure ri utilizzare quanto scritto in precedenza, risparmiando tempo e fatica.

Questa seconda soluzione è quella che i programmatori hanno da sempre utilizzato: scrivere sezioni di codice, modelli, funzioni e procedure in modo tale da poterle riutilizzare con facilità in momenti successivi. Tra l' altro, il riutilizzo del software è un' area di attività riconosciuta nello studio di ingegneria del software.

Il riutilizzo del codice si basa sulla semplice considerazione che una sezione di un programma, spesso un driver o una procedura, scritto una sola volta può essere (e deve) essere ri utilizzabile: questo fa risparmiare tempo ed energia, riducendo il lavoro ridondante. 

Quanto alle motivazioni che dovrebbero spingere qualsiasi programmatore a pensare il suo software, per quanto possibile, in modo strutturato e riutilizzabile, e, sopratutto, a non lasciarsi tentare di "buttare giù" linee e linee ex novo per ogni applicazione sono:

  • Funzionalità - perchè rifare il già fatto? Molto meglio realizzare un tratto di programma che si potrà riutilizzare in infinite altre situazioni che non riscrivere ogni volta le stesse soluzioni, con in più il rischio di commettere errori.
     
  • Sicurezza - una procedura che è stata già testata e ottimizzata non richiederà tempo per il suo debug. Potrà essere utilizzata con sicurezza e lascerà tempo per concentrarsi su nuovi problemi
     
  • Chiarezza - l' uso di librerie rende molto più chiara la struttura del programma, in quanto, invece che decine o centinaia di linee di codice, nel sorgente si incontrano richiami alle funzioni della libreria, di cui si conosce la funzione.
     
  • Condivisione - il lavoro effettuato da un programmatore, ad esempio per scriver un driver efficace per una periferica, potrà essere condiviso con altri che hanno lo stesso problema.
  • Pianificazione - una squadra lavora sicuramente in modo efficace su una buona struttura che non su un disordine anarchico

In alcuni casi il "riutilizzo" del codice comporta la copia semplicemente tutto o in parte il codice da un programma esistente in uno nuovo, ma è probabile che nella procedura siano presenti variabili specifiche che occorre modificare a seconda dell' applicazione. Stendendo il codice in una forma tale da poter essere, per quanto possibile. "universalizzato" o personalizzato al momento dell' uso, si ottiene un modulo "prefabbricato" che potrà essere inserito nel nuovo programma senza sforzo. 

Certamente la necessità di rende quanto più possibile "universale"  il software nel suo riutilizzo solitamente ne rende più complessa la scrittura nella stesura base, ma solitamente questo impegno si ripaga da sè già al primo riutilizzo.

Alcune caratteristiche che rendono il software più facilmente riutilizzabili sono modularità, accoppiamento lasco, un' alta coesione e la separazione dei problemi. 
Ma, sopra ogni cosa, la chiave del riutilizzo è la presenza di una documentazione esauriente ed efficace che permetta il riutilizzo dei moduli senza la necessità di andare a capire cosa e come stanno eseguendo quel dato compito.


Una libreria software è un buon esempio di riutilizzo del codice.

Una libreria è una raccolta, un insieme di risorse software, che possono contenere subroutine e macro, tipi, valori, classi, ecc. 

Dato che si tratta di raccolte di sezioni di codice, le librerie possono essere realizzate per qualsiasi linguaggio, dall' Assembly in su, e anche per applicazioni molto specifiche.

I linguaggi standard dispongono di librerie proprie, contenenti le più varie funzioni, solitamente divise per ordine di applicazione o rapporto con un particolare dispositivo o classe di periferiche.
Siccome l' area delle applicazione è enormemente vasta ed è impossibile per le librerie standard coprirla, tutti i linguaggi fanno si che i programmatori possano anche creare le proprie librerie personalizzate. Essi possono decidere di creare astrazioni interne, in modo che alcune parti del loro programma possano essere riutilizzati, oppure possono creare librerie personalizzate per uso proprio.

Siccome le librerie tendono a contenere codice o dati che devono fornire servizi a programmi differenti, si prestano alla condivisone e alla modifica del contenuto in maniera modulare e facilitano la distribuzione del codice e dati.  Gli autori di nuovi programmi possono utilizzare il codice in una libreria software esistente per eseguire l'attività richiesta, invece di "reinventare ogni volta la ruota", scrivendo codice completamente nuovo direttamente in un programma per eseguire quell'operazione.

Le implementazioni delle libreria spesso hanno il vantaggio di essere soluzione per situazioni comuni, ma anche per casi insoliti o arcani, collaudati e debuggati e che quindi evitano lunghe ore di lavoro. 

Ovviamente la libreria, per essere fruita in modo efficace, richiede che sia disponibile una documentazione tale da fornire all' utente tutte le informazioni necessarie per un uso facile e coerente.

Se questo manca, il tempo e il costo di acquisizione di apprendimento rende la libreria poco utilizzabile.

Inoltre, la documentazione adeguata consente la configurazione personalizzata di parti della libreria,  modificando particolari che possono influire sulle prestazioni o l'output desiderato dall' utente per quella particolare applicazione. 


E per i microcontroller ?

Dato che trattiamo specificamente l' ambito dei microcontroller, è opportuno accennare al fatto che, per i principali prodotti, tra cui i PIC di Microchip, sono reperibili in rete numerosissime fonti di librerie e raccolte di parti di codice di ogni genere, che vanno dalle semplici macro per creare pseudo opcodes che permettano una più facile programmazione Assembly nell' ambiente RISC dotato di un numero ridotto di istruzione, alle funzioni matematiche a virgola mobile e per ogni altro genere di applicazione, anche molto specifica. Ovviamente sono disponibili, oltre a quelle presenti nel pakgage del linguaggio, anche librerie per il C, il BASIC, ecc.

Alcuni link tra i tantissimi disponibili:

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 29/10/11.