Specifica (ingegneria del software)

Il termine specifica, nell'ingegneria del software, viene usato in diversi contesti con significati diversi. In genere si può definire come un accordo tra un produttore di servizi ed un utente. A seconda del contesto il produttore e l'utente saranno diversi.

Il termine specifica, nell'ingegneria del software, viene usato in diversi contesti con significati diversi. In genere si può definire come un accordo tra un produttore di servizi ed un utente. A seconda del contesto il produttore e l'utente saranno diversi.

Specifica dei requisiti

Si avrà una specifica dei requisiti tra sviluppatore e committente o utente finale, una specifica di progetto tra progettista e implementatore e una specifica di modulo tra i programmatori che hanno prodotto il modulo e programmatore che lo integra.

La Specifica dei Requisiti è usata per

Definire le necessità dell'utente

Definire le caratteristiche del sistema implementato

Comprendere il sistema nelle attività di manutenzione

La fase di specifica dei requisiti è molto critica, se i requisiti non prendono in esame alcuni aspetti il progetto rischierebbe degli inutili ritardi e inevitabili manutenzioni.

Per questo motivo è necessario effettuare la validazione della specifica, ossia sottoporla alla approvazione dell'utente.

Non esiste un unico modo di scrivere una specifica

Dipende dalla tipologia del sistema

Dipende dal livello di formalità

Dipende dallo stile di specifica che si vuole adottare

Caratteristiche della specifica

Una specifica deve essere

Chiara, precisa e comprensibile

Coerente

Completa

Chiarezza

L'uso della lingua naturale (come l'italiano, l'inglese, ...) fa sì che spesso le qualità di chiarezza, precisione e comprensibilità non siano presenti.

Tipicamente c'è la tendenza ad essere imprecisi.

L'uso di tecniche formali consente di scoprire le ambiguità.

Ci sono formule diverse che definiscono lo stesso comportamento informale.

Coerenza

La coerenza è l'assenza di contraddizioni.

Più il sistema è complesso più è facile che vi siano delle inconsistenze.

L'uso di tecniche formali può permettere l'individuazione di inconsistenze.

Completezza

La completezza riguarda la presenza di tutte le informazioni necessarie ad una corretta comprensione. Vi sono due tipi di completezza:

Interna

Rispetto ai requisiti

Una specifica è internamente completa se definisce tutti i concetti di cui fa uso e si può ottenere mediante l'uso di glossari.

La completezza rispetto ai requisiti richiede che tutti gli aspetti siano definiti.

Se il sistema è complesso un approccio incrementale può essere utile.

Linguaggi di specifica

Le specifiche possono essere poste in maniera formale o in maniera informale.

Le specifiche informali fanno uso di linguaggio naturale per descrivere i requisiti. Possono essere utilizzati diagrammi e tabelle per aumentare le informazioni. La sintassi e la semantica non sono formalmente definite.

Le specifiche formali usano linguaggi che hanno sintassi e semantica definite in modo formale e sono usate principalmente per sistemi safety-critical. Consentono animazione, simulazione e verifica di proprietà. Esistono anche le specifiche semiformali:

Fanno uso di sintassi formalmente definita, ma la semantica è informale

Molto spesso sono linguaggi grafici

La seconda distinzione è tra specifiche operazionali e specifiche descrittive. La prima descrive il sistema desiderato specificando il comportamento desiderato, fornendo di solito un modello del sistema, le seconde esprimono le proprietà desiderate in modo puramente dichiarativo.

Notazioni

Data Flow Diagram

Semiformale, operazionale

Efficace per descrivere le funzionalità di un sistema

Tipico del mondo dei Sistemi Informativi

Macchine a stati finiti

Formale, operazionale

Descrive gli stati in cui un sistema può trovarsi e le transizioni di stato

Molto usato per i protocolli di telecomunicazione, interfacce, etc

Diagrammi entità-relazioni

Formale, Descrittivo

Permette di descrivere i dati gestiti da un sistema e le loro relazioni

È usatissimo dai databasisti

UML

Un insieme di notazioni grafico/testuali che permette di specificare-progettare i sistemi

Adotta una filosofia orientata agli oggetti

È lo standard attuale degli sviluppatori di software

Reti di Petri

Formale, operazionale

Adatto alla specifica di sistemi concorrenti

Descrive gli stati in cui un sistema (concorrente) può trovarsi

Estensioni per i sistemi in tempo reale

Servizi correlati

Altre voci

On-premises softwareO

On-premises software

Il software on-premises (letteralmente "software presso la sede"), in contrapposizione al software come servizio (o Saas), si traduce in pratica nell'installazione ed esecuzione del software direttamente su macchina locale, sia essa aziendale che privata, intesa sia come singola postazione di…

Leggi la voce →
Applicazione (informatica)A

Applicazione (informatica)

Una applicazione, in informatica, è un software (installato oppure erogato in SaaS) o una serie di software, in fase di esecuzione, che ha lo scopo e il risultato di rendere possibili funzionalità, servizi o strumenti utili e selezionabili su richiesta dall'utente tramite interfaccia utente,…

Leggi la voce →
M

Marketing relazionale

Il marketing relazionale è quella branca del marketing che permette a un'organizzazione di accrescere il valore della relazione con il cliente attraverso la sua fidelizzazione.

Leggi la voce →
G

Gnuteca

Gnuteca è un software libero per l'automatizzazione e l'amministrazione delle biblioteche, distribuito con licenza GNU GPL.

Leggi la voce →
A

Applicazioni Contabili Gestionali

Applicazioni Contabili Gestionali (ACG) è stata una divisione di IBM che ha fatto la storia nel panorama IT italiano con la sua gamma di software gestionali destinati alle PMI.

Leggi la voce →
I

Infrastructure as a service

Infrastructure as a service (IaaS) è un'attività economica in cui un fornitore di servizi informatici permette ai clienti di creare piani personalizzati per la creazione di un'infrastruttura cloud scalabile che comprende risorse di calcolo, CPU, RAM, connessioni di rete, memorie di massa e tutto…

Leggi la voce →