CAD 2D per fashion design

Realizzazione CAD 2D con Python, Qt e OpenGL | Case Study

CAD 2D per fashion design

"Uno dei progetti più ambiziosi intrapresi da Develer: implementa una accelerazione completa OpenGL ed una UI ricca e fortemente customizzata per gli operatori molto esigenti 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."

Lorenzo Mancini, Computer Programmer @ Develer

La richiesta

Il committente desiderava riscrivere un software CAD proprietario realizzato in C++, ottimizzato per le attività del fashion design. Il proprio software interno era da anni diventato troppo difficile e costoso da mantenere, situazione che non lo rendeva competitivo rispetto alla concorrenza.  Inoltre, l'attività di design viene tipicamente portata avanti in ambienti sia Windows che Mac, piattaforma quest'ultima sulla quale il prodotto originale non funzionava.

In definitiva, la richiesta consisteva nel miglioramento dell'interfaccia del prodotto, che doveva rispettare i moderni canoni di usabilità, e nell'unificazione delle diverse versioni del prodotto, al fine di minimizzare i costi di manutenzione ed upgrade.  Il prodotto finale doveva essere modulare e personalizzabile in base alle esigenze dei diversi reparti operativi, e funzionare sulle due maggiori piattaforme desktop (Windows e Mac).

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 vastamente commentato
  • L'attuale architettura modulare permette di produrre in tempi ridottissimi versioni custom dell'applicazione, da adattarsi ai diversi workflow di ciascun cliente finale
  • Abbiamo fatto un intensivo uso di tecnologie Open Source "bleeding edge" verso le quali abbiamo contribuito numerosissime patch migliorative (vedi PyQt3Support)
  • La correttezza delle varie funzionalità del programma è tenuta sotto controllo tramite una suite di test automatizzata

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'applicazione 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.

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

Cliente

Importante produttore di macchinari industriali