Istituzioni di ingegneria del software

[Lezione 1] - Definizione sistemistica di software

15/02/2017


1 In questa lezione

2 Il sistema astratto
3 Il sistema software
4 Gli elementi del sistema software
 4.1 L’insieme P
 4.2 L’insieme C
 4.3 L’insieme D
5 Le relazioni del sistema software
 5.1 Le relazioni interne
 5.2 Le relazioni esterne
6 Suggerimenti

***

2 Il sistema astratto

Un sistema astratto è rappresentato da un insieme di elementi simili o complementari che comunicano con il mondo esterno come se costituissero un elemento indivisibile, ossia una scatola nera. La figura 1 rappresenta graficamente sia un esempio di modello di sistema astratto sia un esempio di modello di comunicazione con il mondo esterno. Gli elementi del sistema astratto sono: n1, n2, n3, n4, n5 ed n6; gli elementi del mondo esterno sono: u1, u2 e u3. Il mondo esterno ignora sia la struttura sia l’architettura interne del sistema astratto (ossia: ignora gli elementi n2, n3, n4 ed n5; e le leggi (1,2); (1,3); (2,4); (3,4); (3,5); (4,6) e (5,6)); e conosce sia il modo di comunicare con il sistema astratto (ossia: conosce l’elemento n1 e la legge i) sia il modo con cui il sistema astratto comunica con il mondo esterno (ossia: conosce l’elemento n6 e la legge o). Gli elementi n1 ed n6 del sistema astratto appartengono alla categoria delle interfacce, ossia sono gli elementi responsabili della comunicazione che si stabilisce tra il sistema astratto e il mondo esterno; e costituiscono il contenuto minimo di conoscenza che il mondo esterno deve possedere per poter comunicare con il sistema astratto, ossia il mondo esterno deve conoscere la funzione o=f(i) svolta dal sistema astratto.


Figura 1 - Esempio di sistema astratto.

Diamo la seguente definizione:

Definizione 1.2.a: Il sistema astratto
Un sistema astratto SA è un insieme costituito da un insieme E di elementi (detti anche variabili o quantità); e un insieme R costituito da un insieme Ri di relazioni interne, tra gli elementi di E, e un insieme Re di relazioni esterne, tra gli elementi di E e il mondo esterno U:

SA={E,R}={E,{Ri,Re}}

Se consideriamo l’esempio della figura 1 abbiamo: E={n1,n2,n3,n4,n5,n6}; Ri={(1,2),(1,3),(2,4),(3,4),(3,5),(4,6),(5,6)}; Re{i,o}; e SA={{n1,n2,n3,n4,n5,n6},{{(1,2),(1,3),(2,4),(3,4),(3,5),(4,6),(5,6)},{i,o}}}.

Nota: le relazioni di R, ossia le relazioni interne Ri e le relazioni esterne Re sono le leggi che regolano la comunicazione tra gli elementi del sistema astratto; e tra gli elementi del sistema astratto e gli elementi del mondo esterno; e possono essere specificate utilizzando il linguaggio matematico, un linguaggio formale, un linguaggio semi-formale ovvero, se le condizioni al contorno escludono le ambiguità, il linguaggio naturale.

Abbiamo introdotto il concetto di mondo esterno nella definizione di sistema astratto, quindi diamo la seguente definizione:

Definizione 1.2.b: Il mondo esterno
Un mondo esterno U, per un sistema astratto SA, è un insieme di elementi che non sono elementi di SA:

U={u, tale che u non è un elemento di SA}

La figura 1 afferma che le relazioni interne Ri={(1,2),(1,3),(2,4),(3,4),(3,5),(4,6),(5,6)} sono le leggi che regolano la comunicazione tra gli elementi n1, n2, n3, n4, n5 e n6; e le relazioni esterne Re={i,o} sono le leggi che regolano le comunicazioni rispettivamente tra l’elemento u1 del mondo esterno e l’elemento n1 del sistema astratto, e tra l’elemento n6 del sistema astratto e l’elemento n2 del mondo esterno.

Nota: Il mondo esterno U può essere considerato come un sistema astratto, con i suoi elementi (ossia: u1, u2 e u3); le sue relazioni interne (ossia: le leggi [1,3] e [2,3]); e le sue relazioni esterne (ossia: le leggi i e o).

Un esempio di sistema astratto è un codificatore digitale. Il codificatore digitale ha 2^n ingressi e n uscite; e il suo funzionamento è il seguente: solo uno degli ingressi è uguale a 1, tutti gli altri ingressi sono uguali a 0. L’indice dell’ingresso uguale a 1 rappresenta il numero decimale da codificare in binario. La figura 2 rappresenta graficamente un codificatore con 2^2=4 ingressi X0, X1, X2 e X3; e 2 uscite Z0 e Z1. Se, a esempio, l’ingresso X3 è uguale a 1, e gli ingressi X0, X1 e X2 sono uguali a 0 allora significa che il codificatore deve rappresentare in binario il numero decimale 3 (poiché l’ingresso uguale a 1 ha l’indice uguale a 3), e di conseguenza le uscite Z0 e Z1 devono essere uguali a 1 (1x2^0 + 1x2^1). Il mondo esterno conosce il modo di comunicare con il sistema (ossia: conosce gli ingressi X0, X1, X2 e X3); conosce il modo con cui il sistema comunica con noi (ossia: conosce le uscite Z0 e Z1); ignora la struttura e l’architettura interne (ossia: le porte logiche [1], OR e [2] OR costituiscono la scatola nera); e conosce il ruolo delle interfacce, ossia conosce la funzione o=f(i), vedi la figura 2b, dove, in questo esempio, o è uguale al vettore (Z0,Z1); e i è uguale al vettore (X0,X1,X2,X3).


Figura 2 - Codificatore 4x2.

X0X1X2X3Z0Z1
000000
000100
001001
001101
010011
010111
011011
011111
100010
100110
101011
101111
110011
110111
111011
111111
Figura 2b - Tabella di verità del codificatore 4x2.

3 Il sistema software

Un software può essere considerato come un sistema, e modellato in prima istanza come un sistema astratto, diamo quindi la seguente definizione sistemistica di software:

Definizione 1.3.a: Il sistema software
Un sistema software SW è un insieme costituito da un insieme M di elementi (nel sistema astratto era E); e un insieme R costituito da un insieme Ri di relazioni interne, tra gli elementi di M; e un insieme Re di relazioni esterne, tra gli elementi di M e gli elementi del mondo esterno U:

SW={M,R}={M,{Ri,Re}}

Un esempio di sistema software è l’identificazione di un utente che utilizza una coppia di dati di tipo stringa alfanumerica (la user e la password). La figura 3 rappresenta questo modello: il sistema software è costituito da: gli elementi m1, m2, m3, m4, m5 ed m6, dove: m1 è l’elemento utilizzato dall’utente ut per scrivere la user e la password e per ricevere i messaggi (ossia: è l’elemento di interfaccia tra il mondo esterno U e il sistema software SW); m2 è l’elemento che riceve la user e la password; m3 è l’elemento che opera il controllo sintattico delle stringhe alfanumeriche che costituiscono la user e la password; m4 è l’elemento che opera la crittazione delle due stringhe che costituiscono la user e la password; m5 è l’elemento che opera il controllo di esistenza nel database delle due stringhe crittate; e m6 è l’elemento che fornisce il catalogo dei messaggi da inviare all’utente; dalle relazioni interne (1,2), (2,3), (2,4), (2,5) e (2,6), dove: (1,2) è la legge che specifica la comunicazione tra gli elementi m1 e m2; (2,3) è la legge che specifica la comunicazione tra gli elementi m2 e m3; (2,4) è la legge che specifica la comunicazione tra gli elementi m2 e m4; (2,5) è la legge che specifica la comunicazione tra gli elementi m2 e m5; (2,6) è la legge che specifica la comunicazione tra gli elementi m2 e m6; e dalla relazione esterna i, che è la legge che specifica la comunicazione tra l’elemento del mondo esterno ut e l’elemento del sistema software m1. In termini insiemistici il modello della figura 3 è definito come segue: SW={M,R}={{m1,m2,m3,m4,m5,m6},{{(1,2),(2,3),(2,4),(2,5),(2,6)},{i}}}.


Figura 3 - Esempio di sistema software.

4 Gli elementi del sistema software

Definizione 1.4.a: Gli elementi del sistema software
L’insieme M degli elementi di un sistema software SW è costituito da un insieme P di elementi fisici; un insieme C di elementi di configurazione; e un insieme D di elementi di documentazione:

M={P,C,D}

Analizziamo da vicino ognuno di questi insiemi.

4.1 L’insieme P

Definizione 1.4.1.a: L'elemento fisico di un sistema software Un elemento fisico p di un sistema software SW è un elemento identificabile di codice eseguibile.

P={p}

Nota: la prima fase di specifica degli elementi di un sistema software produce gli elementi logici, non quelli fisici. Diamo quindi la seguente definizione:

Definizione 1.4.1.b: L'elemento logico di un sistema software
Un elemento logico l di un sistema software SW è un sottoinsieme dell’insieme P degli elementi fisici.

L={l}, l={pk, tale che pk è un elemento di P, k=1,h}

Un elemento logico quindi è un’astrazione di un gruppo di elementi fisici che realizzano una funzione determinata.

A esempio nella figura 3 l’elemento logico l4=m4, responsabile della crittazione delle stringhe della user e della password, potrebbe essere specificato come un insieme di tre elementi fisici p41, p42 e p43 (Figura 4), ciascuno responsabile di una singola funzione, ma insieme responsabili della generazione della stringa crittata.


Figura 4 - Esempio di elemento logico

4.2 L’insieme C

Definizione 1.4.2.a: L'elemento di configurazione
Un elemento di configurazione c di un sistema software SW è un elemento identificabile di codice non eseguibile utile all’esecuzione di un elemento fisico.

C={c}

4.3 L’insieme D

Definizione 1.4.3.a: L'elemento di documentazione
Un elemento di documentazione d di un sistema software SW è un elemento identificabile di specifica del comportamento del software.

D={d}

5 Le relazioni del sistema software

5.1 Le relazioni interne

Definizione 1.5.1.a: La relazione interna
Una relazione interna è una legge che specifica come gli elementi del sistema comunicano tra di loro. Ogni comunicazione è realizzata da un insieme di informazioni di ingresso I = {ik, k=1÷r}, e un insieme di informazioni di uscita O = {ow, w=1÷s}.

Ri={ri}

5.2 Le relazioni esterne

Definizione 1.5.2.a: La relazione esterna
Una relazione esterna è una legge che specifica come gli elementi del sistema e gli elementi del mondo esterno comunicano tra di loro. Ogni comunicazione è realizzata da un insieme di informazioni di ingresso I = {ik, k=1÷r}, e un insieme di informazioni di uscita O = {ow, w=1÷s}.

Re={re}

Alla luce delle ultime definizioni possiamo specificare un sistema software come segue:

SW={{P,C,D},{Ri,Re}}

6 Suggerimenti

[Sugg.1]:

Individua il confine del sistema software, ossia specifica gli elementi appartenenti al sistema software e gli elementi appartenenti al mondo esterno. Tieni presente la natura ibrida delle interfacce tra il sistema software e il mondo esterno, che possono essere definite come quella parte del sistema software esposta al mondo esterno, ossia quella parte responsabile della comunicazione con il mondo esterno. Quindi riconosci: a) gli elementi che definiscono il mondo esterno; b) il confine del sistema, ossia le interfacce; c) la parte nascosta del sistema. A esempio: la figura 3 ci dice che il mondo esterno è definito dall’elemento ut, che può essere uno user agent quale Chrome, se l’applicazione è di tipo web; il confine del sistema software è definito dall’elemento m1; e la parte del sistema software nascosta al mondo esterno è definita dagli elementi m2, m3, m4, m5 ed m6.

[Sugg.2]:

Individua gli elementi logici del sistema software, ossia specifica quali sono le operazioni che deve compiere il sistema e/o quali sono i dati che fungeranno da operandi di tali funzioni. A esempio la figura 3 ci dice che gli elementi logici sono quelli relativi alle funzioni di: a) inserimento delle due stringhe della user e della password (m1); b) ricezione delle stringhe (m2); c) controllo sintattico delle stringhe (m3); d) crittazione delle stringhe (m4); e) controllo di esistenza delle stringhe crittate (m5); f) invio di un messaggio all’utente (m1), e che i dati che costituiscono gli operandi di tali operazioni sono: la user, la password, il codice di verifica sintattica, il codice di crittazione, il codice di esistenza e il messaggio.

[Sugg.3]:

Individua le relazioni interne del sistema software, ossia specifica come comunicano gli elementi del sistema software. A esempio, nella figura 3 devi specificare le leggi (1,2),(2,3),(2,4),(2,5) e (2,6).

[Sugg.4]:

Individua le relazioni esterne del sistema software, ossia specifica come comunicano gli elementi del sistema software e gli elementi del mondo esterno. A esempio, nella figura 3 devi specificare la legge i.



     lezione successiva >