Intetics Co. develops an automatic source code generator for multiple programming languages
Client
A European company specializing in developing software protection and additional security solutions.
Challenge
Our client offers such software protection hardware devices as USB dongles, PCI Express Cards, and PCMCIA cards. The company provides an API (Application Programming Interface) that allows software manufacturers to protect their products with one of these devices. Our goal was to create a program that would help application developers study the hardware functionality by executing the API functions in real-time and use the API by generating sample code snippets that can be integrated into the new code.
There were a number of major challenges that we faced as we started work on the project:
- Multiple programming languages: The output code was supposed to be generated in six programming languages, which meant that we needed to have experts in respective areas working simultaneously on the code translation;
- International and multiplatform support: The application was supposed to be Unicode compliant, with the ability to provide the User Interface in different languages and to add new languages without rebuilding the application.
- Time constraints: The project had to be delivered in a short time frame, so we had to work against a tight deadline without any quality deterioration.
Solution
In less than six weeks, working in close cooperation with the client's in-house team, we successfully deployed an application that met all initial requirements. We implemented the programming code snippets in six languages for both functions and function blocks that were requested. To improve the usability of the application interface, we added the Functions and In less than six weeks, working in close cooperation with the client's in-house team, we successfully deployed an application that met all initial requirements. We implemented the programming code snippets in six languages for both functions and function blocks that were requested. To improve the usability of the application interface, we added the Functions and Function Blocks tabs to the window that originally contained only one functions tree and didn't allow for visual differentiation between the functions and function blocks. For all functions and function blocks, we created forms that allow the user to enter input data and view execution results. We also created a hex editor control; developed the processes of data entering and validation, source code generation and real-time execution, synchronization and export (XML) of function's execution history; and implemented the multi-language support.Technologies Utilized
- Trolltech Qt 4.0, XML
- Microsoft Visual Studio 6.0 (C++, C#, VB6), Microsoft Visual Studio .NET (C#, VB.NET); GCC 3.3.5; DevC++ 4.9.9.2; Borland Delphi 7; Java Eclipse (JDK 1.4.2)
Results
The application that we developed has a friendly multi-language graphic user interface and allows the user to choose a programming language; select an API function of function block and assign it parameters; generate a sample code snippet for the function or source code of complete application for a function block and save it to a file with a proper file name extension (e.g., .cpp for C++ or .dpr for Delphi); perform real-time execution of generated source code, view the results and analyze return codes. The source code of the application is platform-independent pure C++ without the usage of any OS-specific libraries. The code samples generated by the application enables software engineers working with protection hardware to use ready-made snippets in their code, which simplifies and facilitates the process of protection software programming.
