kurz über C++
objektorientiertes Programmieren
Die Programmiersprache C++ ist schon seit Langem auf der Welt, dennoch ist sie immer noch sehr beliebt. Auch wenn inzwischen viele neue Sprachen entstanden sind, konnte keine das Potential von C++ übersteigen. Die C++ Sprache ist eine der Low-Level-Sprachen und deshalb ist es möglich, mit ihr sehr schnell speicheranspruchslose Applikationen zu schreiben. Heute erlebt sie ihre Wiedergeburt, da sie erneut standardisiert wird und zu einer der modernen Sprachen mit neuesten Trends auf dem Feld der Programmierungssprachen wird.
Visual Studio 2015
Visual Studio 2015
Um Quellcodes schnell und auf einem hohen Qualitätsniveau schreiben zu können, braucht man gute Entwicklungs-Tools. Anfangs konzentrierte sich unser Team vor allem auf Windows und da schien die beste Entwicklungsumgebung Visual Studio zu sein. Wir fingen mit der Version 6.0 an und mit der Zeit gingen wir bis auf die heute genutzte Version Visual Studio 2015 über. Der Vorteil von Visual Studio ist Integration mehrerer Programmiersprachen in einem Tool. Zurzeit nutzen wir XCode 7 auf der Plattform MAC OS. Um gute Quellencode schreiben zu können, braucht man jedoch auch andere Tools, wie AQTime, VTune usw.. Bei der Entwicklung unserer Produkte nutzen wir C++-Standardbibliotheken (STD, STL, BOOST usw.) und verschiedene spezialisierte Bibliotheken (ZLIB, LIBJPEG, LIBTIFF, FREETYPE und viele andere). Wir versuchen Multiplattform-Bibliotheken wegen der einfacheren zukünftigen Entwicklung auf anderen Plattformen zu nutzen.
unsere Kenntnisse
unsere Kenntnisse
Die meisten von uns sind Entwickler und unsere primäre Programmiersprache ist C++. Kenntnisse über die C++-Standardbibliotheken sind für uns das A und O. Die PDF-Spezifikation ist sehr umfangreich. Deshalb spezialisieren sich viele von uns auf gewisse Bereiche. Außerdem widmet sich ein Teil der Entwickler auch anderen Bereichen außerhalb des PDF-Formats, wie z.B. Nutzer-Interface, Verbindung zu verschiedenen DMS oder Integration unserer Produkte in andere Programme (z.B. Plug-Ins in Internet-Browser). Unser Team besteht nicht nur aus Entwicklern, sondern auch aus Spezialisten für Installationen, Testen oder Teammitgliedern, die sich um die Spezifikationen und Aufgabenaufteilung kümmern. Viele von uns beherrschen außer der C++-Sprache auch andere Programmiersprachen (JAVA, C# usw.). Unser Team ist in der Lage, die ganze Arbeit am Projekt von seinem Beginn bis zu Lieferung des finalen Produkts gewährleisten. So müssen Sie für professionelles finales Produkt keine weiteren Teams einstellen.
GIT und Team-Arbeit
GIT und Team-Arbeit
Die Arbeit im Team bringt mit sich die Notwendigkeit, den Team effektiv zu leiten und den Quellencode zu teilen. Anfangs haben wir unsere eigenen Systeme zu Teilung des Quellencodes genutzt. Wie der Team gewachsen ist, brauchten wir die Teilung effektiver zu gestallten. Dazu half uns das CVS-System auf eigenem Server und später haben wir eine professionelle Lösung implementiert. In 2012 gingen wir auf das GIT-System über. Zurzeit nutzen wir GITHUB zur Teilung des Quellencodes zwischen den Programmierern und den Building-Systemen. Zur Aufteilung der Aufgaben im Team und ihren Überwachung nutzen wir die Systeme JIRA und Confluence, die alle Aufgaben sowie Fehler in unseren Applikationen aufzeichnen. Die Aufgaben werden automatisch den zuständigen Personen zugeteilt, was uns hilft, Übersicht über den Gesamtdurchgang und Nutzung der Teammitglieder und Mitteln zu behalten. Für die Erstellung des finalen Produkts haben wir das Bamboo-System genutzt. Seit 2016 nutzen wir das System Jenkins.
Modernes C++
Modern, schnell, effektiv, robust und optimal – so könnte man den Kode beschreiben, der mit einer der modernen Standards der C++-Sprache geschrieben wurde. Der neue C++11-Standard hat die Sprache wieder unter die modernen, schnellen und effektiven Sprachen gebracht. Der C++14-Standard hat diesen Trend nur unterstrichen und Optimalität und Robustheit der Sprache beigefügt. Zurzeit wird der neue C++17-Standard vorbereitet, der neue Funktionen mit sich bringt und die moderne C++-Sprache auf das Topniveau katapultiert.
Multiplattformität
Obwohl unser Produkt Nitro Pro überwiegend für das Operationssystem Windows verkauft wird, die PDF-Dokument-Bibliothek ist für verschiedene Plattformen geschrieben. Die Bibliothek kann mit Windows, MAC, und iOS genutzt werden und wir arbeiten auch an der Version für Android und Linux. Die Bibliothek ist in der C++-Sprache geschrieben und ist durch das HFT (host function table, Funktionentabelle). Das ermöglicht uns, eine Funktion einfach zu ändern, je nach Architektur. Die Bibliothek kann statisch sowie dynamisch verbunden sein, je nach den Bedürfnissen.
Genutzten Bibliotheken
Bei unserer Arbeit helfen uns auch Bibliotheken von Dritten. Außer der Standardbibliothek von C++ nutzen wir auch die Bibliotheken boost und Qt, bzw. Bibliotheken der Operationssysteme, um den optimalen Kode zu schreiben. Außerdem verweist der PDF-Standard auf viele andere Algorithmen und Standards, deshalb nutzen wir auch spezialisierte Bibliotheken, z.B. zLib, FreeType, Anti-Grain Geometry (AGG), OpenSSL und viele andere.
Testen
Der beste Tester ist der Kunde. Trotzdem ist es notwendig, das Produkt zu testen, damit es auf dem erwünschten Qualitätsniveau geliefert wird. Testen verläuft auf verschiedenen Ebenen – vom Basistesten durch den Entwickler und Testen durch interne oder externe Tester-Teams, bis zu Integrationstests. Zum Testen nutzen wir Unit-Tests, Case-Tests, automatische Tests, Regressionstests sowie Tests durch Dritte. Wir nutzen auch Tools, wie VTune, AQTime, JIRA, Bugsplat und andere.