RIPAM 3997

SDLC · Waterfall · CRISP-DM · Testv1.0 - 06/05/2026

Metodologie di Sviluppo

Report 5000 ufficiale: SDLC, modelli plan-driven (Waterfall, V-Model, Spiral, RUP), agile per web, sistemi conoscitivi (CRISP-DM, MLOps, SECI), testing, Git e branching + 25 numeri + 15 trabocchetti.

1 SDLC e cicli di vita

Software Development Life Cycle (SDLC)

Insieme di fasi che descrivono lo sviluppo di un sistema software dall'ideazione al ritiro:

  1. Analisi requisiti (functional, non-functional)
  2. Progettazione (architettura, design dettagliato)
  3. Implementazione (coding)
  4. Testing (unit, integration, system, acceptance)
  5. Deployment (rilascio in produzione)
  6. Manutenzione (correttiva, evolutiva, adattativa, perfettiva)
  7. Dismissione

Tipologie sistemi (per ambito)

  • Gestionali: ERP, CRM, contabilità, HR, gestione documentale (workflow strutturato, transazionali)
  • Web: applicazioni internet/intranet, e-commerce, portali (architetture distribuite, multi-utente)
  • Conoscitivi: sistemi esperti, AI/ML, decision support, knowledge management (basati su conoscenza/dati)

2 Metodologie gestionali (modelli plan-driven)

Waterfall (cascata, Royce 1970)

Modello sequenziale rigido: ogni fase produce documenti che alimentano la successiva. Niente ritorni indietro (in pratica revisioni iterative ammesse).

Vantaggi: pianificazione chiara, deliverable misurabili, documentazione completa.
Svantaggi: rigido, costo elevato del cambiamento, requisiti devono essere stabili.
Quando: progetti con requisiti molto stabili (sistemi mission-critical, normativi, contratti rigidi).

V-Model (1991)

Estensione del Waterfall: a ogni fase di sviluppo (sinistra) corrisponde una fase di test (destra) — V-shape:

  • Requisiti ↔ Acceptance Test
  • Analisi ↔ System Test
  • Design alto livello ↔ Integration Test
  • Design dettagliato ↔ Unit Test
  • Codice (vertice)

Forte focus su qualità e tracciabilità requisiti-test.

Spiral Model (Boehm 1986)

Modello iterativo + risk-driven: ogni iterazione (giro di spirale) ha 4 quadranti:

  1. Definire obiettivi e vincoli
  2. Analisi rischi + prototipazione
  3. Sviluppo + test
  4. Pianificazione iterazione successiva

Adatto a sistemi grandi, complessi, ad alto rischio.

RUP (Rational Unified Process — IBM 1998)

Iterativo, incrementale, basato su use case e UML. 4 fasi (Inception, Elaboration, Construction, Transition) e 9 discipline (Business Modeling, Requirements, Analysis & Design, Implementation, Test, Deployment, Configuration & Change Mgmt, Project Mgmt, Environment).

Modello Incrementale

Sviluppo per incrementi successivi, ogni incremento aggiunge funzionalità al sistema. Combina elementi waterfall (per ogni incremento) e iterativo (tra incrementi).

3 Metodologie web (modelli agili e iterativi)

Approcci agili — overview

Manifesto Agile (2001) → 4 valori, 12 principi. Frameworks: Scrum, XP, Kanban, Lean, Crystal, DSDM, FDD (Feature Driven Development).

Specificità applicazioni web

  • Cicli rilascio brevi (deploy continuo, settimanale o più frequente)
  • Forte feedback utenti (analytics, A/B testing)
  • Architettura distribuita (frontend / backend / DB / CDN / cache)
  • DevOps integrato (CI/CD)
  • Compatibilità multi-device (responsive, mobile-first, PWA)

Web Information Systems Development (WISD)

Approccio dedicato sviluppo applicazioni web. Fasi: site analysis, content modeling, UI design, navigation design, hypertext design, implementation, testing.

UWE / OOHDM / WebML

Metodologie specifiche modellazione applicazioni web (anni 2000-2010): UWE (UML-based Web Engineering), OOHDM (Object-Oriented Hypermedia Design Method), WebML (Web Modeling Language). Oggi superate da framework component-based moderni.

Stack tecnologici web moderni

  • MEAN/MERN/MEVN: MongoDB + Express + (Angular/React/Vue) + Node.js
  • LAMP/LEMP: Linux + Apache/Nginx + MySQL + PHP
  • JAMstack: JavaScript + API + Markup (statico+API)
  • Serverless: AWS Lambda, Cloudflare Workers, Vercel

Microservizi nel web

Architettura per applicazioni cloud-scale: servizi piccoli, autonomi, comunicano via REST/gRPC. Vedi report Architetture Software per dettagli.

4 Metodologie conoscitive (knowledge-based / AI)

Sistemi esperti — architettura classica

  1. Knowledge Base (regole + fatti)
  2. Inference Engine (motore inferenziale forward/backward chaining)
  3. User Interface
  4. Knowledge Acquisition Module (per esperti dominio)
  5. Explanation Module

Esempi storici: MYCIN (medico, anni '70), DENDRAL (chimico), XCON (DEC, configurazione VAX).

KADS / CommonKADS (anni '90)

Metodologia europea sviluppo sistemi knowledge-based. 6 modelli: organizzazione, task, agente, comunicazione, conoscenza, design.

CRISP-DM (Cross Industry Standard Process for Data Mining, 1996)

Metodologia standard per progetti data mining / data science. 6 fasi cicliche:

  1. Business Understanding
  2. Data Understanding
  3. Data Preparation (~80% del lavoro)
  4. Modeling
  5. Evaluation
  6. Deployment

Machine Learning Lifecycle

  1. Problem definition
  2. Data collection
  3. Data preprocessing (cleaning, feature engineering)
  4. Model selection
  5. Training
  6. Validation (cross-validation)
  7. Testing
  8. Deployment
  9. Monitoring (model drift, retraining)

MLOps

Estensione DevOps al Machine Learning: versioning di codice + dati + modelli, pipeline automatiche di training/deploy, monitoring performance modello in produzione, gestione drift.

Approcci moderni AI

  • Supervised learning (classificazione, regressione)
  • Unsupervised learning (clustering, dimensionality reduction)
  • Reinforcement learning
  • Deep learning (reti neurali profonde)
  • LLM (Large Language Models — GPT, Claude, Gemini, LLaMA)
  • RAG (Retrieval-Augmented Generation): combina LLM + knowledge base

Knowledge Management — modello SECI (Nonaka & Takeuchi, 1995)

4 modi di conversione conoscenza tacita ↔ esplicita:

  1. Socialization (tacita → tacita)
  2. Externalization (tacita → esplicita)
  3. Combination (esplicita → esplicita)
  4. Internalization (esplicita → tacita)

5 Testing del software

Livelli di test

LivelloCosa testaChi
UnitSingola funzione/classeSviluppatori
IntegrationInterazione tra moduliSviluppatori
SystemSistema completoQA
Acceptance (UAT)Conformità a requisiti utenteCliente/PO

Tipi di test

  • Funzionali: verificano "cosa" fa il sistema
  • Non funzionali: performance, sicurezza, usabilità, scalabilità, accessibilità
  • Regression: verificano che modifiche non rompano funzionalità esistenti
  • Smoke: test rapidi su funzionalità chiave dopo build
  • Sanity: verifica funzionalità specifica dopo bug fix

Tecniche black-box vs white-box

  • Black-box: test basati su specifiche (no conoscenza interna): equivalence partitioning, boundary value analysis, decision table
  • White-box: test basati su codice: statement coverage, branch coverage, path coverage

TDD vs BDD

  • TDD (Test-Driven Development): test → codice → refactor
  • BDD (Behavior-Driven Development): scenari Given-When-Then in linguaggio naturale (Cucumber, Gherkin)

Piramide del test (Cohn)

LivelloQuantità
E2E (top)Pochi
IntegrationModerato
Unit (base)Molti, veloci

6 Version control e collaborazione

Git — concetti base

Sistema distribuito di version control (Linus Torvalds 2005, per kernel Linux). Ogni clone è repository completo con storia.

Comandi essenziali

  • git init — inizializza repository
  • git clone — copia repository remoto
  • git add — stage modifiche
  • git commit — crea snapshot
  • git push / git pull — sincronizza con remoto
  • git branch — gestione branch
  • git merge / git rebase — integra modifiche
  • git log — storia commit

Branching strategies

  • GitFlow: branch main, develop, feature, release, hotfix
  • GitHub Flow: main + feature branches + PR
  • Trunk-Based Development: tutti su trunk principale, feature flag per gradual rollout

Pull Request / Merge Request

Strumento collaborativo: proposta di merge con review codice, discussione, CI automatica, approvazioni richieste.

7 25 numeri chiave

#DatoValore
1Anno Waterfall (Royce)1970
2Anno Spiral Model (Boehm)1986
3Anno Manifesto Agile2001
4Fasi RUP4 (Inception/Elaboration/Construction/Transition)
5Discipline RUP9
6Fasi CRISP-DM6
7Fase CRISP-DM più lungaData Preparation (~80%)
8Modi conversione SECI4
9Anno Git (Torvalds)2005
10Livelli test classici4 (Unit/Integration/System/Acceptance)
11Anno V-Model1991
12Sistema esperto storico medicoMYCIN (anni '70)
13Sistema esperto chimicoDENDRAL
14Sistema esperto configurazioneXCON (DEC)
15Stack JS frontend+backendMEAN/MERN/MEVN
16Stack Linux+Apache+MySQL+PHPLAMP
17Anno SECI (Nonaka)1995
18Anno KADS/CommonKADSAnni '90
19Pattern Cucumber/GherkinGiven-When-Then
20Versione Scrum Guide2020
21Branching gestione mainframeGitFlow
22Trunk-based con feature flagContinuous Integration friendly
23Black-box: equivalence partitioningTecnica test
24White-box coverage minimoStatement coverage
25Modello UML standardOMG, ISO/IEC 19505

8 15 trabocchetti d'esame

#TrabocchettoRisposta corretta
1"Waterfall = nessun ritorno indietro"PARZIALE — formalmente sequenziale, in pratica revisioni iterative ammesse
2"V-Model è agile"FALSO — V-Model è plan-driven, evoluzione di Waterfall
3"RUP è un framework agile"FALSO — RUP è iterativo/incrementale ma più pesante di Scrum
4"CRISP-DM ha 8 fasi"FALSO — 6 fasi (BU, DU, DP, M, E, D)
5"Data preparation = 20% lavoro DS"FALSO — circa 80% del tempo data scientist
6"Sistemi esperti = AI generativa"FALSO — sistemi esperti sono rule-based; AI generativa è deep learning
7"TDD = test dopo il codice"FALSO — TDD = test prima del codice (Red-Green-Refactor)
8"Smoke test = test approfondito"FALSO — smoke = test rapidi su funzionalità chiave
9"Git è centralizzato come SVN"FALSO — Git è distribuito (ogni clone è repository completo)
10"Sistemi gestionali = solo agili"FALSO — spesso plan-driven (requisiti stabili, normative)
11"SECI = 5 modi conversione"FALSO — 4 modi (Socialization, Externalization, Combination, Internalization)
12"MLOps = solo deployment ML"FALSO — copre tutto il ciclo (training, deploy, monitoring, drift)
13"Black-box test usa codice"FALSO — black-box ignora interno, usa specifiche; white-box usa codice
14"Spiral Model non considera rischi"FALSO — Spiral è risk-driven (analisi rischi a ogni iterazione)
15"JAMstack = applicazioni dinamiche server-side"FALSO — JAMstack = statico + API (markup pre-renderizzato)