Il contratto di sviluppo software: cosa regolare
Un contratto di sviluppo software mal scritto genera conflitti quasi certi: chi possiede il codice, cosa era davvero incluso, chi paga i ritardi. In Svizzera il Codice delle obbligazioni offre una cornice, ma lascia molti punti alla volontà delle parti. Un contratto chiaro non serve a litigare meglio: serve a non litigare affatto. Vediamo cosa regolare, dal lato di chi commissiona come di chi sviluppa.
La natura del contratto
Prima di tutto va capito che tipo di rapporto si crea. In Svizzera lo sviluppo su commessa si avvicina spesso al contratto d’appalto, in cui il fornitore deve consegnare un’opera che funziona, non solo mettere a disposizione ore di lavoro. Altri modelli, tipo il rapporto a corpo con obbligazione di risultato o la prestazione a tempo e materiali, distribuiscono in modo diverso il rischio. Confondere “ti pago per un risultato” con “ti pago per il tempo che dedichi” è all’origine di molte controversie.
Proprietà del codice e diritti
È il punto su cui più spesso ci si scopre in disaccordo a lavoro finito. Vanno chiariti per iscritto:
- A chi appartengono i diritti sul software sviluppato: senza una cessione espressa, il committente rischia di non avere tutti i diritti che crede.
- Il codice sorgente: viene consegnato o resta al fornitore? È una differenza enorme per la libertà futura del committente.
- Le componenti preesistenti del fornitore riutilizzate nel progetto: di norma restano sue, ma serve una licenza d’uso chiara a favore del committente.
- Le componenti open source incluse: vanno dichiarate, con le relative licenze e i vincoli che comportano.
Chi commissiona vuole poter usare, modificare e far evolvere il software anche con un altro fornitore. Chi sviluppa vuole tutelare il proprio know-how riutilizzabile. Il contratto trova il punto di equilibrio.
Specifiche, collaudo e cambiamenti
Gran parte dei conflitti nasce dal “non era questo che avevo chiesto”. Per evitarlo:
- Specifiche allegate: cosa il software deve fare, con un livello di dettaglio sufficiente. È l’ancora di ogni discussione successiva.
- Criteri di collaudo: come si verifica che il risultato sia conforme, e cosa succede se non lo è.
- Gestione delle modifiche: una procedura per le richieste di cambiamento in corso d’opera, con impatto su tempi e prezzo. Senza, ogni “piccola aggiunta” diventa un contenzioso.
- Milestone e pagamenti: legare gli acconti a fasi verificabili protegge entrambe le parti.
Tempi, garanzia e manutenzione
- Tempi e ritardi: scadenze realistiche e conseguenze del ritardo, distinguendo le cause imputabili al fornitore da quelle del committente (per esempio contenuti o approvazioni mancanti).
- Garanzia sui difetti: durata e modalità con cui i difetti vengono corretti dopo la consegna.
- Manutenzione ed evoluzione: la manutenzione è un contratto diverso dallo sviluppo. Vanno definiti tempi di intervento, correzioni, aggiornamenti e costi, per iscritto e separatamente.
Responsabilità, dati e uscita
- Limiti di responsabilità: entro i confini ammessi dal diritto svizzero, si definiscono i tetti e le esclusioni. La responsabilità per dolo e colpa grave non si esclude.
- Protezione dei dati: se il software tratta dati personali, il contratto deve regolare ruoli e obblighi in materia.
- Riservatezza: informazioni e materiali scambiati vanno protetti.
- Recesso e uscita: come si chiude il rapporto, cosa viene consegnato (codice, documentazione, credenziali) e come avviene il passaggio a un altro fornitore. La clausola di uscita è quella che si rivela decisiva quando i rapporti si guastano.
In sintesi
- Definisci la natura del contratto: risultato o tempo e materiali cambiano tutto il rischio.
- Regola per iscritto proprietà del codice, sorgente, componenti preesistenti e open source.
- Ancora il progetto a specifiche, criteri di collaudo e una procedura per le modifiche.
- Non dimenticare garanzia, manutenzione separata, responsabilità, dati e clausola di uscita.
Come ti aiutiamo
Redigiamo e revisioniamo contratti di sviluppo software su misura, dal lato di chi commissiona come di chi sviluppa, con attenzione a proprietà del codice, collaudo e uscita. Parliamo del tuo contratto.