Modernizzazione

riscrittura

Aggiornamento

Il mio software funziona, perché spendere tempo e denaro per riscriverlo?” Questa è chiaramente la prima domanda da porsi. Riscrivere un nuovo programma richiedere spendere tempo per analizzare, testare e ottimizzare il nuovo codice sorgente. Quindi perché “perdere” tempo a farlo se tutto funziona correttamente? Qui cercherò di spiegarti perché riscrivere o modernizzare il tuo codice è un investimento

Multiprocessore e calcolo parallelo

Oggigiorno, quando acquisti un nuovo computer o utilizzi servizi cloud ottieni processori con multipli cores. Questo è un modo per dire che il tuo processore è in grado di compiere più di una operazione allo stesso tempo. I moderni processori richiedono un codice scritto appositamente per loro per poter sfruttare appieno la capacità di eseguire più di una operazione alla volta. Se il tuo codice non è ottimizzato, l’unico modo di “farlo andare” più veloce consiste nell’usare processori a più alte frequenze. Questo significa spendere anche 2-3 volte il costo di un processore più economico per avere un aumento di velocità del 20-30%. Oggigiorno anche i processori più economici hanno almeno 4-6 cores, il che equivale ad un aumento delle prestazioni fino al 500% se usati tutti. Quindi, avere un codice ottimizzato ti evita di comprare hardware eccessivamente costoso. Inoltre processori ad alte frequenze, di solito, hanno anche più core disponibili. Quindi, anche se intendi comprare processori più costosi, un codice ottimizzato di permetterà di usare appieno il tuo hardware.

Documentazione e aggiornamento

Prima o poi il codice dovrà essere modificato. Perché deve essere usato in un contesto differente, perché deve acquisire dati in modo diverso o per adattarsi a nuovi standard o leggi. Per essere competitivi è necessario avere un nuovo codice funzionante nel minor tempo possibile al fine di battere la concorrenza. Il rischio è che non ci sia tempo di produrre una documentazione dettagliata del codice sorgente. Nel tempo, questo processo renderà il codice sorgente difficile da capire, allungherà i tempi di sviluppo ed eventualmente diventerà instabile.   In situazioni come questa, riscrivere il programma con una documentazione dettagliata e magari scegliendo un diversa organizzazione del codice sorgente può rendere il programma più veloce, più stabile e ridurre i tempi di sviluppo di nuove versioni. 

Gestione degli errori

Qualsiasi programma incontra degli errori. Forse l’utente ha inserito un tipo di dato inatteso, oppure il file è danneggiato o la connessione di rete cade accidentalmente. Per ogni tipo di errore il programma dovrebbe provvedere una chiara indicazione del problema ed eventualmente salvare tutto il lavoro già eseguito. Sfortunatamente, molto spesso è impossibile predire ogni possibile errore. In altri casi il messaggio di errore è invece incomprensibile. Quante volte capita di ricevere un criptico “il programma non si è concluso correttamente”, senza sapere come comportarsi? La riscrittura del codice ti aiuta ad avere messaggi di errore più chiari ed ad aggiungere funzionalità di salvataggio e recupero per situazioni critiche. Molto spesso è possibile recuperare giorni di lavoro o evitare del tutto perdite di dati con una gestione appropriata degli errori.

Nuove tecnologie

Nuove tecnologie appaiono costantemente. Per esempio, oggigiorno molte apparecchiature usano una presa tipo USB per collegarsi al computer o tra loro. Se un programma non riesce ad utilizzare questo tipo di connessione, si è obbligati a comprare schede di compatibilità, adattatori, emulatori e drivers che molto spesso non sono ottimizzati per i moderni sistemi operativi. La conseguenza sono instabilità, disconnessioni, perdita di dati e interferenze, che a loro volta richiedono ulteriori accorgimenti per essere minimizzati. In alcuni casi l’unica soluzione è utilizzare macchinari estremamente datati e privi di qualsiasi assistenza con il rischio di ritrovarsi un giorno con un programma completamente inutilizzabile su hardware moderno. Modernizzando il tuo codice affinché utilizzi hardware e interfacce più recenti riduci i rischi di incompatibilità, puoi trarre vantaggio dalle più moderne tecnologie, riduci i costi di assistenza tecnica e non rischi di perdere dati importanti.

Cambiare linguaggio di programmazione

Perché cambiare linguaggio di programmazione? Questo può sembrare un dettaglio, ma in realtà è una importante decisione per il tuo business. Linguaggi come il cobol e il fortran che sono stati utilizzati frequentemente in passato, molto spesso non vengono più insegnati all’università. Di conseguenza, molto spesso ti devi affidare a persone che sono autodidatti o che hanno una limitata conoscenza degli algoritmi utilizzati o delle migliori pratiche di programmazione. A questo punto, diventa molto difficile trovare personale che abbia le qualifiche desiderate. Inoltre, un diverso linguaggio di programmazione può avere funzioni di libreria ottimizzate già pronte all’uso. Per questi motivi, la riscrittura di un programma in un linguaggio moderno rende molto più semplice trovare personale qualificato e riduce i costi di manutenzione notevolmente.

I nostri servizi

Modernizzazione e/o riscrittura?

Per riscrittura si intende sia la conversione da un linguaggio di programmazione ad un altro, oppure riscrivere il programma in modo che sia più efficiente o per fissare errori. Si tratta di una procedura molto conservativa dove il nuovo codice riproduce esattamente il comportamento del programma originario in modo ottimizzato ed eventualmente più stabile. Nessuna nuova funzione viene aggiunta

Per modernizzazione si intende l’adeguamento a nuove tecnologie no n presenti al momento della scrittura. Questo significa l’utilizzo di nuove interfacce, la rete o calcolo parallelo. In questo caso il codice e gli algoritmi utilizzati possono cambiare considerevolmente.

In generale è difficile distinguere tra i due casi. Per esempio, anche se non si intende aggiungere nuove interfacce di comunicazione, si potrebbe richiedere che alcune piccole porzione del codice sorgente siano scritte in modo parallelo. Comunque, questa suddivisione dà un’idea dei problemi che possono presentarsi. In una riscrittura pura il codice originario e il nuovo codice devono dare sempre gli stessi risultati. In una modernizzazione questo non è sempre garantito. Per esempio, se si una una nuova periferica che produce dati usando un campionamento superiore o con una precisione più alta dell’originale.

Cosa offriamo

  • Riscrittura in un nuovo linguaggio di programmazione. Abbiamo esperienza in Cobol, Fortran, Java, Python (versione 2 & 3), C, C++, kotlin, Perl. Siamo sempre interessati a cimentarci con nuovi linguaggi. Se il tuo linguaggio di riferimento non è nella lista chiedi
  • Possiamo parallelizzare il tuo programma. Di solito usiamo MPI, OpenMP, pthread, ma alcuni sistemi hanno API specifiche
  • Uso di GPU. CUDA e OpenCL
  • Utilizzo di interfacce seriali
  • Documentazione accurata delle funzioni riscritte e/o ottimizzate. Nel caso di riscrittura completa la documentazione include l’intero programma. Si fa notare che intendiamo la documentazione delle funzioni interne al programma e gli algoritmi usati non il manuale dell’utente. Possiamo provvedere documentazione di tipo Doxygen, in formato pdf in aggiunta ai commenti interni al codice
  • Scrivere interfacce con un database, inclusi comandi SQL
  • Possiamo operare in tutti i sistemi operativi: Linux, Windows, Mac, Unix & derivati
  • Si fanno port tra diversi sistemi operativi.