Aktuelle SE-Praktiken für das WWW Einführung Leif Singer <[email protected]> Leibniz Universität Hannover, FG SE 07.04.2010 Agenda • Einführung • Themenvorstellung • letzte Möglichkeit zur Anmeldung • Grundlagen: Internet, WWW, HTTP, … WWW-Seminar 07.04.2010 2 Motivation • Webentwicklung gewinnt weiter an Bedeutung – nicht nur in der Öffentlichkeit – auch in Unternehmen • eine Unmenge an Techniken, Praktiken, Frameworks, ... – viel Hype, viel Gutes – wie trennen? • Überblick geben – wie geht Webentwicklung? – welche Möglichkeiten gibt es? • SE-Prinzipien wiederfinden – nicht einzelne Technologien lernen – Zusammenhänge verstehen Aktuelle Software-Engineering-Praktiken für das World Wide Web 3 26. Januar 2010 3 Ziele • Ausarbeitung – strukturiert und verständlich schreiben – spätestens für die Abschlussarbeit obligatorisch – hilfreich aber auch bei jeder Email • Vorträge halten – wichtig im Studium – noch viel wichtiger im Berufsleben! – deshalb: hier üben, wo es alle gut meinen • Hypes kritisch betrachten – nicht nur in der Informatik eine sinnvolle Fähigkeit Aktuelle Software-Engineering-Praktiken für das World Wide Web 4 26. Januar 2010 4 Organisatorisches • ca. 14 Termine á 90 Minuten – je ein Vortrag (~60 Minuten) + Diskussion (Inhalt und Vortrag) – heute: Einführung durch LS & TW • Termin – Mittwoch nachmittags, 15:00 - 16:30 • Anmeldung und Themenausgabe bei LS / TW – letzte Gelegenheit: nachher • nach Anmeldung – Materialien abholen (spätestens 5 Wochen vor Vortrag) – 2 Wochen vor Vortrag: Ausarbeitung an Leif Singer – 1 Woche vor Vortrag: Präsentationsskizze mit Leif Singer besprechen Aktuelle Software-Engineering-Praktiken für das World Wide Web 5 26. Januar 2010 5 Ausarbeitung • 6-8 Seiten Einführung in das bearbeitete Thema (de/en) – Template: siehe Webseite 1. 2. 3. 4. 5. 6. Kontext: was, wofür (wieso?), in welchem Umfeld? grundlegende Prinzipien erklären (gerne auch Diagramm) Vor- und Nachteile abwägen Beispiele geben (gerne auch Code und / oder Screenshots) mit SE-Praktiken in Verbindung bringen Zusammenfassen und Bewertung / Empfehlung abgeben Aktuelle Software-Engineering-Praktiken für das World Wide Web 6 26. Januar 2010 6 VORSTELLUNG DER THEMEN WWW-Seminar 07.04.2010 7 Vorstellung der Themen • 16 Themen auf Webseite gelistet (mind. 2 werden gestrichen) • bisher: 7 vergeben • 9 noch offen: – – – – – – – – – CSS Frameworks REST: Atom und HATEOAS Reine JavaScript Clients MVC Frameworks für das Web Testen und Debuggen von Webanwendungen Mashups Web Scraping "Enterprise 2.0„ Experiment-Driven Development WWW-Seminar 07.04.2010 8 Vorstellung der Themen • Sucht noch jemand ein Thema? – wir übernehmen dann teilweise die noch offenen – ohne Ausarbeitung – ggf. Zusammenlegung von Themen, die zusammenpassen – insgesamt 12-14 Termine • jetzt: Vorstellung aller Themen – hinterher: bitte melden! WWW-Seminar 07.04.2010 9 CSS Frameworks • • • • HTML strukturiert Inhalte JavaScript regelt Interaktivität CSS bestimmt Aussehen und Anordnung statt immer wieder bei Null zu starten, hat man sich auch hier Frameworks geschaffen: • eine eigene, CSS-ähnliche Sprache, die nach CSS kompiliert – ergibt bspw. Variablen und Arithmetik für Farben • vorgefertigte Stylesheets, die häufige Problemlösungen und Best Practices schon enthalten – bspw. fertige Grids WWW-Seminar 07.04.2010 10 JavaScript Frameworks • HTML strukturiert Inhalte • CSS bestimmt Aussehen und Anordnung • JavaScript regelt Interaktivität • JS ist ein Dialekt der ECMAScript-Spezifikation – genau wie JScript und ActionScript • Auch hier: Frameworks bieten häufig benötigte Lösungen, kapseln Komplexität – – – – Unterschiede zwischen Browsern Abkürzungen für häufig verwendete Funktionen Bibliotheken für beliebte Effekte … WWW-Seminar 07.04.2010 11 AJAX und Comet • JavaScript kann auch selbst HTTP-Anfragen stellen und die Ergebnisse verarbeiten • so kann man programmatisch Teile der Seite neu laden – das ist dann AJAX – mit weiteren Tricks auch kontinuierlich: Comet • verbessert Benutzbarkeit: Anwendung wirkt schneller und zusammenhängender • Comet ermöglicht Benachrichtigungen in Echtzeit – im Browser • ermöglicht andere Programmiermodelle – bspw. da man auch Code einfach nachladen kann WWW-Seminar 07.04.2010 12 REST • „Representational State Transfer“ – ein Client-ServerArchitekturstil, beschrieben in der Dissertation von Roy Fielding – hat HTTP mitentwickelt • • • • Ressourcen sind durch URIs identifizierbar alle Ressourcen bieten dieselbe Schnittstelle ein Austausch ist zustandslos … • das ist erst mal genau das Web – wenngleich man diese Einschränkungen auch verletzen kann (sollte man aber nicht) WWW-Seminar 07.04.2010 13 HATEOAS • „Hypermedia as the Engine of Application State“ – eine weiteres wichtiges REST-Prinzip • Client kennt Basis-URI, Medientypen und die Bedeutung möglicher Zustandsübergänge • Server fügt nun Links in Antworten ein, die die möglichen Transitionen im Anwendungszustand beschreiben GET /auction/9192 <auction id=„9192“ name=„Super-cute pink Plush Bunny“> <link rel=„seller“ href=„/user/fred“ /> </auction> WWW-Seminar 07.04.2010 14 Reine JavaScript Clients • JavaScript kann … – DOM und CSS verändern – Code und Daten über das Netz nachladen – Vektorbilder zeichnen • Idee: nur JavaScript verwenden, alle anderen Technologien durch Frameworks, Bibliotheken wegkapseln – Browser lädt einfach (viel) JavaScript und führt es aus – JavaScript benutzt den Browser für die Darstellung und den Server für Logik und Daten Æ Näherung an das Programmiermodell für Desktopanwendungen • Cappuccino, ExtJS, SproutCore WWW-Seminar 07.04.2010 15 MVC Frameworks für das Web • Model-View-Controller – wichtiges Pattern für den Desktop – wurde adaptiert für das Web („Web MVC“, „MVC Model 2“, …) – für die serverseitige Programmierung • Server erhält Anfrage und sucht dafür den verantwortlichen Controller, ggf. auch die verantwortliche Methode • Controller arbeitet auf Datenmodell und gibt Ergebnisse an eine Template weiter • Template „rendert sich“ – baut HTML, JavaScript und CSS zusammen, fügt Daten ein – Framework gibt gerenderte Template an den Browser zurück • wichtiges Pattern, interessante Frameworks WWW-Seminar 07.04.2010 16 Testen und Debuggen von Webanwendungen • bekannteste Art zu testen: Unit Tests (JUnit, …) – testet aber nur die Einzelteile („Units“) – Integration der Einzelteile ist ebenso wichtig! • funktionales Testen für das Web simuliert Browser, führt Testskript auf Webanwendung aus – rufe http://google.com auf – gebe in das Textfeld namens „q“ den Text „WebTest“ ein – klicke auf den Knopf „I‘m Feeling Lucky“ – stelle sicher, dass der Titel der Seite jetzt „Canoo WebTest“ lautet Æ u.a. toll für Akzeptanztests! • außerdem: Debugger für das DOM und JavaScript – Firebug, WebKit Inspector, … WWW-Seminar 07.04.2010 17 Mashups • ein Mashup ist eine Verbindung von existierenden Webseiten oder Diensten zu einer neuen Anwendung – dabei werden Daten, Logik und selbst Oberfläche integriert • Beispiele: – http://housingmaps.com – ein YouTube-Video in eine Webseite einbinden – ein Business Mashup, das alle Daten zu einem Kunden integriert • nimmt Telefonnummer entgegen • liefert vergangene Bestellungen, gekaufte Produkte, relevante Serviceartikel, Karte mit Servicecentern in der Nähe, … • Ansätze zur Mashup-Konstruktion für Endbenutzer – erfüllen meist ein Nischenbedürfnis, müssen schnell verfügbar sein WWW-Seminar 07.04.2010 18 Web Scraping • Webseiten sind relativ unstrukturiert: HTML ist sehr allgemein – „Tabelle“, „Liste“, … unklar von was, unklar ob richtig benutzt • dennoch: Daten von Webseiten programmatisch verwenden – in einer eigenen Anwendung oder auch in einem Mashup • (Web/Screen) Scraper sind Programme, die die Regeln kennen, nach denen eine Webseite aufgebaut ist – hat der Programmierer formuliert • überführen Daten in strukturierte Form, etwa XML – schaffen quasi API ohne Kooperation des Betreibers WWW-Seminar 07.04.2010 19 „Web 2.0“ • Was ist das überhaupt? – hat inzwischen viele „Definitionen“ – also faktisch keine – Wikis, Blogs, Feeds, Mashups, Soziale Netzwerke, User-Generated Content, Crowdsourcing, Collective Intelligence, das Web als Plattform, … • Der Begriff an sich bedeutet also eigentlich nichts! – Trotzdem ist er ein guter Startpunkt für Nachforschungen. • Welche Phänomene sind die interessantesten? • Welche sind uns wichtig? • Welche sind wirklich neu? WWW-Seminar 07.04.2010 20 „Enterprise 2.0“ • die Übertragung der „Web 2.0 Phänomene“ auf Unternehmen – ebenso schwammig – und noch mehr • Soziale Software? Gewachsene statt vorgegebener Strukturen? • wie kann man die Ideen aus dem vorherigen Vortrag sinnvoll im Unternehmen einsetzen? – Unternehmen haben ganz andere Ressourcen als das offene Web – verwenden sie vielleicht ähnliche Ideen schon seit Jahren? – Mitarbeiter in einem Unternehmen haben andere Ziele als Web Surfer – benötigen sie diese Effekte überhaupt? WWW-Seminar 07.04.2010 21 Entwicklungsmuster für „2.0“ • Angenommen, wir wüssten, was „2.0“ ist … – Wie kommen wir dahin!? • gesucht: Best Practices und Muster, die zu den mit „2.0“ assoziierten Effekten führen können – Wie motiviert man Benutzer im öffentlichen Web, wie im Unternehmen? – An welche Risiken und Probleme muss man denken, welche Lösungsansätze gibt es? WWW-Seminar 07.04.2010 22 SQL vs. „NoSQL“ • seit einer Weile sind sog. „NoSQL“-Datenbanken in Mode • klassisches RDBMS: Schema definiert Struktur, Abfragesprache kann auf Daten suchen • „NoSQL“-Datenbank: kein festes Schema vorgegeben, erleichtert Einstieg, schnelle Entwicklung, Replikation – Suche aber oft viel aufwendiger • hitzige Diskussionen: – „RDBMS skalieren nicht!“ – „NoSQL-Datenbanken sind für die, die kein SQL können!“ Æ die Wahrheit liegt wahrscheinlich in einer Abwägung von Anforderungen, Zielgruppen, etc. verborgen WWW-Seminar 07.04.2010 23 Verarbeitung großer Datenmengen in der Cloud • insb. beliebte Webanwendungen generieren sehr viele Daten, die verarbeitet werden müssen – getaggte Artikel immer wieder clustern – hochgeladene Videos müssen transkodiert werden – ggf. aber auch nur zu Spitzenzeiten / einmalig • Cloud Computing bietet Elastizität: Skalierbarkeit nach oben und unten – schwere Aufgaben in die Cloud auslagern, so viele „Instanzen“ rechnen lassen wie nötig – hinterher die Instanzen wieder löschen – man bezahlt nur, was man benutzt / reserviert hat – Anbieter: Amazon EC2, Google AppEngine, Windows Azure WWW-Seminar 07.04.2010 24 Experiment-Driven Development • Es ist sinnvoll, Änderungen an einer Anwendung vorher zu erproben – klassisch ist das aber sehr umständlich / kostspielig • Webanwendungen haben oft … – viele Benutzer – ein zentrales Deployment • Experimente sind also leichter / günstiger durchzuführen – auch kleine – bspw. A/B-Tests, die den Einfluss verschiedener Layouts, Farben oder Formulierungen auf eine bestimmte Metrik (wie bspw. Registrierungen, Umsatz, …) zeigen WWW-Seminar 07.04.2010 25 WWW-Seminar 07.04.2010 26 LETZTE MÖGLICHKEIT ZUR ANMELDUNG WWW-Seminar 07.04.2010 27 Anmeldung Nr. Termin Referent Thema 1 07.04.10 Leif Singer, Tristan Wehrmaker Einführung & Grundlagen von WWW und HTTP 2 14.04.10 Leif Singer CSS Einführung & CSS Frameworks 3 21.04.10 Karsten Möckel JavaScript Frameworks 4 28.04.10 Steffen Platte AJAX und Comet 5 05.05.10 Olga Liskin REST: Grundlagen & HATEOAS 6 12.05.10 Olga Liskin* REST: Praktischer Teil? 7 19.05.10 JK Web Scraping 8 02.06.10 Wladimir Exner „Web 2.0“ & „Enterprise 2.0“ 9 09.06.10 Armin Doroudian Entwicklungsmuster für "2.0" 10 16.06.10 Leif Singer, Tristan Wehrmaker Testen und Debuggen von Webanwendungen & Mashups 11 23.06.10 Mark Kubacki SQL vs. "NoSQL" 12 30.06.10 Andy Stumpp Verarbeitung großer Datenmengen in der Cloud 13 07.07.10 JK* Experiment-Driven Development 14 14.07.10 Leif Singer MVC Frameworks für das Web & Reine JavaScript Clients WWW-Seminar 07.04.2010 28 Anmeldung • endgültige Tabelle im Laufe der Woche – auf Webseite, per Email – Terminwünsche? • Semesterunterbrechung am 26. Mai 2010 • letzter Termin am 14. Juli 2010 • gegen Mitte und / oder Ende: praktische Teile – wir freuen uns über Anregungen von Euch WWW-Seminar 07.04.2010 29 Aktuelle SE-Praktiken für das WWW Grundlagen Tristan Wehrmaker <[email protected]> Leibniz Universität Hannover, FG SE 07.04.2010 Die Geschichte des Internet • 1957 – Die UdSSR schickt Sputnik ins All • 1958 – USA gründet ARPA (Advanced Research Projects Agency) • 1962 – Entwicklung des ARPANET durch das Massachusetts Institute of Technology (MIT) • 1969 – August: 1. Host wird angeschlossen (University of California, Los Angeles) – Oktober: 2. Host (Stanford University) – November: 3. Host (University of California, Santa Barbara) – Dezember: 4. Host (University of Utah) Quellen: http://www.zakon.org/robert/internet/timeline/ http://www.heise.de/ix/timeline/ WWW-Seminar 07.04.2010 31 Die Geschichte des Internet • 1971 – File Transfer Protocol (FTP) wird veröffentlicht – 23 Hosts angeschlossen • 1972 – Erste Emailsoftware, Wahl des @-Zeichens für „at“ • 1973 – Erste internationale Verbindung zum University College of London – ca. 2.000 ARPANET User – 75% des Traffics wird durch Email verursacht. • 1974 – Erste Publikation zu TCP (Transmission Control Protocol), darin vermutlich erste Verwendung des Begriffs „Internet“ Quellen: http://www.zakon.org/robert/internet/timeline/ http://www.heise.de/ix/timeline/ WWW-Seminar 07.04.2010 32 Die Geschichte des Internet • 1978 – Aufsplittung von TCP in TCP und IP (Internet Protocol) – Erste kommerzielle Spam-Mail • 1980 – ARPANET kommt zu einem völligen Stillstand durch versehentlich in Umlauf gebrachten Virus. • 1982 – Einführung der Emoticons :-) und :-( • 1983 – Umstellung von NCP (Network Control Protocol) auf TCP/IP – Anschluss von Stuttgart als deutscher Knotenpunkt Quellen: http://www.zakon.org/robert/internet/timeline/ http://www.heise.de/ix/timeline/ WWW-Seminar 07.04.2010 33 Die Geschichte des Internet • 1984 – Einführung von DNS (Domain Name Service) – Über 1.000 Hosts angeschlossen • 1985 – Erste Domain registriert (Symbolics.com) • 1987 – Über 20.000 Hosts • 1988 – ca. 6.000 der 60.000 Hosts von Internet Wurm betroffen • 1989 – Über 100.000 Hosts • 1990 – ARPANET wird eingestellt Quellen: http://www.zakon.org/robert/internet/timeline/ http://www.heise.de/ix/timeline/ WWW-Seminar 07.04.2010 34 Die Geschichte des Internet • 1991 – Tim Berners-Lee veröffentlicht das World Wide Web am CERN • 1992 – Über 1.000.000 Hosts • 1993 – Erster Entwurf für HTTP Internet != World Wide Web Quellen: http://www.zakon.org/robert/internet/timeline/ http://www.heise.de/ix/timeline/ WWW-Seminar 07.04.2010 35 Entwicklung des World Wide Web WWW-Seminar 07.04.2010 36 Entwicklung des World Wide Web YAHOO! - 1996 WWW-Seminar 07.04.2010 37 Entwicklung des World Wide Web YAHOO! - 2000 WWW-Seminar 07.04.2010 38 Entwicklung des World Wide Web YAHOO! - heute WWW-Seminar 07.04.2010 39 Definitionen • Hypertext =def – Textdokumente, die mit Hyperlinks verknüpft sind. • Hyperlinks =def – Querverweise zwischen zwei Dokumenten bzw. zu einer anderen Stelle im selben Dokument. • Hypermedia =def – Verschiedene Medien, die durch Hyperlinks verknüpft sind (z.B. Text, Grafik, Video, Ton). WWW-Seminar 07.04.2010 40 XML • Extensible Markup Language • Auszeichnungssprache für hierarchisch strukturierte Datenstrukturen. • Metasprache für andere Sprachen wie RSS, XHTML, SVG. <?xml version="1.0" encoding="utf-8" ?> <cart> <product id="1"> <name>Apple Macbook Pro</name> </product> ... </cart> WWW-Seminar 07.04.2010 41 HTML (XHTML, HTML5) • Hypertext Markup Language (HypertextAuszeichnungssprache) • Aktuelle Standards: XHTML, HTML 4.01 • Kommender Standard: HTML5 • Historie: – – – – – – 1989: Erste Festlegung von HTML durch Tim Berners-Lee 1997: HTML 4.0 – Einführung von Stylesheets, Skripten und Frames 1999: HTML 4.01 2000: XHTML 1.0 2001: XHTML 1.1 In der Entwicklung: HTML5 WWW-Seminar 07.04.2010 42 HTML 4.01 • Basiert auf SGML (Standard Generalized Markup Language) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Hello World</title> </head> <body> <h1>Hello World!</h1> <p>Welcome to the World Wide Web.<br> <br> <img src="image.jpg"></p> <p><a href="http://www.google.de">Google</a></p> </body> </html> WWW-Seminar 07.04.2010 43 XHTML 1.0 • Basiert auf XML <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Hello World</title> </head> <body> <h1>Hello World!</h1> <p>Welcome to the World Wide Web.<br /> <br /> <img src="image.jpg" /></p> <p><a href="http://www.google.de">Google</a></p> </body> </html> WWW-Seminar 07.04.2010 44 HTML5 • Obermenge von HTML 4.01, XHTML 1.0 • Einführung neuer Elemente, z.B. – <article>, <section> – <header>, <footer> – <nav> – <audio> – <video> • Umdefinierung vorhandener Elemente, z.B. – <hr>, – <b>, <i>, <strong> WWW-Seminar 07.04.2010 45 Browser-Engines WebKit Gecko Firefox Safari MobileSafari Google Chrome Camino MSHTML Epiphany KHTML Konqueror Internet Explorer WWW-Seminar Presto Opera 07.04.2010 46 CSS • Cascading Style Sheets • HTML legt nur den Inhalt fest. CSS das Aussehen. body { font-family: Arial, Helvetica, sans-serif; font-size: 90%; background-color: #FFFFFF; color: #000000; margin: 0px; padding: 0px; } WWW-Seminar 07.04.2010 47 CSS • Selektoren – – – – – Elemente (z.B. body, p, div, etc.) Elemente mit ID (z.B. #nav) Elemente einer Klasse (z.B. .box) Elemente mit bestimmten Attributwerten (z.B. img[border=0]) Elemente, die Nachfahren eines anderen Elements sind (z.B. body div) – Elemente, die Kind eines anderen Elementes sind (z.B. body > div) • Wertzuweisungen – – – – Schriften (z.B. font-family, font-size, font-weight) Rahmen (z.B. border-color, border-style) Abstände (z.B. margin, padding) etc. • Für weitere Infos: siehe http://www.css4you.de WWW-Seminar 07.04.2010 48 JavaScript • JavaScript != Java • Clientseitige Ausführung auf dem Browser • Bisher hauptsächlich für graphische Effekte • Mittlerweile durch JavaScript-Frameworks auch für die Entwicklung ganzer Anwendungen. (siehe entsprechender Vortrag) WWW-Seminar 07.04.2010 49 HTTP • Hypertext Transfer Protocol • Grundlage des Web Request Response Client Apache HTTP-Server WWW-Seminar 07.04.2010 50 „Statischer“ HTTP-Ablauf 1. Client (z.B. Webbrowser) stellt Anfrage an Server (z.B. Apache HTTP-Server). 2. Server schickt angefragte Ressource als Antwort zurück. • Im Fall eines Webbrowsers wird meist HTML zurückgeliefert. • In diesem HTML stehen Verweise auf CSS, Javascript, Bilder, etc., die dann einzeln beim Server angefragt werden. • Alle Daten rendert der Browser dann zu einer Webseite. WWW-Seminar 07.04.2010 51 Abruf einer Website WWW-Seminar 07.04.2010 52 Rendern einer Website WWW-Seminar 07.04.2010 53 Laden der Stylesheet-Informationen WWW-Seminar 07.04.2010 54 Laden der Bilder und Medien WWW-Seminar 07.04.2010 55 Laden der Bilder und Medien WWW-Seminar 07.04.2010 56 Laden von JavaScript WWW-Seminar 07.04.2010 57 Überblick über geladene Ressourcen WWW-Seminar 07.04.2010 58 HTTP-Methoden (Verben) • HTTP definiert einige eindeutige Methoden, u.a. – GET: Abfragen einer Ressource – POST: Verändern einer Ressource (z.B. Hinzufügen von Unterressourcen) – PUT: Erstellen einer Ressource – DELETE: Löschen einer Ressource • Webbrowser unterstützen aktuell meist nur GET und POST. WWW-Seminar 07.04.2010 59 „Dynamische“ Webentwicklung • Statische Ressourcen reichen nicht. • Man muss auch das Verhalten programmieren können. • z.B. mit PHP, Perl, Python, Ruby und Java WWW-Seminar 07.04.2010 60 Am Beispiel von PHP Request Response Client Webserver mit PHP Modul WWW-Seminar Datenbank (z.B. MySQL) 07.04.2010 61 Am Beispiel von Java Request Response Webserver Client Servlet Container (z.B. Apache Tomcat) Java-Servlet Datenbank (z.B. MySQL) WWW-Seminar 07.04.2010 62 Zusammenfassung Fragen? • • • • • • • • • • Die Geschichte des Internet Entwicklung des World Wide Web Hypertext, Hyperlinks, Hypermedia XML (X)HTML Browser-Engines CSS JavaScript HTTP Statische und dynamische Webanwendungen WWW-Seminar 07.04.2010 63