Excellarate’s client Quickoffice is the worldwide leader in mobile office solutions, which got acquired by Google in June 2012. Their flagship, award-winning software allows mobile user to view, edit and create Microsoft® Word, Excel and PowerPoint documents on their mobile/Desktop devices.
Excellarate’s Role
Excellarate developed the Java Core API which is now used as a backend for Google Docs.
The Java Core API was built for Office 2007 (OOXML format) and later extended for Office 2003 (Binary format).
The Java Core API is a Java Document Processing Engine which can work on any Java Platform (including Android). The Java Core API or library was bought over by Google, and subsequently used in backend infrastructure for Google Drive (earlier called as Google Docs).
Challenges & Solutions
The initial challenge was to map an older document format to a newer one with no data loss or corruption, which was overcome by a lot of research and debugging. Team also needed to constantly work with documents having incorrect specs, which was dealt by –
Lack of proper specification of office 2003 format was also challenging, which was overcome by reverse engineering the Office 2003 specs.
It was difficult to finely balance between Specification Adherence and Project delivery, which was handled by prioritizing tasks with delivery schedules.
At the Quality Assurance level too, managing the ever growing documents and testing the Java Core API across was cumbersome, but Excellarate team was able to overcome this too by proper QA automation.
The QA team automated a large collection of documents. They automated screenshots taken for documents from actual Microsoft Office Suites before and after, opening and saving the file using QO Java Core. They automated comparison of the images with certain tolerance for automated report while also automating the analysis of the collected documents to indicate what features were being tested and till what level.
Results
Excellarate team successfully created the Java Core API, which is an engineering library.
A lot of emphasis was given to QA Data Quality Metrics and Automation. The Automation Suite included an automated way to download random Office documents from the internet and then adding them to the suite.
Further, it also included running the documents through a “Read and Save” cycle from QO Java Core. This was then compared with Visual Screenshots on actual Microsoft Office product before and after the save Operation in QO JavaCore.
Later the JavaCore API became the basis for all Office products at Quickoffice. It was automatically ported from Java to C++ (to a large extent) using an internal conversion tool named Chameleon (for the main domain classes). Rest of the Engine code was converted manually for performance reasons.
The Java Core layer supports round-tripping of following file formats:
- Microsoft® Office 2003 Binary
- Microsoft® Office Open XML 2007