Best-Practice-Software-Engineering: Recent Episodes

Alexander Schatten

Der Podcast zur Unterstützung unserer: http://best-practice-software-engineering.ifs.tuwien.ac.at Initiative. Der Podcast ist in deutscher Sprache!

View Details

In diesem Interview mit einer Gruppe aus Advanced Software Engineering des Wintersemesters 2008/2009 sprechen wir über deren Projekt im Open Source Umfeld, das u.a. von Reinhard Pötz einem Committer beim Apache Cocoon Projekt betreut wurde.

Die Gruppe hat in ihrem Projekt eine Kernkomponente im Cocoon Projekt neu entwickelt: Die Kommunikation zwischen den Pipeline Komponenten erfolgen bisher auf Basis eines SAX Parsers; die Gruppe hat eine Implementation auf StaX Basis gemacht. Dies bietet für Komponentenentwickler Vorteile.

Im Podcast sprechen wir über das Projekt, aber auch über die Besonderheiten und Herausforderungen in einem OS Projekt mitzuarbeiten, sowie über die konkreten Erfahrungen die gemacht wurden.

Allen die im nächsten Semester mit ASE beginnen und die Interesse an der Arbeit in einem realen OS Projekt haben bitte ich sich frühzeitig mit uns in Verbindung zu setzen, da diese Möglichkeit nur wenigen hochmotivierten Gruppen geboten werden kann.

Interview als mp3

View Details

Alle Podcasts dieser Serie sind enhanced Podcasts und beinhalten sowohl Ton als auch Präsentationsgrafiken.

Dennoch, an dieser Stelle nochmals zusammengefasst die Folien aller Teile um eine Gesamtübersicht und ein einfacheres Lernen zu ermöglichen. Das PDF Dokument ist mit Bookmarks strukturiert um einen direkten Zugriff auf einzelne Vorlesungen zu ermöglichen.

Vorlesungsfolien als PDF

View Details

In dieser Podcast Episode gehe ich zusammenfassend auf die Technologien ein, die im Rahmen der Übung Verwendung finden. Es wird kurz eingeführt in
* Eclipse * Logging mit log4j * Spring Framework für Dependency Injection * Internationalisierung, Resource Bundles * Persistenz * Benutzerschnittstelle mit Swing

sowie in die von uns angebotenen Informationsquellen. Ergänzend hierzu kann man sich die Screencasts zum Basis-Beispiel ansehen.
Vorlesung als m4a

View Details

In diesem Podcast diskutiere ich wieder mit Reinhard Pötz. Das Thema ist Team Collaboration und Cooperation. Wir besprechen wesentliche Strategien und Hilfsmittel der Zusammenarbeit im (verteilten) Software Team.Hauptsächlich diskutieren wir die Bedeutung von Sourcecode Management Systemen. Am Beispiel von Subversion (SVN) werden die wesentlichen Prinzipien vorgestellt. Der zweite Teil beschäftigt sich mit der Behandlung und dem Management von Problemen ("Issues"). In kommerziellen wie Open Source Projekten ist es ebenfalls von großer Bedeutung den Überblick über Probleme, Todos, Issues aller Art nicht zu verlieren, und diese gut managen zu können. Am Beispiel von Trac zeigen wir hier einige wichtie Strategien auch im Zusammenspiel mit Subversion.

Vorlesung als m4a

View Details

Gemeinsam mit Erik Gostischa-Franta, der uns auch kräftig bei der Qualitätssicherunges-Vorlesung und Übung hilft geben wir einen kurzen Einblick in Test-getriebene Entwicklung. Die Kernaussage auf den Punkt gebracht ist folgende: Für jedes Feature, das man plant und in die eigene Anwendung einbauen möchte, muss gleichzeitig nachgedacht werden, wie dieses zu testen ist. Dasselbe gilt dann für die eigentliche Implementation: hier ist immer zu überlegen, ob die konkrete Implementation auch (automatisch) zu testen ist. Über Automatisierung sprechen wir in diesem Podcast allerdings nicht, das ist schon in der Einheit mit Reinhard Pötz diskutiert worden.

Konkrete Inhalte sind:
* Bedingungen für erfolgreiche Test-Strategien * Test-Driven Development * Granularität von Tests * Unit-Test Frameworks * Beispiel: Testen einer DAO Methode

Vorlesung als m4a

View Details

In dieser Vorlesung spreche ich mit Markus Demolsky, der mit mir gemeinsam die Best-Practice Beispiele entwickelt.

Thema dieser Vorlesung ist komponentenorientierte Entwicklung, Wir sprechen über den Weg von Objekten über Komponenten zu Services, Entkopplung und Abstraktion. Weiters erklärt Markus das Dependency Injection Pattern und wir führen daraufhin in das Springframework ein.

Zum Abschluss erklärt Markus die wesentlichen Ideen der Schichtenarchitektur und wir beenden die Vorlesung mit einer "Vorschau" auf Service-orientierte Architekturen.

Vorlesung als m4a

View Details

In dieser Vorlesung diskutiere ich mit Reinhard Pötz, der langjähriger Entwickler am Apache Cocoon Projekt ist, und entsprechend viel Erfahrung in diesem Kontext hat, Automatisierung in der Software Entwicklung.

Konkret besprechen wir was im Lebenszyklus der Anwendungsentwicklung überhaupt automatisiert werden kann und die Vorteile dieser Automatisierung. Es werden Build-Tools vorgestellt und am Beispiel von Maven 2 gezeigt, wie moderne Softwareentwicklung von Automatisierung profitieren kann.

Wir diskutieren Archetypen, Dependency Management, Generierung von Reports (Tests, Checkstyle) sowie Dokumentation. Zuletzt behandeln wir das Konzept "Continuous Integration" und wie diese in erfolgreichen und großen Projekten eingesetzt wird.

Vorlesung als m4a

View Details

In zweiten Teil der Vorlesung erkläre ich die wichtigsten GoF Design Patterns. Natürlich ist in dieser Kürze keine detailierte Behandlung des Themas möglich und dieser Podcast ist eher als Auffrischung gedacht.

Die hier erwähnten Patterns werden alle in den Beispielen sowie in der Übung verwendet, müssen daher beherrscht werden. Diese Vorlesung ist auch die Basis für das Verständnis der weiteren Vorlesungseinheiten v.a. der komponentenorientierten Entwicklung.

Konkret bespreche ich folgende Patterns:
* Strategy * Singleton * Factory * Proxy * Object Pool * Facade * Observer (Event Listener) * Model View Controler * Data Access Object

Vorlesung als m4a

View Details

In dieser kurzen Podcast Episode erkläre ich das didaktische Konzept des Podcasts der zur Unterstützung der SEPM (und ASE) Übung dient. Ich gebe hier ich einen Überblick über die bevorstehenden Themen der weiteren Vorlesungs-Podcasts.

Es werden jeweils Mo, Mi und Fr neue Podcast Episoden folgen, die alle für die Übung (sowie für die Vorlesungsprüfung relevant sind), also bitte den Podcast Feed abonnieren (für Podcast Neulinge, siehe meine Einführung).

Vorlesung als m4a

View Details

Im Sommersemester 2008 hat eine sehr engagierte Gruppe aus Advanced Software Engineering ein Projekt unter intensiver Betreuung von Werner Guttmann vom Castor Projekt abgewickelt. Das Castor Projekt ist eines der führenden O/R Mapping und XML-Binding Frameworks. Die Gruppe konnte sich durch die hohe Motivation und hervorragende Betreuung in sehr kurzer Zeit in wesentliche Aspekte des Projektes einarbeiten und letztlich einen wertvollen Beitrag zum Projekt leisten!

In diesem Podcast spreche ich mit Vertretern der Gruppe, sowie mit Werner Guttmann über die Erfahrungen dieser Kooperation.

Interview als mp3

View Details

Grundsätzlich gilt für die Screencasts zunächst dasselbe was im vorigen Posting über Podcasts gesagt wurde.

Technisch gesehen ist jedoch der Screencast kein m4a File sondern ein Video. Der Feed ist derselbe, d.h. hat man den Podcast abonniert bekommt man sowohl die Podcasts als auch die Screencasts automatisch "geliefert".

Die Screencasts sind "Lehrvideos", die vom Bildschirm mitgeschnitten wurden. Die Videos sind im Quicktime Format mit dem H.264 Codec kodiert. Ich habe mich lange mit verschiedensten Codecs herumgespielt und H.264 hatte mit Abstand die beste Qualität bezogen auf die Filegröße.

Zum Abspielen wird unter Mac OS X und Windows Apple Quicktime oder iTunes empfohlen. Unter Linux sollte VLC funktionieren, würde mich über Feedback freuen. Windows Media Player kann funktionieren, es kann aber auch zu eigenartigem Verhalten kommen (wie bspw. versetzte Bild/Tonspur). Wer immer gute Erfolge mit anderer Wiedergabe Software hat, bitte hier posten.

Anmerkung zu mobilen Playern: Die Screencasts funktionieren vermutlich mit den meisten mobilen Playern nicht. Allerdings würde das auch nicht viel Sinn machen, weil man nicht genug erkennen könnte. Gerade die Screencasts setzen eine 1:1 Wiedergabe mit guter Auflösung voraus, also bitte am Mac/PC anschauen.

Die Screencasts haben weiters auch Kapitel definiert, damit man ggfs. Teile die man sich nochmals ansehen möchte besser finden kann, oder andere, für die man sich nicht interessiert leicht überspringen kann.

View Details

Ein paar technische Informationen:

Ein Podcast ist eine Serie von Sendungen (ähnlich einem Radioprogramm), die man abonnieren bzw. sich einzeln von diesem Blog runterladen und anhören kann. Zusätzlich zum Ton bietet ein enhanced Podcast auch noch die Möglichkeit Bilder und Links einzubetten, und ist in "Kapitel" strukturiert.

Den Podcast abonnieren

Um den Podcast bequem anhören zu können empfehlen wir die Verwendung von Apple iTunes (unter OS X und Windows), es gibt aber auch eine Menge anderer "Podcatcher" für verschiedene Plattformen (Übersicht z.B.: http://wiki.podcast.de/Podcatcher), wir beschreiben hier die Vorgehensweise für iTunes:
* In iTunes das "Erweitert" Menü anwählen und dort "Podcast abonnieren" wählen und folgende URL eintragen: * http://feeds.feedburner.com/best-practice-software-engineering-podcast * oder direkt mit einem Klick auf diesem Link abonnieren: iTunes

Damit haben Sie den Podcast abonniert und können immer (auch automatisch) die neueste Episode laden und am Mac/PC oder am iPod anhören.

Enhanced Podcast

Da wir einen enhanced Podcast produzieren sind oftmals im Programm auch Bilder oder Links (URLs) verfügbar. Fallweise auch Videos (bei den Screencasts): diese sehen Sie im iPod oder in iTunes wenn sie links unten das Video Fenster öffnen. Wenn Sie in das Video Fenster klicken können Sie das Bild auch größer betrachten.

Um einen Abschnitt (Kapitel) im jeweiligen Podcast direkt anwählen zu können, verwenden Sie in iTunes bitte das "Kapitel" Menü, im iPod können Sie mit den "vorwärts" und "rückwärts" Tasten innerhalb des Podcasts navigieren, sofern im jeweiligen Podcast Kapitelmarken gesetzt sind.

Sie können die Podcasts auch über die URL einzeln herunterladen und mit anderen Programmen ansehen, wir empfehlen in diesem Fall auf Mac OS X oder Windows Quicktime zu verwenden, und unter Linux VLC.

Ich habe mittlerweile auch Miro ausprobiert (Open Source für Mac, Windows, Linux), ein sehr interessantes Projekt (vormals Democracy Player). Spielt jedenfalls unter Mac die Podcasts, allerdings hatte ich keinen Zugriff auf die Kapitel; bequemer ist also zur Zeit sicherlich Quicktime oder iTunes.

Mobile Player

Die Pod- und Screencasts funktionieren im Prinzip auch gut auf mobilen Playern, z.B. iPods. Hat man den Podcast z.B. in iTunes abonniert kann man die neuen Episoden auch leicht automatisch auf den iPod synchronisieren. Je nach Display-Größe des Gerätes kann man auch die Folien lesen. Ein iPod Nano ist sicher zu klein, auf einem Touch oder iPhone kann man das meiste einwandfrei lesen.

Auch hier gilt, falls jemand Erfahrung mit anderen Podcatchern/mobilen Playern hat, bitte posten.

Wie gesagt, man kann Podcasts mit einer Vielzahl an Programmen auf verschiedensten Endgeräten und Betriebssystemen anhören/ansehen. Da es mir nicht möglich ist alle Varianten zu testen empfehle ich diejenigen von denen ich sicher bin, dass sie gut funktionieren. Sollten Sie andere Programme verwenden, die ebenfalls gut funktionieren, beschreiben Sie diese bitte in einem Kommentar zu diesem Artikel! Vielen Dank!

Podcast habe ich verstanden, aber Screencasts?

Weiterlesen "Was ist ein Screencast"?

View Details

Diese Podcast Serie ist Teil der "Best-Practice-Software-Engineering" (BPSE) Initiative. Dazu gehören im Augenblick:
* Das BPSE Blog (Englisch) * Die BPSE Beispiele (Englisch) * Die Vorlesungen an der TU Wien, Institut für Softwaretechnik

Im Rahmen dieses Podcasts werden daher Vorlesungen aufgezeichnet die Konzepte erklären sowie sich auf den Beispiels-Website beziehen und als enhaned Podcast (also mit Folien) wiedergegeben, weiters Interviews mit Studentengruppen über deren Erfahrungen, Screencasts die Einsteigern helfen sollen und in Zukunft weitere technische Podcasts über bestimmte Aspekte des Sotware-Engineering.

Wer technische Fragen hat z.B. wie man sich die Podcasts anhören / ansehen kann, wie man abonnieren kann usw. bitte folgenden Artikel lesen.

View Details

Im ersten Screencast zum Basic Beispiel wurde die Dateistruktur sowie der Build-Vorgang bis zum Eclipse Projekt erklärt. In diesem zweiten Teil setzten wir fort wo der erste geendet hat:
* Architektonische Details * Wie funktioniert der Zusammenhang zwischen Benutzerschnittstelle und "Backend", Layered Architecture * Wie wird Spring zum Verdrahten der Objekte verwendet? * Swing UI (kurzer Überblick) * DAO Interface und Implementation * Logging * Testen (Unit Tests), automatisiert * Resources: Konfigurationsfiles, Logging Config, Datenbank hsqldb * Operative- & Test-Resources * Interaktion mit der (hsqldb) Datenbank während der Entwicklung und Wartung der Anwendung

Screencast als Quicktime (H.264) Film.

View Details

In dieser Episode des BPSE Podcasts spreche ich mit Aaron Kaplan und Christoph Derndorfer von OLPC Austria. OLPC steht für "One Laptop per Child" und ist eine Initiative die vor wenigen Jahren vom MIT Media Lab gestartet wurde. Das Projekt ist auch unter dem Namen "100$ Laptop" bekannt geworden.

Es ist ein faszinierendes aber auch umstrittenes Projekt, gleichzeitig ist auch viel Fehlinformation über das Projekt in Umlauf. OLPC Austria hat daher vorige Woche an der TU einen Vortrag zum Thema gehalten und wir wollen heute über das OLPC Projekt im allgemeinen aber im besonderen auch über technische Aspekte und die Herausforderungen im Software Engineering für das Gerät diskutieren.

Dies ist besonders auch für Studenten der TU und andere interessant, weil es vielfältige Möglichkeiten der Mitarbeit (auch im Rahmen von TU Praktika, DAs...) gibt.

Wir diskutieren im wesentlichen folgende Punkte:
* Kernidee des Projektes? * Zielgruppe des OLPC? * Haben die Kinder in Entwicklungsländern keine anderen Probleme als fehlende Laptops? * Technische Aspekte: + Netzwerk + Hardware + Display + Robustheit

  • Wie ist der aktuelle Status der Software?
  • Herausforderungen der Software Entwicklung für das Gerät
  • Usability
  • "Limitierungen" der Hardware
  • Effektive Nutzung der innovativen Hardware Features
  • Lokalisation
  • Dokumentation?!
  • Wie sieht die Software-Infrastruktur des Gerätes aus (Programmierumgebung)
  • Best-Practices im SE Prozess?

  • Was kann man noch tun? Motivation für die Mitarbeit?

  • Squeak und OLPC
  • Activity Challenge

Interview als m4a

View Details

In diesem Podcast berichtet eine IFS SE Gruppe mit dem Projekt "Midguard Master" über ihr Projekt. Vielen Dank an David Schmid, Maximilian Ronniger, Martin Bachler, Florian Valente für das Gespräch!

Die Teammitglieder erklären die Idee der klassischen Rollenspiele und wie das Programm "MidguardMaster" den Spielleiter beim Rollenspiel unterstützen soll. Die Anwendung erlaubt die Abbildung von Rollenspielen: Karten, Charaktereigenschaften können editiert und erstellt werden, Waffen definiert usw. Um den Spielleiter in bestimmten Spielsituationen besser zu unterstützen können Spiel-Regeln erstellt werden die zu bestimmten Zeitpunkten ausgewertet werden.

Für die Implementation sind daher neben Persistenzmechanismen auch relativ komplexe und flexible Regeldefinitionen notwendig wofür eine eigene Regel-Engine eingesetzt wurde.

Weiters wird über die erfolgreiche Kommunikation innerhalb der Gruppe und einige andere Erfahrungen gesprochen.

Interview als m4a

View Details

Dieser Screencast gibt eine erste Starthilfe wie mit dem Beispiel-Website und dem Basis-Beispiel umzugehen ist. Er führt kurz über die Struktur der Beispiels-Dokumentation, über den Download und Build-Vorgang der Beispiele bis zum Importieren und Starten des Basis-Beispiels in Eclipse.

In diesem Screencast sehen Sie also folgende Dinge:
* Struktur und Idee der Webseite (v.a. bezogen auf das Basis-Beispiel) * Funktionalität und einige Kommentare zur Architektur und Technik des Basis-Beispiels * Download der Beispiele und Entpacken derselben am eigenen Computer * Wie sieht die Filestruktur des Basisbeispiels aus? * Kurze Einführung in das Konzept der Maven poms * Build mit Maven * Erstellen der Eclipse Projektfiles und importierren des Basis-Beispiels in Eclipse * Basic Beispiel in Eclipse starten

Nicht Teil dieses Screencasts ist es, die Struktur oder Architektur und Funktionalität des Beispiels konkret zu verstehen. Dies ist Aufgabe des zweiten Teils.

Screencast als Quicktime (H.264) Film.