Caligola CAD 2D
Rewriting a CAD package for footwear and leather goods industries.
Comelz wanted to re-write a proprietary CAD written in C++ and optimized for footwear and leather goods design. The existing software had become too difficult and costly to maintain and had become a competitive liability. What’s more, the target users of the product frequently used Windows or Mac OS, the latter of which was unsupported by the original product.
The key goals were to improve the user interface to meet modern usability standards and to unify disparate versions of the product to minimize maintenance and upgrade costs.
The final product needed to be modular, customizable to the needs of different department and run on the two major desktop platforms (Windows and Mac).
Unfamiliarity with the problem domain (concepts relating to fashion design and production, especially material cutting)
Close collaboration with client through the installation of a direct line (VOIP) permitting the client immediate access to developers (and vice versa)
Are you looking to build an amazing new product?
- Re-writing a piece of legacy software considered “unmaintainable” by its owner
- Unify the GUI “from design to cutting material”
- Cross-platform optimization
- Prototype within six months of project start
- Prototype in Python + PyQt (with minimal lead time)
- Creation of GUI with Qt (cross-platform, multilingual)
- Automated test suite for quality control
- Interface optimized for users in different departments
- Massive reduction of size of code base (50% or more)
- Modular architecture aids maintenance and customization
Advantages of our solution
- Rapid prototyping: thanks to Python and Qt we can produce prototypes of new functionality in very little time compared to traditional C/C++ solutions
- Reduction of source code by at least 50% compared to the previous solution despite being heavily commented
- The new architecture allows us to quickly produce custom versions of the application and adapt the software to each client’s workflow
- We relied heavily on bleeding edge open source technologies to which we contributed major improvements (see PyQt3Support)
- Correctness is maintained through a suite of automated tests
Advantages of our approach
Our workflow of constant code reviews and test suites, combined with continuous feedback to and from the client, helped us overcome the challenging environment of fashion design and production. From initial ramp-up to first release, the client’s technical department was directly involved and kept current through mailing lists and a wiki.
To build the new application while meeting our client’s expectations, we produced platform-specific binaries using the industrial-strength Qt library combined with the rapid development cycles of the Python programming language.
The new application is therefore cross-platform (Windows, Mac OS X, Linux) and presents a native-feeling application that respects current standards for usability. The software incorporates solutions beyond what the competition offers, such as parallel calculation of geometry data and the use of hardware acceleration through OpenGL.
Advantages of Open Source
Choosing well-known open source tools such as Python and Qt, as well as open standards such as OpenGL, put the project on a solid, well-tested foundation. Moreover, during the course of development of such a large project, bugs were found and fixed in Qt and the resulting patches have been incorporated into the mainstream Qt library.
- Reduced development costs, permitting us to use the GPL-licensed version of Qt, free of royalty or licensing costs
- Python enabled us to get a prototype off the ground in record time
- Qt provides a cross-platform GUI framework with native look and feel
- PyQt permits full interoperability between Python and Qt, avoiding the need to build and maintain our own GUI toolkit
- Contributing to open source projects used during development, such as PyQt, gives Develer the opportunity to acquire a deeper understanding of the underlying technology
“One of the most ambitious projects undertaken by Develer: a rich and highly customizable user interface with OpenGL-based hardware acceleration for demanding users in the fashion design industry. Although the original plan called for an in-house GUI toolkit, the introduction of Python and Qt permitted us to focus our resources on functionality rather than maintaining this library. This decision has stood the test of time: the application was released on time and new development is aided not only by the lowered technical debt but also by the extensive suite of automated tests.”