Die Anforderungen an moderne Software steigen zusehends. Individualisier- und Anpassbarkeit sind zentrale Anforderungen insbesondere bei schnelllebigen Web-Applikationen. Die zur Erstellung verwendbaren Programmierparadigmen, Architekturmuster und Frameworks sind im Kapitel 2 zusammengefasst dargestellt. Dabei werden die Kerneigenschaften besprochen und der teilweise Einsatz in aktuellen Frameworks an einem Beispiel demonstriert.
Im anschließenden Hauptteil der Arbeit ist zunächst der Konsens zwischen Performance und Flexibilität, zwei der wichtigsten aber widersprüchlichsten Anforderungen an Applikationen, dargestellt. Dabei werden Lösungsansätze vorgeschlagen, welche im Kern eine Verbindung von prozeduraler bzw. objektorientierter Programmierung und den Möglichkeiten der generativen Programmierung enthalten.
Darauf aufbauend widmet sich das nachfolgende Kapitel mit der Generierung von Applikationen und den dazu notwendigen Voraussetzungen. Es werden drei Voraussetzungen für eine effiziente Generierung aufgestellt, welche die Architektur und die Art des Aufbaus der zu generierenden Software sowie die notwendigen Eigenschaften des Bibliothekscodes behandeln. Im Folgenden ist die Verwendung einer DSL der Verwendung einer grafischen Benutzeroberfläche gegenübergestellt, diese miteinander verglichen sowie Vor- und Nachteile beider beleuchtet. Außerdem wird über eine DSL nachgedacht und ein Lösungsansatz anhand von beispielhaften Ausdrücken dargestellt und anschließend an dem Beispiel einer, mit dem MVC-Muster strukturierten, Applikation die Vorgehensweise der Generierung detaillierter dargestellt.
Nachfolgend erfolgt eine Betrachtung von Testverfahren und ihrem möglichen Einsatz während der Entwicklung und bei der Generierung auf der Zielplattform. Dabei werden dynamische und statische Testverfahren in klassischem, automatisiertem und agilem Einsatz sowie Anwendbarkeit auf generierte Applikationen beschrieben.
Weiterhin werden verschiedene Ansätze zur Anpassung von Applikationen, auch aus der Architektursicht, beleuchtet. Anschließend wird auf die Aktualisierung von Individualsystemen eingegangen. Es werden auftretende Probleme beschrieben und praxisnahe Lösungen entwickelt. Im letzten Kapitel der Arbeit werden die Kernaussagen an einem praktischem Beispiel demonstriert.
Inhaltsverzeichnis
1 Einleitung
2 Grundlagen
2.1 Programmierparadigmen
2.1.1 Prozedurale Programmierung
2.1.2 Objektorientierte Programmierung
2.1.3 Aspektorientierte Programmierung
2.1.4 Generative Programmierung
2.1.5 Übersicht
2.2 Architekturmuster
2.2.1
2.2.2
2.2.3
2.3 Frameworks
2.3.1 Prado
2.3.2 Symfony
2.3.3 Zend Framework
2.3.4 Fehleranalyse
2.3.5 Zusammenfassung
3 Individualsoftware
3.1 Performance versus Flexibilität
3.2 Generierung
3.3 Tests
3.3.1 Testverfahren
3.3.2 Integrationstests auf der Zielplattform
3.3.3 Selbsttests nach Generierung
3.4 Anpassung
3.4.1 Anpassbarkeit bei Installation
3.4.2 Anpassbarkeit im Betrieb
3.4.3 Architekturmuster
3.5 Aktualisierung
3.6 Praktischer Nachweis
3.6.1 Projekt ConfMaster
3.6.2 Generierung
3.6.3 Performancevergleich
4 Zusammenfassung
5 Ausblick
6 Literaturverzeichnis
7 Abbildungsverzeichnis
8 Tabellenverzeichnis
9 Listingverzeichnis
Anhang
A. Glossar
B. Tabellarische Testergebnisdarstellung
1 Einleitung
Nachdem die Entwicklung der Computer- und Softwaresysteme in der zweiten Hälfte des letzten Jahrhunderts zunehmend komplexer wurden, fing man an, nach Mitteln und Wegen zu suchen, um die zunehmend weiter steigende Komplexität beherrschbar zu machen. Um 1970 wurde für dieses Problem der Begriff Softwarekrise [Dij72] geprägt. Seit dem kamen neue Technologien und Anforderungen hinzu und die Computertechnik drang in immer mehr Bereiche des täglichen Lebens vor. Das Internet verbreitete sich in exponentieller Geschwindigkeit und mit ihm eine Flut von kommunikativen Möglichkeiten und Technologien. Gleichzeitig stieg die Komplexität der benötigten Software mit der Folge, dass die Softwarekrise weiterhin bestand hat.
Um die steigende Komplexität der benötigten Software beherrschen zu können, wurde Software-Engineering eingeführt, welches sich mit „[…] Prinzipien, Methoden und Werkzeugen“ ([Bal96] S.36) der Softwareentwicklung beschäftigt.
Seit einiger Zeit ist ein vermehrter Bedarf nach entfernt nutzbarer Software zu verzeichnen. Dabei wird der Webbrowser immer mehr als Universalausgabe für jede Art entfernt verwendeter Software verwendet.
Diese Arbeit befasst sich mit der Entwicklung und Wartung webbasierter, individualisier- und anpassbarer Applikationen. Vorhandene Methoden und Werkzeuge werden untersucht, evaluiert und Lösungen dargestellt. Dabei liegt der Schwerpunkt auf flexibler und effizienter Applikationsgenerierung unter Verwendung prozeduraler und objektorientierter sowie generativer Ansätze und Methoden. Die Arbeit stellt keine Dokumentation eines klassischen Software Engineering Projektes dar. Vielmehr werden Methoden dargestellt und auf ihre Anwendbarkeit hin untersucht, wobei das Gewicht auf Flexibilität bei hoher Performance gelegt wird. Am Schluss der Arbeit wird ein Teil der theoretischen Lösungen praktisch anhand der Anforderungen einer bestehenden Applikation durch eine beispielhafte Implementierung und den Vergleich mit dieser auf Effektivität und Effizienz geprüft.
Zur Verdeutlichung der beschriebenen Methoden und Vorgehensweisen werden kurze, in der Skriptsprache PHP geschriebene Implementierungsbeispiele angeführt. Diese sind sehr einfach gehalten und dienen ausschließlich einer besseren Verständlichkeit. Die Verwendung von PHP ist damit begründet, dass diese Skriptsprache in der aktuellen Version 5 objektorientierte und prozedurale Programmierung gleichermaßen unterstützt und sich daher gut für Demonstrationszwecke eignet sowie stark im Webumfeld verbreitet ist. Ein kompletter Wechsel zu einer anderen Programmier-sprache wird dadurch vermieden. Des Weiteren wird der Quelltext interpretiert und bedarf keiner Kompilierung. Dieser Umstand ermöglicht Vorgehensweisen, die ansonsten nicht ohne Einschränkungen oder zusätzliche Bedingungen möglich wären. Um deutlicher auf objektorientierten oder prozeduralen Quelltext hinzuweisen wird die Version 5 bzw. 4 angegeben.
Die große Popularität und die einfache Erlernbarkeit der Sprache hat in den letzten Jahren dazu geführt, dass sehr viele Menschen ohne fundierte Programmierkenntnisse, Hintergrundwissen zu sicherheitsrelevanten Themen sowie zur Qualitätssicherung in PHP programmiert haben. Die Ergebnisse ihrer Bemühungen wurden frei zugänglich ins Web gestellt. Die Folge war, dass eine große Anzahl von Hackern die Möglichkeit hatte, Angriffe auf solche Systeme zu starten und durch mangelndes Fachwissen der Programmierer entstandene Schwachstellen zu finden. Dadurch ist das Bild von der unsicheren Programmiersprache PHP in der Öffentlichkeit entstanden, wogegen jedoch die sehr große, weltweite Verbreitung, Offenheit der Quellen sowie die Verwendung für große Projekte wie das CMS[1] Typo3 spricht.
Die konsequente Verwendung dieser Programmiersprache legt den Entschluss nahe, bei dem Einsatz weiterer Software ebenfalls frei verfügbare Open Source[2] Software zu bevorzugen.
[...]
[1] CMS ist die Abkürzung für Content Management System. Mit solchen Systemen lassen sich digitale Inhalte verwalten und pflegen.
[2] Open Source bezeichnet Software, deren Quellen frei verfügbar sind. Je nach verwendeter Lizenz kann der Quelltext für eigene Zwecke modifiziert, kostenlos weitergegeben und in eigene Anwendungen integriert werden.
-
-
-
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X. -
-
Upload your own papers! Earn money and win an iPhone X.