Sonntag, 31. Oktober 2010

Nachtrag JQuery Klickpilot Basar

Nach dem es in der Vorlesung am Donnerstag noch einige Nachfragen zu JQuery gegeben hat. Habe ich nun in meinem Klickpilot die Verwaltung der Kunden von direkter DOM Manipulation auf JQuery umgestellt. Im Folgenden werde ich hier die wesentlichen Quelltext Abschnitte knapp darlegen. Die gesamte Demo können Sie via GitHub hier beziehen. JQuery ist nicht Klausur relevant, Sie müssen aber für die Klausur wissen wie man Elemente über den DOM abfragen, anlegen und wie man Event Handler registrieren kann, natürlich können Sie dies auch via JQuery Quellcode in der Klausur darlegen.

Die Verwaltung der Basar-Kunden teilt sich in die zwei bekannten HTML Seiten auf Übersicht der Kunden als Tabelle und anlegen und bearbeiten von Kunden. Als erstes möchte ich Ihnen den JavaScript Code für die anlegen und bearbeiten Seite darstellen.



Der Quelltext zeigt wie Sie mit JQuery Event Listener registrieren können am Beispiel des Click Handler. Weiter zeigt das Beispiel wie Sie mit JQuery über die Doller Funktion auf Elemente über die ID zugreifen können und wie man auf die Value Attribute auslesen kann.

Auf der Kunden Übersichtsseite sollen alle Kunden in einer Tabelle angezeigt werden. Dazu muss via JavaScript der Inhalt des Klickpilotmodells als HTML Tabelle ausgegeben werden. Der Folgende Quelltext Abschnitt zeigt wie mit JQuery dynamisch HTML Elemente erzeugt werden können.



Im Quelltext oben sehen Sie wie einfach HTML Elemente via JQuery in den DOM eingehängt werden können. Wenn Sie dies direkt auf dem DOM machen benötigen Sie einiges mehr an DOM Glue Code, schauen Sie sich dazu einfach das DOM basierte Kassen Beispiel an.

Den Quelltext getestet habe ich in den folgenden Browsern: Firefox Version 3, Safari Version 5 und Google Chrome Version 7.

Links:

Donnerstag, 28. Oktober 2010

Systementwurf mit UML und Einführung in Domain Driven Design

Hinweis: Ein paar Themen und Übungen zum Systementwurf sind offen geblieben. Wir werden diese in der Vorlesung "Build Prozesse und Configuration Management" am 12.11.2010 nachholen.

Folien
Download
Lernziele (Fragen zur Vorlesung)
  • Wie beschreibt man ein Geschäftsmodell bzw. Anwendungsmodell (Domainmodell) mit der UML?
  • Wie stellt man Klassen und Assoziationen mit der UML dar?
  • Wie sieht eine sehr grobe Gliederung für eine Gesamtspezifikation (Pflichtenheft) aus?
  • Nennen Sie die vier Architektursichten.
  • Welche UML-Diagramme setzt man zur Modellierung für welche Architektursicht ein?
  • Wie drückt man mit einem Komponentendiagramm aus, dass eine Komponente eine weitere enthält?
  • Wie kann man in UML darstellen, dass eine Klasse ein Interface implementiert?
  • Welche Elemente aus dem Domain Driven Design kennen Sie?
  • Wie beschreibt man einen Ablauf (Aufrufe) von Methoden mit der UML? 
  • Welche Regeln muss man einhalten um Komponenten mit der eigentlichen fachlichen Logik von der verwendeten Technik zu trennen?
  • Warum sollte man die Fachlogik von den verwendeten Techniken trennen?
Literatur:
  • Domain-Driven Design - Eric J. Evans 2003
  • Effektive Software-Architekturen - Gernot Starke 2008
  • UML Distilled: A Brief Guide to the Standard Object Modeling Languange - Martin Fowler 2003
Links:

Mittwoch, 27. Oktober 2010

Anforderungsanalsyse mit der UML


Folien Download
hier

Lernziele (Fragen zur Vorlesung)
  • Weshalb kann/soll man nicht einfach die Anwender fragen, was sie sich wünschen?
  • Was sind die Ziele der Anforderungsanalsyse?
  • Was ist das Ergebnis der Anforderungsanalsyse?
  • Welche Anforderungstypen kennen Sie?
  • Beschreiben Sie einen einfachen Prozess zur Anforderungserfassung.
  • Was ist eine fachliche Komponente?
  • Wozu dienen fachliche Komponenten in der Anforderungsanalsyse?
  • Was ist die UML?
  • Beschreiben Sie wie man die UML nutzen kann zum ermitteln der Anwendungsfälle.
  • Wie beschreibt man Anwendungsfälle?
  • Was ist das zentralle Element bei der Anforderungsanalsyse und Anforderungserfassung?
Literatur:
  • Die Kunst des IT-Projektmanagements, 2. Auflage - Scott Berkun 2009
    Kapitel Gute Spezifikationen schreiben
  • Requirements-Engineering und -Management: Professionelle, iterative Anforderungsanalyse für die Praxis. 5. Auflage - Chris Rupp 2009
  • Writing Effective Use Cases -  Alistair Cockburn 2000
  • UML Distilled: A Brief Guide to the Standard Object Modeling Languange - Martin Fowler 2003
  • UML 2 glasklar. Praxiswissen für die UML-Modellierung - Chris Rupp; Stefan Queins; Barbara Zengler 2007
  • Objektorientierte Softwareentwicklung. Analyse und Design mit UML 2.1 - Bernd Oestereich 2006
UML Werkzeuge
Links:

Montag, 25. Oktober 2010

Nachtrag Prototyping mit JavaScript - Column Layout mit DIV und CSS

In der letzten Vorlesung wurde ich gefragt wie man mit CSS und DIVs ein Tabellen-Layout so bauen kann, dass die Spalten immer gleich hoch sind.

Leider konnte ich in der SOTE Pause keine adäquate Lösung dem studierenden bieten für sein Problem, daher hier nun der Nachtrag. Das ganze kann durch geschachtelte DIVs gelöst werden hier der HTML und CSS Beispiel Quelltext.


Den gesamten Quelltext finden Sie nun auch im Beispiel Code siehe ZIP Download Vorlesung Prototyping mit JavaScript.

Links zum Thema:

Donnerstag, 21. Oktober 2010

Prototyping mit JavaScript

Hinweis: Ein paar JavaScript Themen sind offen geblieben daher werden wir diese in der Vorlesung am 28.10. nachholen und dann das Thema abschließen.



Folien und Beispiel JavaScript Code:
hier
oder via GIT über GitHUB
http://github.com/tux2323/software-technik-javascript/

Lernziele (Fragen zur Vorlesung) 
  • Wie und wo definiert man einen JavaScript-Dokument?
  • Wie ruft man eine Funktion auf? Beispielsweise dadurch, dass man auf etwas klickt...
  • Wie kann man JavaScript / HTML Code strukturieren und Prinzip Separation of Concerns (SoC) einhalten?
  • Wie definiert man ein Objekte? Wie arbeitet man damit?
  • Wie definiert man ein JSON Objekt?
  • Wie greift man auf HTML-Elemente zu?
  • Wie ändert man den Wert dieser HTML Elemente? Wie fügt man neue hinzu?
  • Wie serialisiert man JavaScript Objekt in JSON?
  • Wie kann man mit JavaScript Daten zwischen HTML Seiten übertragen? 

Funktionen und funktionale Programmierung in JavaScript

Wie wir in der Vorlesung gesehen haben sind in JavaScript Funktionen "first class Elemente" der Sprache. Dies bedeutet man kann Funktionen an allen Stellen im Quelltext deklarieren und man kann Funktionen wie Objekte als Parameter an Methoden übergeben. Man spricht von einer funktionalen Programmiersprache (bzw. Programmierstil), Java ist hingegen wie auch C++ ist eine imperative Sprache bzw. erlaubt einen imperativen Programmierstil. Am Beispiel der Event Registrierung wollen wir uns hier ein paar JavaScript Quelltext Beispiele ansehen wie und wo man Funktionen deklarieren und nutzen kann.

Als erste ein einfaches Quelltext Beispiel für eine Funktion Deklaration und Aufruf.


Soll der Text in einem DIV ausgeben werden muss man warten bis die Seite geladen ist und kann dann den Inhalt ausgeben. Dazu kann man auf dem window Objekt des Browsers der Property (Attribut) onload eine Funktion zuweisen, die dann aufgerufen wird wenn die Webseite fertig geladen wurde. Die erste Variante hierfür ist eine Funktion windowLoadListener zu definieren und dem Attribut zuzuweisen, hier der Quelltext.

HTML Code für das Beispiel:


JavaScript Code für das Beispiel:


Eine schönere und etwas schlankere Variante ist die Deklaration der Funktion direkt dem Attribut window.onload zuzuweisen (inline), hier der Quelltext:


Funktionen lassen sich in JavaScript beliebig Schachteln und natürlich kann man wie dem window.onload Attribut jeder Variablen eine Funktion zuweisen, hier ein kleines Beispiel:


Funktionen sind in JavaScript das einzige Sprachelement das einen Scope hat. D.h. Variablen gelten (man hat nur Zugriff) nur innerhalb der Begin und Ende Klammern der Funktion. Daher sind Funktionen auch der einzige Weg in JavaScript Daten zu kapseln, hier ein Beispiel.


Objekte in JavaScript
In JavaScript kann man Objekte definieren. Ein Objekt entspricht im wesentlich einer Map, d.h. in einem Objekt können Key-Value Paare abgelegt werden, hier ein Beispiel:


Document Object Model - DOM
Über den DOM bietet der Browser via JavaScript einen Weg auf die HTML Seite zuzugreifen, dynamisch Elemente hinzuzufügen und Listener für Events auf Elementen zuregistrieren, hier ein Beispiel.


JSON - JavaScript Object Notation
Die JavaScript Object Notation, kurz JSON ist ein kompaktes Datenformat. JSON wurde von Douglas Crockford spezifiziert. JavaScript Objekte und JSON sind sehr ähnlich daher lassen sich JavaScript Objekte einfach in JSON speichern uns laden. JSON ist sogar gültiges JavaScript daher kann jedes gültige JSON-Dokument per eval() interpretiert werden. JSON wird i.d.R. in AJAX Requests als Datenformat genutzt in diesem Rahmen werden wir es auch noch mal genauer in der Vorlesung betrachten. Hier ein JSON Beispiel für das Kunden Objekt von oben.


Im Firefox und auch in anderen Browser können JavaScript Objekte über das JSON Objekt gespeichert und geladen werden, hier ein Beispiel.


Literatur
  • JavaScript: The Good Parts - Douglas Crockford 2008
  • Pro JavaScript Design Patterns - Ross Harmes 2007
Links

Dienstag, 12. Oktober 2010

Prototyping mit HTML und CSS


Beispiel HTML CSS Code und HTML/CSS Pattern Download
hier als ZIP
oder hier zum browsen:
http://github.com/tux2323/software-technik-html/

Folien Download
hier als PDF

HTML CSS Pattern - Box Model
Hier zum vollständigen Quelltext mit CSS: hier


HTML CSS Pattern - Column Layout
Hier zum vollständigen Quelltext mit CSS: hier


HTML CSS Pattern - Grid
Hier zum vollständigen Quelltext mit CSS: hier


Lernziele (Fragen zur Vorlesung)
  • In welche Typen von Elemente können Dokumente aufgeteilt werden? Oder aus welchen Bestandteilen bestehen Dokumente?
  • Wie sieht die Grundstruktur einer HTML-Seite aus?
  • Was ist der Unterschied zwischen HTML und XHTML? Nennen Sie ein paar Code Beispiele.
  • Was beschreibt das Element DOCTYPE in einer HTML Seite?
  • Wie kann das Encoding in einer XHTML Datei angegeben werden?
  • Wie deklariert man ungeordnete und geordnete Listen?
  • Wie legt man Tabellen in HTML an? Wie unterscheiden sich die beiden Tags <td> und <th> in ihrer Bedeutung?
  • Wie kann eine HTML Tabelle mit Kopf- und/oder Fußzeile anlegen?
  • Wie definiert man Links? 
  • Wie schreibt man ein Formular in HTML?
  • Wo und wie bindet man Stylesheets in eine HTML-Seite ein?
  • Wie lautet die Syntax für die Definition von Stylesheet-Angaben?   
  • Was besagt das Prinzip Separation of Concerns (SoC)?
  • Nennen Sie ein Beispiel wie das Prinzip SoC im Kontext HTML und CSS eingehalten werden kann.
  • Wie sieht der HTML Code für ein Column-Model mit drei Column aus?
  • Beschreiben Sie oder zeigen Sie mit HTML Code wie Elemente angeordnet werden können mit einem CSS Grid.

Literatur
  • CSS and HTML Design Patterns - Michael Bowers - 2007 Apress

Links CSS Frameworks

Links HTML und CSS

Links zu HTML5

Video YUI 2: Grids CSS
Sehr gutes Video gibt einen Überblick über dass CSS Framework von Yahoo. Vermittelt aber auch die Grundlegenden Konzepte hinter modernem Web-Design und den Layout Patterns die heute dazu genutzt werden.