Nei contratti di sviluppo software, la riservatezza è particolarmente critica perché tocca elementi di valore strategico: l'architettura del sistema, il codice sorgente, i dati degli utenti, i processi di business implementati. Una gestione inadeguata può creare problemi sia per il cliente che per lo sviluppatore.
Cosa deve essere protetto
In un tipico contratto di sviluppo software, le informazioni riservate includono:
- Lato cliente: requisiti di business, processi interni, dati utenti, architettura esistente, roadmap di prodotto
- Lato sviluppatore: metodologie proprietarie, componenti riutilizzabili pre-esistenti, know-how tecnico, codice di librerie interne
- Condiviso: codice sviluppato nel progetto, documentazione tecnica, specifiche funzionali
La distinzione tra codice commissionato e componenti pre-esistenti
Uno dei punti più sensibili è la distinzione tra il codice sviluppato appositamente per il cliente (generalmente ceduto al cliente) e i componenti, librerie o framework pre-esistenti dello sviluppatore che vengono inclusi nel progetto.
Il contratto dovrebbe chiarire:
- Cosa è sviluppato ex novo e appartiene al cliente
- Quali componenti pre-esistenti vengono utilizzati e con quale licenza
- Se lo sviluppatore mantiene il diritto di riutilizzare pattern o metodologie (non il codice specifico) in altri progetti
Le clausole di riservatezza specifiche per il software
Accesso ai sistemi: durante lo sviluppo, il team potrebbe avere accesso a sistemi di produzione o staging del cliente. Il contratto dovrebbe specificare chi ha accesso a cosa, con quale credenziali, e cosa deve succedere con quegli accessi alla fine del contratto (revoca immediata).
Dati personali: se lo sviluppatore accede a dati di utenti del cliente, è necessario un accordo di trattamento dati (DPA - Data Processing Agreement) come richiesto dal GDPR. Il cliente è il titolare, lo sviluppatore è il responsabile del trattamento.
Ambienti di sviluppo: i dati reali non dovrebbero mai essere usati negli ambienti di sviluppo e test. Il contratto può prevedere l'obbligo di usare dati anonimizzati per i test.
Il repository e il codice sorgente
Specifica nel contratto:
- Chi ospita il repository (cliente o fornitore)
- Chi ha accesso e con quali permessi
- Cosa succede al codice nel repository del fornitore alla fine del contratto (trasferimento, cancellazione)
- Se il cliente riceve il codice sorgente completo o solo i binari compilati
La riservatezza post-contrattuale
Anche dopo la fine del contratto, lo sviluppatore conosce dettagli dell'architettura e dei sistemi del cliente. Una clausola di riservatezza post-contrattuale di 2-3 anni è standard e ragionevole. Attenzione però che questa clausola non limiti eccessivamente la libertà professionale dello sviluppatore di lavorare in settori simili.
Cosa verificare prima di firmare
Come sviluppatore, verifica che il contratto non ti impedisca di usare pattern o tecnologie generali che usi abitualmente. Come cliente, verifica che il contratto preveda la consegna del codice sorgente completo e la revoca degli accessi al termine del rapporto.