Anforderungen an die Softwareentwicklung

h:500



More impressive than the amount of code, and what truly makes Linux the world's largest software project is the fact that last year around 4,000 developers and at least 440 different companies that contributed to the kernel.

Quelle

bg right


🎯 Lernziele

Nach dieser Einheit sind Sie in der Lage dazu

  • die Notwenigkeit einer strukturierten Softwareentwicklung erklären
  • interne und externe Qualitätskriterien von Software zu benennen
  • Funktionale and nicht-funktionale Anforderungen voneinander abgrenzen

Software als Werkzeug und Produkt

  • Werkzeug für Forschung und Entwicklung, um Geräte anzusteuern und Daten auszuwerten (z.B. Jupyter Notebooks)
  • Generische Produkte eigenständige Systeme, auf dem freien Markt an jeden Kunden verkauft werden (MS Word, etc.).
    • Entwicklung getrieben von langfristiger Roadmap
    • Große, bestehende Entwicklungsteams
  • Kundenspezifische (oder maßgeschneiderte) Produkte Auftragsarbeit eines bestimmten Kunden in Auftrag gegeben werden.
    • variable Kundenanforderungen
    • Projektgeschäft mit wechselnder Teamzugehörigkeit

Software als Teil des Produkts

  • Immer mehr Systeme werden heute auf der Grundlage eines generischen Basisprodukt gebaut, das dann incl. Beratung an die Anforderungen des Kunden angepasst wird (SAP).
  • Software als Teil eines physischen Produkts (Embedded Systems)

bg right height:600

Quelle


Vielfältige Arten von Software

  • Stand-alone Programme, welche auf einem einzelnen PC oder Smartphone laufen
  • Cloud-Anwendungen, Programm bei denen ein Client (z.B. PC oder Smartphone) auf Daten oder Rechenleistung eines räumlich entfernten Servers zurückgreift
  • Embedded control systems, Programme die Hardwaregeräte steuern und nur ggf. durch Software-Updates angepasst werden

bg right width:500


Produkteigenschaften

  • Bei jeder Software
    • Wartbarkeit, so dass die Software an Veränderungen
    • Zuverlässigkeit und Sicherheit
    • Effizienz
    • Nutzerakzeptanz
  • Unterschiede
    • Häufigkeit von Updates
    • Entwicklungsgeschwindigkeit
    • Zuverlässigkeit und Sicherheit

Geschichte der Softwareentwicklung

  • Strukturierten Ansatz kam 1968 auf im Zuge der Software Krise auf (Naur and Randell, 1969).
  • Erkenntnis: Individuelle Herangehensweise einzelner Entwickler funktioniert nicht für Großprojekte
    • Verspätungen
    • Explodierende Kosten
    • Geringe Qualität

bg right


  • Steigende Systemgröße und Komplexität
  • Einsteig ist einfach. Unternehmen und Personen wachsen in die Software-Entwicklung hinein, da sich Produkte und Dienstleistungen digitalisieren
  • Agile Arbeitsweise
  • Modularer Aufbau auf Open Source Komponenten (Schnittstellen)

bg right:40%

Quelle


Qualitätskriterien

bg right:58% width:700

  • z.B. nach ISO 25010
  • 🧠 interne Qualität: Sichtweise der Softwareentwickler:in (z.B. Wartbarkeit und leichte Portierbarkeit)
  • 🧠 externe Qualität: Sichtweise einer Nuzter:in auf die bei der Ausführung beobachtbare Eigenschaften

Quelle


Funktionale and nicht-funktionale Anforderungen

Funktional Nicht-Funktional
Ziel was das Produkt macht wie das Produkt funktioniert
Ergebnis Definieren Funktionen des Produkts Definieren Eigenschaften
Fokus Bedürfnisse der Nutzer:innen Erwartungen der Nutzer:innen
Dokumentation User Stories & Anwendungsfälle Qualitätseigenschaften
Notwenigkeit Notwendig Erwünscht
Ursprung Nutzer:innen Entwickler- und Expert:innen
Test Software(Unit)-Tests, UI-Testing Leistung, Usability, Sicherheit
Beispiele Funktionsumfang Usability, Zuverlässigkeit, Leistung

Funktional Nicht-Funktional
Beispiel Als Diagnostiker:in möchte ich die Herzrate und Leistung (Daten des Ergometers) als Zeitreihe visualisiert bekommen, um Veränderungen sofort mitzubekommen Visualisierung soll flüssig ohne Zeitverzug angezeigt werden, gut erkennbar und optisch ansprechend sein

bg right:33% height:200


Lebenszyklus von Software

  • Um diesen Prozess zu steuern, haben sich verschiedene Prozessmodelle entwickelt

bg right:55% width:700


Lebenszyklus von Software

  • Software-Spezifikation: Anforderungen und Einschränkungen werden definiert
  • Software-Entwicklung: Software wird entworfen und programmiert
  • Software-Validierung: Software wird anhand der Spezifikation überprüft
  • Software-Evolution: Bestehende Software wird neuen Anforderungen angepasst und gewartet

Wichtigkeit der ersten Projektphasen

Quelle


Agiles Arbeiten und Wasserfall-Modell


Wasserfallmodell

  • Plangetriebenes Vorgehen
  • Alle Phasen werden durch- geplant, bevor die Arbeit beginnt

  • Vorteile

    • Einfache Überwachung des Fortschritts
    • Übliches Vorgehen in anderen Kontexten
  • Nachteile
    • Unflexibel gegenüber Anpassungen

Problem

bg right width:600

Kein Operationsplan reicht mit einiger Sicherheit über das erste Zusammentreffen mit der feindlichen Hauptmacht hinaus.

Helmuth Karl Bernhard von Moltke (volkstümlich Der große Schweiger)


Agiles Arbeiten

Quelle


Inkrementelle Entwicklung

  • Endprodukt steht nicht von Beginn an fest
  • Produkt wächst in organischen Prozess entsprechend neuer Anforderungen
  • Nach jedem Zyklus wird eine neue nutzbare Version fertigstellt und deployt

bg right:33% height:220

Quelle


Beispiel Windows

Right now we’re releasing Windows 10, and because Windows 10 is the last version of Windows, we’re all still working on Windows 10 Jerry Nixon - 2015


h:500

Quelle


Vorteile Inkrementelle Entwicklung

  • Bildet natürliches Vorgehen bei der Problemlösung ab
  • Anpassungen, die während der Entwicklung notwendig werden sind leichter einzubringen
  • Jedes Inkrement bringt neuen Nutzen für für die Anwender:in

bg right:33% height:220

Quelle


Nachteile Inkrementelle Entwicklung

  • Konflikte zwischen Unternehmenskultur und iterativem Vorgehen
  • Systemstruktur geht mit zunehmenden Zyklen verloren. Zeit und Geld muss für Refactoring und Dokumentation eingeplant werden

bg right:33% height:220

Quelle


Inkrementelles Projektmanagement mittels Kanban Board

height:500


Interaktion Kanban Board

bg right width:500

  • häufig eingesetztes Werkzeug aus dem Produktionsbereich
  • Karten (Issues) werden zwischen verschiedenen Abschnitten bewegt
    • z.B. waiting, in progress, completed
    • z.B. to-do, doing, done
    • Product Backlog, Scrum Backlog, in progress, completed
  • Github Project Quelle

Scrum

Quelle


Scrum

  • agiles, inkrementelles Vorgehen
  • Drei Scrum-Rollen
    • Product Owner
    • Entwicklungsteam
    • Scrum Master
  • Drei Scrum-Artefakte
    • Product Backlog
    • Sprint Backlog
    • Product Increment

bg height:300 right


Scrum-Rollen

  • Product Owner verantwortet Produkterfolg für alle Stakeholder. Entscheidet darüber, wie das Produkt auszusehen hat. Formuliert und priorisiert Anforderungen aus der Anwendersicht.

  • Selbst organisiertes Entwicklungsteam aus 3 bis 9 Entwicker:innen

  • Scrum Master coacht das Entwicklungsteam. Gibt jedoch keine Arbeitsanweisungen und besitzen keinerlei disziplinarische Handhabe

bg height:300 right:40%


Scrum-Artefakte

  • Product Backlog sammelt sämtliche Eigenschaften und Funktionen, die das Produkt haben soll (Anforderungen). Zunächst eher grob.

  • Sprint Backlog sind die anstehenden Aufgaben, die im nächsten Sprint (ca. 14 Tage) erledigt werden sollen.

  • Product Increment ist das Teilergebnis am Ende eines Sprints. Am Ende eines jeden Sprints muss das vorliegende Inkrement als "Done" bewertet sein (z.B. neue Version der Software)

bg height:300 right:40%