Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ing. R. Turco
1
Introduzione
Ogni attività umana, che è orientata alla realizzazione di un prodotto o di un servizio, ha dietro
di sé un’organizzazione, delle metodologie, delle procedure operative, degli strumenti ed un
workflow lavorativo.
Lo studio dei processi produttivi software fa parte di quella scienza umana che è denominata
“Ingegneria del software”.
L’ingegneria del software è, in sostanza, una disciplina che, da punti di vista diversi,
tecnologico, manageriale, matematico ed economico, cerca di controllare quanto più è
possibile, tutte le variabili in gioco del processo produttivo del software.
Lo sviluppo software, quindi, potrebbe sembrare come il “gioco dei dadi”: sappiamo lanciarli
ma non sappiamo quale sarà il risultato del loro lancio! Difatti, in modo assoluto, non è
possibile dire quanto tempo durerà un progetto software o quale sarà la sua qualità o se avrà
successo.
E’ evidente che, fin quando, si ha a che fare con “opere d’intelletto”, come è per l’appunto la
produzione del software, non si può ottenere una sistematicità al 100% e si sarà di fronte,
almeno nel 20% dei casi, all’abilità del programmatore, alla sua genialità, alla sua competenza.
L’ideale, come sempre, si ottiene dalla giusta misura tra metodo, sistematicità, competenza e
genialità.
La sfida, quindi, dell’ingegneria del software è ogni giorno accettata da quelli del settore per
progettare il sistema giusto, valutare, pianificare, dimensionare, etc.
Sebbene negli anni siano stati fatti enormi passi avanti, specie con l’Object Oriented, la
modellazione dei sistemi e la standardizzazione di linguaggi come UML, etc, ancor oggi può
essere difficile rilasciare al cliente finale il “sistema giusto”.
Va, quindi, messo a punto un metodo per arginare, sin dal primo momento, tale rischio. Il
problema è enormemente sentito nei progetti di riguardevoli dimensioni e con un numero
medio-grande di persone coinvolte.
2
Gli elementi critici di un processo produttivo
Esistono essenzialmente tre elementi critici, che “minano” la sistematicità della produzione del
software, ma che, se ben controllati, si trasformano nel “triangolo del successo” di un
progetto (fig. 1).
Stackholder
Processo Linguaggi e
strumenti
Fig. 1
Ogni vertice del triangolo è una criticità, a cui sono associati un certo numero di rischi ognuno
di entità e peso diverso, variabili nel tempo e dipendenti dal contesto e dalle condizioni al
contorno in gioco.
L’efficienza, invece, dovrà ottenersi col continuo miglioramento del processo produttivo,
“inizialmente progettato” ad hoc alle proprie esigenze e a quelle del cliente e/o del mercato
target.
Stakeholder
Gli stakeholder sono tutte le persone, in diversi settori e competenze, che possono influire sul
progetto direttamente o indirettamente: dal cliente al fornitore, dalla logistica alle strategie.
3
Per gli skill interni al progetto, Brooks (1987) afferma: “Ottimi progetti sono dovuti ad ottimi
sviluppatori” (E’, difatti, il prodotto alla fine che viene consegnato e deve funzionare come
serve al cliente!).
Inutile dire che in realtà il progetto non dipende solo da ottimi skills interni: commerciale,
project manager, business analyst, progettisti, sviluppatori, collaudatori, technical writer,
installatori, etc. Ma anche da altri settori:
la logistica (stanze, hardware, software, licenze, libri e manuali,tools etc);
dal front-end progettuale/commerciale che deve isolare gli sviluppatori dal cliente;
dall’assistenza tecnica;
etc.
In ogni caso è elevato il numero di insuccessi dovuti a “necessità del cliente mal comprese”.
Ci poniamo come obiettivo, nel seguito, di analizzare un metodo per arginare tale rischio.
Processo produttivo
Cos’è un processo produttivo?
Non esiste un processo standard che tutte le aziende possono seguire. Ogni azienda deve
trovare il proprio modello, seguirlo e migliorarlo nel tempo.
Il processo, inoltre, deve essere allineato con i mezzi, lo stato culturale ed il Know-how
dell’azienda e alle aspettative del cliente: né troppo avanti nel tempo, né obsoleto. Al crescere
del Know-how deve essere aggiornato.
La formalizzazione del processo diventa una necessità per progetti di dimensione medio-
grande. Basta solo pensare alla rete di comunicazione che potrebbe essere necessaria in
assenza di formalizzazione di procedure, standard, etc.
ISO 9000
Il concetto base dello standard ISO 9000 è: “Un buon processo è una buona premessa per
ottenere un buon prodotto o un buon servizio”.
4
Per l’ISO 9000 un’azienda deve tracciare con delle procedure come intende operare e, poi,
deve dimostrare di operare nel modo descritto nelle procedure stesse.
La finalità è ottenere un processo di qualità, secondo una metodologia che si riassume in:
Plan, Do, Check, Act, cioè pianificazione, azione, verifica, provvedimenti.
In altri termini l’ISO 9000 è uno standard che favorisce un processo iterativo, con feedback di
controllo per poter decidere un piano di miglioramento ogni volta.
Le tecniche di valutazione della maturità del proprio processo è sempre basato sul Capability
Maturity Model (CMM).
Il modello permette di valutare il livello di maturità del proprio processo produttivo attraverso
delle domande.
Per passare da un livello all’altro potrebbero servire anni, ma non è certo ammissibile rimanere
sempre sullo stesso livello. D’altra parte il tempo rende le tecnologie e le metodologie
antiquate e, quindi, si può retrocedere nei livelli!!
Linguaggi e strumenti
Attualmente esiste come linguaggio lo standard UML 1.4 che fornisce notazioni e semantica
dichiarativa (quali sono i bisogni oltre che come si procede per soddisfarli).
Con l’UML si possono creare modelli, visuali e non, con cui rappresentare il problema da
risolvere e documentare il tutto.
L’UML è uno strumento di comunicazione tra le persone del progetto e tra cliente e progetto.
5
L’UML da un insieme di viste del problema ed ha vari livelli di astrazione. Non sempre è
efficace. Spesso alcune viste non sono integrate. Tuttavia al momento è il miglior linguaggio
disponibile.
Il sistema giusto
Uno dei fattori di criticità, come abbiamo visto, è costituito dagli stakeholder. In [DR8] sono
discussi molti di essi.
Qui si vuole approfondire, attraverso una tecnica di risoluzione, uno dei tanti rischi legati agli
stakeholder; cioè la necessità di comprendere le esatte esigenze del cliente finale (end-user),
per poter realizzare “il sistema giusto”.
Perché è un rischio?
Il problema è sentito maggiormente nei progetti di grosse dimensioni, quando, cioè, nel
tentativo di creare una “catena di produzione” si aggiungono gli sviluppatori ma ognuno di essi
non possiede una “visione generale”, ma ha solo il compito di implementare un insieme di
librerie, classi, componenti definite da un analista.
In questo caso gli sviluppatori, sulla base solo di qualche riunione, potrebbero comunque non
avere chiare tutte le reali esigenze del cliente, specie se le informazioni risiedono
essenzialmente in testa al cliente o a qualche analista.
Ognuno di questi sviluppatori potrebbe prendere delle piccole decisioni sul prodotto, che non
producono “bugs” ma che alla fine condizionano la flessibilità del sistema rispetto alle possibili
situazioni di business già prevedibili in generale.
Una metodologia che si occupa di analizzare questo è il “Business as is Modeling” (BaiM) che,
attraverso l’UML, ha come obiettivo di tracciare il modello del business del cliente.
6
si ottiene il sistema giusto subito (“Get it right the first time”);
si “accede” sempre agli utenti di business, perché le loro informazioni sono state
tracciate;
i “bugs” di requisiti errati vengono individuati anticipatamente;
In questo caso si possono individuare anche degli attori interni (“business worker”), che sono
ruoli o insiemi di ruoli che interagiscono con altri business worker manipolando delle business
entità.
Il generico Business Use case è un insieme di azioni che producano valore ad un business
actor.
7
Business Activity Diagram
Un Business Activity Diagram (figure 2) traccia il business workflow e fornisce aspetti dinamici
di esso.
Con esso si ottiene una visione di:
Cosa succede in un workflow;
Quali attività sono fatte in parallelo;
Se esistono azioni alternative in un workflow
8
Nel Activity Diagram possono anche essere aggiunte le business entity coinvolte (figure 3).
9
Business Class Diagram
Il Business Class Diagram (figure 4) descrive la struttura statica del business. Ogni classe
descrive un business worker o un business entity, di conseguenza indica le relazioni tra
business worker e business entity.
Figure 4
Conclusioni
Il Business Modeling è una tecnica per ridurre il rischio di costruire il “sistema giusto”. Vale
senz’altro la pena utilizzarla per la creazione di grossi parti di sistema.
10
11
INDICE
Il BusinessAs is Modeling con UML ..................................................................................................... 1
Introduzione ......................................................................................................................................... 2
Gli elementi critici di un processo produttivo ...................................................................................... 3
Stakeholder....................................................................................................................................... 3
Processo produttivo .......................................................................................................................... 4
Miglioramento dei processi nello sviluppo del software ............................................................. 4
Linguaggi e strumenti ...................................................................................................................... 5
Il sistema giusto ................................................................................................................................... 6
Business as is Modeling - BaiM ........................................................................................................ 6
Vantaggi del BaiM ....................................................................................................................... 6
Il metodo del BaiM ...................................................................................................................... 7
Tools per Business Modeling ............................................................................................................. 10
Conclusioni ........................................................................................................................................ 10
Riferimenti ......................................................................................................................................... 13
12
Riferimenti
[DR1] Martin Fowler – UML Distilled – Prima edizione italiana
[DR2] Rosario Turco – Usabilità e ripetibilità dei processi produttivi software
[DR3] Rosario Turco – Modellare con l’UML ed i colori
[DR4] Robert C. Martin – Design Principles and Design Patterns
[DR5] Gamma, Helm, Johnson,Vlissides – Design Patterns – Elementi per il riuso di software a
oggetti – Prima edizione italiana
[DR6] Rosario Turco - Pattern e la “GRASP Oriented Analysis”
[DR7] Rosario Turco – Refactoring: la teoria in pratica
[DR8] Rosario Turco – Extreme Programming
[DR9] Rosario Turco – Disegno per il riuso con il riuso
13