GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die...

8
Dieser Fachbeitrag ist ein Service der InfraSoft Profis für Ihre professionelle Softwareentwicklung. GUI-Programmierung in C++ mit Open Source Tools Dieser Artikel beschreibt eine Reihe von aufeinander abgestimmten Open Source Tools, mit denen Softwareentwickler Windows-Anwendungen mit grafischer Benutzeroberfläche in der Programmiersprache C++ erstellen können. Die im Beitrag dargestellten Werkzeuge wurden nach einem umfangreichen Evaluierungsprozess ausgewählt und als Toolset erfolgreich getestet. Dieses Toolset stellt eine funktionierende Open Source Lösung für die GUI-Programmierung unter Windows mit der Programmiersprache C++ dar. 1. Einleitung Eine effektive Programmierung von Windows-Anwendungen mit grafischer Benutzeroberfläche in C++ ist seit längerer Zeit ohne weiteres möglich. Mehrere kommerzielle Entwicklungswerkzeuge erlauben die Erstellung von Windows- Applikationen samt grafischer Oberfläche durch den Einsatz einer einzigen Entwicklungsumgebung, in der das Editieren, Kompilieren, Linken, Debuggen und auch der Entwurf und das Einbinden von grafischen Komponenten möglich ist. Die Unterstützung eines Versionsverwaltungssystems ist in den meisten großen IDEs auch vorhanden. Zur vollständigen Ausrüstung einer Windows-Applikation gehören dann auch noch ein Hilfesystem und ein Installationsprogramm mit grafischer Oberfläche. Diese Werkzeuge sind meist externe kommerzielle Produkte. Im Open Source Bereich ist eine Komplettlösung mit nur einem Tool nicht verfügbar. Deswegen muss eine reine Open Source Lösung mit mehreren aufeinander abgestimmten Werkzeugen zusammengestellt werden. Dieser Beitrag beschreibt eine sinnvolle Kombination solcher Werkzeuge, die sich in Praxis mit Erfolg einsetzen lässt. 2. Anforderungen Die Anforderungen für die Zusammenstellung einer Reihe von Werkzeugen muss gewichtet betrachtet werden. Die höchste Priorität bei den Anforderungen haben die Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen GUI-Anwendung ermöglichen. Test Frameworks und Logging Libraries sind in den meisten Fällen externe Bibliotheken, die als Source Code verfügbar sind. Werkzeuge für die Erstellung von Hilfedateien und Installations-Routinen sind eigenständige Applikationen. Für die Verwaltung von Versionen soll ein geeignetes Kontrollsystem zum Einsatz kommen. © InfraSoft GmbH – Die PROFIS www.infrasoft.at 1 von 8

Transcript of GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die...

Page 1: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

Dieser Fachbeitrag ist ein Service der InfraSoft Profis für Ihre professionelle Softwareentwicklung. GUI-Programmierung in C++ mit Open Source Tools Dieser Artikel beschreibt eine Reihe von aufeinander abgestimmten Open Source Tools, mit denen Softwareentwickler Windows-Anwendungen mit grafischer Benutzeroberfläche in der Programmiersprache C++ erstellen können. Die im Beitrag dargestellten Werkzeuge wurden nach einem umfangreichen Evaluierungsprozess ausgewählt und als Toolset erfolgreich getestet. Dieses Toolset stellt eine funktionierende Open Source Lösung für die GUI-Programmierung unter Windows mit der Programmiersprache C++ dar. 1. Einleitung Eine effektive Programmierung von Windows-Anwendungen mit grafischer Benutzeroberfläche in C++ ist seit längerer Zeit ohne weiteres möglich. Mehrere kommerzielle Entwicklungswerkzeuge erlauben die Erstellung von Windows-Applikationen samt grafischer Oberfläche durch den Einsatz einer einzigen Entwicklungsumgebung, in der das Editieren, Kompilieren, Linken, Debuggen und auch der Entwurf und das Einbinden von grafischen Komponenten möglich ist. Die Unterstützung eines Versionsverwaltungssystems ist in den meisten großen IDEs auch vorhanden. Zur vollständigen Ausrüstung einer Windows-Applikation gehören dann auch noch ein Hilfesystem und ein Installationsprogramm mit grafischer Oberfläche. Diese Werkzeuge sind meist externe kommerzielle Produkte. Im Open Source Bereich ist eine Komplettlösung mit nur einem Tool nicht verfügbar. Deswegen muss eine reine Open Source Lösung mit mehreren aufeinander abgestimmten Werkzeugen zusammengestellt werden. Dieser Beitrag beschreibt eine sinnvolle Kombination solcher Werkzeuge, die sich in Praxis mit Erfolg einsetzen lässt. 2. Anforderungen Die Anforderungen für die Zusammenstellung einer Reihe von Werkzeugen muss gewichtet betrachtet werden. Die höchste Priorität bei den Anforderungen haben die Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen GUI-Anwendung ermöglichen. Test Frameworks und Logging Libraries sind in den meisten Fällen externe Bibliotheken, die als Source Code verfügbar sind. Werkzeuge für die Erstellung von Hilfedateien und Installations-Routinen sind eigenständige Applikationen. Für die Verwaltung von Versionen soll ein geeignetes Kontrollsystem zum Einsatz kommen.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 1 von 8

Page 2: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

Die notwendigen Werkzeuge lassen sich wie folgt aufgliedern: Basiswerkzeuge:

Integrierte Entwicklungsumgebung (IDE) C/C++ Compiler/Linker/Debugger GUI Library oder C++ Application Framework Resource Compiler GUI Designer

Zusätzliche (Hilfs-)Bibliotheken:

Test Framework Logging Library

Zusätzliche Tools:

Help Tool zum Erstellen von Hilfedateien Installer für die Erstellung von Installationsprogrammen Versionsverwaltung

3. Basiswerkzeuge Die Basiswerkzeuge dienen zur Erstellung von Windows-Applikationen mit grafischer Benutzeroberfläche. Mit diesen Tools lässt sich ohne die Verwendung von zusätzlichen Bibliotheken und Werkzeugen eine funktionierende Anwendung erstellen. 3.1. Der GCC Compiler/Linker und Debugger Paket MinGW Der meist verbreitete C/C++ Compiler im Open Source-Bereich ist der GCC C/C++ Compiler aus der GNU Programmsammlung, die den notwendigen Compiler, Linker, Debugger und zusätzliche Werkzeuge beinhaltet. Da bei unserem Fall keine Linux-Kompatibilität (Cygwin) gefordert ist, kann das Toolpaket MinGW (Minimalist GNU for Windows) zum Einsatz kommen. MinGW ist eine Sammlung von Windows Header-Dateien und von GNU Entwicklerwerkzeugen, die die Erstellung von „native“ Windows-Programmen ermöglichen. Der grundlegende Unterschied zu Cygwin ist, dass die Kompatibilitäts-DLL bei MinGW nicht benötigt wird. 3.2. Die Enwicklungsumgebung (IDE) Dev-C++ Dev-C++ von Bloodshed Software ist eine freie Entwicklungsumgebung, die für C und C++ Entwicklungen verwendet wird. Die IDE kann mit den GNU C/C++ Compilern genutzt werden (Cygwin, MinGW). Die Einbindung von sog. DevPaks ermöglicht die Erweiterung der IDE. Ein DevPak beinhaltet eine Quellcode-Bibliothek oder auch ein weiteres Werkzeug. Der im Paket enthaltene Package Manager erlaubt eine bequeme Installation von DevPaks. Das Dev-C++ Paket enthält u. a. die GCC Tools, einen komfortablen Editor, einen Projekt Manager, eine grafische Oberfläche für den GCC-Debugger (GDB) und auch die Makefile-Generierung.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 2 von 8

Page 3: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

3.3. Die C++ GUI Bibliothek wxWidgets wxWidgets ist ein plattformunabhängiges C++ Application Framework. Dieses Framework erlaubt das Erstellen von Windows-Applikationen mit grafischer Benutzeroberfläche. Die wichtigsten Funktionalitäten decken u. a. folgende Bereiche ab: Container Klassen, Multithreading, Stream-Klassen und GUI Sizer-Layouts. wxWidgets ist eine an MFC angelehnte C++ Bibliothek, die einen umfangreichen Satz von grafischen Komponenten für die Erstellung von Benutzeroberflächen bietet. Neben den Fenster-, Dialog-, Menü, Toolbar- und System-Steuerungselementen sind auch komplexere Komponenten wie z.B. Grid, Notebook, List Control und Tree Control implementiert. 3.4. C++ IDE mit GUI Designer - wxDev-C++ wxDev-C++ ist eine Erweiterung zu der Entwicklungsumgebung Dev-C++. Das wxDev-C++ Paket beinhaltet alle notwendigen Tools für die Erstellung von Windows-Anwendungen mit grafischer Benutzeroberfläche. Die Komponenten von wxDev-C++ sind:

Dev-C++ IDE wxWidgets Application Framework MinGW Compiler, Linker, Debugger und GCC-Tools Form Designer für den Entwurf von grafischen Komponenten

Projekte für Konsolen-Applikationen, statische und dynamische DLLs bzw. Dialoge und Frames mit wxWidgets können sehr schnell erstellt werden. Für das Editieren steht ein vielseitiger Editor zur Verfügung: Syntax Highlighting, Code Completion, Find & Replace, usw. Integriertes Debugging (GDB) steht zur Verfügung, ebenso wie das einfache Einbinden von vorkompilierten Add-Ons (DevPaks) durch den Paket Manager (Package Manager). 4. Zusätzliche Bibliotheken Die zusätzlichen Bibliotheken werden zur Erweiterung der Basisfunktionalität der Windows-Anwendung benötigt und helfen bei der Qualitätssicherung der neuen Software. 4.1. Das Test Framework CppUnit CppUnit ist ein C++ Unit-Test Framework und wurde nach dem Java-Vorbild JUnit für C++ implementiert. Das CppUnit Framework ermöglicht aufgrund des Prinzips der Unit-Tests die Programmierung von Software-Tests für die Programmiersprache C++. Die Eingaben werden in C++ Dateien geschrieben, Ausgaben gibt es maschinenlesbar in XML oder mit eigenen GUI-basierenden Programmen zur schnelleren Übersicht. 4.2. Die Logging Bibliothek Log4cxx Apache Log4cxx ist eine Portierung des bekannten Logging Framework Log4J. Log4cxx hat drei Hauptkomponenten: Loggers, Appenders und Layouts. Diese drei Komponententypen erlauben entsprechend dem Nachrichtentyp und -level die Kontrolle der formatierten Ausgabe der Logging Daten. Log4cxx erlaubt das Logging zur Laufzeit ohne eine Änderung des Applikationscode. Auch ohne die Änderung des binären Code kann das Verhalten des Logging durch das Editieren einer Konfigurationsdatei modifiziert werden.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 3 von 8

Page 4: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

5. Zusätzliche Tools Bei diesen Werkzeugen handelt es sich um Anwendungen, die Dokumentationen für Entwickler und Benutzer generieren, eine schnelle und kundenfreundliche Installation ermöglichen bzw. die verschiedenen Versionen während der Entwicklungsphase verwalten. 5.1. Software Dokumentationstool Doxygen Doxygen ist ein bekanntes Open Source Software-Dokumentationstool. Doxygen dient zur automatischen Erzeugung von Dokumentationen, die die Objekte und die Zusammenhänge zwischen diesen Objekten beschreiben und grafisch darstellen. Im Quellcode werden spezielle Dokumentations-Blöcke gesetzt, die von Doxygen als Kommentar erfasst werden. Mit diesem Tool werden drei Ziele der Software-Dokumentation realisiert: das generierte Dokument dient als Design-Dokument, Tutorial und auch als Referenz-Handbuch. Als Quelle für die Generierung von Dokumenten dienen die C/C++ Quelldateien. Mit der Applikation Doxywizard kann der Benutzer über eine grafische Benutzerober-fläche Einstellungen für das Dokumentationsprojekt vornehmen. Doxygen kann die generierte Dokumentation in verschiedenen Formaten ausgeben, u.a. HTML, PDF, PostScript, Man, RTF. Für die grafische Darstellung der Klassen-objekte und deren Hierarchie kann der Entwickler zwischen den eingebauten und externen Graphen-Generatoren wählen. 5.2. Grafische Visualisierung mit Graphviz Die Verknüpfungen der Objekte im Quellcode, wie z.B. der Klassenhierarchie kann durch die Verwendung von externen grafischen Visualisierungsprogrammen dargestellt werden. Graphviz ist ein Open Source Programmpaket, das zur Visualisierung von gerichteten und ungerichteten Graphen dient. Graphviz entnimmt die Anweisungen für die Beschreibung einer Grafik aus einer Textdatei. Die Knoten und Kanten eines Graphen werden in der C-ähnlichen Markup-Sprache DOT angegeben. 5.3. Erstellung der Benutzerdokumentation mit HelpMaker HelpMaker ist eine Freeware-Applikation, um Hilfedateien ohne externen kostenpflichtigen Texteditor zu erstellen. HelpMaker erstellt Hilfedateien für die Windows-Plattform in den Formaten WinHelp (.hlp), HTMLHelp (.chm) und RTF. Die notwendigen Microsoft Hilfecompiler (Help Workshop bzw. HTML Workshop) sind mitgeliefert und werden mit HelpMaker zusammen installiert und konfiguriert. 5.4. Installationstool InstallJammer InstallJammer ist eine freie Software für die Erstellung von Installationspaketen, die unter Windows und vielen Unix/Linux-Versionen laufen. InstallJammer ist eine Applikation mit grafischer Benutzeroberfläche, die neben einer schnellen (Install Fast) auch eine schrittweise (Install Step-by-Step) Installation unterstützt. InstallJammer erstellt eine einzige Exe-Datei, die auch für die webbasierte Distribution bestens geeignet ist. Neben der großen Konfigurierbarkeit wird ein Uninstaller automatisch generiert. Charakteristisch ist auch die Möglichkeit von mehrfachen Installation Themes und von Testläufen mit Debug-Fenster.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 4 von 8

Page 5: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

5.5. Versionsverwaltungssystem Subversion Apache Subversion (SVN) ist eine Open Source Software für die Versionsver-waltung. Im Gegensatz zu CVS implementiert Subversion ein „virtuelles“ kontrolliertes Dateisystem, das Dateien und Verzeichnisse kontrolliert. Subversion versioniert Verzeichnisse. Die Änderungen werden immer komplett im Projektarchiv abgespeichert, damit eine logische Einheit der Modifikationen gebildet werden kann. 5.6. Subversion Client TortoiseSVN TortoiseSVN ist ein Subversion-Client, der sich nahtlos in die Windows Shell (den Windows Explorer) einfügt. TortoiseSVN wurde als Erweiterung des Windows Explorers entwickelt und die Funktionalität steht als Kontextmenü jederzeit zur Verfügung. Der Status jeder Datei unter der Versionskontrolle wird durch ein kleines überlagertes Symbol angezeigt. Auf diese Weise kann man sofort den Zustand der Arbeitskopie erkennen. Die Subversion-Befehle sind über das Kontextmenü des Windows Explorers erreichbar, wo während der Installation von TortoiseSVN ein eigenes Untermenü eingefügt wird. 6. Installation und Konfiguration der Werkzeuge Da jedes Open Source Tool von verschiedenen Entwicklergruppen stammt, sind die Installations- und Konfigurationsmöglichkeiten der einzelnen Produkte sehr unterschiedlich. In den meisten Fällen genügt eine sequenzielle Installation der Komponenten mit anschließender Konfiguration. Bei unserem Toolpaket ist diese Vorgehensweise nur durch ein kleines kundenfreundliches Administrationstool realisierbar. Die meisten der zu installierenden Open Source Produkte benötigen eine anschließende Konfiguration des installierten Produktes und Änderung von Betriebssystemeinstellungen bzw. anschließende Abstimmung der Konfigurationen der installierten Produkte zueinander. Eine professionelle Variante ist für die Installation und Konfiguration eines Open Source Toolpaketes ist die Verwendung eines eigenen Administrationstool. Mit Hilfe dieses Werkzeuges verschafft der Benutzer des Toolset einen Überblick über die Komponenten des Paketes, kann Konfigurationen ändern, neue Updates installieren oder das System am Ende des Lebenszyklus sauber entfernen. In der Abbildung auf der nächsten Seite sind die wichtigsten Komponenten des entstandenen C++ GUI Toolset dargestellt.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 5 von 8

Page 6: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

7. Nutzen Durch den Einsatz von Open Source Software kann man die Vorteile von Standard- und Individual-Software kombinieren, ohne die entsprechenden Nachteile in Kauf nehmen zu müssen. Einige wichtige Argumente, die für eine Open Source Lösung sprechen, sind:

Unabhängigkeit – Mit einem Open Source Produkt ist man nicht von einem einzelnen Softwarehersteller abhängig. Qualität – Die meisten Open Source Produkte sind stabile und getestete Lösungen. Geringe Lizenzkosten – Open Source Produkte haben keine oder minimale

Lizenzkosten. Erweiterbarkeit - Die meisten Open Source Lösungen lassen sich dank der

Verfügbarkeit des Source Code einfach erweitern. Interoperabilität - Open Source Lösungen setzen konsequent auf offene Standards,

so dass das Zusammenspiel verschiedener Produkte wenig Probleme verursacht.

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 6 von 8

Page 7: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

8. Unterstützung durch InfraSoft Das vorgestellte C++ Toolpaket stellt eine kostengünstige, schnell realisierbare und professionelle Lösung für eine komplexe Entwicklungsaufgabe dar. Open Source Lösungen mit Toolpaketen, die auf innovativen Basistechnologien basieren, werden auch bei der Firma InfraSoft angeboten. InfraSoft verwendet eigene Toolpakete für die Entwicklung komplexer Software-Lösungen. Zur Lösung spezieller Probleme von Kunden können neue Toolpakete entwickelt und erstellt werden. Diese Software-Werkzeuge basieren auf Open Source Basistechnologien, wie Eclipse, GNU, Mozilla, MySQL, Linux, OpenOffice, Apache und Zope. Bei diesen Werkzeugpaketen kann InfraSoft die Aufgaben der Installation und Konfiguration der Produkte bzw. die Einschulung und Betreuung der Entwickler übernehmen. Ergänzend zu diesem Text steht Ihnen auf der InfraSoft Website ein Glossar zur Verfügung, in dem Sie die meisten der hier verwendeten Begriffe finden. Über das aktuelle Angebot an weiteren, kostenlosen Fachbeiträgen zur Softwareentwicklung informieren Sie sich bitte unter www.infrasoft.at/service. Beachten Sie auch die Literatur- und Download-Liste im Anhang. Dipl.Ing. Gyula Juhasz Wien, im Oktober 2006 Der Autor ist Mitarbeiter der InfraSoft, einem Unternehmen, das auf komplexe Softwareentwicklungen spezialisiert ist. Die Experten der InfraSoft haben langjährige Erfahrungen in der Entwicklung und verfügen über fundierte Kenntnisse in Design, Analyse, Realisierung, Test und Projektmanagement. Für individuelle Beratungen zur Entwicklung von Softwarelösungen und die Bereitstellung von Realisierungsteams wenden Sie sich bitte an [email protected].

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 7 von 8

Page 8: GUI-Programmierung mit Open Source Tools+_mit_Open... · Basiswerkzeuge wie der C/C++ Compiler, die IDE, die GUI-Bibliothek und der GUI Designer, die die Erstellung einer lauffähigen

Anhang: Literatur und Downloads Minimalist GNU C++ Compiler für Windows http://www.mingw.org/ GNU Compiler Collection Homepage http://gcc.gnu.org/ wxWidgets Application Framework http://www.wxwidgets.org/ Bloodshed Software Dev-C++ IDE http://www.bloodshed.net/dev/ wxDev-C++ - Dev-C++ Erweiterung http://wxdsgn.sourceforge.net/ DevPaks Resourcen http://old.devpaks.org/index.php CppUnit - C++ Unit-Test Framework http://sourceforge.net/projects/cppunit Apache Log4cxx – C++ Logging Bibliothek http://logging.apache.org/log4cxx/ Doxygen – Software-Dokumentationswerkzeug http://www.stack.nl/~dimitri/doxygen/ Graphviz – Visualisierungs-Software für Graphen http://www.graphviz.org/ Vizacc HelpMaker - Hilfedateierstellung http://www.vizacc.com/ InstallJammer - Multiplattform-Installer http://www.installjammer.com/ Subversion - Version Control System http://subversion.tigris.org/ TortoiseSVN - Subversion Client http://tortoisesvn.tigris.org/

© InfraSoft GmbH – Die PROFIS www.infrasoft.at 8 von 8