Le metriche per il software orientato agli oggetti

Le metriche per il software orientato agli oggetti

Le metriche di ogni prodotto ingegneristico (ingegneria del software) dipendono dalla natura specifica del prodotto. Non avrebbe senso, ad esempio, misurare il consumo in chilometri per litro di benzina per un veicolo elettrico: questa metrica è fondata per vetture a motore a scoppio, ma è inapplicabile se muta il tipo di propulsione.

Il software orientato agli oggetti è sostanzialmente diverso da quello tradizionale; per questo motivo le metriche devono essere adeguate alle sue caratteristiche specifiche.

La realizzazione di software orientato agli oggetti è stata un’attività di ingegneria che si basava più sulla saggezza collettiva, sulle tradizioni e su indicazioni qualitative piuttosto che su valutazioni quantitative. Sono state pertanto introdotte delle metriche orientate agli oggetti che aiutassero gli ingegneri del software a utilizzare metodi di analisi quantitativa per stabilire la qualità del prodotto prima di realizzare il sistema. Le metriche orientate agli oggetti si concentrano sulla classe, l’elemento fondamentale della programmazione orientata agli oggetti.

 Berard nel 1995 individua cinque caratteristiche per le metriche per i software Object Oriented (OO):

  1. Localizzazione
  2. Incapsulamento
  3. Information hiding
  4. Ereditarietà
  5. Astrazione

Le metriche per il software orientato agli oggetti

Localizzazione

La localizzazione indica in che modo le informazioni sono concentrate in un programma. Ad esempio, i metodi tradizionali di scomposizione funzionale localizzano le informazioni intorno alle funzioni, tipicamente implementate come moduli procedurali. I metodi pilotati dai dati localizzano le informazioni intorno a specifiche strutture dati. In un contesto orientato agli oggetti, le informazioni sono concentrate incapsulando dati e funzioni in una classe .

Poiché la classe è l’unità di base di un sistema orientato agli oggetti, la localizzazione si basa sugli oggetti. Di conseguenza, le metriche dovrebbero applicarsi alla classe, vista come entità unitaria. Inoltre, la relazione fra operazioni (funzioni) e classi non è necessariamente uno-a-uno; perciò, per riflettere il modo in cui le classi collaborano, una metrica deve poter trattare relazioni di tipo uno-a-molti e molti-a-uno.

Incapsulamento

Berard definisce l’incapsulamento come “il confezionare (o raggruppare) una collezione di elementi. Esempi di incapsulamento a basso livello (per il software tradizionale) comprendono i record e gli array; i sottoprogrammi (ad esempio procedure, funzioni e subroutine) sono meccanismi di incapsulamento a livello intermedio”.

Nei sistemi orientati agli oggetti, l’incapsulamento abbraccia le responsabilità in una classe, compresi i suoi attributi (e le classi per gli oggetti aggregati), le sue operazioni e i suoi stati, definiti dai valori degli attributi. L’incapsulamento incide sulle metriche spostando l’accento delle misure dal modulo singolo al “package” di dati (attributi) e unità procedurali (operazioni). L’incapsulamento incoraggia la misurazione a un livello più alto di astrazione.

Information hiding

L’information hiding cela i dettagli operazionali di un componente di programma. Gli altri componenti che devono accedervi vedono solo le informazioni indispensabili. Un sistema orientato agli oggetti ben progettato deve incoraggiare l’information hiding; di conseguenza, una metrica in grado di quantificare il grado di information hiding è un indice di qualità della progettazione.

Ereditarietà

L’eredità è il meccanismo che permette di propagare ad altri classi le responsabilità di una data classe. Essa è presente a tutti i livelli della gerarchia delle classi. In genere il software tradizionale non offre questa caratteristica.

Essendo un elemento chiave della programmazione ad oggetti l’ereditarietà è l’obbiettivo di molte metriche. Ad esempio il numero di figli (numero di specializzazione diretta di una classe), il numero di genitori (numero di generalizzazioni immediate) sono metriche che hanno l’obiettivo di valutare l’uso dell’ereditarietà in un progetto OO.

Astrazione

L’astrazione è il meccanismo che permette al progettista di concentrarsi sugli aspetti essenziali di un componente senza preoccuparsi dei dettagli di basso livello.  La classe è un’astrazione osservabile a diversi livelli di dettaglio e in diversi modi, ad esempio come elenco di operazioni, come sequenza di stati o come insieme di collaborazioni; le metriche orientate agli oggetti rappresentano l’astrazione in termini di misure su una classe (ad esempio il numero di istanze per classe e per applicazione, il numero di classi parametrizzate per applicazione, il rapporto tra le classi parametrizzate e classi non parametrizzate).

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *