Kurzdefinition Softwaretechnik
Softwaresysteme
Klassifikation von Software
Was ist Software?
Softwaresystem =
System, dessen Systemkomponenten und Systemelemente aus Software bestehen
Besonderheiten von Software
Eigenschaften von Software
Rahmenbedingungen von Software (Spannungsdreieck)
Software Engineering
Software Engineering vs. Informatik
Softwaretechnik ist wesentlich mehr als Programmieren
Was ist Softwaretechnik?
Methoden
Verfahren
Werkzeuge
Zusammenfassung Softwaresysteme und SE (VL 1)
Was ist Qualität?
Qualität: Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf deren Eignung zur Erfüllung gegebener Erfordernisse bezieht
Aktivitäten in der Entwicklung
Nutzen von Vorgehensmodellen
Softwarequalitätssicherung
Vorgehens-/Prozessmodelle
Programmieren durch Probieren
Probleme
(Vorgehensmodell 1)
Probleme:
Wasserfallmodell
Steckbrief
(Vorgehensmodell 2)
Steckbrief:
V-Modell
(Vorgehensmodell 3)
Prototypmodell
(Vorgehensmodell 4)
Iteratives Vorgehensmodell Grundprinzip
Grundidee: Ich will nicht auf einmal ein fertiges Produkt herstellen, sondern arbeite in Zyklen.
Spiralmodell (iteratives Vorgehensmodell)
(Vorgehensmodell 5)
Agile Software Engineering (Manifest)
Agile Prozesse (Eigenschaften/Grundsätze)
Exkurs: Praktiken des eXtreme Programming (XP)
Agile Prozesse
Praktiken des eXtreme Programming (XP)
Sammlung von Praktiken/Techniken die wir oft in der Agilen Entwicklung finden:
Scrum (agile Methode)
Scrum Workflow
Scrum – Artefakte
Scrum – Rollen (bilden zusammen Scrum Team)
Scrum – Treffen (engl. Scrum = Gedränge)
(Vorgehensmodell 6)
Workflow (Begriffserklärungen):
Artfakte:
Rollen:
Treffen:
()
Effizientes Testen
Testen bei XP
Testen bei eXtreme Programming (XP)
Testgetriebene Entwicklung
Zustandsdiagramm der testgetriebenen Entwicklung
Test/Implementierung/Umstrukturierung
Zusammenfassung Vorgehens-/Prozessmodelle (VL 2)
Problemquellen bei Software-Projekten?
Anforderungen Definition
Benutzeranforderungen
Systemanforderungen
Funktionale und Nichtfunktionale Anforderungen
Übersicht Nichtfunktionale Anforderungen
Anforderungsanalyse Definition
Bestandteile der Anforderungsanalyse
Methoden zur Anforderungsermittlung
Bestandteile:
Methoden:
Was sind gute Anforderungen
Priorisierung von Anforderungen
Stilratgeber Anforderungen
Validierung von Anforderungen
Traceability
Wo sind denn die Anforderungen geblieben?
Abgrenzungskriterien
-Warum soll was nicht gemacht werden?
Anforderungen in Textverarbeitung
Anforderungen in Tabellen/Datenbank
IBM Doors
IBM Doors (“Excel auf Speed”)
Anwendungsfälle (Use Cases) Grundidee
Steckbrief Use Case Diagramme
Use Case Diagramm - Bestandteile
Beziehungen zwische Use Cases (Anwendungsfällen)
Lastenheft – Steckbrief
Gliederungsschema des Lastenhefts
Zusammenfassung VL 3 Anforderungsanalyse
Systemmodellierung
Definition Modell (für die Vorlesung)
Charakteristika eines Modells
Eigenschaften
Modellarten
Liskovsches Substitutionsprinzip
Schnittstelle
Verwendung von Schnittstellen
Varianz, Kovarianz, Kontravarianz, Invarianz
Paketdiagramm – Steckbrief
Notationen: Paket
Notation: Paket-Import
Aktivitätsdiagramm – Steckbrief
Überblick
Sequenzdiagramm – Steckbrief
Zustandsdiagramm – Steckbrief
Semantik eines Zustandsmodells
Dynamisches Modell erstellen
Pflichtenheft
Softwarearchitektur
Bestandteile einer Softwarearchitektur
Ziele von Softwarearchitektur
Architektur und Qualitätseigenschaften
Was ist eine gute Softwarearchitektur?
Architekturentwurf
Fundamentale Entwurfsprinzipien
Architekturbeschreibung
Defnition, Dokumentation, Nutzen
Architektur Sichten/Standpunkt
Sicht (View) generell
Wesentliche Sichten für Architekturen
UML Komponentendiagramme
Überblick Komponentendiagramme
Verteilungssicht
Steckbrief – Verteilungsdiagramm
Überblick Verteilungsdiagramme
Architekturstile
Layered Architecture
Schichten
3-Tier – Steckbrief
Client/Server (dt. Klient/Dienstgeber)
Peer-to-Peer Networks (dt. Partnernetze)
Blackboard Architecture
Pipeline oder Pipes and Filters (dt. Fließband)
Service Oriented Architecture (SOA)
Servicemodell als der Kern einer SOA
Merkmale und Ziele der Dienstorientierung
Toolbox des Softwarearchitekten
UML Diagramme für Anforderungen und Entwurf
Entwurfsschritte
Objektorientierter Feinentwurf
Muster
Musterbeschreibung
Anwendung von Mustern
Nutzer von Mustern
Probleme mit Mustern
Klassifizierung der Muster
Strukturmuster: Überblick
Adapter (dt. Adapter)
Objektadapter
UML-Notation für Entwurfsmuster
Facade (dt. Fassade)
Proxy (dt. Stellvertreter)
Decorator (dt. Dekorierer)
Decorator vs. Proxy
Composite (dt. Kompositum)
Singleton (dt. Einzelstück)
Abstract Factory (dt. Abstrakte Fabrik)
Visitor (dt. Besucher)
Strategy (dt. Strategie)
Template Method (dt. Schablonenmethode)
Command (engl. Befehl)
Null-Object (dt. Null-Objekt)
Observer (dt. Beobachter)
Zusammenfassung
Entwurfsmuster
Software Entwurf
Definition: Implementierung
Programmiersprachen
Prozedurale Programmierung
Objektorientierte Programmierung
Funktionale Programmiersprachen
Elements of Programming Style
Namenskonventionen
Zusammenfassung - Programmierrichtlinien
Softwarekonfigurationsverwaltung
Versionen
Einbuchen/Ausbuchen (Check-In/Check-Out)
Bestandteile einer (Software-) Konfiguration
Versionsverwaltungssysteme
Git commands
Zusammenfassung - Implementierung
Testen zur Sicherung von Software Qualität
Modul-/Softwaretestverfahren
3 Arten von Fehlern
Arten von Testhelfern
Fehlerklassen
Testphasen
Kontrollflussgraphen
Zwischensprache
Strukturerhaltende Transformation
Grundblock
KFG
Anweisungsüberdeckung
Zweigüberdeckung
Pfadüberdeckung
Bedingungsüberdeckungsverfahren
Subsumieren
Hierarchie der KFO-Teststrategien
Zusammenfassung: KFO Teststrategien (1)
Funktionale Tests (Functional Tests)
Verfahren zur Testfallbestimmung
Leistungstests
Software-Inspektion
Abgrenzung:
Software-
Durchsicht
Überprüfung
Inspektion
Prüfprogramme
Integrationstest
Integrationsstrategien
Klausuraufgabe: Geschichte von Firma mit Hinweisen wie bspw. Komponenten werden nie fertig, keine Systemarchitekturbeschreibung,… welchen Integrationstest? -> also schonmal nicht Vorgehensorientiert (keine Architektur), Big Bang (eingentlich fast einzige Möglichkeit wenn man keine Architektur hat)
Systemtest
spezielle Art des Testens: Regressionstest
Abnahmetests (engl. acceptance test)
Testwerkzeuge der Softwareamateure
Testen mit Ausgabeanweisungen im Programm (Printf-Debugging)
Testen mit einem interaktiven Debugger
Testen mit Test-Skripten (“Printf-Debugging auf Steroids” -> automatisch mit print Anweisung)
Alle 3 zusammen
Testwerkzeuge: Assertions
Wichtig: Zusicherungen können zu- und abgeschaltet werden.
Testwerkzeuge: Automatisch ablaufende Testfälle
Testwerkzeuge: Prüfprogramme
Bugtracking
Zusammenfassung VL 11 & 12: Testen
Die Abnahmephase
Produkt geht in Wartung und Pflege
Produkt, Dokumentation etc. wird übergeben
Abnahmetest (Belastungs- und Stresstest)
Ergebnis: Abnahmeprotokoll
Die Einführungsphase
Tätigkeiten
Installation des Produkts
Schulung der Benutzer und des Betriebspersonals
Inbetriebnahme des Produkts (auf 3 Arten möglich)
direkte Umstellung
Parallellauf
Versuchslauf
Die Wartungs- & Pflegephase
Wartung und Pflege
-Beginnt mit der erfolgreichen Abnahme und Einführung eines SoftwareProdukts
1)
2)
3)
4)
Alternativ:
Korrigierende Aktivitäten (korrigiren Defekte und Mängel)
Anpassende Aktivitäten (an ändernde Produktumgebung anpassen)
Perfektionierende Aktivitäten (erhöhen Leistung, Wartbarkeit…)
Wartung und Pflege vs. Entwicklung
Software-Sanierung
Organisation der Wartung
Was man mal gehört haben sollte:
Anti Pattern
The Blob (aka God Class)
Golden Hammer
Spaghetti Code
The Blob
Refactoring
Schritte Extract Method
Grundlegende Idee: externe Verhalten bleibt gleich, aber innere Struktur wird verbessert (Anti-Pattern werden entfernt)
Continuous Integration
Continuous Delivery vs. Continuous Deployment
Vorteile der Prozesse der 3 Prozesse
Ziele von Continuous Integration
Entwickler arbeiten zusammen an einem Repository (bspw. Git).
Dann wird ein ContinoutsIntegration Server aufgesetzt der automatisch regelmäßig das Repository nimmt und schaut: Lässt sich das System zusammenbauen, funktionert das Zusammenspiel?
Es wird also der Deploy (Installation) automatisiert, anschließend Akzeptanztests
DevOps
Problem:
Zusammenfassung VL 13: Abnahme und Wartung
Charakteristika eines Projekts
Teufelsquadrat nach Sneed
Qualität und Leistungsumfang steigen nach außen,
Zeit und Kosten sinken nach Außen.
Invariant: Fläche des Quadrats bleibt gleich, d.h. wenn ich an einer Ecke ziehe, verändern sich die anderen auch
Wichtige Aspekte des Projektmanagements
Projektplanung
Planung als Prozess
Inhalte der Planung
Projektplanung im Projektmanagement
Planungstechniken:
Projektstrukturplan
Gantt-Diagramme
Netzpläne
Termine
Pufferzeiten
kritischer Pfad
MPM
Grundtypen von Netzplänen
Aufwandsschätzung
Gewünschter Zeitpunkt der Schätzung vs Tatsächlicher Zeitpunkt der Schätzung
Folgen von Fehlschätzungen
Gewünschter Zeitpunkt der Schätzung
aber:
Schätzverfahren
Zusammenfassung zu Schätzungen
Risikomanagement
Was ist Risiko?
Risikokategorien
Projektrisiken
Reifegradmodelle
Produktqualität und Prozessqualität
ISO 9000
Qualität der Organisation
Ziele und Nutzen von Reifegradmodellen
Capability Maturity Model (CMM)
Zusammenfassung VL Projektmanagement
Zuletzt geändertvor einem Jahr