„A fool with a tool still remains a fool“ – selbst die besten Software-Entwicklungswerkzeuge sind nicht mit Zauberstäben zu verwechseln. Sie können die Designarbeit erleichtern, setzen aber clevere Bedienung voraus. Viele der am Markt erhältlichen Lösungen stellen nicht mehr die Generierung von Code an sich, sondern die Integration verschiedener Software-Bausteine in den Mittelpunkt. In Sachen Programmiersprache herrscht zwar kein echter Religionskrieg, wohl aber babylonisches Sprachgewirr. Java, C++ oder doch lieber Visual Basic? Viele Tools beherrschen mehrere Sprachen, die Entscheidung für eine von ihnen hat dennoch weitreichende und mitunter kostspielige Konsequenzen. Auch in der IT erleben wir das Phänomen der Schnelllebigkeit: Der Lebenszyklus neuer Produkte wird stetig kürzer. Selbst große Software-Entwicklungsprojekte haben eng gefasst Fixtermine; die Qualität des Ergebnisses darf natürlich unter dem Zeitdruck nicht leiden. Hochwertig und schnell – diese Attribute dürfen sich in der IT längst nicht mehr ausschließen. Gleichzeitig muss die neue Software offen sein für zukünftige Anforderungen und Trends.
Effizienz heißt eines der beliebtesten Schlagworte in der Informationstechnologie, längst hat sie auch den Software-Entwicklungsprozess erobert. Helfende Werkzeuge bringen oft vorgefertigte Module mit. Jede Datumsroutine neu zu schreiben, ist längst Historie. Moderne Lösungen erledigen wiederkehrende und typische Aufgaben im Hintergrund, mache gar wie von Zauberhand. HTML-Seiten zum Beispiel können mit einschlägigen Tools sogar von IT-Analphabeten programmiert werden. Die kennen weder die gängigen Sprachen noch wissen sie auch nur annähernd, was sie tun. Werkzeuge zur Erstellung von Unternehmens-Software setzen durchaus Vorkenntnisse voraus – die Qualität des Tools entscheidet über den Umfang.
In vielen Projekten steht heute nicht mehr die Entwicklung, sondern die Integration verschiedener Software-Teile im Vordergrund. Die muss auch dann gewährleistet bleiben, wenn sich einzelne Komponenten verändern. Wer von einem Betriebssystem-Release auf ein anderes umsteigt, will nicht sämtliche anderen Module (und mit ihnen die Integrationsroutinen) neu designen oder „umstricken“ müssen.
Freiheit versus Schnelligkeit
Grundsätzlich kann man das Angebot am Markt in dedizierte Tools und integrierte Entwicklungsumgebungen einteilen. Erstere helfen bei spezifischen Aufgaben; stetig neue Technologien bedingen auch eine Vielfalt der Produkte. Kommt ein selbst zusammengewürfelter „Werkzeugkasten“ zum Einsatz, ist die Designfreiheit zwar größer. Häufig aber erschweren die unterschiedlichen Konzepte und Bedieneroberflächen der Einzellösungen den Überblick. Für Konsistenz zwischen Daten und Tools muss der Entwickler nämlich selbst und meist manuell sorgen. Zudem leidet seine Produktivität unter der fortwährenden Einarbeitung. Wer im Alltagsgeschäft stetig umdenken und zwischen verschiedenen Ansätzen hin- und herschalten muss, kann die geforderte Schnelligkeit und damit eine gewisse Routine kaum an den Tag legen.
Viele Unternehmen entscheiden sich aus diesen Gründen für eine Integrierte Entwicklungsumgebung. Sie ist quasi „Mutter“ verschiedener Teilwerkzeuge, die sich jeweils dedizierten Aufgaben im Designprozess widmen, aber dennoch harmonieren. Zu den Bestandteilen einer IDE gehören unter anderen Code Editor und Compiler oder Debugger.
Mit einem Editor lassen sich verschiedene Datenformen relativ einfach bearbeiten, vorhandene Texte, Grafiken etc. können geladen und gespeichert werden. Compiler sind für das Auslesen von Quellcode und für die „Übersetzung“ in ein lauffähiges Programm verantwortlich. Ein Linker fasst einzelne Quelldateien zu einem (ge)brauchbaren Programm zusammen, dessen Qualität durch den Debugger geprüft wird.
Einheitliche Oberfläche
Als besonderen Vorteil einer IDE nennen die User die einheitliche Oberfläche ihrer Hilfsmittel. Die Entwicklungsarbeit und damit auch die Entwicklungszeit werden durch die Interaktion verschiedener Komponenten verkürzt. So können in einer integrierten Umgebung zum Beispiel die vom Compiler als fehlerhaft erkannten Codezeilen direkt adressiert und geändert werden. Effizientes Software-Engineering sorgt für Sicherheit in verteilten Systemen. Die automatische Generierung von Testfällen erleichtert umfangreiche Funktions-Checks, die jede neue Software vor der Implementierung durchlaufen muss. Auch in Sachen Sicherheits-Check erhält der Programmierer Unterstützung – Lücken deckt eine automatische Prüfung auf.
Drum prüfe, wer sich ewig bindet…
Rein theoretisch reichen ein Editor und ein Compiler für die Software-Entwicklung aus. Viele IDEs können aber weit mehr – nicht alle nur zur Freude ihrer Benutzer. Aufgeblasen wie manch branchenübergreifend einsetzbares ERP-System kommen diese Design-Frameworks daher, wichtige Detailfunktionen fehlen, dafür ist der Designprozess lang und die Übersicht schwierig. Die Entscheidung für oder wider eine der am Markt befindlichen Lösungen (zu den bekanntesten gehören: Borlands Produktsuites, IBM WebSphere, die Open Source IDE Eclipse und Microsoft Visual Studio .NET) sollte nach umfassender Evaluierung und Test erfolgen: Fehlentscheidungen sind nicht nur zeit-, sondern auch sehr kostenintensiv.
Richtungweisend ist die jeweilige Unterstützung der gewünschten Programmiersprache. Am häufigsten verwendet wird noch immer C++, auch Visual Basic und Java liegen bei den Entwicklern hoch im Kurs. Viele IDEs beinhalten verschiedene Sprachpakete, MS Visual Studio .NET zum Beispiel kann Visual Basic, Visual C++, Visual J# und Visual C#. Praktisch: Die Sprachen können im Projekt kombiniert werden und deren Ergebnisse sich gegenseitig „beerben“.
Allroundtalente und Spezialwerkzeuge
Neben den langjährig gewachsenen Werkzeugen, die nahezu alle Komponenten eines Entwicklungsprozesses unterstützen und meist auch entsprechend kostenintensiv sind, gibt es am Markt auch Minimalversionen, die ausschließlich Kernfunktionalitäten enthalten. Sie adressieren die kleineren Portemonnaies – sprich Firmen mit geringeren Budgets. Ebenfalls zu beobachten ist eine Spezialisierung der Anbieter auf einzelne Technologien. Mit deren Tools sind dann beispielsweise ausschließlich XML-Lösungen zu designen oder Web Services zu entwickeln.
Die Qual der Wahl
Die Entscheidung für ein Software-Entwicklungstool oder eine Integrierte Entwicklungsumgebung hängt von unterschiedlichen Faktoren ab, darunter die Größe des Entwicklungsteams, dessen „Muttersprachen“ und natürlich das gewünschte Entwicklungsziel respektive Endprodukt. In vielen Firmen kommt gar eine Kombination aus verschiedenen IDEs zum Einsatz, die Hersteller offerieren teilweise recht geringe Lizenzkosten für Einzelplätze. Im IDE-Mix ist immer häufiger auch Open Source im Boot – und damit Lösungen wie Eclipse und andere.
Wohin des Weges?
Das Design neuer oder die Weiterentwicklung bestehender Software ist eine komplexe Aufgabe. Eine Fülle an Plattformen (allen voran Windows), neuer Entwicklungsstandards und -technologien locken, Ziel ist qualitativ hochwertige Software mit Zukunft.
Die Schnelligkeit der Tools darf der Qualität ihrer Ergebnisse keinen Abbruch tun, in Sachen Funktionalität ist weniger mitunter mehr. Schnelle Einarbeitung ist ein erstes gutes Zeichen – Versuch macht klug, heißt es doch so schön. Welche Lösungen für welche Aufgaben in Fragen kommen? Das beantwortet unsere Marktübersicht.
M.W.