Work World: Esempio di un progetto di Ingegneria del Software

Presenterò ora un progetto relativo all’Ingegneria del Software (IDS) che ho creato durante la mia carriera universitaria. L’intento è quello di non annoiarvi riportando le definizioni sugli elementi base dell’ IDS, ma portarvi un esempio di una possibile applicazione e quindi illustrarvi come i concetti possono essere applicati anche ad un semplice sito web, sottolineando l’ estrema importanza che questa disciplina svolge all’interno del campo informatico.

Senza progettazione, il codice risultante porterà a problemi e a costi (anche in relazione al tempo di realizzazione) eccessivi.


L’articolo prevede la descrizione delle tecniche utilizzate nell’ Ingengeria del Software al fine di creare una piattaforma che permetta alle due tipologie di utente – datore di lavoro e utente – in cerca di lavoro, di muoversi all’interno di questo mondo, offrendo possibilità di lavoro a coloro che sono in cerca, considerando anche i tempi che corrono.

Una precisazione.

Il sito ancora non è stato implementato, ma per chi volesse collaborare, c’è la possibilità di iniziare a crearci un serio progetto sopra!
Ma spieghiamo meglio il meccanismo che sta alla base di esso: in poche parole, un utente, una volta registrato, può scegliere il suo ruolo:
Utente-richiedente, cioè che “richiede” (cerca) un posto di lavoro;
Utente offerente, che inserisce degli annunci per “offrire” differenti tipologie di impieghi in base alle proprie esigenze.

Ho previsto due modalità di funzionamento che permettono la scelta del lavoro appropriato:

– La prima riguarda la predisposizione nel sito del così detto certificato POR.
Quest’ultimo può essere definito come “ il documento che da attuazione ai finanziamenti dei Fondi Strutturali a sostegno dei Progetti delle P.M.I. ( Piccole e Medie Imprese ) e degli Enti Pubblici. Ogni POR Regionale è articolato in ASSI, che rappresentano gli obiettivi, entro cui investire per ricevere i finanziamenti.”. In base ai dati immessi dall’utente, è possibile capire in quale zona il proprio lavoro è maggiormente richiesto. (es: POR Emilia Romagna , richiesta personale scolastico o Assistenza Informatica; coloro che hanno queste caratteristiche, potranno informarsi riguardo quei determinati posti di lavoro in quella regione). (Funzionamento opzionale o secondario)

-Il più comune meccanismo di domanda-offerta tra colui che immette i propri dati, alla ricerca di un posto, e colui che invece, offre un posto a determinate condizioni e requisiti: il datore di lavoro deve specificare le caratteristiche che bisogna avere per quel posto che sta offrendo, valutando l’accettazione del richiedente anche se non soddisfa tutti i vincoli, definendo i  vincoli primari e secondari. Lo stesso richiedente deve inserire nella piattaforma le proprie qualità e caratteristiche (curriculum). (Funzionamento primario).

Entrando più nello specifico, verranno utilizzati i vari strumenti di analisi di un software  e specificata la composizione di esso, basandosi sul linguaggio UML (Unifed Modeling Language),  un linguaggio unificato di modellazione, che tramite i suoi strumenti (i vari diagrammi ad esempio) permette di optare per una documentazione del sito per lo più grafica, in modo tale da ampliare tramite i diagrammi le capacità di analisi e design.
Fondamentale sarà anche la parte riguardante la progettazione nella quale verranno approfondite le varie attività che si possono svolgere all’interno del sito e le varie modalità di accesso e registrazione, utilizzando il linguaggio OCL e le Reti di Petri, che differentemente da UML (soprattutto OCL) permette di migliorare l’ analisi e la progettazione, ponendo una descrizione testuale affiancata a quella scritta. La 
progettazione in OCL sarà fondamentale in quanto permette di specificare i vari vincoli e le varie dinamiche che si innescano all’interno del rapporto tra colui che offre il posto di lavoro e colui a cui questa domanda è rivolta.

1 – Descrizione del problema

Inizialmente, è utile introdurre la famosa tabella must/should have, nella quale vengono esplicitati in modo immediato e veloce i requisiti che il nostro programma deve per forza avere (requisiti chiamati funzionali) e potrebbe avere (requisiti non funzionali). Di seguito la tabella dei requisiti funzionali, che vi ho riportato per farvi capire meglio il significato della paittaforma web che ho ideato:

Schermata del 2016-01-05 11:42:26

2 – Analisi del problema

Entriamo ora nella fase di analisi, nella quale studieremo meglio linguaggi come Gellish e Alloy. Appartenti a questa categoria di strumenti possono essere anche considerati i diagrammi di Casi d’uso e Attività che esamineremo in seguito.

2.1 – Gellish

Partiamo però con il trattare il linguaggio Gellish, abbastanza intuitivo, spesso utilizzato dagli ingegneri del software per evitare che i termini utilizzati risultino incomprensibili e ambigui.
Le caretteristiche cardine del Gellish sono:
– I concetti ovvero gli elementi principali che condensano la conoscenza
– Le relazioni cioè caratterizzazioni che legano due concetti, come ad esempio : “è un sottotipo di”, ”è classificato come”(“è un istanza di”); ”è un aspetto di “……” (..)

Per quanto riguarda la nostra applicazione, i concetti principali sono: Lavoro e Utente, dai quali si ramificano poi le specifiche di altri elementi.

2.2 – Alloy

Dovrete prestare maggiormente attenzione nel fare uso del linguaggio di specifica Alloy: esso è un linguaggio dichiarativo per esprimere vincoli strutturali e comportamentali complessi all’interno di un sistema software. Deriva dall’esigenza di evitare che alcune situazioni si verifichino, in quanto può portare a perdite di vario tipo, spesso economiche.

Alloy è un linguaggio che non presenta ne variabili e ne costrutti; gli elementi fondamentali sono:
Segnature (“sig”) : dichiarano classi d’automi, in sostanza insiemi.
Fatti (“fact”) : definiscono vincoli sempre validi.
Predicati (“pred”) : definiscono vincoli con parametri.
Funzioni (”fun”): espressioni che producono un risultato, spesso insiemi.
Asserzioni : asserzioni riguardanti il modello, controllabili.

Per maggiori dettagli su ogni elemento analizzato, potete leggere l’ articolo Le 5 fasi dell’Ingegneria del Software  scritto in collaborazione con Forty Zon.

Quindi, definendo i vincoli e utilizzando lo strumento “Alloy Analyzer” ne uscirà fuori, nel caso in esame:

Schermata del 2016-01-05 11:53:06

Da cui ne deriva il seguente grafico:

Schermata del 2016-01-05 11:52:59

vediamo che i vincoli ci dicono che non ci può essere un utente sia richiedenre che offerente, inoltre che non possono avere stessi dati di registrazione, oltre al fatto che non possono essere richieste più di 3 richieste di lavoro a settimana e offrire più di un lavoro a settimana.

2.3 – Diagrammi di Analisi: Activity e Use case Diagram

Innanzitutto: cosa si intende per UML?

UML (Unified Modeling Language) può essere considerato un linguaggio formale per specificare,visualizzare e costruire astrazioni. Comporta una rappresentazione per lo più grafica contenente simboli e concetti: infatti ci offre una serie di diagrammi, ognuno dei quali con le proprie caratteristiche e le proprie regole,utili sia per la visualizzazione di un sistema,specificandone il comportamento e la struttura, sia per documentare le decisioni prese.
Verrà utilizzato UML per descrivere gli attori “protagonisti” della nostra applicazione, tramite l’ausilio di due diagrammi: Use Case Diagram e gli Activity Diagram. Tutto ciò al fronte di migliorare l’analisi già trattata tramite Alloy.

2.3.1 – Use Case Diagram

Una volta definiti gli attori, e quindi Utente-offerente, Utente-richiedente, visitatore ed utente , ecco l’ Use Case Diagram e i relativi casi d’uso: tra i tanti, ne avremo uno per l’autenticazione, uno per la ricerca lavoro, e uno per la risposta alle richieste.

Per semplicità, riporterò il primo use case dell’autenticazione, in modo da render chiaro come la “tabelle dei casi d’uso” devono essere implementate.

Schermata del 2016-01-05 12:06:29

Da questi Use Case ne deriva il vero e proprio diagramma, che mette in relazione gli attori con le azioni che rappresentano i casi d’uso definiti.

Schermata del 2016-01-05 12:08:52

2.3.2 – Activity Diagram

Diagramma delle attività.

Già il nome fa intendere che questi strumenti grafici sono utilizzati per rappresentare la logica interna dell’applicazione, raffigurando processi paralleli e la loro sincronizzazione. In questo caso vengono esplicitati i passi uno per uno che portano alla ricerca del lavoro all’interno del sito: preso un utente registrato ed autenticato, scelto il ruolo dell utente, si sfruttano le funzioni prima citate (domanda-offerta o POR).

Schermata del 2016-01-05 13:06:25

3- Progettazione

Ma UML trova maggiormente riscontro nella fase di progettazione, con il diagramma delle Sequenze ma sopratutto con il diagramma delle classe, l’elemento dell’ IDS che più si avvicina e più aiuta la scrittura del codice vera e propria.

3.1- Diagramma delle Classi

Da una visione statica del contenuto della applicazione, definendo gli elementi base del sistema: rappresenta gli oggetti che compongono il sistema,con relativi attributi e comportamenti,ma anche i vincoli tra le varie classi. Ogni classe ha un nome, attributi (privati e pubblici) e dei metodi (operazioni).

Anche in questo caso non mi soffermerò a citare tutti gli elementi che contraddistinguono questo diagramma: in seguito, ecco il Class Diagram per la piattaforma World Work.

Schermata del 2016-01-05 13:12:12

Come potete vedere vengono introdotto differenti classi:

1. Classe Utente ,che definisce le specifiche che caratterizza colui che ha accesso al sito
2. Classe Utente-richiedente, generalizzazione dell’utente
3. Classe Utente-offerente, altra generalizzazione
4. Associazione di “comunicazione” tra i due utenti
5. Classe POR per esplicitare la seconda modalità di ricerca lavoro
6. Associazione “consultazione” tra POR e Utente-richiedente

3.2 – Diagramma delle sequenze

In sintesi, il diagramma delle sequenze, descrive il comportamento dinamico di un gruppo di oggetti, rappresentando uno scenario derivante dalla collaborazione di tutti questi oggetti e attori. Non vengono rappresentate le relazione e associazioni tra oggetti, ma gli unici elementi fondamentali sono Object, Message e Activation.
Schermata del 2016-01-05 13:20:23

4 – Conclusioni

Ovviamente l’ Ingegneria del software non si ferma qui, anzi: è una disciplina vastissima che è sottoposta a numerosi studi che hanno portato a diversi metodologie di approcci a questa materia.

Gli argomenti trattati sopra sono gli elementi BASE da cui partire per creare un progetto abbastanza elementare come è quello di World Work.

In questo articolo ho inserito soprattutto immagini che esemplificano il funzionamento della piattaforma.
Attenzione!!!!
Per comprendere meglio il tutto, provate a leggere l’articolo parallelamente con l’altro articolo che ha come tema la spiegazione vera e propria che sta alla base della teoria di questi diagrammi. Riporto ancora una volta il link Le 5 fasi dell’Ingegneria del Software!!

Prima di concludere, vorrei però riportarvi lo schema del sito mediante le Reti di Petri: definiamole.

Una rete di Petri (conosciuta anche come rete posto/transizione o rete P/T) è una delle varie rappresentazioni matematiche di un sistema distribuito discreto. Come un linguaggio di modellazione, esso descrive la struttura di un sistema distribuito come un grafo bipartito con delle annotazioni. Ovvero, una rete di Petri ha dei nodi posti, dei nodi transizioni e degli archi diretti che connettono posti e transizioni. Una rete di Petri PT (Place/Transition) consiste di posti, transizioni e archi diretti. Le uniche transazioni possibili avvengono tra nodi e transazioni.

Schermata del 2016-01-05 13:25:26

Commento (2)

  • shampoo senza sale| 7 Febbraio 2017

    Grazie molte dell’articolo. è geniale… Buon lavoro !

  • Giochi Avengers| 10 Aprile 2017

    Grazie mille per l’articolo

  • Lascia una risposta

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