Schlagwort-Archiv: Software Engineering

[GitHub] Student Developer Pack

Bei GitHub gibt es schon länger eine kostenlose Micro-Version für Studenten. Sicherlich eine gute Möglichkeit gerade die Aufgaben der Programmierfächer, wie EidP und AlgoDat des 1. und 2. Semester, gemeinsam mit anderen zu bearbeiten. Ihr habt damit die Möglichkeit den Code zentral abzulegen und Änderungen durch dritte nach zu vollziehen.

Um an die Micro-Version zu gelangen, müsst ihr euch lediglich unter education.github.com registrieren und im Anschluß eine Semesterbestätigung versenden. Etwa 1-2 Wochen später erhaltet ihr eine Bestätigungsmail und könnt nun euren GitHub Share für Eclipse und andere Projekte einbinden.

Gestern erreichte mich die Mail, dass es nun einen Developer Pack bei GitHub für Studenten gibt. Das Pack enthält einige, wirklich Interessante Erweiterungen und Freeware-Versionen für euch. Die Highlights habe ich hier zusammengefasst:

  1. Bitnami : Jahreslizenz für downloadfähige Softwareumgebungen für App-Entwicklung
  2. CrowdFlower – Freier Zugang zur Crowdsource-Plattform mit Guthaben
  3. DNSimple – Domainmanagement Plattform, 2 Jahreslizenz Bronze-Edition
  4. Namecheap – Domainmanagement mit freier .me Domain und freiem SSL-Zertifikat
  5. Orchestrate – Datenbank-Service API per REST ansprechbar, Freier Entwickler-Account
  6. Unreal Engine – Komplettes Entwicklungsstudio um Games mit der Unreal Engine zu erstellen, sehr Leistungsfähig und umfangreich, Frei nutzbar
    1. Folgendes Video zeigt die Möglichkeiten der Unreal Engine

Gerade für die, die nun frisch ins Semester starten, als auch für alle anderen Programmierer, sicherlich Interesannt.

Software Engineering II Abschluss

Mir ist aufgefallen, dass ich zu unserer SE2-Vorlesung kein Fazit gezogen habe. Dabei ist das mit Beginn des Sommersemesters und der neuen SE2-Vorlesung sicherlich Interessant.

SE2-Vorlesung

SE2-Vorlesung

Die Vorlesung und das Projekt waren sehr gelungen, um einen Einblick in den komplexen Ablauf der Software Entwicklung zu bekommen und die vielen Facetten und Meilensteine kennenzulernen. Am Anfang der Vorlesung wurden die Basics im Bereich HTML5 und Javascript vermittelt. Mit Beginn der Vorlesung wurden die einzelnen Gruppen (Projektmanagement, Frontend, Backend, Datenbank, Dokumentation und Testing) festgelegt, die Softwareanforderung gestellt und die User Storys entwickelt. Aus den User Storys wurden das Product Backlog und die einzelnen Sprints entwickelt.

Die Aufgaben für die einzelnen Projektbereiche wurden in den wöchentlichen Meetings (Übungen) festgelegt und als Sprint definiert. Die Bereichsaufgaben sind in den Sprints niedergelegt und auf der Seite Mensaprojekt.de einzusehen.

In den letzten Wochen wurden die wesentlichen Funktionen der Software realisiert und es waren einige Entscheidungen im Bereich der Schnittstellen und Logik notwendig. Die zu treffenden Entscheidungen waren stets eine Herausforderung, weil die unterschiedlichen Bereiche sehr gut koordiniert werden mussten und viele Kompromisse erforderlich waren, um die geforderten Funktionalitäten zu ermöglichen.

SE2 Abschlussvorlesung

Kurz vor Ende des Semesters wurde von jedem Projektteam, in einer Zwischenpräsentation, die bisher erarbeitete Lösung vorgestellt und ein Ausblick gewährt welche Anforderungen bis zum Ende der Vorlesung noch umgesetzt werden sollen. Zwischen der Zwischen- und Endpräsentation lagen leider nur zwei Wochen Zeit, so dass wir uns auf wenige, zentrale Anforderungen konzentrieren mussten.

Während der Abschlussvorlesung wurde von jedem Team die endgültig, entwickelte Softwarelösung vorgestellt. Die Abschlussarbeiten waren allesamt sehr gut gelungen, intuitiv bedienbar und mit einer modernen UI versehen. Interessant waren die unterschiedlichen Schwerpunkte, die von den einzelnen Teams während der Entwicklung gesetzt wurden. Die Vorlesung Software Engineering II war eine der spannendsten Vorlesung des 4. Semesters.

Die notwendigen Voraussetzungen und die einzelnen Gruppenbereiche habe ich bereits im Zwischenfazit vorgestellt. Zu den einzelnen Iterationen ist unsere Teamseite Mensaprojekt.de sicherlich ein guter Anlaufpunkt.

Klausur Software Engineering II

Am heutigen Montag fand die Klausur Software Engineering II statt. Das umfangreiche Mensaprojekt, welches wir im Rahmen der Vorlesung, erstellt haben, findet in der Note leider nur zu 40% Berücksichtigung. 60% entfallen auf die Klausur. Diese beinhaltet alle vorgestellten Themen der Vorlesung, die während des Projekts benötigt wurden.

Insgesamt ist die Klausur fair gestellt und setzt einige Schwerpunkte, die ich hier festhalten möchte:

  • Vorteile und Aufbau der 3-Schichten-Architektur
  • Unterschiede Javascript im Vergleich zu Java
  • REST und die dazugehörigen Request-Methoden
  • Möglichkeiten mit DOM (Document Object Model)
  • Kenntnisse vom O/R-Mismatch und Umsetzen von Klassenhierarchien auf Tabellenstrukturen
  • Hibernate
  • Umfangreiche Kenntnisse zu VCS und den svn-Befehlen
  • User Stories und Tasks
  • Agile Softwareentwicklung
  • Scrum-Prozess (Product Backlog, Scrum Master, Entwicklungsteam, etc.)
  • Agiles Manifest
  • Verwendung und Zugriff mit jQuery
  • Same Origin Policy und Aushebelmöglichkeiten
  • Antipattern

Die Themen sehen sehr Umfangreich aus, werden aber alle während des Projekts benötigt. Außerdem sind viele Themen bereits aus SEI bekannt. Die Theorie ist schnell erlernt, die Praktischen Aufgaben sollten vorher eingehend geübt werden um in der Klausur keine Probleme mit den Quellcodes zu bekommen und die Auswirkungen zu erkennen.

Wie ich bereits dem Lehrplan entnehmen konnte, ist Herr Dr. Großkreutz nicht mehr teil des Dozententeams, seine Aufgabe wird nun von Herr Dr. Daniel Stein übernommen. Herr Ketterl und Herr Wunderlich sind hingegen weiterhin Teil des Teams. Wünsche euch viel Spaß und Erfolg für das, sicherlich, Interessante SEII-Projekt.

Software Engineering II – Zwischenfazit

Nun sind schon einige Wochen vergangen und langsam nimmt unser Semesterprojekt, im Bereich Software Engineering II, auch Formen an. Nachdem wir die Übungsaufgaben beendet hatten, haben wir unserer Gruppe in 6 Bereiche eingeteilt, jeder Bereich ist für eine spezielle Aufgabe zur Umsetzung des Mensaprojekts vorgesehen, die einzelnen Bereiche stelle ich euch weiter unten vor. Das schwierigste bei solchen Projekten ist zunächst die Kommunikation, da man sich in der Regel nur einmal in der Woche zu den Übungen sieht. Zwischen den Übungen finden die Iterationen aus dem Scrum Prozess statt und somit die Umsetzung der einzelnen Tasks, der einzelnen Gruppen. Die einzelnen Gruppen sind für Ihre Lösung eigenständig zuständig, aber jede Gruppe hat notwendige Schnittstellen und Übergabepunkte zum nächsten Team. Um diese Kommunikation etwas zu verbessern habe ich die Seite Mensaprojekt.de erstellt. Auf dieser Seite sind alle Mitglieder des Projekts registriert und haben Zugriff auf ein eigenes Forum und einen Chat. Außerdem haben wir unsere User Stories auf dieser Seite bereitgestellt und arbeiten nun an der gemeinsamen Umsetzung des Projekts anhand der User Stories. Nun etwas zu den einzelnen Gruppen, die vorhanden sind und welche Tätigkeiten diese ausführen:

Frontend

Das Frontend ist für die Erstellung der Webseite und vordergründig für die Umsetzung der benötigten Eingabe-/Ausgabe-/ und Abfragefelder zuständig. Diese werden in Javascript realisiert und die eingegebenen Werte, wie auch Ausgabeelemente werden über Javascript an eine REST-Schnittstelle übergeben.

REST

Das Team ist für die Implementierung und Umsetzung einer REST-Schnittstelle zuständig und erstellt anhand der Anforderungen an das Mensaprojekt die notwendigen Get, Put, Post und Delete Schnittstellen um eine Kommunikation zwischen Frontend und Backend zu ermöglichen.

Backend

Das Backend ist für die reine Java Implementierung zuständig und setzt die notwendigen Klassen und Pattern mit Eclipse um. Die erstellten Klassen stellen die Schnittstelle zwischen Datenbank und REST bereit.

Datenbank

Das Datenbank Team erstellt die Datenbank, in der die Informationen vom Frontend einfließen. Dazu gehören zum einem die vorhandenen Zutaten, die in der Mensa vorhanden sind und die möglichen Speisen, die durch das Mensapersonal erstellt werden. Die Ergebnisse werden in der Datenbank eingetragen. Die Datenbank wird dabei mit Hilfe von Hibernate erstellt, welches über Java die notwendigen Tabellen und Spalten in der Datenbank eigenständig erzeugt.

Tests

Zu dem ganzen Projekt gehört natürlich ein Testteam, welches die umgesetzten Funktionalitäten der vorgenannten Teams auf Funktionalität testet und Ergebnisse und mögliche Fehler notiert. Dabei wird z.B. der Java Quellcode mit Hilfe von JUnit getestet.

Dokumentation & Schnittstellen

Dieses Team ist für die Dokumentation des gesamten Projektes zuständig. Es dokumentiert sowohl den kontinuierlichen Projektfortschritt und nimmt die erstellten Tasks während unseres Scrum Meetings auf. Danach dokumentiert es die Umsetzung und den Fortschritt der Funktionalität der einzelnen Bereiche und des gesamten Projekts. Außerdem ist es für einheitliche Schnittstellen zuständig, damit jeder Bereich weiß, welche Schnittstellen vorhanden sind und wie über diese mit den anderen Funktionalitäten kommuniziert wird.

Projektleitung

Die Projektleitung ist für die Gesamt Koordination der einzelnen Bereiche zuständig. Es wählt bei jedem Scrum Meeting die umzusetzende User Story aus und erstellt daraus die notwendigen Tasks für die einzelnen Bereiche. Dabei ist die Motivation, Koordination und Steuerung der einzelnen Bereiche ebenso zentrale Aufgabe, wie sich kontinuierlich über den Projektfortschritt zu informieren und frühzeitig möglicher Fehler zu erkennen.

Wie Ihr an den Kurzbeschreibungen sehen könnt, bietet jeder Bereich seine eigene Herausforderung und damit wird das Projekt auch sehr spannend. Außerdem ist jeder von jedem abhängig, da dass ganze Projekt nur über die Teamleistung funktionieren kann, da jeder Bereich zur Erstellung und Umsetzung einer qualitativ hochwertigen Software notwendig ist.

Im folgenden Liste ich auf, mit welchen Technologien man sich bereits im Vorfeld beschäftigen sollte:

Frontend:

  • HTML & CSS
  • DOM
  • Javascript
  • XMLHttpRequest
  • Ajax

 

Webserver:

  • RESTful Webservices (Get, Put, Post & Delete)
  • XMLHttpRequest
  • JAX-RS und Jersey

 

Backend:

  • gute Kenntnisse in Java
  • Entwicklung der benötigten Java Klassen, Methoden, Umsetzung von Patterns, etc

 

Datenbank:

  • Java
  • Hibernate

 

Testing:

  • Umsetzung und Testen aller Funktionalitäten
  • Robustheit der Java Klassen durch JUnit nachweisen

 

Dokumentation & Schnittstellen:

  • Lasten- und Pflichtenheft
  • Technische & Schnittstellen Dokumentation
  • Erstellung von Namenskonzepten

 

Projektmanagement:

  • Verständnis zu allen eingesetzten Techniken
  • Scrum Prozess
  • Userstories und daraus Tasks ableiten
  • Vorstellungsvermögen
  • Projektumsetzung
  • Schaffen von Kommunikationsmöglichkeiten (Webpräsenzen, Foren, o.ä.)
  • Motivationsfähigkeit

Wichtig ist, dass diese Anforderungen für dieses Projekt in diesem Semester Gültigkeit haben. Allerdings kann davon ausgegangen werden, dass die grundlegende Verwendung auch in den nächsten 2 -3 Semestern Anwendung findet. Dies liegt daran, dass sich die Software Entwicklung ins Web verschiebt und dadurch die Bedeutung von Webbasierten Anwendungen immer mehr zunimmt.

 

 

Software Engineering II

Nachdem das Semester nun bereits drei Wochen alt ist, wird es mal Zeit ein paar Zeilen zu den einzelnen Fächern zu schreiben. Mittwoch fand die dritte Vorlesung zu Software Engineering II statt. Dies mal ist die Vorlesung sehr praxisorientiert und wir sind dabei die erlernten Java Inhalte zunächst in einzelne Übungsaufgaben einfliessen zu lassen. Dabei geht um die Erstellung und Verwaltung von Webservices mit Java, Javascript/HTML und die REST-Schnittstellen.

In den ersten Wochen werden wir einige Übungsaufgaben durcharbeiten um in den genannten Techniken fit für ein Praxisprojekt zu werden. Ziel ist die Erstellung eines Warenwirtschaftssystems im Ablauf des Scrum Prozesses, den wir aus der letzten Semester in SE I kennengelernt haben. Dazu besteht jede Übungsgruppe aus ca. 16-20 Leuten die danach in der jeweiligen Übungsgruppe das System erstellen. Jeder aus der Gruppe wird dazu eine spezielle Aufgabe zugewiesen. Wie das ganze genau abläuft, werden wir in ca. 2 – 3 Wochen erfahren, wenn das ganze Projekt beginnt.

Derzeit kämpfen wir noch mit, eigentlich, einfachen Dingen wie, Variablen von Java an Javascript übergeben und diese auf der HTML-Seite anzeigen lassen oder z.B. mit einzelnen Firefox Addons wie Firebug und Poster uvm.

Bin gespannt, wie es weitergeht und, ob wir die fehlenden Vorraussetzungen so schnell nachholen können, wie wir hoffen.

 

WS11/12 Software Engineering I

Heute früh stand für mich die letzte Klausur aus diesem Semester auf der Agenda. Ich hatte mir schon einige Gedanken im Vorfeld gemacht, ob ich die Klausur bestehen werde, aber nachdem diese nun geschrieben ist, würde ich zumindest davon ausgehen, dass ich diese bestanden habe. Zum letzten Mal hat Prof. Dr. Alda SE I für die BISler an der H-BRS unterrichtet. Die Klausur bestand im Wesentlichen aus 5 Teilen.

Der erste große Anteil war den grafischen UML Use Cases gewidmet. Diese Aufgaben waren bereits mit 35 Punkten gewichtet. Aus einem gegebenen Szenario war die Entwicklung von zwei Use Cases gefordert. Dabei wurde zum einem Wert auf die grafische Modellierung gelegt und auf die korrekte Einbindung von Supplier Use Cases über Extend bzw. Include Beziehungen. Aus dem Szenario war danach noch ein Klassendiagramm zu entwickeln.

Im zweiten Teil wurden allgemeine Fragen zu den Themenbereichen Klassische (Wasserfall-Modell) und Agile (Scrum) Software Prozesse gefragt. Außerdem einige Fragen zum Themenbereich JUnit. Die Fragen sollten mit Bedacht angekreuzt werden, da es für jede Falsche Antwort Minuspunkte gab. Daher habe ich direkt mal drei nicht angekreuzt, bei denen ich mir unsicher war 😉

Der dritte Teil war dem Themengebiet der Design Patterns gewidmet. Aus dem gegebenen Szenario, sollte das geforderte Pattern ermittelt werden. Danach war dieses in Form eines Klassendiagramms zu modellieren und abschließend als Sequenzdiagramm umsetzbar.

Das nächste Themengebiet widmete sich dem Bereich des Testings. In diesem Fall ging es speziell um JUnit. Die Aufgabe hatte Ähnlichkeit mit einer Übungsaufgabe, leider half mir das nicht all zu viel. Im Vorfeld war ich in diesem Bereich leider zu schlecht vorbereitet.

Im letzten Teil wurde es noch einmal allgemeiner und es ging um die INVEST- Methode und Textuelle Use Cases in Form von Positiv- und Negativtests. Ein durchaus machbarer Teil.

Zusammenfassend lässt sich sagen, dass die Klausur sehr fair gestellt war. Wenn man sich die Folien anschaut, ist es ein sehr großes Themengebiet. Aber es kam weniger auf stumpfes auswendig lernen, als vielmehr auf Verständnis der einzelnen Prozesse und Anwendung der Modellierungsformen der UML an.

Um die Vorbereitungszeit für die Klausur zu minimieren und dennoch gut Vorbereitet zu sein, kann ich nur jedem raten, gerade in diesem Fach die Übungen wöchentlich durch zu arbeiten und an den Übungsvorlesungen teilzunehmen. Zum einen werden die Aufgaben hier ausführlich besprochen, Verständnisfragen lassen sich leicht klären und man wird nebenbei noch sehr gut auf die Klausur vorbereitet. Beherrscht man die Übungen ist die Klausur sicherlich mit einer Note >2 zu bestehen. Übrigens, für die Übungen gibt es Punkte, eine Mindestanzahl an Punkten ist Voraussetzung zur Teilnahme an der Klausur.