mercoledì 5 marzo 2014

Progettazione, ingegnerizzazione e sviluppo (ossia, "Parole")

A febbraio mi ero chiesto e avevo chiesto quali fossero le differenze tra
progettazione (design) e ingegnerizzazione (engineering):
- http://blog.cesaregallotti.it/2014/02/principi-di-sicurezza-per.html

Premetto che, in effetti, non avevo dubbi tra progettazione e
ingegnerizzazione, ma tra sviluppo (development) e ingegnerizzazione.
Scrivendo mi sono confuso (era S. Valentino...), ma poi le risposte di
Andrea Rui e Fabrizio Monteleone (DNV GL) mi hanno segnalato l'errore.

Fabrizio Monteleone mi ha anche ricordato che " la progettazione equivale a
ideare un prodotto sulla base di requisiti; l'ingegnerizzazione significa
cercare il miglior modo di realizzarlo (quali pezzi usare, possibilità di
riutilizzare cose di un prodotto simile, futura manutenzione, ....) prima di
poter rilasciare il progetto per la produzione". In poche parole:
"l'ingegneria del software cerca di fornire le regole per il processo di
produzione e quindi le regole di ingegnerizzazione sicura e le regole di
sviluppo sicuro sono la stessa cosa".

Altri, a cui ho confidato il medesimo dubbio, la pensano più o meno allo
stesso modo, ma usano il termine "sviluppo" solo per la realizzazione del
software, ossia per la codifica. Usano il termine "ingegnerizzazione" per
modellare sistemi, oggetti e database. Loro potrebbero ingegnerizzare senza
sviluppare. Non ho approfondito oltre, ma sicuramente dovranno configurare
dei sistemi per produrre il servizio ingegnerizzato.

Per Andrea Rui (e anche per la ISO 9001, che differenzia "progettazione e
sviluppo" e "realizzazione"), invece "lo sviluppo è quella fase che ti
porta dalle specifiche al prototipo; l'ingegnerizzazione è quella fase che
ti porta da questo al prodotto finale".

Rileggendo la NIST SP 800-27, vedo che i principi di ingegnerizzazione si
applicano a tutte le fasi del ciclo di vita di un sistema: initiation,
sviluppo o acquisizione, test e installazione, conduzione e manutenzione,
eliminazione.

Riassumendo: per Fabrizio Monteleone prima si ha la progettazione, poi
l'ingegnerizzazione e infine lo sviluppo; per Andrea Rui prima si ha la
progettazione, poi lo sviluppo e infine l'ingegnerizzazione; per la NIST SP
800-27, l'ingegnerizzazione comprende la progettazione e lo sviluppo.

Questo dimostra ancora una volta come in informatica sia opportuno
condividere per bene i termini con i propri interlocutori, perché ciascuno
potrebbe utilizzarli in modi diversi. Per esperienza, quando chiedo
spiegazioni sull'uso di certi termini, mi guardano come se fossi uno
sciocco, quando sono invece loro che non hanno idea di cosa succede al di
fuori del loro piccolo mondo. Citando Andrea Rui: " sui termini occorre
spesso fare delle mappature tra i diversi significati attribuiti da enti
diversi e dai diversi contesti d'uso (insomma, occorre introdurre i
namespaces!)".

Per concludere, cito ancora Andrea Rui che mi ha ribadito dei concetti
fondamentali, a prescindere dalla terminologia utilizzata: "trattandosi di
fasi distinte, a cui lavorano figure e persone diverse attraverso attività
diverse, occorre che per ciascuna siano analizzati i rischi e definite le
appropriate misure di sicurezza da adottare; inizialmente occorre
identificare i requisiti di sicurezza legati alle caratteristiche e
funzionalità; per quanto riguarda la realizzazione, occorre identificare a
priori tutti i requisiti di sicurezza che il processo di realizzazione
(analisi, sviluppo, ecc.) deve avere per assicurare che il processo di
gestione del ciclo di vita del prodotto non limiti o riduca la sicurezza
progettata".

Nessun commento:

Posta un commento