Zum Inhalt springen

kurtchen

Communitymitglied
  • Gesamte Inhalte

    879
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von kurtchen

  1. Nein, ein darauf aufbauendes Modul gibt es nicht. Aber es gibt ein Modul "Data Mining" aus dem Studiengang "IT-Forensik" der WINGS. Da geht es um Analysetechniken. Leider fehlt mir momentan die Zeit für solche Extratouren.
  2. Das Modul "Content-Management-Systeme" (CMS) ist ein Pflichtmodul im Studiengang "Wirtschaftsinformatik" und wird dort auch dem Studienbereich Wirtschaftsinformatik zugerechnet. Springer Campus empfiehlt, es im 3. Semester zu belegen. Aber auch Studierende im Studiengang "Web- und Medieninformatik" dürfen es als Wahlpflichtmodul im Vertiefungsbereich belegen. Als inhaltliche Voraussetzungen werden genannt: - Web-Programmierung - Web-Anwendungen 1 - XML Ich glaube, dass man dieses Modul auch ohne diese Grundlagen belegen kann. Tatsächlich kommt im Studienplan für Wirtschaftsinformatik "Web-Programmierung" nach dem Modul CMS und weder "Web-Anwendungen 1" noch "XML" sind für Wirtschaftsinformatiker verpflichtend. Richtig durchdacht wirken die Empfehlungen zu den inhaltlichen Voraussetzungen auf mich deshalb nicht. Ich habe das Modul belegt, weil ich fand, als Studierender der Web-Informatik müsse man auch Ahnung von CMS haben. Erwartet hatte ich eine Einführung in ein gängiges Web-CMS, z.B. in TYPO3, also ein Modul mit vielen praktischen Übungen. Wie schon bei anderen Wirtschaftsinformatik-Modulen war ich auch hier auf dem Holzweg, denn eine praktische Einführung in ein WCMS will dieses Modul nicht sein. Allerdings lernt man hier einige grundlegende Konzepte, die es einem erleichtern sollten, sich schnell in ein x-beliebiges WCMS einzuarbeiten. Mein erster Irrtum war die Gleichsetzung von CMS und WCMS. Content Management Systeme dienen dazu, Content für eine Website zu managen, wozu sonst? Nein, denn es gibt Dokumenten-Management-Systeme (DMS), Electronic Record Management Systeme (ERMS), Medienbibliotheken, mobile Content Management Systeme (mCMS), semantische Content Management Systeme (SCMS) und Component Content Management Systeme (CCMS) und außerdem verschiedene Mischformen. Näher beleuchtet werden im Kurs das WCMS, das DMS und das SCMS. Im Grundlagen-Kapitel geht es um Themen und Konzepte, die alle Arten von Systemen betreffen: Content-Modellierung, Metadaten, Standardisierung, Dokumenten-Management-Standards und Metadaten-Standards. Und um die grundlegenden Fragen: - Was ist Content? - Wie unterscheidet sich Content von Daten oder Information? - Was ist ein Dokument? - Was ist Content Management? Im Kapitel zu WCMS geht es um grundlegende Konzepte wie: - Benutzer und Berechtigungsstrukturen und ihre Bedeutung für den Workflow - Customizing, das Arbeiten mit Themes, Plugins, Templates - strukturierte Texte, Multimediaelemente - Inhaltsbearbeitung, -organisation und -darstellung Dieses Kapitel war für mich enttäuschend, weil ich eben etwas ganz anderes erwartet hatte, nämlich eine praktische Einführung in ein exemplarisches CMS. Ganz umsonst war die investierte Zeit am Ende aber nicht. Das Kapitel über DMS war schon spannender. Dokumenten-Management-Systeme werden oft in einem behördlichen Umfeld eingesetzt. Hier geht es i.d.R. darum, gesetzliche Aufbewahrungsfristen einzuhalten. Im Vergleich zum WCMS ist hier die Versionierung besonders wichtig. Es muss stets nachvollziehbar bleiben, wer, wann, was geändert hat. Vorherige Versionen eines Dokumentes sollen sich wieder herstellen lassen. Langfristige Archivierung spielt oft eine große Rolle. Dem Metadaten-Management kommt eine besondere Rolle zu, weil Content über die Metadaten schneller gefunden werden kann als über eine aufwendige Volltext-Suche. Oft ist nicht leicht zu beurteilen, was relevante Metadaten sind. Wenn Dokumente über lange Zeiträume aufbewahrt werden, können andere inhaltliche Kriterien für das Retrieval relevant werden, als man zum Zeitpunkt der Erfassung für plausibel hielt. Mit dem DIRKS-Modell wird ein allgemeines Vorgehensmodell vorgestellt, um ein Dokumenten-Management-System in einem institutionellen Kontext zu etablieren. Wirklich interessant war für mich das Kapitel über semantische Content-Management-Systeme (SCMS). Um für den Nutzer navigierbar zu sein, sollte Content mit anderem Content anhand von inhaltlichen Bezügen verknüpft werden. SCMS nutzen semantische Information, mit der Content angereichert ist, um solche Bezüge, die implizit enthalten aber nicht explizit bekannt sind, zu entdecken. So kann ein SCMS Metadaten automatisiert hinzufügen und Nutzern Inhalte anbieten, die inhaltlich zu denen passen, nach denen sie suchen. Ein SCMS kann zum Beispiel unterscheiden, ob ein Nutzer, über die UNO als Organisation oder über UNO als Kartenspiel recherchiert. Und je nachdem Information über andere internationale Institutionen oder über andere Kartenspiele anbieten. Zur Anreicherung von Content mit semantischer Information dient der Resource Description Framework (RDF). Mit ihm beschreibt man, dass eine Ressource, z.B. ein Content-Objekt im Web, eine bestimmte Eigenschaft mit einem bestimmten Wert hat. Man erhält so eine Aussage mit Subjekt (Ressource), Prädikat (Eigenschaft) und Objekt (Wert bzw. Belegung der Eigenschaft), die man auch als Triplet bezeichnet. Man kann zum Beispiel behaupten, dass ein Affe Bananen frisst. Das erinnert ein wenig an die Art und Weise, wie in logischen Programmiersprachen (etwa Prolog) Fakten beschrieben werden. RDF ist XML-basiert. Das ist wahrscheinlich der Grund, dass das Modul "XML" als sinnvolle Vorbereitung genannt wird. Vertiefte XML-Kenntnisse braucht man aber nur, wenn man das Thema Semantic Web auf eigene Faust weiter erkunden möchte. Mit dem Resource Description Framework Schema (RDFS), kann man solche Aussagen semantisch strukturieren. Man kann zum Beispiel festlegen, dass Affen Tiere sind oder das Tiere Nahrung essen. Mit dem Rule Interchange Format (RIF) beschreibt man Regeln, die von regelbasierten Systemen interpretiert und verarbeitet werden können. Man kann zum Beispiel Bedingungen formulieren, unter denen ein Tier Bananen als Nahrung nutzen würde, etwa, wenn es ein Affe ist und einer Umgebung lebt, in der Bananen wachsen. Ähnlich wie in einem Prolog-System kann dann ein regelbasiertes System aus bekannten Fakten und Regeln neue Fakten ableiten, die logisch implizit vorhanden aber bislang nicht explizit bekannt waren. Auf diese Weise kann ein solches System Wissen entdecken. Über solche Mechanismen kann neuer Content mit altem Content inhaltlich verknüpft werden. Logische Aussagen, die Triplets, können in speziellen Datenbanken, sogenannten Triplestores, gespeichert werden. Mit der Abfragesprache SPARQL kann man in diesen Wissensbeständen nach bestimmten Mustern suchen, ähnlich wie mit SQL in einer relationalen Datenbank. Als Fallbeispiel für ein semantisches CMS dient Apache Stanbol. Dieses Kapitel war für mich das Beste am Kurs. Leider fehlt im Kursangebot von Springer Campus ein Modul "Klassische KI", das nötig wäre, um die hier vorgestellten Konzepte wirklich en detail zu verstehen. (Klassische KI ist ja ein Thema, mit dem ich mich gerne noch beschäftigen möchte.) Die spannende Idee hier scheint zu sein, dass Web-Content mit Fakten und Regeln angereichert wird, so dass ein wissens- und regelbasierte Systeme damit arbeiten können. Es folgten 2 Kapitel über "Dokumenten-Management-Systeme in der Praxis" und über ein Fallbeispiel zur Erstellung einer Unternehmenswebseite mit einem CMS. Bei letzterem ging es weniger um Technik als um die einzelnen Phasen des Projektablaufs und die daran beteiligten Akteure. Mit Ausnahme des Kapitels über SCMS hat dieses Modul keine ausgesprochen technische Perspektive. Es geht eher um die Einbettung von CMS in organisatorische und institutionelle Kontexte, um Vorgehensweisen im Projektverlauf, um die Ermittlung von Anforderungen, die Formulierung von Projektzielen und Erfolgskriterien. Schon nachvollziehbar, dass das ein Modul für die Wirtschaftsinformatiker ist. Eine Besonderheit in diesem Modul ist, dass es hier mal kein gedrucktes Lehrbuch sondern nur ein Skript gibt. Das hatte ich bei Springer Campus noch nicht erlebt, obwohl ich vom Hörensagen weiß, dass das vereinzelt auch noch in anderen Modulen vorkommt. Ein Buch ist natürlich schöner und lässt sich besser mitnehmen, aber das Skript ist völlig in Orndung. Die Einsendeaufgaben fand ich in diesem Modul vergleichsweise einfach. Das gleiche galt für Abschlusstest und Abschlussklausur. Die Präsenzklausur fand ich im Vergleich etwas schwerer. Ich hatte mich aber auch nicht gut vorbereitet. Da ich am Prüfungswochenende 4 Klausuren schreiben wollte, musste ich Prioritäten setzen. Softwaretechnik 3 und Web-Engineering waren mir am wichtigsten. Darum hatte ich dort am meisten Zeit investiert. Für CMS hatte ich vor allem die Inhalte aus dem Kapitel über SCMS wiederholt, denn die fand ich am anspruchsvollsten. Außerdem war ich der Meinung, dass das guter Stoff für Prüfungsfragen sei. Leider spielte ausgerechnet dieser Kursteil in der Klausur eine geringe Rolle. Die Aufgaben deckten ansonsten alle Kursteile recht breit ab, so dass ich hier nur den Tipp geben kann, bei der Wiederholung des Stoffes auf möglichst gleichmäßige Abdeckung zu setzen und sich nicht in Details zu verlieren. Die Aufgaben fragen in erster Linie Wissen ab, indem man Konzepte und Begriffe erklärt. Solche Klausuren mag ich nicht besonders, aber es passt zum Kurskonzept. Nicht ganz zu unrecht hatte ich damit gerechnet, dass die Klausur zu CMS die leichteste an jenem Prüfungswochenende sein würde. Darauf hatte ich mich leider ein bisschen zu sehr verlassen, und so erzielte ich insgesamt nur 75 von 100 Punkten. Da diese Klausur wirklich nicht zu schwierig war, war ich mit meiner Leistung nicht zufrieden. Dank der Bonuspunkte aus Online-Test und Online-Klausur war die Note dann trotzdem ganz gut. CMS ist ein Modul für Wirtschaftsinformatiker. Es geht um Anwendung im institutionellen Kontext, um Vorgehensweisen, Projektplanung, Standards. Wie die Technik funktioniert, spielt eine untergeordnete Rolle. Man lernt nicht, mit einem bestimmten CMS umzugehen. Insgesamt habe ich schon einige neue Erkenntnisse aus dem Modul mitgenommen, vor allem aus den Kapiteln über Dokumenten-Management-Systeme. Aber nochmal würde ich es nicht belegen, weil es mir zu sehr auf die Wirtschaftsinformatiker zugeschnitten ist.
  3. kurtchen

    Aus die Maus

    Herzlichen Glückwunsch! Das ist ein ordentliches Stück Arbeit, das damit vollendet ist. Aber auch ein eigener Lebensabschnitt, der nun vorbei ist. Ich habe damals eine gewisse Befreiung erlebt und hatte eine lange Liste mit Dingen, die ich in den Jahren gerne gemacht hätte aber aus Zeitmangel nicht gemacht hatte. Da war ein starkes Bedürfnis, mich ganz anderen Themen und Tätigkeiten zu widmen. Aber nach einer Weile fehlte mir auch etwas. War schon eine besondere Erfahrung, sich über mehrere Jahre so intensiv mit einem Thema zu beschäftigen. Toll, dass Du es geschafft hast!
  4. Das Modul "Data Warehouse & Data Mining" kann in meinem Studiengang "Web- und Medieninformatik" als Vertiefungsmodul belegt werden. Für Studierende der Wirtschaftsinformatik ist es ein Pflichtmodul und wird dem Studienbereich "Wirtschaftsinformatik" zugerechnet. Meine Erwartungen an dieses Modul wurden durch das Lehrbuch "Data Mining" von Jürgen Cleve und Uwe Lämmel geprägt. In diesem Buch geht es darum, wie Analyseverfahren mathematisch und algorithmisch funktionieren. Das wollte ich lernen. Zu meiner anfänglichen Enttäuschung hat dieses Modul andere inhaltliche Schwerpunkte. Eigentlich hätte ich das ahnen müssen. Als inhaltliche Voraussetzung werden nämlich "Grundlagen der Informatik 1" und "SQL und relationale Datenbanken" aber nicht "Statistik" genannt. Kein Wunder also, dass die eigentlichen Mechanismen des "Knowledge Discovery in Databases" keinen großen Raum einnehmen. Dieses Modul beschäftigt sich mit Data Mining und Data Warehousing in einem unternehmerischen Kontext. Zunächst geht es um die Unterscheidung zwischen operativen und analyseorientierten Informationssystemen. Operative Systeme sind entlang von Workflows im Unternehmen organisiert. Ein Beispiel wäre eine Software zu Aufnahme und Abwicklung von Bestellungen. Solche Informationssysteme häufen im Laufe der Zeit große Datenbestände an. Die Art der Ablage der Daten ist aber an der konsistenten Speicherung von fallbezogenen Daten orientiert. Bei analyseorientierten Informationssystemen geht es darum, die so gewonnenen Daten in Kombination mit Daten aus anderen Quellen mit geeigneten Methoden auszuwerten, um bislang unbekannte Muster und Zusammenhänge zu erkennen, die sich betriebswirtschaftlich nutzen lassen. Zum Beispiel, dass bestimmte Produkte häufig in Kombination gekauft werden oder dass der Kauf bestimmter Produkte Folgekäufe bestimmter anderer Produkte nach sich zieht. Ein Unternehmen könnte darauf z.B. reagieren, indem es solche Produkte gemeinsam anbietet oder Werbung passgenau verschickt.Die Details solcher Auswertungsprozesse stehen nicht im Mittelpunkt des Kurses. Vielmehr geht es um den Prozess im Unternehmen, in dem solche Verfahren durch geeignete Aufbereitung der Daten vorbereitet werden und zur Anwendung kommen. Und natürlich auch darum, wie die Ergebnisse solcher Analysen für den Unternehmenserfolg nutzbar gemacht werden können. Als Studierender der Web- und Medieninformatik bin ich eine andere Perspektive gewohnt: Wie funktioniert es technisch? Aber das ist ein Modul für Wirtschaftsinformatiker. Die Perspektive ist eher: Wie bekommen wir das im Unternehmern organisiert? Was fangen wir betriebswirtschaftlich damit an? Die nötige Analysesoftware programmieren wir wahrscheinlich nicht selbst sondern kaufen sie ein. Wir möchten daher nur wissen, was für Verfahren es gibt und für welche Anwendungsszenarien sie welche Stärken und Schwächen haben. Wir müssen nicht en detail wissen, wie z.B. ein künstliches neuronales Netz in der Lage ist, bislang unbekannte Muster im Kaufverhalten zu entdecken. Nach der ersten Enttäuschung habe ich beschlossen, mich auf diese andere Perspektive einzulassen und das beste aus dem Modul zu machen. Unterm Strich hat es mir dann doch recht gut gefallen, wenn auch aus ganz anderen Gründen als erwartet. Der größte Gewinn war tatsächlich die unternehmerische, anwendungsbezogene Perspektive, über die ich mir bislang weniger Gedanken gemacht hatte. Mich interessiert, wie man ein gegebenes Problem technisch lösen kann. Wie man vorhandene Technologien einsetzt, um sich im Wettbewerb Vorteile zu verschaffen, finde ich weniger spannend. Aber natürlich braucht man Menschen, die sich um genau solche Dinge Gedanken machen. Ich möchte mich nicht unbedingt selbst in diese Richtung entwickeln, aber ich halte es für sinnvoll, ein Verständnis für diese Denk- und Arbeitsweise zu entwickeln. Und für Menschen, die so arbeiten. Dazu ist das Modul Data Mining gut geeignet. Der Umfang des Lehrbuches ist mit ca. 200 Seiten für Springer Campus unterdurchschnittlich. Nur die zweite Hälfte des Buches beschäftigt sich mit dem Prozess der Wissensgewinnung aus großen Datenbeständen. In der ersten Hälfte geht es zunächst um die Transformation und Zusammenführung von Daten aus operativen Systemen. Für analyseorientierte Systeme bieten sich andere Formen der Datenspeicherung an. Es gibt multidimensionale Datenbanken, die für genau solche Anwendungsfälle entwickelt wurden. Auch die Verwendung relationaler Datenbanken ist möglich, aber sie werden dann oft anders aufgebaut. Während man in operativen Systemen redundante Speicherung von Informationen vermeiden möchte, um Inkonsistenzen auszuschließen, lässt man bei analyseorientierten Systemen manchmal gewisse Redundanzen zu, um schneller durch multidimensionale Datenbestände navigieren zu können. All dies ist zusammengefasst in den Kapiteln zu Data Warehouse und OLAP. Eine wesentliche Rolle spielen die grundlegenden Navigationsmöglichkeiten in multidimensionalen Datenstrukturen. Man kann multidimensionale Datenwürfel in verschiedenen Ebenen schneiden (Slicing), den Datenwürfel durch die Schnittebene drehen (Dicing), Dimensionen feiner Auflösen bzw. in den Würfel hineinzoomen (Drill down) oder aus dem Würfel herauszoomen (Roll up). Ziel ist, eine Datenstruktur aufzubauen, die es erlaubt, große Datenbestände interaktiv und auf neue Weise zu erkunden. Das ist etwas ganz anderes als klassisches Reporting. Erst im zweiten Teil des Buches geht es dann um Data Mining, also das Erkennen bislang unbekannter Muster in großen Datenbeständen. Im Lehrbuch werden zwei Auslegungen des Begriffes Data Mining unterschieden. Data Mining im engeren Sinne ist der technische Prozess der Wissensentdeckung in Datenbanken. Dazu verwendet man Verfahren wie künstliche neuronale Netze, Clusterverfahren, Assoziationsanalyse und Entscheidungsbaumverfahren. Data Mining im weiteren Sinne ist ein umfassender, mehrstufiger Prozess. Die Stufen heißen: Business Understanding, Data Understanding (Auswahl und Sichtung der Daten), Data Preparation (Datenaufbereitung und -bereinigung), Data Modelling (die Anwendung der eigentlichen Analyseverfahren), Evaluation (Beurteilung und Auswahl relevanter Analyseergebnisse) und Deployment (die Anwendung der Ergebnisse zur Generierung von Wettbewerbsvorteilen). Das Lehrbuch konzentriert sich auf die zweite Sichtweise des Data Minings als mehrstufiger Prozess. Wer wissen will, wie die Phase des Data Modelling mathematisch-technisch funktioniert, sollte ein anderes Lehrbuch lesen. Typisch für Springer Campus ist, dass jedes Kapitel mit einer Fallstudie endet, die die Anwendung der beschriebenen Techniken und Konzepte in einem betrieblichen Kontext schildert. Hier geht es um eine Firma, die Fahrräder produziert und ihre Kunden gezielter ansprechen möchte. Meine Tutorin gab mir mit den Aufgaben gute Rückmeldungen zur Klausurvorbereitung. Dankbar bin ich vor allem für ihre Tipps zum Zeitmanagement in der Klausur. Meine eingereichten Lösungen waren nämlich oft recht detailliert. Hier bekam ich den Hinweis, für die Klausur mehr auf den Punkt zu kommen, weil die Zeit knapp sei. In der Präsenzklausur gab es denn auch viele Aufgaben, die alle Teile des Kurses abdeckten. Ich habe von Anfang bis Ende geschrieben, was das Zeug hielt, und wurde gerade so rechtzeitig fertig. Was recht angenehm war: Die Aufgaben kamen in Dreiergruppen und aus jeder Gruppe sollte man zwei Aufgaben auswählen, eine durfte man weglassen. Auf diese Weise konnte man kleinere Unsicherheiten im Stoff ein wenig ausgleichen. Aber nicht ganz, denn z.T. zielten die Fragen in ähnliche Richtungen mit unterschiedlichen Schwerpunkten. Eine gründliche Vorbereitung des gesamten Stoffes ist also angesagt. Ich meine, ganz gut klar gekommen zu sein. Ein Ergebnis liegt mir aber noch nicht vor. Data Mining ist aus meiner Sicht ein Modul mit mittlerem Schwierigkeitsgrad. Der Arbeitsumfang für die Bearbeitung erscheint mir leicht unterdurchschnittlich, weil das Lehrbuch etwas dünner ist als in vergleichbaren Modulen. Web- und Medieninformatiker sollten sich bewusst sein, dass Data Mining als Modul für Wirtschaftsinformatiker aus einer anderen als der gewohnten Perspektive geschrieben ist und auch eine andere Zielsetzung hat. Wer mit diesem anderen Blickwinkel zurecht kommt, ihn vielleicht sogar als willkommene Abwechslung und Anregung begreifen kann, hat hier eine Möglichkeit, im Vertiefungsbereich auch mal mit etwas weniger Bearbeitungszeit einen Schritt weiter zu kommen. Mir hat es am Ende Spaß gemacht, auch wenn ich immer noch Lust hätte, ein Modul zu belegen, das wirklich vertieft auf die einzelnen Analysetechniken eingeht.
  5. Gerade mal 10 Tage nach der Klausur zum Modul "Web-Engineering" ist das Ergebnis schon da. So prompte Rückmeldung finde ich natürlich schön, weil ich so noch weiß, worum es gegangen ist und was ich geschrieben habe. Dieser Bezug zu den Inhalten der Klausur verliert sich natürlich im Laufe von Wochen. Dann freut oder ärgert man sich über die Note, aber man weiß nicht mehr, womit man sie verdient hat. Das Glück war mir hold! Ich wusste ja, dass ich ein paar Sachen durcheinander gebracht hatte, aber die Abzüge hielten sich in Grenzen. Ich bin mit dem Ergebnis zufrieden. Die Note in Web-Engineering war mir schon wichtig, weil Web-Technologien nun mal ein inhaltlicher Schwerpunkt in meinem Studiengang sind. Ist sozusagen eine Frage der Ehre, in diesem selbst gewählten Schwerpunkt dann auch gut abzuschneiden. Ich habe mir beim letzten Prüfungswochenende 4 Klausuren aufgeladen und hatte durchaus ein bisschen Sorgen, dass sich das ungünstig auf meine Leistung auswirken könnte. Hat ein bisschen Selbstdisziplin erfordert, sich davon nicht einschüchtern zu lassen und die Nerven zu behalten. Ich empfehle das niemandem zur Nachahmung. Bei mir hat es den Hintergrund, dass ich in ca. 6 Wochen umziehe. Darum wollte ich vorher Gas geben und mir einen kleinen Vorsprung verschaffen. Es steht zu befürchten, dass ich vor dem Sommerurlaub nur noch wenig schaffe. Besonders gespannt bin ich auf die Note im Modul "Softwaretechnik 3". Da habe ich die meiste Vorbereitungszeit investiert und dieses Modul fand ich auch inhaltlich am anspruchsvollsten. Insbesondere finde ich das Thema "Entwurfsmuster" wichtig für jeden Informatiker. Aber immerhin, Web-Engineering ist geschafft. Nun bleiben mir noch 3 Module aus dem Studienbereich "Web-Technologien"; 2 Module, die ich belegen MUSS, und 1 Modul, das ich belegen DARF. Die Pflichtmodule sind "XML" und "Multimedia". XML will ich bald angehen. Da Lehrbuch liegt schon neben meinem Schreibtisch und lockt mich viel mehr als BWL. XML ist ein recht formales Thema und solche Sachen mag ich gerne. Multimedia möchte ich vielleicht im November machen. Dieses Thema finde ich nicht ganz so spannend, aber natürlich leuchtet mir ein, dass es in einem Studium mit Schwerpunkt "Web-Informatik" unvermeidlich ist. Das freiwillige Modul ist eine Einführung in Java Server Faces (JSF) und baut auf dem Modul "Web-Anwendungen 2" auf, wo es um Java Server Pages ging. Das wird wieder ein praktisches Programmiermodul. Gebucht habe ich es schon, aber als inhaltliche Voraussetzung wird XML genannt, also schön ein Schritt nach dem anderen.
  6. Welche Rolle spielt das Modul im Studium? Das Modul "Web-Engineering" ist eines der möglichen Vertiefungsmodule im Studiengang "Web- und Medieninformatik". Es ist außerdem ein Pflichtmodul für die Weiterbildungszertifikate "Web-Frontend-Programmierer" und "Web-Entwickler". Laut Studienplan sollte es ab dem 5. Semester belegt werden. Das Modul "Web-Programmierung" gilt als inhaltliche Voraussetzung, weil man Grundkenntnisse in HTML, Javascript und am besten auch in XML benötigt. Überraschen könnte, dass auch Grundlagen der Informatik 1 und 2 als Voraussetzung genannt werden. Das liegt daran, dass die Programmierung mit serverseitigen Frameworks wie dem GWT oder dem ZK Framework eine große Rolle spielt, und dafür braucht man solide Java-Kenntnisse. Doch davon später mehr. Empfohlen wird auch, das Modul "Skripsprachen" vorher zu belegen. Dieses Modul bietet eine umfangreichere Einführung in Javascript als "Web-Programmierung". Leider wird es nicht mehr angeboten und laut Studienbüro ist auch kein Ersatz in Sicht. Ich finde das recht ärgerlich, denn beim Durcharbeiten von "Web-Engineering" habe ich oft gemerkt, dass vertiefte JavaScript-Kenntnisse nützlich gewesen wären. Die Streichung von "Skriptsprachen" wurde mir gegenüber damit begründet, dass viele Studierende sich beklagt hatten, das Modul sei veraltet gewesen. Mir liegt die letzte Auflage des verwendeten Lehrbuches vor. Mein Eindruck ist, dass ich dieses Modul immer noch sehr gerne belegt hätte, und dass es eine sehr gute Vorbereitung für "Web-Engineering" gewesen wäre. Schade, aber nicht zu ändern. Das Lehrbuch Der Kurs basiert auf dem Lehrbuch "Web 2.0-Anwendungen mit AJAX" von Jürgen Priemer. Herr Priemer ist auch einer der Autoren des Lehrbuches von "Grundlagen der Informatik 3", wo es unter anderem um GUI-Programmierung in Java am Beispiel von Swing geht. Ich meine, seinen Stil wiedererkannt zu haben. Mit GdI3 kam ich gut zurecht und auch dieses Lehrbuch hat mir wieder gut gefallen. Mit ca. 350 Seiten ist der Umfang leicht unterdurchschnittlich. Das heißt aber nicht, dass man dieses Modul überdurchschnittlich schnell durcharbeiten kann. Die Themenvielfalt ist groß und jeder Themenwechsel geht zu Lasten des Arbeitstempos. Worum geht es? Worum geht es nun inhaltlich? Springer hat ja ein verpflichtendes Modul "Web-Anwendungen 2", bei dem es um die Programmierung von Web-Anwendungen mit Java-Server-Pages (JSP) geht. Hier ist das GUI eine HTML-Seite, die von einem Servlet erzeugt wurde. Der Nutzer macht Eingaben in ein Formular und sendet es ab. Das Servlet empfängt einen HTTP-Request, dem Nutzereingaben als Parameter angehängt sind. Das Servlet verarbeitet diese Anfrage, interagiert zu diesem Zweck mit Fachkonzept-Klassen und eventuell auch einer Datenbank und baut eine neue HTML-Datei als Antwort auf die Nutzeranfrage. Diese empfängt der Browser des Nutzers und rendert daraus eine Darstellung, die der Nutzer dann sieht. So weit der klassische Ablauf. Eine grundlegende Beschränkung ist, dass die Serverantwort als neue Seite empfangen wird. Es wird also nach jeder Nutzeranfrage eine komplett neue Seite geladen und gerendert. Wenn man möchte, dass Web-Anwendungen reaktiver und interaktiver sind, hilft die Technik des XML-HTTP-Requests. Dazu braucht man Code, der clientseitig ausgeführt wird. Der kleinste gemeinsame Nenner auf der Clientseite ist Javascript, das in allen modernen Browsern zur Verfügung steht. Wir haben also clientseitig ein Event-Handling in Javascript, das bestimmte Nutzeraktionen registriert, z.B. dass der Nutzer gerade das Postleitzahlen-Eingabefeld verlassen hat. Der clientseitige Code schickt nun dem Server einen sogenannten XML-HTTP-Request, der z.B. die gerade eingegebene Postleitzahl enthält. Der Server verarbeitet diesen Request, z.B. in dem er bei einem Web-Service den zur Postleitzahl passenden Ort nachschlägt. Nun kommt der entscheidende Punkt: Der Server antwortet nicht mit einer neuen Seite sondern schickt eine Response im XML- oder JSON-Format. Diese Response wird von clientseitigem JavaScript-Code in einer Callback-Funktion ausgewertet. Diese Callback-Funktion verändert oder löscht Elemente der dargestellten Seite oder fügt ihr neue Elemente hinzu. Dies geschieht durch Manipulation des Document Object Models (DOM), dass der Browser auf Grundlage der zuvor empfangenen HTML-Datei erzeugt hat. Zum Beispiel kann die Callback-Funktion nun den Ortsnamen in das Eingabefeld Ort einfügen oder eine Fehlermeldung anzeigen, dass die eingegebene Postleitzahl nicht existiert und den Absenden-Knopf des Formulars deaktivieren, bis der Nutzer diesen Fehler behoben hat. Der oben beschriebene, grundlegende Prozess steht im Mittelpunkt des Moduls. Durch ihn können Web-Anwendungen reaktiver werden. Seiteninhalte können sich dynamisch ändern, ohne das eine Seite komplett neu geladen werden muss. Web-Anwendungen können mit GUIs ausgestattet werden, die denen von Desktop-Anwendungen ähneln. Sie können komplexere Funktionalität und ein insgesamt flüssigeres Nutzungserlebnis bieten. Der Preis dafür: Wir müssen nicht nur serverseitigen Code in einer serverseitigen Sprache programmieren (wie z.B. PHP oder Java), sondern auch clientseitigen Code in JavaScript. Wir müssen ein bisschen Hirnschmalz darauf verwenden, die Interaktion zwischen client- und serverseitigem Code hinzubekommen. Und das ganze wird eventuell noch dadurch verkompliziert, dass wir Inhalte von unterschiedlichen Servern oder Web-Services einbinden. Es gibt nun im wesentlichen drei Möglichkeiten, Web-Anwendungen dieser Art zu implementieren: 1. Wir programmieren den clientseitigen Code von Hand in JavaScript aus. Dann müssen wir uns damit auseinander setzen, dass es Unterschiede zwischen den Browsern gibt. Wir müssen also bedingte Verzweigungen in unseren Code einbauen und Fallbacks schreiben. 2. Wir verwenden ein clientseitiges JavaScript-Framework, dass uns die Arbeit vereinfacht. Bibliotheken verbergen die Unterschiede zwischen den Browsern hinter einheitlichen Funktionsaufrufen und vereinfachen den Umgang mit dem XML-HTTP-Request und der Response. Als Bonus bekommen wir in der Regel Funktionen zur einfachen DOM-Manipulation und fertige GUI-Elemente, zum Bau interaktiver Oberflächen. Im Kurs werden 2 derartige Frameworks vorgestellt: Prototype und das sehr verbreitete JQuery. 3. Wir verwenden ein serverseitiges Framework, das uns erlaubt, den gesamten Code, auch für das was auf dem Client passieren soll, in EINER serverseitigen Sprache zu schreiben. Im Kurs behandelt wird zunächst das Google Web Toolkit (GWT). Hier übersetzt ein Compiler clientseitigen Code von Java nach JavaScript. Auch das ZK Framework wird vorgestellt. Dort programmiert man ebenfalls alles in Java. Der Java-Code wird aber nicht zu JavaScript übersetzt. Stattdessen gibt es zu GUI-Klassen in Java korrespondierende fertige Pendants in JavaScript, die automatisch clientseitig eingebunden werden und mit den serverseitigen Klassen per Remote Procedure Call kommunizieren. Der Vorteil für den Entwickler: Er kann eine (verteilte) Web-Anwendung rein in Java schreiben. Das fühlt sich dann fast an, als würde man eine Desktop-Anwendungen programmieren. Diese Inhalte bilden den Kern des Moduls. Die verschiedenen Ansätze werden immer wieder am Beispiel eines Heimwerker-Portals demonstriert, dass schrittweise um verschiedene Funktionalitäten erweitert wird. Im Kurs gibt es viele praktische Programmieraufgaben, was natürlich Spaß macht. Herausforderungen speziell bei diesem Modul Schwierig ist der häufige Wechsel der Frameworks. Man ist ständig mit neuer Syntax konfrontiert und wird nie richtig sicher im Umgang mit einem Framework. Eine weitere Schwierigkeit ist, dass sich Frameworks schnell weiterentwickeln. Ich hatte zum Teil Mühe, Codebeispiele aus dem Kurs zum Laufen zu bekommen. Oft war hier zusätzliche Zeit für Recherche nötig, um herauszufinden, wie bestimmte Dinge inzwischen gehandhabt werden. Und das, obwohl der Kurs noch gar nicht so alt ist. Das scheint der Preis dafür zu sein, wenn man aktuelle Themen in Module aufnimmt. Der Umgang mit dieser Schwierigkeit wurde mir erleichtert durch die guten Hilfestellungen und Tipps meines Tutors, der immer wieder Ideen beisteuerte, woran es liegen könnte, dass etwas nicht (mehr) läuft. Als - durchaus klausurrelevanten - Bonus gibt es noch Kapitel über neue Funktionen in HTML5, wie z.B. das Canvas-Element oder Local Storage. Außerdem gibt es Kapitel über Mashups, also Möglichkeiten, Inhalte aus Web-Diensten in eigene Seiten einzubinden, z.B. Kartendienste, RSS-Feeds, Photo-Dienste, Suchmaschinen und dergleichen. Den Abschluss bildet ein Kapitel über die Google-App-Engine. Mir hat das Modul viel Spaß gemacht, weil es sehr praktisch war und es viele Einsendeaufgaben gab, bei denen es um Problemlösen ging. Es war schwerpunktmäßig ein Programmiermodul. Die Präsenzklausur Was mir im Hinblick auf die Klausur Sorge gemacht hatte: In der Präsenzklausur darf man keinerlei Hilfsmittel verwenden. Ich stellte mir die Frage, wie ich mir die syntaktischen Feinheiten mehrer Frameworks einprägen sollte. Und wie ich vermeiden sollte, diese in der Klausur durcheinander zu bringen. Diese Sorge war aber unbegründet: Im Gegensatz zum Kurs selbst spielt in der Klausur das Schreiben von Code eine untergeordnete Rolle. Hier geht es vor allem darum, die grundlegenden Abläufe im Zusammenspiel von client- und serverseitigem Code zu verstehen. Auch geht es darum, die Architektur und die konzeptionellen Unterschiede zwischen den verschiedenen Frameworks zu begreifen. Die Klausur deckt Inhalte aus allen Teilen des Moduls ab. Das ist möglich, weil es auch kleinere Aufgaben mit Wissensfragen gibt, so dass man mit wenig Zeit abchecken kann, ob der Studierende wirklich alle Kapitel durchgearbeitet hat. Das wechselt sich dann wieder ab mit problemlösenden Aufgaben, bei denen man eine eigene intellektuelle Leistung erbringen muss. Eine gut gestellte Klausur, muss ich sagen. Das heißt leider nicht, dass ich da unbedingt gut abgeschnitten habe. Ein Ergebnis liegt mir noch nicht vor, aber ich weiß inzwischen, dass ich einige "Böcke geschossen" und auch ein paar Sachen verwechselt habe. Die nächsten Wochen werden zeigen, wie stark sich das auf meine Note auswirken wird. Falls sie nicht so gut ausfällt, muss ich mir das aber selbst zuschreiben. Fair gestellt war die Klausur in jedem Fall. Für wen ist es geeignet? Web-Engineering ist ein Modul, dass niemand belegen muss. Darum stellt sich am Ende die Frage, wem ich es empfehlen möchte: - Leute, die praktische Module mit Programmieraufgaben mögen. - Leute, die Spaß daran haben, in rascher Folge neue Frameworks auszuprobieren. - Leute, die damit zurechtkommen, auch mal selbst zu recherchieren, weil sich Inhalte schon wieder weiterentwickelt haben. - Leute, die es nicht darauf anlegen, den Wahlpflichtbereich mit möglichst wenig Arbeitsaufwand hinter sich zu bringen. - Leute, die auch eine schlechtere Note riskieren möchten, wenn dafür die Modul-Inhalte spannend sind.
  7. Seit neuestem ist es möglich, auch in Heidelberg Klausuren zu schreiben. Das liegt daran, dass der Springer Verlag eine Zweigniederlassung in Heidelberg hat. Der Klausurort ist darum auch das große Gebäude in der Tiergartenstraße 17. Klausuren in Heidelberg sind bis auf weiteres Freitags von 10 bis 12 und bei Bedarf von 13 bis 15 Uhr möglich. Samstags kann man in Heidelberg keine Klausuren schreiben. Wenn man mit dem Auto anreist, sollte man bedenken, dass der Verkehr sich morgens im Berufsverkehr stadteinwärts staut. Das kennt man auch von anderen Städten. Die Parksituation vor Ort ist gut. Springer hat einen großen Firmenparkplatz, den ich aber gar nicht nutzen musste, weil ich einen der zahlreichen öffentlichen und gebührenfreien Parkplätze einer nahe gelegenen Sportanlage nutzen konnte. Auch die Anreise mit öffentlichen Verkehrsmitteln scheint nach Auskunft eines Kommilitonen kein Problem zu sein. Beim Betreten des Gebäudes muss man sich am Empfang in eine Besucherliste eintragen und beim Verlassen des Gebäudes auch wieder abmelden. Das dauert einen Moment. Dafür ist der Klausurraum im Erdgeschoss nahe beim Eingang und nicht schwer zu finden. Wie an anderen Klausurorten üblich, werden Getränke und ein paar Süßigkeiten zur Verfügung gestellt. Ein großes Plus in Heidelberg ist die hervorragende Betriebskantine von Springer. Ob süß oder herzhaft, üppig oder gesundheitsorientiert, mit oder ohne Fleisch, hier ist für jeden etwas geboten. Ich hatte bei meinem ersten Besuch am Ende mehr auf dem Tablett, als ich mir vorgenommen hatte, weil so viele leckere Dinge lockten. So konnte ich gut gestärkt in meine zweite Klausur gehen. Schön am Standort Heidelberg ist auch, dass man dort Mitarbeiter von Springer Campus trifft, die unseren aber auch weitere Fernstudiengänge organisatorisch betreuen. Das ist eine schöne Gelegenheit zum informellen Austausch, über die aktuelle und künftige Situation unseres Studienganges. Es ist durchaus interessant zu erfahren, wie bestimmte Aspekte unseres Fernstudiums aus Anbietersicht wahrgenommen werden. Bislang nutzen nur wenige Studierende den Klausurstandort Heidelberg. Allerdings weiß ich von Kommilitonen, dass trotz eindeutiger E-Mail-Einladung noch längst nicht alle mitbekommen haben, dass es diese neue Möglichkeit gibt. Ich glaube, dass Heidelberg vor allem für die Studierenden aus Baden-Württemberg eine interessante Alternative sein könnte. Aber nicht nur. Ich wohne in Unterfranken und möchte in Zukunft gerne öfter meine Klausuren in Heidelberg schreiben.
  8. Das Modul Softwaretechnik 3 (SWT3) ist verpflichtend für Studierende im Studiengang Web- und Medieninformatik und wird dort dem großen Studienbereich "Softwaretechnik" zugerechnet. Für Studierende im Studiengang Wirtschaftsinformatik ist es nicht verpflichtend. Soweit ich es verstanden habe, kann es von ihnen nicht einmal als Vertiefungskurs belegt werden. Laut Studienplan sollte man SWT3 im 6. Semester belegen. Es ist also als eines der letzten Module vor der Bachelor-Arbeit vorgesehen. Voraussetzungen Die Liste der Module, die als inhaltliche Voraussetzung genannt werden ist lang: Man benötigt GdI1 und GdI2, weil man solide Kenntnisse objektorientierter Konzepte sowie gute Java-Kenntnisse braucht. GdI3 ist wichtig, weil die Interaktionen zwischen den Schichten GUI, Fachkonzept und Datenhaltung eine wesentliche Rolle spielen. SWT1 ist unter anderem nötig, weil man sich mit den verschiedenen UML-Diagrammen gut auskennen sollte. Wozu man Software-Management braucht, erschließt sich mir nicht. Ich hatte diese Grundlage nicht und habe sie auch an keiner Stelle des Kurses vermisst. Dafür denke ich, dass das Modul "Nicht-sequentielle Programmierung" (NSP) eine sinnvolle Vorbereitung wäre, denn verteilte Anwendungen spielen eine große Rolle und es ist sehr hilfreich, zumindest schon einmal Erfahrungen mit RMI (Remote Methode Invocation) gesammelt zu haben. Das Modul SWT3 ist außerdem ein Pflichtmodul für das Hochschulzertifikat "Software-Architekt". Kein Wunder, denn Software-Architektur ist ein roter Faden dieses Kurses. Das Lehrbuch Grundlage für den Kurs ist das "Lehrbuch der Softwaretechnik - Entwurt, Implementierung, Installation und Betrieb" von Helmut Balzert. Es ist der Folgeband zum "Lehrbuch der Softwaretechnik - Basiskonzepte und Requirements Engineering" vom gleichen Autor. Während sich der Inhalt des ersten Bandes auf 2 Module verteilte, muss man für SWT3 tatsächlich die kompletten 580 Seiten durchackern. Und die haben es in sich. Wie schon im ersten Band legt Herr Balzert großen Wert auf eine präzise Definition der Begriffe. Viele Diagramme (vor allem UML-Diagramme) und Code-Beispiele (meist in Java) ergänzen den Kurstext. Die Themen Eine der ersten Einsendeaufgaben behandelte Verteilungsdiagramme. Mit diesen stellt man dar, wie die Komponenten eines verteilten Softwaresystems auf verschiedene physische Rechner oder auf verschiedene Ausführungsumgebungen an verschiedenen Standorten verteilt sind, und über welche Protokolle die Interaktion zwischen den Knoten abläuft. Konkret sollte man für die Aufgabe die sprachliche Beschreibung eines verteilten Systems in ein Diagramm umsetzen. Hier hatte ich Schwierigkeiten, mir das System und das Zusammenwirken seiner Teile vorzustellen. Ich brauchte mehrere Anläufe und viele Rückmeldungen meines Tutors, um diese Aufgabe befriedigend lösen zu können. Leider ist dieses Thema eine meiner Achillesfersen geblieben. Die Verteilungsdiagramme spielten auch in der Klausur eine Rolle und gerade mit dieser Aufgabe habe ich mich sehr schwer getan. Leichter fiel mir der große Themenbereich der Entwurfsmuster. Hier zielten die Einsendeaufgaben darauf ab, verschiedene Entwurfsmuster in Java auszuprogrammieren. Zu meiner Überraschung ist SWT3 ein Modul, in dem das Schreiben von Code wieder eine größere Rolle spielt. Eine schöne Nebenwirkung dieses Moduls ist, dass ich nun viel besser mit Netbeans umgehen kann. (Eigentlich nicht vorgesehen, ich hätte ich das Modul mit Eclipse bearbeiten sollen.) Wichtige Themen sind: Callback, Schichten-Muster, Beobachter-Muster, MVC-Muster, Fassaden-Muster, Kommando-Muster, Proxy-Muster, Fabrikmethoden-Muster, Strategie-Muster und Brücken-Muster. Angenehm am Modul ist auch, dass sich eher theoretische und sehr praktische Kapitel abwechseln. Nach einem recht theoretischen Kapitel über nicht-funktionale Anforderungen geht es also wieder recht praktisch weiter mit Globalisierung und Internationalisierung von Software, mit Authentifizierung und Autorisierung am Beispiel JAAS und mit Transaktionen am Beispiel JTA. Ergänzend zur vorherrschenden Java-Perspektive gibt es immer wieder kleinere Ausflüge, wie die verschiedenen Konzepte des Kurses in .NET umgesetzt werden. Ein nächster großer Block sind Arten der Netzkommunikation bei verteilten Anwendungen. Hier lernt man in rascher Folge die Kommunikation mit Sockets, mit Remote Method Invocation (RMI), mit CORBA, mit XML-RPC, mit SOAP und REST. Hierzu gibt es auch wieder mehrere Programmieraufgaben. In diesem Zusammenhang lernt man auch weitere Entwurfsmuster kennen, z.B. Wert-Objekte, Fabrik-Dienste und Fassaden. Es folgt ein Kapitel über softwaretechnische Infrastrukturen. Hier geht vor allem um Java EE und um .NET. Das Kapitel über eingebettete Systeme und Architekturmuster für diese fällt aus meiner Sicht recht knapp aus. Wichtiger scheint mir das Kapitel über Persistenz. Hier gibt es Einsendeaufgaben zur objektrelationalen Abbildung (ORM) und zur Java Persistence API (JPA). ORM war ja auch schon im Modul "SQL und relationale Datenbanken" Thema, aber ich finde es nicht schlecht, dass dieses Thema hier noch einmal auftaucht. Bei der objektrelationalen Abbildung geht es darum, Klassen, Assoziationen und Vererbungsstrukturen eines per OOA erstellen Fachkonzepts in sinnvoller Weise auf Tabellen einer relationalen Datenbank abzubilden. Hierfür gibt es mehrere Möglichkeiten, die je eigene Vorzüge und Nachteile haben. Die restlichen Kapitel über GUI-Entwurfsmuster, den Entwurfsprozess, Qualitätssicherung der Architektur, Implementierung, Verteilung und Installation, Betrieb und Reverse Engineering werden nur noch durch Tests abgedeckt. Aufgrund des Umfangs des Moduls gibt es sehr viele Tests. Ich habe auch den Eindruck, dass im Abschlusstest breit geprüft wird. Mein Tutor war der gleiche wie in SWT1, SWT2, Mobile Computing und Web-Design. Die Rückmeldungen zu meinen Einsendeaufgaben kamen meist schon am nächsten Tag. Besonders interessant war es natürlich, wenn meine Lösung nicht gestimmt hatte. Durch die schnelle Antwortzeit, konnte ich gut Rückfragen stellen und meine eingereichten Lösungen zum Teil in mehreren Schritten verbessern. Das war wieder sehr hilfreich für die Klausurvorbereitung. Online- und Präsenzklausur Bei der Online-Klausur kamen Themen dran, mit denen ich nicht unbedingt gerechnet hätte. Aufgrund der Gewichtung der Einsendeaufgaben erschienen mir, Entwurfsmuster, Arten der Netzkommunikation und Persistenz als die Kernthemen des Moduls, die man gründlich vorbereiten sollte. Aber hier kamen auch Aufgaben zu kleineren Themen. Wer Bonuspunkte will, sollte also den gesamten Kurs ernst nehmen. In der Präsenzklausur kamen große Punktebringer dann schon aus den oben genannten Kernthemen. Es gab aber auch mehrere kleinere Aufgaben, die mit Wissensfragen Inhalte aus dem gesamten Modul abdeckten. Schon eine clever konstruierte Prüfung, wenn man checken will, ob die Studierenden wirklich alles bearbeitet und verstanden haben. Leider kamen auch die von mir nicht geliebten Verteilungsdiagramme wieder dran. Fazit und Ausblick Manche der vorgestellten Architektur-Muster waren recht komplex. Zum Teil habe ich bei diesem Modul gespürt, dass ich an die Grenzen meiner Abstraktionsfähigkeit komme. Man merkt deutlich, dass es ein Modul für fortgeschrittene Semester ist. Gut gefallen hat mir, dass hier die Umsetzung der Entwürfe in Code wieder eine größere Rolle spielt. SWT3 bildet eine gute Brücke zwischen den Modulen der Softwaretechnik und den Programmiermodulen. Ich finde insgesamt die Studienbereiche GdI und SWT gut aufeinander abgestimmt. Der Kurs hat mir wieder sehr viel Spaß gemacht, war aber für mich auch herausfordernd. Während ich bei anderen Modulen oft noch Wünsche formulieren konnte, was ich gerne noch alles gelernt hätte, war ich nach SWT3 endlich einmal "satt". Das kommt bei mir eher selten vor. Ein Klausurergebnis habe ich noch nicht, aber ich hoffe sehr, dass die Mühe sich gelohnt hat und ich diesen anstrengenden Teil meines Studiums nun auch wirklich hinter mir lassen kann. Den "dicken Brocken" Softwaretechnik habe ich damit aber noch nicht geschafft. Auf mich warten noch immer die Module "Software-Management 1" und "Software testen". Ich brauche nun aber tatsächlich einen Themenwechsel, um nicht ständig von der gleichen geistigen Ressource zu zehren. Darum möchte ich nun endlich einmal das bislang von mir vernachlässigte Thema BWL angehen, um das auch Studierende der Web- und Medieninformatik nicht herumkommen. In den nächsten Wochen wird mich also das interne und externe Rechnungswesen beschäftigen. Nicht gerade eine Entwicklungsaufgabe, auf die ich mich freue, aber nachdem ich in den letzten Wochen sehr viel vor dem Bildschirm gesessen habe, wird es zumindest eine Abwechslung sein.
  9. Ich finde nein. Da müsste ich das Gefühl haben, unfair oder nicht nachvollziehbar schlecht bewertet worden zu sein. Und das habe ich definitiv nicht. Ich konzentrier mich aufs Lernen, die Note ergibt sich.
  10. 3 Wochen nach der Klausur ist nun auch das Klausur-Ergebnis für "Software-Technik 2" da. Mit 83% der möglichen Punkte fand ich mein Ergebnis eigentlich ganz respektabel. Da ich mir ein paar Bonuspunkte erarbeitet hatte, konnte ich die Note sogar noch ein Stück verbessern. Ein bisschen ärgere ich mich, denn nur 0.25 Punkte mehr und die Note wäre noch ein bisschen besser ausgefallen. In der Präsenzklausur habe ich - so glaube ich - gegeben, was ich geben konnte. Aber speziell im Online-Test wäre noch ein bisschen mehr drin gewesen, weil ich da bei einer Aufgabe geschwächelt habe, die ich eigentlich mit dem Wissen aus dem Kurs problemlos hätte lösen müssen. Das hätte er sein können, der Viertelpunkt zur besseren Note. Ich glaube, mit einem etwas besseren Zeitmanagement in der Präsenzklausur wäre eventuell auch noch ein bisschen mehr drin gewesen. Aber das kann man rückblickend leicht sagen. Man schaut sich die Aufgaben an, sieht, wieviel Punkte zugeordnet sind und fällt eine strategische Entscheidung, wie man sich die Zeit einteilen will. Und natürlich ist es auch nicht hilfreich, den gefassten Plan mehrfach zu ändern. Aber in ein paar Wochen werde ich solche Details nicht mehr wissen. Dann zählt nur noch, dass das Ergebnis unterm Strich ja ganz erfreulich ist. Und nicht, was hätte sein können, wenn dies oder jenes gewesen oder nicht gewesen wäre, was sowieso nichts bringt. Inzwischen bearbeite ich "Software-Technik 3". Finde ich schwieriger und interessanter als SWT2 und etwas leichter als SWT1. Inhaltlich ging es bis jetzt um Entwurfsmuster. Aktuell beschäftige ich mich mit Internationalisierung und Lokalisierung von Software, wofür Java ja schon einige sehr praktische Klassen mitbringt. Ein schöner Kurs bis jetzt. Aber leider noch sehr viel Stoff, der bis zum nächsten Klausurtermin in die Birne muss.
  11. Modulberichte folgen. Aber erst wenn der Vorhang gefallen ist und ich das ganze Stück gesehen habe.
  12. Nicht mal zwei Wochen nach meiner Klausur ist das Ergebnis für "Web Anwendungen 2" schon da. Diesmal habe ich meine Punktzahl ziemlich genau einschätzen können. Ich wusste, wo ich "geliefert" hatte und wo es haperte. Mein Zeitmanagement in der Prüfung hätte auch noch einen Tick besser sein können. Aber ich bin zufrieden, weil ich im großen und ganzen das Gefühl habe, dass die Klausur meine Kenntnisse der Modulinhalte realistisch abbildet. Mehr kann man ja eigentlich nicht erwarten. Und doch habe ich ein bisschen mehr bekommen: Die Online-Klausur und der Online-Test sind mir nämlich bei diesem Modul gut gelungen, so dass ich ein paar Bonuspunkte mitnehmen und meine Note noch ein bisschen verbessern konnte. Aktuell bearbeite ich Softwaretechnik 3. Das Modul kommt mir schwieriger vor als Softwaretechnik 2 und es ist recht umfangreich. Dafür ist es aber auch sehr spannend. Zu meiner Überraschung wird dort wieder praktisch programmiert, denn es geht um Entwurf, IMPLEMENTIERUNG, Installation und Betrieb von Software. Im Moment beschäftige ich mich mit Entwurfsmustern. Das macht Spaß, weil ich den Eindruck habe, dass man die echt brauchen kann. Parallel belege ich Data Mining und Content Management Systeme als Vertiefungsmodule. Das sind Pflichtmodule aus dem Studiengang Wirtschaftsinformatik, was man meiner Meinung nach auch merkt. Der inhaltliche Fokus liegt mehr auf der Frage: "Mit welchem Nutzen wendet man so etwas in einem betriebswirtschaftlichen Umfeld an?" Mehr interessieren würde mich, wie funktioniert das technisch. An der Stelle merke ich, dass ich nicht zum Wirtschaftsinformatiker bestimmt bin. Aber gut, auch über solche Dinge muss man sich erst mal klar werden.
  13. Hallo Francesca19, gerne kannst Du Fragen zum Studiengang stellen. Meine private E-Mail-Adresse gebe ich auf diesem Wege natürlich nicht raus. Aber das Forum bietet ja über die Nachrichten-Funktion eine Möglichkeit, eine nicht öffentliche Unterhaltung zu führen. Viele Grüße Kurtchen
  14. Der IT-Analyst ist speziell für Leute konzipiert, die schon eine einschlägige Ausbildung haben. Wenn Web- und Medieninformatik für dich interessant ist und du keine Probleme hast, zu Prüfungen nach Dortmund oder München anzureisen, kann ich Springer Campus sehr empfehlen. Wenn Wirtschaftsinformatik für dich interessant sein könnte, gibt es die WINGS, wo ich z.B. theoretische Informatik belegt habe. So wie es dort vermittelt wurde, hat mir das übrigens viel Spaß gemacht. Wenn du regelmäßig für Präsenzen und Prüfungen nach Fulda anreisen kannst, gibt es dort den berufsbegleitenden Bachelor Sozialinformatik. Der setzt allerdings eine einschlägige Ausbildung im IT-Bereich, im Sozialbereich oder in der Sozialverwaltung voraus. Außerdem eine einschlägige Berufstätigkeit in einem der genannten Bereiche neben dem Studium. Wenn du in Norddeutschlang wohnst, könnte Oncampus eine Alternative sein. Dort kann man Medieninformatik oder Wirtschaftsinformatik studieren. Sehr bekannt ist natürlich die WBH. Da sie ein privater Anbieter ist, sind die Studiengebühren etwas höher als bei den meisten staatlichen FHs. Ich habe damit keine eigenen Erfahrungen, aber dafür viele andere Leute im Forum. Durchaus sehr positive Erfahrungen, wie mir scheint. Ebenfalls privat ist die IUBH. Soweit ich weiß, kann man dort Wirtschaftsinformatik studieren. Es gibt noch mehr Möglichkeiten. Unterschiede liegen im Studiengangskonzept, den inhaltlichen Schwerpunkten, in der zeitlichen Flexibilität, in Art und Umfang der Präsenzen und auch in den Studiengebühren. Das eröffnet die Chance, etwas zu finden, das gut zur eigenen Lebenssituation passt.
  15. Hallo Masa_ru, die Voraussetzungen habe ich nicht erfüllt, weil es bei diesem Punkt hakte: Das ist mir schon klar. Wenn ich z.B. ein wirtschaftswissenschaftliches Studium absolviert hätte und dann über meine Tätigkeit für ein Unternehmen mehr und mehr in den IT-Bereich gerutscht wäre, dann hätte ich so einen Master für mich angemessen gefunden. Dann hätte ich aus dem Erststudium auch solide Mathematik-Kenntnisse gehabt. Nun habe ich ein erziehungswissenschaftliches Erststudium und arbeite mit recht jungen Kindern. Formal wäre das gegangen, aber ich hätte das selbst als Weiterbildungsmaster nicht so ernst nehmen können. Passte einfach nicht so gut zueinander. Guck Dir den Vossen einfach mal an. Kriegst Du ohne Probleme in der nächsten Uni-Bibliothek. Oder eine gebrauchte Ausgabe einer nicht ganz aktuellen Auflage für ein paar Euro kaufen. Etwas zugänglicher geschrieben finde ich "Theoretische Informatik" von Dirk W. Hoffmann. Wäre sozusagen eine Möglichkeit des etwas sanfteren Einstiegs.
  16. Ich studiere aktuell für einen B.Sc. in Web- und Medieninformatik mit Springer Campus/FH Dortmund. Vor der Entscheidung für diesen Studiengang habe ich mich über beide von Dir erwähnten Studiengänge informiert. Der IT-Analyst erscheint mir als grundständiger Studiengang mit einem ausgewogenen Studiengangskonzept. Damals gefiel mir unter anderem die inhaltliche Ausrichtung der Mathematik-Module mit Betonung auf diskreter Mathematik und Stochastik. Ich finde, das passt gut zu einem Informatik-Studium. Besser als die übliche Betonung von Analysis und linearer Algebra. Sehr gut gefallen mir auch die Vertiefungsfächer "Datenanalyse mit R" und "Embedded System Engineering". Die würde ich beide gerne selbst einmal belegen. Auch sonst finde ich die Zusammenstellung der Fächer sehr gelungen. Das wäre definitiv ein Studiengang gewesen, der mich interessiert hätte. Leider habe ich die Zulassungsbedingungen nicht erfüllen können. Der M.C.Sc. war für mich zweite Wahl. Zugelassen worden wäre ich, weil ich einen Bachelor of Arts in einem anderen Fach habe. Mein Eindruck ist: Das ist eine Möglichkeit für Leute, die als Quereinsteiger in der IT-Bereich gekommen sind, schon nennenswerte Berufserfahrung vorweisen können und noch irgendeinen einschlägigen Abschluss nachweisen wollen, um ihre berufliche Entwicklung nachträglich zu legitimieren und dauerhaft abzusichern. Ich finde es gut, dass es solche Bildungsangebote gibt, denke aber, dass das etwas für spezielle Fälle ist. Glaubwürdig wirkt das in meinen Augen vor allem, wenn man ein Erststudium vorweisen kann, dass gut zu dem Berufsfeld passt, in dem man sich bewegen möchte. So dass man einerseits seine Fachkompetenz in einem bestimmten Wissensgebiet einbringt und die eben noch mit Informatik-Kenntnissen ergänzt. Man wird nach 120 ECTS keine ernsthafte Konkurrenz für einen grundständig ausgebildeten Informatiker sein. Aber wenn man aus dem Erststudium domänenspezifisches Fachwissen einbringen kann, dann kann ich mir vorstellen, dass es für bestimmte Tätigkeiten interessant sein kann, Leute im Team zu haben, die Kenntnisse aus 2 Fachgebieten haben und eine Brücke schlagen können. Leider hatte ich kein Erststudium, dass gut zu einem Weiterbildungsmaster in Informatik gepasst hätte. Also nix für mich. Im Zweifelsfall halte ich es für besser, den gründlichen Weg zu gehen und einen Bachelor zu erwerben. Mir fehlt hier zum Beispiel eine solide Grundlage in Mathematik. (Aber die könnte man ja eventuell aus einem Erststudium schon haben.) Nicht zu unterschätzen: Ich habe mir das empfohlene Lehrbuch für das Modul "Automatentheorie" angeschaut und bin der Meinung, dass mir das nicht leicht gefallen wäre. Obwohl ich Automatentheorie an einer FH belegt, den Kurs sehr genossen und auch mit einer guten Note abgeschlossen habe. Ich würde also eher zum IT-Analysten raten. Wenn es partout der Weiterbildungs-Master sein soll, würde ich mit dem Modul "Automatentheorie" anfangen. Aus meiner Sicht, ist das der Knackpunkt dieses Studiengangs. Da wäre es gut, zügig herauszufinden, ob man es schafft. Bevor man viel Geld für andere Module ausgibt. Gut gefallen mir am Studiengang die Module zu C#, Android-Programmierung, Bildverarbeitung und Embedded Systems. Wenn ich mal mit meinem Bachelor fertig bin, könnte ich mir durchaus vorstellen, irgendwann mal das eine oder andere Modul dieses Studiengangs zu Weiterbildungszwecken zu belegen.
  17. Leider nein. Allein im Modul "Web-Programmierung" wird PHP behandelt. Wenn es ein komplettes PHP-Modul gäbe, würde ich das natürlich gerne belegen. Ich habe mich auch schon mal umgeschaut, ob andere Hochschulen so etwas im Angebot haben. Habe aber leider bislang nichts wirklich überzeugendes gefunden. Die Metropolia in Helsinki bietet Open Courses in ICT, mit denen man auch ECTS-Punkte erwerben kann. Die haben ein PHP-Modul mit 3 ECTS. Das klang zunächst mal gut. Ich konnte da mal reinschauen, aber letztlich steckte da auch nicht mehr Inhalt drin als mir im Modul "Web-Programmierung" nebenbei zu HTML, CSS, Javascript, XML und ASP.Net vermittelt wurde. Aber ich glaube, PHP muss man nicht unbedingt im Rahmen eines Hochschulstudiums lernen.
  18. 10:45 Uhr - Aktuelles für Studierende Den Vortrag hielt zum ersten Mal Frau Kreissig von Springer Campus. Nach der Übernahme der W3L durch Springer Campus im Herbst, gab sie uns einige Informationen über die GmbH, die nun unsere Studiengänge weiterführt. Im Studienalltag haben wir ja nicht viel davon gemerkt. Das Konzept der Studiengänge und die gesamte Studienorganisation sind gleich geblieben. Insbesondere bleibt es bei der Kooperation mit der FH Dortmund, die am Ende unsere Abschlüsse verleiht. Und doch sind wir unter einem neuen Dach. Im Vortrag ging es darum, ein wenig mehr über dieses neue Dach zu erfahren. Frau Kreissig gab uns ein kleines "who is who" der für uns relevanten Mitarbeiter von Springer Campus. Viele Namen und Gesichter waren uns ja schon bekannt, weil unsere gewohnten Ansprechpartner aus dem Studienbüro nun für Springer Campus tätig sind. Frau Kreissig selbst ist Biologin und arbeitet als Projektmanagerin für Springer Campus. Sie scheint durchaus IT-affin. Springer Campus ist eine Abteilung von Springer Nature, einem Verlag mit ca. 13000 Mitarbeitern. Und nein, Springer verlegt nicht die Bildzeitung! Das macht ein anderer Springer Verlag und ist ein häufiges Missverständnis. Spannend für mich war eine Vorstellung der anderen Studiengänge, die über Springer Campus angeboten werden. Dies gilt vor allem für den B.Sc. Biologie, den es seit 1997 gibt. Dieser Studiengang ist nur ausgebildeten Laboranten zugänglich, also BTAs und MTAs mit Berufserfahrung. Ein Biologie-Studium beinhaltet naturgemäß viele Laborpraktika. TAs bringen durch ihre Ausbildung Vorkenntnisse mit, die sich in einem Fernstudium sonst kaum vermitteln ließen. Entwickelt wurde dieser Studiengang in Kooperation der Uni Mainz mit der Firma Bayer, die ihre Laboranten berufsbegleitend wissenschaftlich weiterbilden wollte. Inzwischen hat der Studiengang Teilnehmer von über 100 Firmen. Im Gegensatz zu unseren Informatik-Studiengängen, die als Online-Studiengänge konzipiert sind, folgt das Fernstudium Biologie dem Ansatz des blended learning. Es gibt alle 2 Wochen Präsenzen. Das erzwingt auch Zeitfenster für den Studieneinstieg, während wir Informatiker uns jederzeit einschreiben können. Ein Unterschied zu uns ist auch eine stabile Gruppe von 4-35 Studierenden, die über den Zeitraum des Studiums zusammenarbeitet und von einem festen Ansprechpartner betreut wird. Die Kosten sind mit ca. 15.000 Euro etwas höher als bei uns. Das hat damit zu tun, dass Laborpraktika betreuungsintensiv und teuer sind. Wie bei uns steht auch bei den anderen Studiengängen von Springer Campus am Ende ein Abschluss einer staatlichen Hochschule, denn Springer Campus tritt bislang nicht als private Hochschule auf sondern kooperiert mit staatlichen Hochschulen. Neben dem Fernstudium Biologie gibt es seit 2015 ein Fernstudium Chemie und seit 2016 ein Fernstudium Elektrotechnik, beide mit einem ähnlichen Modell des blended learning. In Zukunft könnte es auch noch ein sozialwissenschaftliches Studium geben. Für mich war das alles recht spannend, nicht zuletzt weil meine Partnerin Biologin ist. Ich hatte den Eindruck, dass vielen Lesern hier im Forum noch nicht bekannt ist, dass ein Fernstudium in Fächern wie Biologie und Chemie möglich ist. Darum wollte ich die Gelegenheit nutzen, das hier einmal vorzustellen. FAQs aus dem Studienbüro Für uns Studierende besonders relevant waren FAQs aus dem Studienbüro und eine anschließende Frage und Antwortrunde: - Fachlich nicht wirklich essentiell aber für viele von uns doch von großer emotionaler Bedeutung: Die kleine Ente mit Doktorhut, die von der W3L traditionell mit der Bachelorurkunde überreicht wurde, bleibt auch unter Springer Campus erhalten. Das hatten tatsächlich viele Studierende gefragt. (Ich hatte mich nicht getraut, habe mich aber auch gefreut.) - Da Springer Campus in Heidelberg sitzt, kann Heidelberg als neuer Prüfungsstandort angeboten werden. Bislang hat man das erst einmal versucht aber die Resonanz war gering. Darum wurde noch einmal abgefragt, ob ein Prüfungsstandort Heidelberg interessant ist und welche Zeiten "anreisekompatibel" wären. - An Präsenztagen gibt es weiterhin nur Prüfungen in Dortmund, weil das Personal an diesen Tagen in Dortmund gebunden ist. - Das Modul "Wissenschaftliches Arbeiten" ist nun Pflichtmodul in beiden Informatik-Studiengängen, weil sich in der Vergangenheit immer wieder mal formale Mängel bei der Abschlussarbeit unvorteilhaft auf die Abschlussnote ausgewirkt haben. Viele Studierende arbeiten in einem betrieblichen Umfeld und erleben dort wissenschaftliches Arbeiten nicht. Frau Kreissig rät dringend, die Möglichkeit zur Interaktion mit dem Betreuer zu nutzen. Für diejenigen Studierenden, die noch nach einer alten Studienordnung studieren und "Wissenschaftliches Arbeiten" nicht belegen müssen, wird es dennoch dringend empfohlen. - Ein Notenspiegel bzw. eine Leistungsübersicht kann per Mail oder Post im Studienbüro angefordert werden. - Verspätete Klausuranmeldungen können grundsätzlich nicht berücksichtigt werden. Die angegebenen Fristen, in der Regel 1,5 Wochen vor Prüfungstermin, sind verbindlich. - Klausurkorrekturen erfolgen innerhalb von 6 Wochen. (Nach meiner Erfahrung hat man im Schnitt nach 3 Wochen ein Ergebnis.) - Das Modul "Skriptsprachen" wurde aus dem Curriculum genommen und wird bis auf weiteres nicht mehr angeboten. Ein Grund dafür war, dass es inhaltlich nicht mehr ganz aktuell war, obwohl die letzte Auflage des Lehrbuches eigentlich noch gar nicht so lange her war. An diesem Punkt merkt man, dass sich in der Informatik viele Themen schnell weiterentwickeln. - Als Ersatz für "Skriptsprachen" kann man das Modul "Web-Engineering" belegen. Hier geht es allerdings nicht allein um Javascript sondern um AJAX. Thema war auch die Umstellung auf die neue Plattform, was anfangs für einigen Unmut gesorgt hatte. Allerdings gibt es inzwischen auch Studierende, die mit der neuen Plattform zufrieden sind. Viele gemeldete Bugs wurden anscheinend in recht kurzer Zeit behoben. Die gestiegene Auslastung der Plattform führte zwischenzeitlich zu längeren Antwortzeiten. Eine neue skalierbare Hardware soll ermöglichen, künftig schneller auf solche Situationen zu reagieren. Die Umstellung auf das neue Layout hatte übrigens nichts mit der Übernahme durch Springer zu tun sondern war seit längeren geplant und in Arbeit. Es war reiner Zufall, dass die Übernahme durch Springer und die Umstellung des Layouts zeitlich eng zusammenfielen. Da noch nicht alle gemeldeten Mängel restlos behoben werden konnten, besteht nach wie vor Wahlfreiheit zwischen und alter und neuer Plattform. Bleibt zu sagen, dass ich natürlich sehr gespannt bin, wie sich diese Angelegenheit entwickelt. Ich selbst bin nach einer Weile zur alten Plattform zurück gekehrt, habe aber deswegen auch nicht mehr mitbekommen, was sich seitdem verbessert hat. Vielleicht kann mich Springer ja bald davon überzeugen, künftig mit der neuen Plattform zu lernen. Im Rahmen des Vortrags von Frau Kreissig wurden auch wieder einige Hochschulzertifikate überreicht. Frau Weirich vom Studienbüro informierte parallel in einem anderen Raum über das Studiengangskonzept. 12:15 - Vortrag Prof. Dr. Uwe Klug zum Thema NoSQL-Datenbanken Professor Dr. Uwe Klug von der FH Südwestfalen ist vielen Studierenden bekannt als Autor der Lehrbücher zum Datenbank-Modul. Dort geht es in erster Linie um relationale Datenbanken und die Abfragesprache SQL. In seinem Vortrag ging es um alternative Datenbankkonzepte. Hier eine kleine Zusammenfassung: Das Konzept der relationalen Datenbank ist seit Jahrzehnten etabliert. Die Grundidee ist die Speicherung von Daten in Tabellenform. Eine mögliche Metapher hierfür ist das Adressbuch. Es hat auf jeder Seite Daten im gleichen Format, z.B. erst der Name, dann die Adresse, dann die Telefonnummer und so weiter. Relationale Datenbanken halten stark strukturierte Daten. Im Bild der Tabelle sind die Tabellenüberschriften die Felder und stehen für Typen von Daten, die in fester Reihenfolge enthalten sind. (Unter Umständen dürfen Felder immerhin leer bleiben.) Die Zeilen enthalten die eigentlichen Daten und stehen für gespeicherte Datenobjekte, die Datensätze. Kennzeichnend für relationale Datenbanken ist die starke und starre Strukturierung der Daten. Sie ermöglicht einen feingranularen Zugriff auf Daten mit teils raffinierten Abfragen, die in der Sprache SQL formuliert werden. Zu Beginn der Datenbankentwicklung werden die zu speichernden Daten modelliert und das Modell normalisiert, um Redundanzen zu eliminieren. Zentrale Eigenschaften einer relationalen Datenbank sind: - relationale Integrität: Sie gewährleistet die Datenintegrität, z.B. durch Check-Regeln, Trigger und die Verwendung von Fremdschlüsseln zur Vermeidung redundanter (und möglicherweise inkonsistenter) Datenspeicherung. - Transaktionssicherheit: Eine Folge von SQL-Anweisungen wird ganz oder gar nicht bearbeitet. Kann sie nicht ganz bearbeitet werden, gibt es einen Rollback, bei dem die bisherigen Anweisungen der unvollständigen Transaktion rückgängig gemacht werden. Wie Transaktionssicherheit intern sichergestellt wird, muss der Datenbankentwickler nicht wissen. Das macht für ihn das RDBMS. Hinter relationalen Datenbanken steht eine bestimmte kaufmännische Denkungsart. Im Vordergrund steht die Konsistenz der Daten, die jederzeit aktuell und widerspruchsfrei sein sollen. Inzwischen haben sich aber Anforderungen an Datenbanken geändert. Datenbanken werden nicht mehr vorwiegend in kaufmännischen Anwendungen eingesetzt sondern z.B. auch in Web-Applikationen. Und dort gelten oft andere Anforderungen, die von relationalen Datenbanken nicht mehr optimal erfüllt werden. Daten in Web-Applikationen sind oft nur schwach strukturiert. Feingranulare Abfragen stehen nicht immer im Mittelpunkt. Dafür sind die Nutzerzahlen oft extrem hoch. Es gibt im wesentlichen 2 Strategien, auf steigende Nutzerzahlen und Datenmengen zu reagieren: 1. vertikale Skalierung: Ich kaufe einen schnelleren Rechner mit größerer Platte. Aber irgendwann habe ich den schnellsten Rechner und die Nutzerzahlen zwingen meinen Datenbankserver trotzdem in die Knie. 2. horizontale Skalierung: Ich verteile meine Daten auf mehrere Server. So muss jeder Server nur einen Teil der Anfragen bewältigen. Jetzt kann ich auf steigende Nutzerzahlen reagieren, indem ich einfach immer mehr Server hinstelle. Damit handle ich mir aber ein neues Problem ein. Wenn Daten redundant auf mehreren Servern liegen, muss ich sie bei Änderungen konsistent halten. Mit den Web-Applikationen kommen neue Wünsche und Anforderungen an Datenbanken: - Ich möchte große Datenmengen verteilt speichern. - Ich möchte Schema-Änderungen WÄHREND der Nutzung des DBMS durchführen können und nicht etwa gezwungen sein, für so etwas meine Server vom Netz zu nehmen. - Ich möchte mit schwach strukturierten Daten arbeiten. - Mein System soll bei einem Ausfall einzelner Server nicht zusammenbrechen. - Die Aktualität und Konsistenz der Daten ist grundsätzlich weiter wichtig, aber Schnelligkeit der Informationsbereitstellung und Ausfallsicherheit sind mir wichtiger. Gerade die Schnelligkeit ist bei Web-Anwendungen sehr wichtig. Wenn mein Kunde in meinem Shop nach einem Artikel sucht und mein Server braucht zu lange, um eine Auswahl zu präsentieren, wird mein Kunde nach wenigen Sekunden einen neuen Tab aufmachen und schauen, ob mein Mitbewerber schneller ist. Das möchte ich vermeiden. In diesem Zusammenhang ist das CAP-Theorem von Eric Brewer relevant. CAP steht für Consistency (Integrität der Daten), Availability (Schnelle Antwortzeiten) und Partition Tolerance (Ausfalltoleranz). Das CAP-Theorem besagt, dass ich bei einer Datenbank in verteilter Umgebung nicht alles zugleich haben kann. Bei mindestens einer der 3 Anforderungen muss ich Kompromisse machen. Das CAP-Theorem lässt sich mit formalen Mitteln beweisen. Es gibt hier also kein Entkommen. Und darum bestimmen die Anforderungen meines Geschäftsmodells, was für ein DBMS ich brauche. Und das ist eben immer häufiger keine klassische relationale Datenbank. NoSQL-Datenbanken machen den Kompromiss bei der Konsistenz zugunsten von Ausfallsicherheit und Verfügbarkeit. Das ist für Web-Anwendungen typisch. Ein Beispiel wäre ein Web-Shop, über den Artikel verkauft werden. Er hat 2 Knoten, einen in Hamburg, einen in München. Diese synchronisieren ihre Verkäufe automatisch, so dass dem Kunden jederzeit angezeigt wird, ob sein gewünschter Artikel noch auf Lager ist. Durch eine Störung im Netz wird die Verbindung zwischen Hamburg und München für ein paar Minuten unterbrochen. Es gibt nun 2 Möglichkeiten, darauf zu reagieren: 1. Weil ich die Knoten nicht mehr synchronisieren kann, verkaufe ich nichts mehr. So kommt nie ein Kunde in die Situation, einen Artikel zu bestellen, den ich nicht zum versprochenen Zeitpunkt liefern kann. Aber mein Kunde ärgert sich, dass ich ihm minutenlang nichts anbieten kann und bestellt stattdessen bei der Konkurrenz. 2. Ich verkaufe weiter. Möglicherweise verkaufe ich einen knappen Artikel mehrfach. Dann muss ich einen Kunden informieren, dass ich doch nicht zum versprochenen Zeitpunkt liefern kann. Nicht optimal, aber mein Kunde wird das vermutlich eher akzeptieren als einen Web-Shop, der minutenlang nicht reagiert. Die Aufweichung der Konsistenz beschreibt man mit der Abkürzung BASE. Die steht für Basically Available, Eventually Consistent. Konsistenz wird nicht aufgegeben, aber man fasst sie als Übergangsprozess auf. Zeitweise kann es zu Inkonsistenzen kommen. Sobald eine Verbindung wieder verfügbar wird, wird die Inkonsistenz behoben. Möglich wird dies durch eine Versionierung der Datensätze. Vermittels einer Versionsnummer kann ich nachvollziehen, wie und in welcher Reihenfolge sich Datensätze verändert haben. Bei der Synchronisation paralleler Prozesse fällt nun möglicherweise auf, dass eine Versionsnummer doppelt existiert, weil ein paralleler Prozess den gleichen Datensatz schon geändert hat. Es gibt dann verschiedene Strategien, wie man mit diesem Problem umgehen kann. Welche man wählt, hängt vom Anwendungsfall ab. Vorgestellt wurde auch die Technik des Map Reduce. Dies ist ein zweischrittiges Verfahren, das von Google entwickelt wurde. Es dient der verteilten Ausführung von Operationen über große Datenmengen (von mehreren Terabyte!). Auf verschiedenen Knoten wird parallel gesucht (map). Dann werden die Zwischenergebnisse zusammengeführt (reduce). Map Reduce ist ein Konzept. Es ist somit unabhängig von eingesetzter Hardware. Angewendet wird es z.B. in der CouchDB. Eine Vorstellung der CouchDB bildete den letzten Teil des Vortrags. Sie kann große Datenmengen speichern, die keine feste Struktur aufweisen. Die Daten werden in Form von JSON-Objekten abgelegt. CouchDB hat einen nativen Support für BLOBS (binary large objects). Sie ist quelloffen, einfach zu installieren und bietet eine gute Dokumentation. Entwickelt wurde sie in der wenig bekannten Sprache Erlang, die vor allen in der nebenläufigen Programmierung Stärken hat. Das JSON-Format ist ein textbasiertes (und menschenlesbares) Format, das etwas kompakter schreibbar ist als XML. Es besteht aus Name-Wert-Paaren und ist letztlich eine Komma-getrennte Liste von Eigenschaften. Mit diesem Format kann man schwach strukturierte Daten gut beschreiben. Die Reihenfolge von Feldern kann sich ändern und Felder können auch weggelassen werden. Zum Abschluss wurde noch auf den Unterschied zwischen Replikation und Clustering einer Datenbank eingegangen. Bei der Replikation kopiere ich eine vollständige Datenbank. So kann ich sie redundant auf verschiedenen Knoten ablegen und die Anfragen über die Knoten verteilen. Fällt ein Knoten aus, bleibt die DB verfügbar, wenngleich die Reaktionszeiten womöglich steigen, weil sich Anfragen nun auf weniger Knoten konzentrieren. Replikation findet eine natürliche Grenze in der Speicherkapazität des Knotens mit der geringsten Kapazität. Wenn dieser die gesamte Datenbank nicht mehr fassen kann, muss ich die Datenbank aufteilen. Das nennt man Clustering. Beim Clustering liegen verschiedene Teile der Datenbank auf verschiedenen Knoten. Dadurch muss ich Anfragen eventuell so filtern, dass sie an den richtigen Knoten gerichtet werden, der die relevanten Daten besitzt. Ich habe mich sehr gefreut, Herrn Klug einmal "in Aktion" zu erleben, weil sein Modul "Relationale Datenbanken und SQL" für mich bislang zu den Highlights meines Studiums zählt. Auch die Betreuung durch ihn fand ich damals sehr gut. Inhaltlich waren mir einige der vorgestellten Themen noch aus dem Modul geläufig, aber ein bisschen Auffrischung kann ja nie schaden. 13:15 Uhr - Vortrag Prof. Dr. Peter Weber über E-Commerce Den Abschluss des Tages bildete ein Vortrag von Prof. Dr. Peter Weber über E-Commerce. Herr Weber unterrichtet an der FH Südwestfalen und ist einer der Autoren des Lehrbuches "Basiswissen Wirtschaftsinformatik", ein einführendes Lehrbuch für die Wirtschaftsinformatiker in unserem Studiengang. Herr Weber war ein engagierter Redner und konnte mich für sein Thema begeistern. (Obwohl ich bei BWL-Themen eigentlich nur schwer in die Gänge komme.) Leider konnte ich nicht mehr den gesamten Vortrag hören, weil ich ein Ticket mit Zugbindung hatte. Darum kann ich hier keinen vollständigen Bericht liefern. Spannend war für mich vor allem seine Mitwirkung am Einzelhandelslabor Südwestfalen mit dem CCEC (Competence Center E-Commerce). Das Projekt hat als Zielgruppe kleine Händler und läuft seit April 2016. Ziel ist, die Multi-Channel-Kompetenz des inhabergeführten stationären Einzelhandels zu stärken. Die Ladenbesitzer sind meist schon mit den Anforderungen des Tagesgeschäfts ausgelastet, haben oft wenig Personal und machen das meiste alleine. Das ist natürlich eine Hürde, wenn es darum geht, sich mit neuen Formen der Kundeninteraktion auseinander zu setzen. Und doch wäre das bitter nötig, denn die aktuelle Situation stellt sich wie folgt dar: - Der Online-Handel hat zweistellige Wachstumsraten. - Für stationäre Einzelhändler entwickelt sich der Handel nicht so gut. - Man prognostiziert, dass in den nächsten 5 bis 7 Jahren 30% der Umsätze der stationären Einzelhändler verschwinden. - Viele Händler nutzen bereits IT. - Sie nutzen sie aber vor allem zur Verwaltung. - Seltener nutzen sie IT für Marketing, Service und Vertrieb. Ein mögliches Konzept, den lokalen Handel zu stärken sind lokale Shopping-Plattformen. Sie stellen ein grundlegendes Prinzip des Online-Handels auf den Kopf: Ich kann alles von jedem kaufen, egal wo ich bin, egal wo er ist. In einer lokalen Shopping-Plattform gilt dagegen: - Ich kann nur kaufen, wenn ich aus einer bestimmten Region bin. - Ich kann nur kaufen, was ein Händler aus einer bestimmten Region anbietet. Die Standortbeschränkung - nach klassischer Logik ein Nachteil - ist das Alleinstellungsmerkmal. Im Prinzip ist es eine Form des ethischen Einkaufs und richtet sich an Kunden, die zwar bequem online einkaufen wollen, aber damit dennoch lokale Händler unterstützen wollen, z.B. weil sie auch in Zukunft noch gerne Läden in ihrer Stadt haben möchten. Ziel des CCEC ist, die Ladeninhaber zu qualifizieren, so dass sie Online-Medien nutzen können, um mit ihren Kunden in Kontakt zu treten. Damit ist natürlich etwas anderes gemeint als der x-te Online-Shop. Interessant ist in diesem Zusammenhang der ROPE-Effekt. Er ist sozusagen das Gegenteile eines Phänomens, das viele Einzelhändler beschreiben und beklagen. Die Kunden kommen in den Laden, schauen sich dort die angebotenen Waren an, und kaufen sie anschließend billiger online. Das hat wohl jeder schon einmal gehört. ROPE steht dagegen für "research online, purchase offline". Der Kunde recherchiert im Internet, z.B. in einem Online-Shop, was es für Artikel gibt. Dabei nutzt er zum Beispiel auch die Bewertungen anderer Kunden, Photos, Artikelbeschreibungen und was es sonst für Vorzüge gibt. Dann geht er in einen lokalen Laden und kauft das Produkt. "Macht kaum einer", hätte ich gedacht, obwohl ich das selbst oft so mache und es auch bei meinen Familienmitgliedern schon oft beobachtet habe. Anscheinend schätzt man, dass 38% der Kunden das so machen. Es ist aber schwer, das zu messen. Denn im Gegensatz zum Online-Handel, der seine Kunden hervorragend "trackt", weiß der Einzelhandel wenig darüber, wie Kunden zu ihrer Kaufentscheidung kommen. Ein weiteres Projekt, das sehr spannend klang, ist ARSuL (Augmented Reality basierte Unterstützung für das Lernen im Sanitär-Heizung-Klima-Handwerk). Die Ausgangsituation ist hier folgende: - Die Vielfalt an Heizungssystemen hat stark zugenommen. - Ein Wartungstechniker braucht Erfahrung mit vielen verschiedenen Systemen, z.T. sehr neue, z.T. sehr alte. - Es gibt Nachwuchsmangel im Handwerk. Junge Techniker kennen sich mit der Vielfalt der Systeme noch nicht aus. - Erfahrene Kräfte sind oft vor Ort nicht verfügbar. - Zum Teil sind erfahrene Kräfte körperlich auch nicht mehr belastbar genug, um die Arbeiten vor Ort durchzuführen. Die Lösungsidee: - Die jungen Techniker tragen Datenbrillen und können sich bei Problemen mit einem erfahrenen Techniker verbinden lassen. - Der sieht, was sie sehen, hat eventuell in der Zentrale sogar ein ähnliches System vor sich und kann sie durch die Reparatur coachen. - Er kann per Augemented Reality eventuell direkt Hilfestellungen für die jungen Techniker vor Ort einblenden. Fazit Der Präsenztag hat mal wieder viel Spaß gemacht und viel interessanten Input gebracht. Was ich hier nicht beschreiben kann, ist der informelle Austausch mit Kommilitonen über Erfahrungen mit Modulen, Aufgaben, Prüfungen. Und der allgemeine menschliche Austausch über die spezielle Situation des Fernstudiums neben Beruf und Familie. Dadurch lösen sich die vielfältigen Belastungen zwar nicht auf, aber man merkt doch, dass noch andere Menschen diesen nicht alltäglichen Weg gehen. Das gibt dann doch ein wenig Kraft für die nächsten Herausforderungen.
  19. Das Modul "Web-Anwendungen 2" ist ein Pflichtmodul im Studiengang "Web- und Medieninformatik" und zählt zum gleichnamigen Studienbereich. Springer Campus empfiehlt, dieses Modul im 4. Semester zu belegen, also im gleichen Semester wie "XML" und "Multimedia". Studierende im Studiengang "Wirtschaftsinformatik" müssen "Web-Anwendungen 2" nicht belegen, können es aber als Vertiefungsfach wählen. Allerdings sollten sie dabei die inhaltlichen Voraussetzungen beachten. Grundlagen der Informatik 1 und 2 sowie Web-Programmierung müssen ja auch die Wirtschaftsinformatiker als Pflichtmodule belegen. Aber auch "Web-Anwendungen 1" wird hier empfohlen. Es liefert eine solidere Grundlage in HMTL und CSS als das Modul Web-Programmierung. Insofern finde ich es hier sehr sinnvoll, der Empfehlung zu folgen. "Web-Anwendungen 2" ist auch Pflichtmodul für das Weiterbildungszertifikat "Web-Entwickler". Es ist darüber hinaus eine inhaltliche Voraussetzung für das Vertiefungsfach "Aktuelle Webtechniken", bei dem es um Java Server Faces (JSF) geht. Worum geht es im Kurs? Während es in "Web-Anwendungen 1" um statisches HTML geht, behandelt "Web-Anwendungen 2" die dynamische Erzeugung von HTML-Dokumenten mit einer serverseitigen Sprache. Bekanntestes Beispiel hierfür ist sicher PHP. In diesem Modul wird aber die serverseitige Programmierung mit Java Server Pages behandelt. Was ist nun eine Java Server Page? Eine JSP ist eine Datei, in der Regel mit der Endung ".jsp", die HTML-Schablonentext enthält, in den Java Code-Fragmente eingestreut sind. Diese Datei wird in eine Java-Klasse übersetzt, die wiederum in Bytecode übersetzt wird. Ein Web-Server, z.B. Apache Tomcat, erzeugt damit zu einem HTTP-Request eine sinnvolle HTTP-Response. Die Response ist der HTML-Schablonentext, in den Elemente eingefügt wurden, die dynamisch berechnet wurden und zur Anfrage passen. Aus Gesprächen mit Kommilitonen weiß ich, dass es für viele ein Ärgernis ist, dass in diesem Modul nicht PHP als Lehrsprache verwendet wird. Zum einen arbeiten viele von ihnen als Web-Entwickler und haben praktische Erfahrung mit PHP. Zum anderen argumentieren sie mit dem recht kleinen Marktanteil von JSP. Das ist natürlich ein Argument. Und doch meine ich, dass es durchaus gute Gründe gibt, die serverseitige Programmierung am Beispiel von JSP zu lehren. Springer Campus setzt ja in den einführenden Programmierkursen auf Java als Lehrsprache. Die Stärke von JSP ist, dass man Java-Klassen verwenden kann. Man kann die gesamte Fachlogik einer Web-Anwendung in Java programmieren und dabei auf alles zurückgreifen, was man bisher über Programmierung gelernt hat. Das hat didaktisch dann doch einige Vorzüge. JSP kann man Klebstoff zwischen Java und HTMl sehen. Praktisch wird man eine IDE wie Eclipse oder Netbeans mit JavaEE verwenden. Die nimmt einem eine Menge Arbeit ab, zum Beispiel das Anlegen einer sinnvollen Ordnerstruktur für den Server. Die IDE packt die erstellten Anwendungen auch automatisch in sogenannte war-Archive. Der Tutor erwartet Lösungen zu den Einsendeaufgaben in dieser Form. Das Lehrbuch "Java Server Pages" von Dieter Wißmann ist wahrscheinlich das beste deutschsprachige Lehrbuch zu diesem Thema. Es gibt nämlich nicht viel anderes dazu. Und das wenige, was es gibt, ist oft schon ganz schön alt. Wer mit diesem Lehrbuch nicht zurecht kommt und Sekundärliteratur sucht, wird es also nicht ganz leicht haben. Zum Glück schreibt der Autor sehr verständlich. Theorie und Anwendungsbeispiele wechseln sich ab und die Themen bauen gut aufeinander auf. Das Buch hat ca. 450 Seiten, was für Kurse bei Springer Campus üblich ist. Unter den Abbildungen sind besonders die UML-Diagramme relevant, die verwendet werden, um die Zusammenhänge zwischen verschiedenen Klassen zu klären, die man beim Arbeiten mit JSP kennen sollte. In vielen Modulen habe ich die Themen recht ausführlich beschrieben. In diesem Modul werde ich darauf verzichten, weil JSP ziemlich komplex ist und so ist auch die Vielfalt an Themen sehr groß. Ein einfacher, linearer Aufbau des Stoffes ist hier nicht möglich und sinnvoll, weil JSP eine Brücke zwischen vielen Technologien schlägt. Man arbeitet mit HTML und CSS, muss sich damit beschäftigen, was bei einem HTTP-Request zwischen Client und Server passiert, hat mit Apache Tomcat zu tun, aber auch mit der JVM und natürlich mit der Programmiersprache Java, die womöglich per JDBC auch noch an eine relationale Datenbank angebunden ist. Insofern muss der Kurstext immer wieder Theorie einführen oder wiederholen, um so Themen noch einmal ins Bewusstsein zu rufen, die dann per JSP verknüpft werden. Keine leichte Aufgabe für einen Autor, die meiner Meinung nach hier hervorragend gelöst wurde. Einen großen Teil des Buches - an die 100 Seiten - nimmt ein komplexes Fallbeispiel ein: Der Aufbau eines Web-Anzeigenmarktes mit JSP, wobei ein Überblick über den gesamten Entwicklungsprozess gegeben wird. Der komplette Code des Fallbeispiels liegt dem Kurs bei und kann praktisch ausprobiert werden. Besonders loben möchte ich hier, dass ein Kapitel zur Fehlersuche in JSPs enthalten ist. Die ist nämlich manchmal nicht ganz einfach, was mit dem zweistufigen Übersetzungsprozess zu hat: Von JSP zu Java und von Java zu Bytecode. Treten Fehler beim ersten Schritt auf, so kann man das noch gut nachvollziehen. Ab dem zweiten Schritt oder zur Laufzeit wird es schwieriger, denn die Fehlermeldung bezieht sich auf die aus der JSP generierte Java-Klasse, die man ja nicht selbst geschrieben und gesehen hat. Der Autor stellt hier einige Strategien zur Fehlersuche vor. Eine ist die Umleitung auf eine Fehlerseite, die im Browser detaillierte Meldungen zeigt. Das ist natürlich nichts für die ausgelieferte Web-Anwendung sondern etwas, was dem Entwickler nützt. Wegen des zweistufigen Übersetzungsprozesses ist es auch immer wieder nützlich, sich damit zu beschäftigen, wie die Umsetzung in eine Java-Klasse läuft und was dabei im Hintergrund passiert. Zur Komplexität des Themas trägt bei, dass sich bei JSP verschiedene Syntaxen entwickelt haben, oft mit dem Ziel, das Schreiben von JSPs für Web-Frontend-Entwickler ohne Java-Kenntnisse einfacher zu machen. Das ist historisch gewachsen aber für den Einsteiger unübersichtlich und verwirrend. Der Autor löst dieses Problem, indem er die verschiedenen Syntaxen nacheinander einführt und Hinweise gibt, welche wofür geeignet ist und welche man besser nicht in einer JSP mischen sollte. Einsendeaufgaben Die Einsendeaufgaben in diesem Kurs hatten eine gewisse "Künstlichkeit", weil sie erkennbar darauf hin konstruiert waren, dass der Lernende bestimmte Sprachfeatures kennen lernt, ausprobiert und auch typische Probleme kennen lernt, die damit verbunden sind. In anderen Programmierkursen von Springer Campus wirkten die Aufgaben oft ein bisschen näher an realen Anwendungsszenarien. Für den behandelten Stoff hat der Kursautor meiner Meinung nach genau das richtige getroffen. Der Kurs ist schon etwas anspruchsvoller und eine gewisse didaktische Zuspitzung scheint mir deswegen notwendig. Bei den Einsendeaufgaben geht es um das Abfangen von Fehlern, um Weiterleitungen von Seite zu Seite, um die Übergabe und Validierung von Parametern, um das Speichern und Weitergeben von Informationen vermittels Java-Beans, um die Verwaltung von Sitzungen, den Umgang mit Cookies, aber auch um die Konfiguration des Apache Tomcat Servers vermittels einer XML-Datei. Für die Aufgaben habe ich regelmäßig länger gebraucht als im Kurs angegeben. Mein Tutor empfahl, den compilierten Code nicht nur zu testen, sondern die erzeugten HTML-Seiten auch validieren zu lassen. Er machte relativ enge Vorgaben hinsichtlich der einzureichenden Lösungen, z.B. verbindliche Dateinamen und Ordnerstrukturen. Dafür waren seine Rückmeldungen besonders detailliert und treffsicher. Mein Tutor benannte nicht nur klar, was nicht gut war und wie man es hätte besser machen können. Er sagte ebenfalls, was gut war und so bleiben sollte. Auch kommunizierte er im Vorfeld recht genau, wann und in welchem Umfang er Einsendeaufgaben korrigiert, so dass ich mir die Arbeit am Kurs gut einteilen konnte und rechtzeitig zum Prüfungstermin fertig war. Prüfungen Die Online-Klausur war wie üblich eine gute Vorbereitung auf die Präsenzklausur, allerdings nicht, weil sie ähnlich war. In der Präsenzklausur hat man keine IDE zur Verfügung, bei der Online-Klausur schon. So war denn die Online-Klausur eine Gelegenheit, noch einmal mit Programmieraufgaben praktische Erfahrungen mit JSP zu sammeln, diesmal natürlich mit tickender Uhr im Hintergrund. Schreiben von Code spielte in der Präsenzklausur dann eine geringere Rolle. Das hängt wahrscheinlich damit zusammen, dass man so nur ganz kleine Teile des Kurses hätte abprüfen können. Es war also ein Mix aus Wissensfragen, Fehlersuche, Vorhersage von Ausgaben zu gegebenen Programmen, Konfiguration eines Servers per web.xml und einigen anderen Themen. Überrascht hatte mich, dass es viele kleinere Aufgaben waren. Der Vorzug ist natürlich: Wenn man irgendwo eine kleine Lücke im Wissen hat, ruiniert das nicht gleich die ganze Note. Ich glaube, dass die Klausur recht realistisch abbildet, wo man mit seinem Verständnis des Stoffes steht. Insofern bin ich gespannt auf mein Ergebnis. Fazit "Web-Anwendungen 2" war einer der schwierigeren Kurse im Studiengang. Wegen der vielen praktischen Programmieraufgaben hat er mir aber auch besonders viel Spaß gemacht. JSP ist eine vergleichsweise komplexe Angelegenheit. Eine gewisse Einarbeitungszeit muss man einplanen. Auch wird man gerade am Anfang Schwierigkeiten mit der doch recht komplexen und vielfältigen Syntax haben und dabei auch mit Frustration und Rückschlägen umgehen müssen. Aus meiner Sicht lohnt sich diese Mühe. Mehr als andere Kurse verbindet "Web-Anwendungen 2" den Stoff ganz vieler Module des Studienganges zu einem zusammenhängenden Wissensgebiet. Ich glaube, das bringt etwas, auch wenn man später serverseitig lieber mit PHP, Python, Ruby oder etwas ganz anderem programmiert. Für die Bearbeitung dieses Moduls würde ich etwas mehr Zeit einplanen und vielleicht zuschauen, dass man andere dicke Brocken vorher abgeräumt hat. Ich würde dieses Modul z.B. nicht zeitgleich mit "Software-Technik 1" oder mit "Nicht-sequentielle Programmierung" belegen wollen. Weil mir das Modul viel Spaß gemacht hat, würde ich gerne auch noch den weiterführenden Kurs "Aktuelle Webtechniken" belegen, der eine Einführung in Java Server Faces gibt. Dafür fehlen mir aber noch ein paar inhaltliche Voraussetzungen, so dass ich mich noch ein wenig gedulden muss.
  20. Welche Rolle spielt Softwaretechnik 2 im Studium? Das Modul "Softwaretechnik 2" wird - wenig überraschend - dem Studienbereich "Softwaretechnik" zugerechnet, der in den Studiengängen von Springer Campus einen recht großen Raum einnimmt. Das Modul ist Pflicht, sowohl im Studiengang "Web- und Medieninformatik" als auch im Studiengang "Wirtschaftsinformatik". Als inhaltliche Voraussetzung gilt das Modul "Softwaretechnik 1", bei dem es um Basistechniken und die Basiskonzepte Statik, Dynamik und Logik geht. Dieser Einschätzung würde ich mich anschließen. In SWT1 wird vor allem eine solide Grundlage in UML vermittelt, die man in SWT2 braucht. Springer Campus empfiehlt, auch das Modul "Softwaremanagement 1" vorher zu belegen, weil es das Verständnis von SWT2 erleichtere. Dazu kann ich nichts näheres sagen, weil ich SWM1 nicht vorher belegt hatte. Ich hatte den Eindruck, mit dem Stoff gut zurecht zu kommen und SWM1 als Grundlage nicht unbedingt zu brauchen. Möglicherweise wären mir die Kursabschnitte zur Aufwandsschätzung so leichter gefallen. SWT2 ist auch ein Pflichtmodul in den Weiterbildungszertifikaten "Requirements Engineer", "Software-Architekt" und "Software-Manager". Wer sich für eine dieser wissenschaftlichen Weiterbildungen interessiert, sei es als Etappenziel auf dem Weg zum Bachelor oder auch als eigenständige Weiterbildung, der muss sich mit den Inhalten dieses Moduls beschäftigen. Das Lehrbuch Inhaltlich geht es in SWT2 um Requirements Engineering, Aufwandsabschätzung und die Modellierung von Anforderungen. Ein neues Lehrbuch bekommt man nicht. Man bearbeitet die verbleibenden Kapitel vom (hervorragenden) "Lehrbuch der Softwaretechnik - Basiskonzepte und Requirements Engineering" von Helmut Balzert, welches ja schon SWT1 zu Grunde lag. Während SWT1 mit über 400 Seiten ein umfangreicher Kurs war, fällt SWT2 mit nur ca. 150 restlichen Seiten deutlich kompakter aus. Ich habe den Eindruck, dass sich das nicht ganz im Zeitaufwand niederschlägt. Viele Kapitel zum Requirements-Engineering sind vergleichsweise trockene Themen, durch die man sich mühsam durchbeißen muss. In SWT1 nahmen große UML-Diagramme viel Raum auf den Seiten ein, so dass man oft schneller voran kam. Dieses Modul ist etwas textlastiger. Gleichwohl scheint mir, dass der Arbeitsaufwand ungleichmäßig verteilt ist. Ich hätte es besser gefunden, die Kapitel zur Logik aus SWT1 noch SWT2 zuzuteilen. Allerdings ginge dabei die klare thematische Gliederung der Module verloren. Wahrscheinlich muss man sich damit abfinden, dass die Module trotz formal gleichem Workload mal anstrengender und mal etwas leichter ausfallen. Dies bezieht sich allerdings nur auf den Arbeitsumfang. Inhaltlich ist SWT2 anspruchsvoll und relevant. Requirements Engineering Beim Requirements Engineering geht es im wesentlichen um das Erfassen von Anforderungen für Software-Projekte. In der Vergangenheit sind immer wieder große Software-Projekte spektakulär gescheitert. Ein wesentlicher Grund war, dass die Anforderungen an das Produkt zu Beginn nicht präzise ermittelt wurden, Entwurf und Implementierung also schon vorangeschritten waren, als wesentliche Anforderungen erst bekannt wurden. So etwas endete oft damit, dass sich der erstellte Code als unbrauchbar erwiest, weil der Entwurf schon in den Grundzügen an den Anforderungen vorbei ging. Die nötigen Änderungen wären teurer gewesen als ein kompletter Neubeginn. Requirements Engineering beschäftigt sich mit Techniken und Vorgehensweisen, um relevante Anforderungen zu Beginn eines Projektes (und im laufenden Projekt) zu ermitteln, um ausufernde Kosten, Terminverzögerungen oder gar ein Scheitern des Projektes zu vermeiden. Das klassische Vorgehen ist ein dreistufiges. Die Anforderungen werden aus Kundensicht definiert. Das Ergebnis ist ein Lastenheft, das i.d.R. auch Angebotsgrundlage ist. Dann werden die Anforderungen aus dem Lastenheft spezifiziert. Das Ergebnis ist das deutlich umfangreichere Pflichtenheft, zu dem auch Abnahmekriterien gehören. Die im Pflichtenheft spezifizierten Anforderungen werden dann klassischerweise in eine fachliche Lösung in Form eines OOA-Modells überführt. Damit sind wir aber schon im Bereich Anforderungs-Modellierung. Es gibt aber auch agile Softwareentwicklung. Hier ist das Ziel mit möglichst wenig Dokumenten außer dem Code auszukommen. Ein Kunde oder Kundenrepräsentant wird ins Entwicklungsteam integriert, die Anforderungen werden in Form von User Stories erhoben, die beschreiben, was das Softwaresystem für die Benutzer leisten soll. Kennzeichnend für agile Entwicklung ist, dass die Anforderungen nicht vollständig vor sondern nach und nach während des Projektes ermittelt werden. Der inhaltliche Fokus von SWT2 liegt aber klar auf dem klassischen sequentiellen Vorgehen. Im Rahmen der Einsendeaufgaben erstellt man auch selbst ein Lasten- und ein Pflichtenheft, was sich vergleichsweise lange hinzieht und ungewohnt viel Schreibarbeit ist. Hier geht es unter anderem darum, Anforderungsschablonen anzuwenden, die eine klare inhaltliche Gliederung vorgeben und zum Teil auch mit einheitlichen Formulierungen arbeiten. Hier muss man sich ein bisschen disziplinieren. Man muss zum Beispiel sehr präzise unterscheiden, was ein System leisten SOLL und was es leisten MUSS. Beim Pflichtenheft ist es wesentlich, Abnahmekriterien zu formulieren, die eindeutig überprüfbar sind. Hier kam es mir tatsächlich einmal zu Gute, dass ich eine pädagogische Ausbildung habe. Bildungs- und Förderziele sollten ebenfalls so formuliert sein, dass sie konkretes und beobachtbares Verhalten beschreiben, damit man nachprüfbar ist, ob der Lernende sie erreicht hat. Schwammige Formulierungen wie "das Sozialverhalten der Schüler soll sich verbessern", lassen viel Interpretationsspielraum. Man kann mir so zwar nicht beweisen, dass meine Maßnahme wirkungslos war, aber ich kann umgekehrt auch nicht beweisen, dass ich etwas erreicht habe. Hier sah ich also eine gewisse Analogie, die mir das Verständnis erleichterte. Aufwandsschätzung In den folgenden Kapiteln geht es um das Schätzen des Entwicklungsaufwandes. Das ist ein sehr wichtiger Schritt, weil ein Unternehmen, das Software entwickelt, dem Kunden ein Angebot machen muss. Schätzt man den Aufwand zu hoch ein, geht der Kunde zu einem günstigeren Mitbewerber und man bekommt den Auftrag nicht. Schätzt man ihn zu niedrig ein, sind die Entwicklungskosten höher als der vereinbarte Preis und man verliert Geld. Eine möglichst gute Aufwandsschätzung ist also wesentlich für den wirtschaftlichen Erfolg, auch wenn es gute Gründe geben kann, eine Software unter den tatsächlichen Entwicklungskosten anzubieten. Zum Beispiel weil man damit in eine neue Anwendungsdomäne vordringen kann und sich eine Codebasis erarbeitet, die man in künftigen, ähnlichen Projekten wiederverwenden kann. Solche Entscheidungen sollte man dann aber bewusst und strategisch treffen. Aufwandsschätzung ist leider alles andere als einfach. Im Kurs lernt man verschiedene Schätzverfahren kennen, wozu auch algorithmische Verfahren wie Function Points oder Object Points gehören. Viele der Verfahren sind selbst recht aufwendig, so dass allein die Durchführung der Schätzung schon beträchtliche Kosten verursacht. Auch formalere Verfahren wie Functions Points müssen mit Erfahrungswerten aus dem Unternehmen sozusagen kalibriert werden, um ermittelte Aufwandspunkte in Entwicklermonate umrechnen zu können. Hier spielen viele Faktoren eine Rolle. Eine Rolle spielt zum Beispiel die Erfahrung der Entwickler mit ähnlichen Projekten, der Anteil von Code, der wiederverwendet werden kann, aber auch die Sprache, in der entwickelt werden soll. Natürlich darf man nicht erwarten, allein auf Grundlage eines Studienmoduls in der Lage zu sein, eine Aufwandsschätzung vorzunehmen. Man lernt Methoden kennen, mit denen Unternehmen versuchen, dieses Problem zu lösen. Man lernt relevante Begriffe und Konzepte. Und man entwickelt ein Bewusstsein, für die damit verbundenen Probleme. Einsendeaufgaben hier beinhalten z.B. das Bestimmen von Function Points für ein skizziertes Projekt. Anforderungen modellieren Im letzten Kursabschnitt geht es um objektorientierte Analyse, also das Erstellen eines OOA-Modells auf Grundlage einer Spezifikation. Wichtigstes Ergebnis ist in der Regel ein UML-Klassendiagramm, das die Statik des Systems modelliert. Der Kurs vermittelt 10 sogenannte OOA-Muster, wiederkehrende Formen der Verknüpfung von Klassen, mit charakteristischer Semantik und charakteristischen Multiplizitäten. Hier muss man wieder Diagramme zeichnen und dieser Kursteil war dann schon wieder lebendiger und näher dran an der Programmierung. Für mich persönlich war das der Teil des Kurses, der mir am meisten Spaß gemacht hat. Eine typische Einsendeaufgabe hier wäre das Wiedererkennen der behandelten Muster in kleinen Spezifikationen, die man modellieren soll. Prüfungen Online-Test und Online-Klausur deckten die Inhalte des Kurses noch einmal breit ab. Eine kleine Warnung vorweg: Ich hatte ein Lastenheft mit Glossar zu schreiben. Da steckt viel Schreibarbeit drin und es ist nicht ganz einfach, sich die Zeit gut einzuteilen. Hier habe ich Punkte verschenkt, weil ich mich mit Schreiben zu lange aufgehalten habe und die verlorene Zeit beim Modellieren nicht mehr rausholen konnte. Hilfreich wäre vielleicht, gewisse Text- und UML-Schablonen schon griffbereit zu haben. Ich hatte den gleichen Tutor wie in SWT1. Auch in SWT3 er mich voraussichtlich wieder begleiten. Die Kurse bauen aufeinander auf und es ist sehr schön, hier einen kontinuierlichen Ansprechpartner zu haben, der einen durch einen längeren Lernprozess begleitet. Die Präsenzklausur deckte die Inhalte breit ab, wenn auch mit unterschiedlicher Gewichtung. Ich hatte relativ viel Modellierung, was mir eigentlich Spaß gemacht hat. Mal sehen, ob ich das auch in eine gute Note umsetzen konnte. Der Zeitdruck war im Vergleich zur Online-Klausur geringer, so dass die Online-Klausur hier als gute Vorbereitung gelten kann. So ist es mir am liebsten. Ausblick Ich bin nun sehr gespannt auf SWT3, wo es unter anderem um Entwurfsmuster gehen wird. Laut meinem Tutor wird dort auch wieder mehr programmiert. Darauf freue ich mich schon richtig.
  21. Klassische Gitarre. Das ist schon ein schöner Ausgleich. Hat zwar - wie das Studium - eine kognitive Seite, aber auch eine sinnliche, eine motorische und eine emotionale. Kann ich nur empfehlen, ein Instrument zu lernen. (Im Grunde egal welches, solange man selbst Freude daran hat.)
  22. Dass im Modul XHTML vermittelt wurde, würde ich nicht so kritisch sehen. Ich habe mein erstes Modul Web-Programmierung bei Springer Campus etwa letztes Jahr um diese Zeit belegt. Das verwendete Lehrbuch war die 2. Auflage von 2011. Das ist natürlich in der sich rasant entwickelnden Welt der Web-Technologien schon ein gewisses Alter. Nicht überraschend wurde mir dort XHTML vermittelt. Rückblickend würde ich sagen, dass es nicht geschadet hat. Die strenge XHTML-Syntax erzwingt eine saubere Arbeitsweise. Außerdem kommt man immer wieder mit XML-Formaten in Berührung. Gar nicht schlecht, wenn man damit schon mal praktisch gearbeitet hat, also warum nicht am Beispiel XHTML? Im meinem zweiten Modul Web-Programmierung, das ich noch im selben Semester belegt habe, war das Lehrbuch ziemlich neu. Dort wurde dann konsequent HTML5 verwendet. Es war nicht besonders schwierig, sich umzugewöhnen. Außerdem wurden neue Features von HTML5 vorgestellt, die zum Teil von gängigen Browsern noch nicht oder in inkonsistenter Weise unterstützt werden, so dass man sich gut überlegen muss, ob man so etwas einsetzt. Soweit ich informiert bin, hat die Fernuni Hagen noch vor nicht allzu langer Zeit (vielleicht bis heute?) in ihren einführenden Programmierkursen auf Pascal gesetzt. Was soll's? Man lernt Programmierkonzepte und die haben eine gewisse Halbwertszeit. Sprache und Syntax ändern sich. Damit muss man als Informatiker sowieso zurecht kommen.
  23. Heute ist mein Klausurergebnis gekommen. Mit 1,7 ist es besser ausgefallen, als ich gedacht habe. Ich vermute, meine Schwächen lagen bei den Themen Operatorüberladung und Zeigerarithmetik; also genau solche Aspekte, die in C++ gegenüber Java etwas speziell sind. Das gute Ergebnis hat mir Mut gemacht, noch ein bisschen mehr in diese vergleichsweise maschinennahe Art der Programmierung einzusteigen. Ich denke nun ernsthaft darüber nach, im kommenden Semester das Programmierpraktikum "Programmieren in C" über die VHB zu belegen. Es bringt lediglich 2 ECTS, sollte also nicht zu viel Zeit fressen. Vermutlich wäre in diesem Modul auch eine Prüfung in meiner Stadt möglich.
  24. Machi Koro gilt als Spiel ab 8. Ich glaube, unserem Sohn hätte es etwa ab 10 Spaß gemacht. Eine ganze Weile haben wir gerne "Pandemie" und "Die verbotene Insel" gespielt. Beide Spiele sind vom gleichen Autor und das merkt man auch. Es sind kooperative Spiele, bei denen die Spieler gemeinsam gegen den Spielmechanismus antreten, um ein bestimmtes Problem zu lösen. Jeder Spieler hat eine bestimmte Rolle, die mit besonderen Fähigkeiten ausgestattet ist: Forscher, Arzt, Logistik-Experte... Damit kann er die Arbeit seines Teams bereichern. Die Runden bestehen daraus, dass man sich gemeinsam überlegt, wer seine besonderen Fähigkeiten wie einsetzt, um das Team weiter zu bringen. Früher mochte ich kooperative Spiele nicht so gerne, aber "Pandemie" und "Die verbotene Insel" setzen das Konzept endlich mal so um, dass es spannend ist. In Pandemie spielt man auf einer Weltkarte. Verschiedene Seuchen breiten sich in den großen Städten aus, springen entlang von Flugrouten von Kontinent zu Kontinent. Die Spieler können in Krisengebiete fliegen, um die Menschen zu behandeln, was die Ausbreitung eindämmt. Gewinnen kann man aber nur, wenn man Impfstoffe findet. Man muss also einen Teil der Arbeit in Forschung stecken und nicht nur Kranke behandeln. Es "brennt" ständig an mehreren Fronten. Die verschiedenen Seuchen in Schach zu halten, gleichzeitig mit der Forschung voran zu kommen und vor Spielende fertig zu werden, ist ein ganz schöner Eiertanz. Der Schwierigkeitsgrad kann an die Erfahrung der Spieler angepasst werden. Man "gewinnt" nicht so oft. Auf dem Karton steht "ab 10 Jahren" und das trifft es meiner Meinung nach auch. http://www.spiel-des-jahres.com/de/pandemie "Die verbotene Insel" dürfte auch für etwas jüngere Spieler interessant sein. Die Spielidee ist für sie greifbarer. Hier ist ein Team aus Experten auf einer Insel gelandet und will 4 historische Artefakte bergen. Das Problem: Die Insel versinkt währenddessen im Meer. Die Spieler müssen sich verteilen, die Artefakte bergen, zwischendurch immer wieder überflutete Felder trockenlegen und am Ende alle gemeinsam mit dem Helicopter ausfliegen, bevor die Insel endgültig versinkt. Hat so ein Indiana Jones Feeling. Spielrollen sind der Forscher, der Bote, die Pilotin, die Navigatorin, der Taucher und der Ingenieur. http://www.spiel-des-jahres.com/de/die-verbotene-insel Außerdem mögen wir seit vielen Jahren "Der Palast von Alhambra". Empfohlen wird es ab 8 Jahren. Es ist aber schon anspruchsvoll für dieses Alter. Hier will jeder Spieler einen möglichst protzigen Palast bauen. Dazu kauft man immer neue Anbauten, die man in 4 verschiedenen Währungen bezahlen muss. Die Regeln sind ein bisschen schwieriger zu lernen, aber die Mühe lohnt sich, denn das Spiel macht uns nach all den Jahren immer noch Spaß. Außerdem sind die wachsenden Paläste schön anzuschauen. http://www.spiel-des-jahres.com/de/der-palast-von-alhambra
×
  • Neu erstellen...