Softwaretechnik

Lesson 1

Wer ist der Typ?

  • Jens Schauder
  • Mitarbeiter bei der T-Systems on site services GmbH
  • Diplom Physiker
  • JUG Ostfalen Coorganisator
  • Coach
  • Speaker
  • Autor (Artikel, Blog)
  • Autor (Degraph)
  • Software Entwickler

Software Entwickler

  • Java
  • Oracle
  • Schwerpunkt Softwarequalität

Software Qualität

  • Requirementsengineering
  • Specification
  • Testing
  • Development (Testen kommt vor Development)
  • Clean Code
  • Documentation
  • Deployment
  • Operations
  • Softskills

Projektmanagement

versuche ich zu vermeiden

Und was passiert hier jetzt?


Praxis Relevant

  • Erfahrungen aus täglicher Arbeit
  • Was ich daraus gelernt habe
  • Gemischt mit Wissen und Grundlagen aus Büchern
  • Lernen ist mir wichtig
  • Daher Fragen gerne jeder Zeit:
    @jensschauder 
    jens@schauderhaft.de
    persönlich

Unikat

  • Es ist mein erstes Mal
  • Wird (erstmal) nicht wiederholt
  • Wenn Sie wiederholen, wird die Vorlesung sehr anders aussehen
  • Kein fertiges Script
  • Alles auf Github
  • Ich akzeptiere Pull Requests

Wer sind Sie?

  • Können Sie ...
    • Java
    • Testen
    • TDD
  • Was wollen Sie aus der Vorlesung mitnehmen?
  • Was wollen Sie nach dem Studium machen?
  • Was tun Sie für dieses Ziel?
  • Sind Sie on Track?

Vorraussetzungen

  • Grundlagen in Java
  • Grundlagen in Objekt Orientierter Programmierung
  • Englisch (Leseverständnis, Hörverständnis)
  • Fähigkeit und Wille zum Lernen
    • Fragen stellen
    • Wann
    • Wem
    • Wie
  • Stackoverflow und Google
  • Wenigstens ein Notebook für je zwei Studenten
    • Java-IDE
    • JUnit
    • Coverage Plugin
    • Git

Warum Softwaretechnik?
(engl. software engineering)


1972

[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. Edsger Dijkstra: The Humble Programmer

Softwareentwicklung
skaliert nicht!


Das Problem besteht noch

TR-440
vs
Smartphone
vs
Tianhe-2

Flächenvergleich

x: Rechenkerne * Takt
y: Hauptspeicher

Wie groß sind die Flächen wenn der TR-440 1mm2 entspricht?

TR-440

 106 KerneHz x 105 B
 => 1mm2

Ein dicker Punkt

Smartphone

 109 KerneHz x 109 B
 => 1m x 10m

Die Fläche der Tafel

Tianhe-2

1015 KerneHz x 1015 B
 => 1000km x 1000km

1.8 x die Fläche von Frankreich

Quellen

Lösungsansätze

  • Programmiersprachen
  • Arbeitsweisen 
    • TDD
    • RAD
    • Code Generierung
  • Tools
    • Versionsverwaltung
    • UML-Editoren
    • IDEs
    • Analyse Tools
  • Prozesse
    • Projektmanagement
    • Wasserfall
    • Agile

und Softskills

leider oft vernachlässigt

Es gibt keine Silver Bullets

Aber wir sind offensichtlich in den letzten 4 Jahrzehnten besser geworden.

Softwareengineering

  • Ingenieurswissenschaften sind Vorbild
  • Angewandte Wissenschaften
  • Entwickelt aus der Militärtechnik

Exkurs: Modelle

Ein Modell ist ein beschränktes Abbild der Wirklichkeit. Dies kann gegenständlich oder theoretisch geschehen. Nach Herbert Stachowiak ist es durch mindestens drei Merkmale gekennzeichnet

  • Abbildung
  • Verkürzung
  • Pragmatismus

Vorsicht Modell

Wann immer man einem Modell begegnet gilt es zu identifizieren:

  • Das ein Modell vorliegt
  • welche Annahmen/Vereinfachungen es vornimmt
  • welche Aussagen aus dem Modell abgeleitet werden

Modellbildung

  • Abgrenzung: Nichtberücksichtigung irrelevanter Objekte
  • Reduktion: Weglassen von Objektdetails
  • Dekomposition: Zerlegung, Auflösung in einzelne Segmente
  • Aggregation: Vereinigung von Segmenten zu einem Ganzen
  • Abstraktion: Begriffs- bzw. Klassenbildung

Beispiel
Rechnergrößen als Flächen

Aggregation

Tianehe 2 enthält viele unterschiedliche Prozessoren. Ich habe die einfach zusammengefasst.

Reduktion

Permanentspeicher habe ich vollständig ignoriert, ebenso FLOPS

Dekomposition

Beispiel: Materialwissenschaften unterscheiden oft zwischen, dem innern eines Materials und der Oberfläche.

Aggregation

Im Beispiel nicht angewandt.
Anderes Beispiel: Statistische Mechanik, leitet aus vielen Atomen/Molekülen aussagen über Volumina ab.

Abstraktion

Aus einer Unzahl möglicher Smartphones habe ich eins herausgegriffen und stellvertretend genutzt.

Modell der Softwaretechnik

Softwareentwicklung ist vergleichbar mit dem Bau von Brücken oder Häusern

Dieses Modell liefert in vielen Fällen:

Bullshit

Probleme des Ingenieurs Modells

  • Softwareentwicklung ist komplex nicht nur kompliziert
  • Design+Programmierung ≠ Entwurf+Umsetzung
  • Ignoriert die Menschen

Spektrum von "Wissenschaften"

Esotherik

  • Nachweislich Blödsinn
    • Homöopathie
    • Aberglauben
    • "Impfungen verursachen Autismus"
    • Verschwörungstheorien
  • Treffen Aussagen die wiederlegbar
    sind und widerlegt wurden

Witzig bis gefährlich

Religionen

  • Treffen prinzipiell nicht widerlegbare Aussagen
  • Keinerlei belastbare Aussagen

Nicht geeignet für Planung von Aktivitäten

Schwierige Wissenschaften

  • Beschäftigen sich mit extrem komplexen Systemen
  • Versuchen überprüfbare Aussagen zu treffen
  • Dies ist aber oft nur schwer möglich
    • zu teuer
    • moralisch nicht vertretbar
    • einfach nicht praktikabel
  • Soziologie, Medizin, Software Technik
  • Beispiel: Es gibt Operationen die jahre lang gängige Praxis waren die nicht stärker gewirkt haben als eine Placebo OP

Es ist oft nicht klar unter welchen Bedingungen Erkenntnisse gelten.

Mittelschwer

  • Typische Ingenieurswissenschaften
  • Sehr praxisrelevant
  • Modelle beschäftigen sich mit Effekten, weniger mit Gründen


Verlässliche Aussagen mit definierten Toleranzen

Einfach

  • Mathematik, Physik, Informatik
  • Präzise Exakte Ergebnisse
  • Bedingungen unrealistisch oder vollständig theoretisch

So einfach, das können sogar Computer

Präzision ist

Moderne Atomuhren haben eine Genauigkeit von 10-19

Wassertank mit 21km Kantenlänge
+/- 1 Teelöffel

0,2 Sekunden seit dem Aussterben der Dinsaurier

Präzision in der Softwaretechnik

Aufwandsschätzung: Größenordnung
Ressourcenverbrauch: Größenordnung


Keine Kritik, nur Einordnung


Entsprechendes gilt auch für diese Vorlesung:
betrachten Sie kritisch, was ich Ihnen erzähle

Organisatorisches

Ab dem nächsten Mal



Rechner mit IDE und JUnit

Termine



Es fallen aus
7. Oktober
14. Oktober

JUG Ostfalen


Entwicklung von eigenen Views in Android

Donnerstag 26. September 
19:00
ckc Gmbh
Am alten Bahnhof 13
38122 Braunschweig


Softwaretechnik lesson1

By Jens Schauder

Softwaretechnik lesson1

  • 2,475