La richiesta
Comelz desiderava riscrivere un software CAD proprietario realizzato in C++, ottimizzato per il settore calzaturiero e pellettiero, che era diventato troppo difficile e costoso da mantenere; situazione che non lo rendeva competitivo rispetto alla concorrenza. Inoltre, il prodotto originale funzionava solo su piattaforma Windows, mentre nel mondo del design è molto utilizzato anche MacOs.
Gli obiettivi principali erano il miglioramento dell’interfaccia del prodotto rispettando i moderni canoni d’usabilità, e unificare diverse versioni del software al fine di minimizzare costi di manutenzione e aggiornamento.
Il prodotto finale doveva poi essere modulare e personalizzabile in base alle esigenze dei diversi reparti operativi e compatibile con le due piattaforme.
Problemi affrontati
Problema fondamentale nella realizzazione è stata l’acquisizione delle informazioni sul dominio d’uso del software (concetti di design e tagli materiali per moda)
Soluzioni implementate
Coinvolgimento del cliente, tramite installazione di una linea diretta VOIP che permettesse in ogni momento a Comelz di contattare gli sviluppatori (e viceversa) senza passare da centralini o segreterie.
Le richieste
- riscrittura del vecchio software reputato “non manutenibile”
- unificare la GUI “dalla progettazione al taglio materiali”
- ottimizzazione multi-piattaforma
- Prototipo entro 6 mesi dalla richiesta
Cosa ha fatto Develer
- prototipazione in Python (operativi nel minor tempo possibile) + PyQt
- realizzazione della GUI con Qt (Multi-piattaforma, Internazionalizzata)
- test suite automatizzate per il controllo funzionale
Risultati
- interfaccia ottimizzata per ogni area interna d’uso
- riduzione massiva del codice (il 50% in meno) da manutenere
- architettura modulare che permette il miglioramento di singole funzioni
Vantaggi introdotti dalle nostre soluzioni
- Rapid Prototyping: grazie a Python e Qt è possibile produrre prototipi delle nuove funzionalità in tempi brevissimi rispetto ad una tradizionale soluzione Qt/C++;
- Riduzione del codice scritto di almeno il 50% rispetto al vecchio CAD, nonostante il nostro codice sia ampiamente commentato
- L’architettura modulare permette di produrre in tempi ridottissimi versioni custom dell’applicazione, adattabile ai diversi workflow di ciascun cliente finale
- Abbiamo fatto un intensivo uso di tecnologie Open Source “bleeding edge” verso le quali abbiamo contribuito con numerosissime patch migliorative (vedi PyQt3Support)
- La correttezza delle varie funzionalità del programma è tenuta sotto controllo tramite una suite di test automatizzata
Vuoi ottimizzare la GUI per la tua applicazione?
In quale modo la nostra metodologia ci ha aiutato
Il nostro workflow lavorativo, basato su code review e test suite, con feedback continui da e per il committente, ci ha aiutato a superare in maniera molto più semplice l’iniziale svantaggio di un ambiente non familiare (la lavorazione di materiale per moda). Dall’inizio del progetto fino alla prima release commerciale, il reparto tecnico del committente è stato coinvolto in maniera diretta con mailing list e wiki di aggiornamento.
Per generare la nuova applicazione rispettando i parametri richiesti, abbiamo scelto di combinare le caratteristiche di deploy multi-piattaforma e la specializzazione in GUI design delle librerie Qt con la velocità di prototipazione permessa dal linguaggio Python.
La nuova applicazione risultante è quindi cross-platform (Windows, Mac OS X, Linux) e presenta un’interfaccia grafica rispondente ai moderni canoni di usabilità. L’applicativo ospita soluzioni tecniche all’avanguardia nel proprio settore, come il calcolo in parallelo di dati geometrici e lo sfruttamento dei recenti acceleratori grafici tramite librerie OpenGL.
In quale modo l’open source ha aiutato il progetto
La scelta di utilizzare strumenti open source diffusi come Python e Qt, e standard aperti come OpenGL, ha permesso al progetto di partire da basi solide e testate. Inoltre in un progetto di così vasto respiro sono stati trovati e risolti bug in Qt, e prodotte patch che adesso sono mantenute dagli sviluppatori stessi di Qt.
- Ha abbassato i costi di sviluppo, permettendo di usare le versione GPL delle Qt libere da royalties e costi licenze.
- Python ci ha permesso di essere operativi con un prototipo in tempo record.
- Utilizzare Qt ha permesso lo sviluppo di una GUI multi-piattaforma nativa.
- L’introduzione di PyQt ha permesso di creare un layer di contatto tra Python e Qt, liberandoci dall’esigenza di sviluppare un GUI Toolkit interno.
- Contribuire allo sviluppo di progetti Open come PyQt ha permesso a Develer di acquisire conoscenza del prodotto approfondita.
Il cliente
Produttore di macchinari per l’industria calzaturiera e pellettiera
Staff
“Uno dei progetti più ambiziosi intrapresi da Develer: implementare un’accelerazione completa OpenGL ed un’interfaccia utente (UI) ricca e fortemente personalizzata, per un settore molto esigente come quello del fashion design. Sebbene il progetto originale prevedesse un GUI toolkit sviluppato in-house, l’introduzione di Python e Qt ci ha permesso di focalizzare le nostre risorse sullo sviluppo delle funzionalità vere e proprie. Questa scelta ha vinto a mani basse la sfida del tempo: l’applicazione è andata in produzione nei tempi previsti, e i nuovi sviluppi vengono affrontati con serenità grazie al ridottissimo debito tecnico ed alla estesa suite di test automatici.”