# Webentwicklung

Als Webentwicklung (englisch Web development) bezeichnet man die Softwareentwicklung von Webanwendungen, Webservices oder anderer komplexer Websites. Die Ersteller und Entwickler von Webanwendungen werden Webentwickler genannt. Das Layout und Design wird dagegen meist von Webdesignern übernommen.

## Geschichte

Die in der Webentwicklung genutzten Technologien veränderten sich parallel zur Entwicklung des Internets. Etwa von 1992 bis 1999 dominierten statische HTML-Seiten. In den frühen 2000er Jahren kamen dynamische Webseiten auf, die mit Server Side Scripting in Programmiersprachen wie Perl oder PHP realisiert wurden. Bei den serverseitigen Programmiersprachen dominieren heute (Februar 2018) PHP und ASP.NET.
Für interaktive Webseiten wurde durch O’Reilly der nicht exakt definierte Begriff Web 2.0 geprägt.
1997 wurde JavaScript standardisiert und in Netscape Navigator 3 implementiert. Ab 2005 begann JavaScript die serverseitigen Skriptsprachen zu überflügeln. Ein weiterer Schub kam durch die Einführung von AJAX (asynchrone Datenübertragung zwischen Browser und Server). Ende 2008 veröffentlichte Google die JavaScript-Implementierung V8, die mit einer überlegenen Ausführungsgeschwindigkeit aufwartete. Damit begann ein Wettlauf der Browserhersteller um die schnellste JavaScript-Implementierung. 2009 wurde Node.js veröffentlicht, wodurch serverseitiges JavaScript populär wurde und heute weit verbreitet ist. In den folgenden Jahren wurde JavaScript kontinuierlich weiterentwickelt (z. B. ES2015).
Bedeutungslos gewordene Technologien sind Adobe Flash und Java-Applets. Flash spielte vom Anfang der 2000er bis etwa 2010 eine wichtige Rolle, um multimediale und interaktive Inhalte im Web auszuliefern. Java-Applets wurden 1997 eingeführt und 2015 offiziell für veraltet erklärt.

## Abgrenzung zur klassischen Softwareentwicklung

Webanwendungen unterscheiden sich in einigen Aspekten von klassischer Software. Die Unterschiede zur Softwaretechnik beruhen besonders auf der Nutzung von Hypermedia-Dokumenten, die zusammen mit dem Browser die Benutzerschnittstellen bilden, sowie der unterliegenden Netzwerk-Architektur mit Client/Server-Paradigma, HTTP- bzw. TCP/IP-Protokoll und der Adressauflösung über das Domain Name System. Auf der konzeptionellen Ebene betrifft dies die Navigation innerhalb der Anwendung und die Präsentation der Inhalte. Ebenso benötigen Webanwendungen Benutzermodelle, da im WWW dokumentenbasiertes oder systembasiertes Benutzermanagement nicht üblich ist und jede Anwendung selbst eine Benutzeridentifizierung sicherstellen muss – insofern sie nötig ist. Auf der technischen Ebene zeichnen sich Webanwendungen durch das Zusammenspiel sehr unterschiedlicher Techniken (beispielsweise HTTP, PHP, HTML, CSS, JavaScript, Java, XML, SQL u. a.) aus, die clientseitig auf verschiedenen Systemplattformen arbeiten können. Auf der Prozessebene benötigt das Web-Engineering auch die Einbeziehung der Wartung und Pflege der Software, da hier nachträgliche Änderungen und Anpassungen üblich sind.
Modellbasierte Prozesse des Web-Engineering erweitern üblicherweise die klassische Modellierung um Modelle für die Navigation, die Präsentation und die Benutzer. Für die grafische Notation der Modelle ist auch hier UML der Standard, das für die Anforderungen des WWW entsprechend erweitert wird. Jedoch lassen sich mit UML nicht alle Modellaspekte gut abbilden, wie z. B. das Präsentationsmodell, wofür andere Mittel wie etwa Storyboards genutzt werden müssen.
Zu den speziellen Anwendungs- und Forschungsgebieten zählen das Semantic Web, Cloud Computing, Mobile Apps, Usability, Web Information Retrieval oder auch Webservice-Engineering.

## Frameworks

Der Großteil der Webentwicklung findet heutzutage unter Nutzung von Webframeworks statt. Bekannte serverseitige Frameworks sind Laravel, Ruby on Rails und Django. Populäre JavaScript-Frameworks sind React, Angular und Vue.js.