Software su misura / Nota di lavoro
Chi possiede il codice sorgente di un software su misura?
Proprietà del codice sorgente, repository, account, dati e continuità: cosa chiarire prima di commissionare un software su misura.
Se stai commissionando un software su misura, la domanda «il software è mio?» non ha una risposta sola. Puoi avere il diritto di usare l'applicazione e comunque non ricevere i sorgenti. Oppure puoi ricevere il codice, ma non gli account e le istruzioni che servono per pubblicarlo e mantenerlo.
Prima della firma conviene quindi separare tre cose: i diritti sul codice, la possibilità concreta di far mantenere il prodotto e il controllo sui dati. Il preventivo e il contratto dovrebbero dire chi consegna cosa, con quali limiti e in quale momento.
«Avere il software» può voler dire tre cose diverse
Il codice sorgente è l'insieme dei file che una persona tecnica può leggere e modificare. Il programma compilato o pubblicato è invece quello che usano ogni giorno le persone in azienda. Un accesso all'applicazione, anche se completo, non equivale automaticamente alla consegna dei sorgenti.
Poi ci sono i diritti. La Direttiva 2009/24/CE sulla tutela giuridica dei programmi per elaboratore protegge il programma nella sua espressione e riserva al titolare determinati atti, come la riproduzione, la trasformazione e la distribuzione. La legge italiana sul diritto d'autore include i programmi tra le opere protette e disciplina i diritti di utilizzazione e alcune eccezioni specifiche.
Queste norme, da sole, non assegnano al cliente tutti i diritti sul codice. Bisogna guardare il contratto, il rapporto tra le parti, il lavoro di eventuali dipendenti o collaboratori e i componenti già esistenti. Nel testo contrattuale conviene distinguere:
- il diritto di usare il software e per quali soggetti, sedi o società;
- la consegna dei sorgenti e dei materiali necessari per studiarli e modificarli;
- la cessione o la licenza dei diritti di utilizzazione economica, con il perimetro concordato;
- il codice che il fornitore aveva già e le librerie o i servizi di terzi.
«Il cliente possiede il software» non basta per capire cosa succede se cambi fornitore. Fai controllare le clausole da un professionista legale: questo articolo prepara domande tecniche e contrattuali, non è un parere.
Prima della firma chiarisci che cosa viene ceduto e che cosa viene licenziato
Un progetto può contenere codice scritto apposta per la tua azienda e codice riutilizzabile che il fornitore usa in più lavori. Può usare librerie open source, componenti acquistati, un servizio per i pagamenti o un'API esterna. Non è detto che ogni pezzo possa essere ceduto allo stesso modo, e non sarebbe corretto prometterlo senza vedere le licenze e gli accordi che lo regolano.
Chiedi quindi un elenco dei componenti principali. Per il codice sviluppato per il progetto, fai indicare quali diritti ricevi, da quando, per quanto tempo e con quali limiti: puoi modificarlo? Puoi incaricare un altro sviluppatore? Puoi usarlo per più società del gruppo? Puoi creare una versione derivata? Le risposte devono restare leggibili anche dentro il contratto.
Per il codice preesistente chiedi invece quale licenza ricevi e cosa accade se il rapporto finisce. La stessa attenzione vale per font, immagini, template, pacchetti software e servizi che hanno condizioni proprie. Un software può funzionare perfettamente e restare comunque legato a una licenza o a un account che non controlli.
Anche il repository merita una frase precisa. Dovrebbe essere chiaro se avrai un accesso amministrativo o soltanto una copia alla fine, se riceverai la cronologia e le versioni rilasciate, e chi potrà approvare o pubblicare le modifiche. Se il codice si trova nell'organizzazione del fornitore, stabilisci come trasferirlo e come recuperarlo in caso di interruzione del rapporto.
La consegna non è un file ZIP
Per mantenere un software serve poterlo ricostruire, provare e pubblicare. Un archivio dei sorgenti senza istruzioni può essere quasi inutile a chi arriva dopo, soprattutto quando il progetto dipende da servizi esterni o da una configurazione che conosce soltanto chi lo ha sviluppato.
Nella consegna controlla:
- repository completo, con sorgenti, configurazioni non riservate, cronologia, versioni rilasciate e istruzioni per avviare il progetto;
- documentazione essenziale su come è organizzato il progetto, configurazione, dipendenze, procedura per creare e pubblicare una versione e limiti conosciuti;
- accessi intestati all'azienda per hosting, database, dominio, DNS, storage, email, pagamenti, API e monitoraggio;
- procedura per backup e ripristino, con una prova che permetta di capire se il backup è davvero utilizzabile;
- elenco di dipendenze e licenze, versioni supportate, test disponibili e attività manuali necessarie per pubblicare una nuova versione;
- trasferimento sicuro delle credenziali, senza lasciarle dentro il codice o in documenti condivisi senza protezione.
La proprietà pratica degli account conta quanto quella dei file. Se dominio, cloud e database sono intestati al fornitore, un cambio di sviluppatore può diventare una trattativa anche quando i diritti sul codice sono stati scritti bene. Se invece gli account appartengono all'azienda e il fornitore ha accessi delegati, la continuità è più semplice da organizzare.
La manutenzione va concordata nello stesso momento. Un bug, un aggiornamento di una dipendenza e una nuova funzione sono lavori diversi, con responsabilità e costi diversi. Nell'articolo su come organizzare la manutenzione del software personalizzato trovi le domande da fare su accessi, backup, servizi esterni e richieste dopo il rilascio.
Il codice e i dati non sono la stessa cosa
Il database contiene informazioni dell'azienda, dei clienti e del lavoro quotidiano. Il modello che organizza quelle informazioni fa parte del software; i record, i documenti caricati e lo storico sono un altro oggetto da considerare nel contratto e nel piano di uscita.
Prima di iniziare, stabilisci quali dati puoi esportare, in quale formato e con quali collegamenti. Un CSV può bastare per un elenco semplice, ma non descrive da solo relazioni tra clienti, contratti, allegati, stati e storico delle modifiche. Chiedi anche chi prepara l'esportazione, quanto tempo resta disponibile il vecchio ambiente e cosa succede ai backup dopo la chiusura del rapporto.
Questa distinzione torna utile anche se oggi non pensi di cambiare fornitore. Nel caso di una migrazione dei dati verso un nuovo gestionale, sapere chi decide quali informazioni sono corrette e come si controlla il risultato evita di scoprire i problemi il giorno del passaggio. I diritti sul codice non garantiscono da soli un export completo dei dati, così come un export non ti consegna il codice necessario a far funzionare l'applicazione altrove.
Le domande da mettere nel preventivo
Quando confronti due offerte, aggiungi una sezione dedicata a proprietà, accessi e continuità. Puoi chiedere:
- Quali sorgenti e materiali verranno consegnati, e in quale fase?
- Quali diritti potrò esercitare sul codice sviluppato per il progetto?
- Quali parti restano del fornitore o dipendono da licenze di terzi?
- Chi controlla repository, dominio, hosting, database e account dei servizi esterni?
- Un altro sviluppatore può installare, testare e pubblicare il software usando la documentazione consegnata?
- Quali dati, allegati, relazioni e log posso esportare se il rapporto termina?
- Come vengono gestiti il passaggio di consegna, i backup, le credenziali e l'assistenza?
- Che cosa è compreso nel prezzo e che cosa diventa manutenzione o sviluppo separato?
Nella guida su quanto costa un software personalizzato trovi altri criteri per confrontare preventivi: analisi, dati, integrazioni e lavoro dopo la pubblicazione contano anche quando non compaiono nella prima riga dell'offerta.
Nel progetto di un gestionale personalizzato, per esempio, codice, dati, contratti e attività fanno parte dello stesso flusso di lavoro. Se un domani dovesse occuparsene un'altra persona, non le basterebbe ricevere i file: le servirebbero accessi funzionanti e istruzioni utilizzabili.
Se stai raccogliendo un preventivo, puoi portare questa lista al confronto con chi svilupperà il prodotto. Per capire come affronto analisi, prototipo, sviluppo e consegna di software, CRM e gestionali su misura, la pagina del servizio descrive il percorso; le clausole sui diritti e sui dati restano comunque da adattare al tuo caso e da verificare con il professionista che ti assiste.