Kurs "Professionelle Softwareentwicklung"

Beschreibung

Ein Universitätsstudium in Informatik dreht sich hauptsächlich um Konzepte. Das ist grundsätzlich sinnvoll, denn diese Konzepte sind erheblich langlebiger und breiter anwendbar als konkrete Einzelheiten es wären. Leider bleibt dabei vieles Detaillierte, das für konkrete Softwareentwicklung aber nun mal wichtig ist, weitgehend auf der Strecke. Dieses Defizit soll diese Veranstaltung reduzieren.

Auch hier geht es zwar zum großen Teil um Konzepte, aber immer nur um solche, die direkt mit Softwareentwicklung zu tun haben und anhand konkreter, persönlicher, praktischer Anwendung -- und zwar (im Gegensatz zu den meisten Softwareprojekt-Lehrveranstaltungen) mit gemeinsamer Reflektion über die Anwendung.

Die besprochenen und eingeübten Konzepte lassen sich drei verschiedenen (aber mit einander eng verbundenen) Sphären zuordnen:

Wichtig: Jede/r Teilnehmer/in muss ein bereits weit vor der Veranstaltung begonnenes Softwareprojekt haben (bei einer Firma, Forschungsgruppe, für eine Firmengründung oder als Open-Source-Projekt), an dem er/sie über die gesamte Dauer dieser Lehrveranstaltung hinweg jede Woche mitarbeitet (in aller Regel im Team) und das als Umgebung für das Einüben der Konzepte dient.
Dies ist eine zwingende Teilnahmevoraussetzung.


Organisatorisches

Veranstalter

Voraussetzungen/Zielgruppe, Einordnung, Leistungpunkte etc.

Unverzichtbare Voraussetzung für die Teilnahme ist ein eigenes Softwareprojekt wie oben beschrieben, das für die gesamte Dauer der Veranstaltung mit mindestens 6 Wochenstunden von für die Themen dieser Veranstaltung frei verfügbarem(!) Aufwand weitergeführt wird.

Zielgruppe sind Studierende, die durch intensives Üben Fertigkeiten aufbauen möchten, die gute und professionell arbeitende Softwareentwickler/innen benötigen.

Die Veranstaltung ist eine Wahlveranstaltung für den Studiengang Master Informatik mit 5 Leistungspunkten.

Termine und Nachrichten

Prüfungsmodalitäten

Zur Note zählen die einzelnen Arbeitsergebnisse, sie Sie für die jeweiligen Übungsaufgaben erbringen und in der Veranstaltung vorstellen (so genannte "Portfolioprüfung"; die Vorstellung selbst ist dabei ein wichtiger Bestandteil dieses Arbeitsergebnisses, denn seine Werke und Tätigkeiten angemessen erklären zu können ist eine wichtige Kompetenz).

Es zählen ferner die Intensität und Qualität der Teilnahme an der allgemeinen Diskussion in der Übung.

Eine Abschlussprüfung (als Klausur oder mündliche Prüfung) gibt es nicht.

Stoffplan

  1. 2016-10-17:
    • V: Professionalität und Verantwortung (Folien)
      [ClCr]: Kap. 1–3, [PrPr]: Kap. 1, [CoCo]: Kap. 33–34
    • Übung: Die erste Hälfte der Teilnehmenden stellen ihr Projekt vor: Zweck, Benutzer, Technologie, Team, meine Rolle, Stärken/Schwächen (z.B. Entwurf, Codestruktur, Defektdichte, Automatisierungsgrad, Prozesse).
  2. 2016-10-24:
    • V: Praktiken von Grad Rot von clean-code-developer.de (Folien)
      • Prinzipien: Don´t Repeat Yourself (DRY); Keep it simple, stupid (KISS); Vorsicht vor Optimierungen! (VO); Favour Composition over Inheritance (FCoI); Integration Operation Segregation Principle (IOSP).
      • Praktiken: Pfadfinderregel befolgen (BSR); Root Cause Analysis durchführen (RCA); Versionskontrollsystem einsetzen; Einfache Refaktorisierungen anwenden (Extract Method, Rename); Täglich reflektieren.
    • Übung: Die zweite Hälfte der Teilnehmenden stellen ihr Projekt vor
  3. 2016-10-31:
    • V: Praktiken von Grad Orange (Folien)
      • Prinzipien: Single Level of Abstraction (SLA); Single Responsibility (SRP); Separation of Concerns (SoC); Source Code Konventionen.
      • Praktiken: Issue Tracking; Automatisierte Integrationstests; Lesen, Lesen, Lesen; Reviews.
    • Übung: 5–10 aus dem Hut Gezogene stellen zu je zwei der Praktiken der Vorwoche (also Rot) vor, a) welchen Zustand ihr Projekt/Code bzw. ihr eigenes Verhalten hatte b) was sie unternommen haben, um diesen Zustand zu verbessern Das ist jeweils mit konkreten Codebeispielen zu untermauern.
  4. 2016-11-07:
    • V: Praktiken von Grad Gelb (Folien)
      • Prinzipien: Interface Segregation (ISP); Dependency Inversion Principle (DIP)/Dependency Injection (DI); Liskov Substitution Principle (LSP); Principle of Least Astonishment (PLA); Information Hiding (IH).
      • Praktiken: Automatisierte Unit Tests; Mockups (Testattrappen); Code Coverage Analyse; Teilnahme an Fachveranstaltungen; Komplexe Refaktorisierungen.
    • Übung: wie vor zu Grad Orange
  5. 2016-11-14:
    • V: Praktiken von Grad Grün (Folien)
      • Prinzipien: Open Closed Principle (OCP); Tell, don´t ask (TDA); Law of Demeter (LoD).
      • Praktiken: Continuous Integration (CI); Statische Codeanalyse (Metriken); Inversion of Control Container (ICC); Erfahrung weitergeben; Messen von Fehlern.
    • Übung: wie vor zu Grad Gelb
  6. 2016-11-21:
    • V: Praktiken von Grad Blau (Folien)
      • Prinzipien: Entwurf und Implementation wiederholen einander nicht; Implementation spiegelt Entwurf; You Ain't Gonna Need It (YAGNI)/Defer Commitment;.
      • Praktiken: Continuous Delivery (CD); Iterative Entwicklung; Komponentenorientierung; Test first.
    • Übung: wie vor zu Grad Grün
  7. 2016-11-28:
    • V: Grad Weiß (Folien)
      • Umfasst alle Prinzipien und Praktiken der vorherigen Grade zusammen: Übersicht nach thematischen Gruppen
      • Kurze Wiederholung von Woche 1: Professionalität und Verantwortung
      • Allgemeine Lehren: Begriffe hinterfragen!; Zweck im Auge behalten!; Maß halten!!
      • Beispiele für Themen, die wir nicht besprochen haben
      • Einstieg in das Thema der nächsten Woche: Agiles Testen
    • Übung: wie vor zu Grad Blau
  8. 2016-12-05:
    • V: Agiles Testen
      Testarten; Zweck: Risiken reduzieren; Kosten und Gefahren von Tests; Eigenschaften guter Testsuites; Methoden: Attrappen/Isolation, Test-First/Test-Last, outside-in/inside-out/middle-out, TDD; gemeinsame TDD-Übung (Randori)
    • Übung: wie vor zu Grad Weiß (also wahlfrei)
  9. 2016-12-12:
    • V: Arbeiten mit Altcode (Agiles Testen, Teil 2)
      Von der Theorie zur Praxis: Testbarkeit herstellen bei Legacy Code, Rollen von Refactoring
    • Übung: zum Einüben von TDD 2 Katas von cyber-dojo.org in Paararbeit (mit Ping Pong Pair Programming) machen und darüber berichten: Probleme, Aha-Erlebnisse, Erfolgserlebnisse.
  10. 2017-01-09:
    • V: Zweiter Durchgang mit Grad Rot:
      Einige komplexere Aspekte und Beispiele sind bislang nur angerissen worden und werden jetzt vertieft.
    • Übung: Ein paar Integrationstests schaffen an einer Stelle, wo bislang keine Testbarkeit gegeben ist, aber eine Änderung ansteht.
  11. 2017-01-16:
    • V: Zweiter Durchgang mit Grad Orange
    • Übung: Einsatz von weiteren zwei der Prinzipien und Praktiken von Grad Rot.
  12. 2017-01-23:
    • V: Zweiter Durchgang mit Grad Gelb
    • Übung: wie vor zu der Vertiefung von Grad Orange
  13. 2017-01-30:
    • V: Zweiter Durchgang mit Grad Grün
    • Übung: wie vor zu der Vertiefung von Grad Gelb
  14. 2017-02-06:
    • V: Zweiter Durchgang mit Grad Blau
    • Übung: wie vor zu der Vertiefung von Grad Grün
  15. 2017-02-13:
    • Keine Vorlesung mehr, sondern im ersten Zeitabschnitt Übung, im zweiten Fazit.
    • Übung: wie vor zu der Vertiefung von Grad Blau
    • Persönliches Fazit:
      • Welche Prinzipien und Praktiken habe ich schon (halbwegs) stabil in mein Verhalten aufgenommen?
      • Welche zwei bis vier davon erscheinen mir am wertvollsten? Warum?
      • Für welche zwei bis vier erwarte ich, dass ihr Wert für mich künftig noch stark zunehmen wird? Warum?
      • Mit welchen ringe ich noch? Warum klemmt es da?
      • (Diese Gruppen müssen nicht alle Praktiken abdecken)

Quellen

Unsere Hauptquelle

Bücher

Auf viele der Bücher aus obiger Liste bekommt man Volltextzugriff, indem man ein Safari-Abonnement abschließt oder indem man professional member bei der ACM wird.

Wissenschaftliche Artikel

Auf diese Artikel bekommt man mit einer FU-Berlin-IP-Adresse automatisch Volltextzugriff. Nötigenfalls also VPN benutzen.

Online-Quellen

Blick über den Zaun

Diese Quellen betreffen nicht die Themen, die wir hier im Kurs direkt besprechen, sondern angrenzendes.



Historie des Stoffplans (Durchführung nur jedes zweite Jahr)

(Kommentare)

Wenn Sie Anmerkungen oder Vorschläge zu dieser Seite haben, können Sie sie hier (möglichst mit Datum und Name) hinterlassen:

 

SWTIDSR