1/15
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Definition von Softwaretechnik
Softwaretechnik zählt auf die ingenieurmäßige Entwicklung Wartung, Anpassung und Weiterentwicklung, großer Softwaresysteme unter Verwendung bewährter systematischer Vorgehensweisen, Prinzipien, Methoden und Werkzeuge
Berücksichtigung der folgenden drei Aspekte:
Kosten
Termine
Qualität
(Korrektheit, Zuverlässigkeit, Performanz, Sicherheit, Nutzbarkeit, Verständlichkeit, Weiterentwickelbarkeit, Anpassbarkeit, Wartbarkeit)
Softwaresystem | Softwareprodukt
Softwaresystem - ein System (oder Teilsystem), dessen Komponenten aus Software bestehen
Software-Produkt - ein in sich abgeschlossenes, i.A. für einen Auftraggeber bestimmtes Ergebnis eines erfolgreich durchgeführten Projekts oder Herstellungsprozesses.
Als Teilprodukt oder Komponente bezeichnen wir einen abgeschlossenen Teil eines Produkts.
Besonderheiten von Software
Software ist immateriell
Software wird nicht durch physikalische Gesetze begrenzt
Software unterliegt keinem Verschließ
Defekte sind immer Konstruktionsfehler
Software ist schwer zu vermessen
Software gilt als relativ leicht äbderbar (im Vergleich zu materiellen technischen Produkten)
Software unterliegt einem ständigen Anpassungsdruck
Software veraltet
Wichtige angestrebte Eigenschaften von Software
Zuverlässigkeit:
Software darf im Fall das Versagens keine physischen oder ökonomischen Schäden verursachen
Benutzbarkeit:
Software muss sich nach den Bedürfnissen der Benutzer richten
Die Benutzerschnittstelle muss ergonomisch und selbsterklärend sein.
Dokumentation muss in allen Detallierungsgraden ausreichend zur Verfügung stellen
Wartbarkeit:
Software muss anpassbar an neue Anforderungen sein
Software muss möglichst plattformunabhängig sein
Effizienz:
Software muss ökonomischen Gebrauch von Ressourcen des unterliegenden Systems machen.
Wasserfal-Modell: Welche Aktivität nimmt viel zu viel Zeit?
Analyse (10%) → Entwurf (20%) → Implementierung (20%) → Test, Integration → Wartung (50%)

RUP
Der Ratonal Undefined Process hat vier Phasen:
Entstehung (Inception) - definiert den Rahmen des Projekts
Ausarbeitung (Elaboration) - Planung des Projekts, Spezifikation der Features, Grundlegende Architektur
Erstellung (Construction) - Erstellung des Produkts
Übergang (Transition) - Einführung des Produkts in der Endbenutzer-Community
eXtreme Programming: Beschreibung der Methode
Agile Methode, folgende Eigenschaften:
Konsequente evolutionäre Entwicklung in sehr kleinen Inkrements
Code wird permanent lauffähig gehalten
Tests + Programmcode: das Analyseergebnis, das Entwurfsdokument und die Dokumentation
Zugleich:
Diszipliniertes und automatisiertes Testen als Qualitätssicherung
Paar-Programmierung als QS-Maßnahme
Refactoring zur evolutionären Weiterentwicklung
Codierungsstandards
Aber auch:
Weglassen einiger traditioneller Aktivitäten
Kein explizites Design, ausführliche Dokumentation, Reviews
"Test-First"-Ansatz:
Zuerst Anwendertests definieren, dann Code dazu entwickelnNur für kleinere Projekte geeignet
Nur für kleiner Projekte geeignet

Scrum: Reduktion der Komplexität
Komplexität durch drei Prinzipien reduzieren:
Transparenz: Fortschritt / Probleme täglich festhalten
Überprüfung: iterativ werden Funktionen geliefert und beurteilt
Anpassung: flexibel Anforderungen bewerten und ändern
Drei Rollen:
Product Owner, Entwicklerteam, Scrum Master
Aktivitäten:
Sprint Planning, Sprint Review, Sprint-Retrospektive, Daily Scrum
Alle Aktivitäten in Scrum sind zeitlich fest beschränkt (“timeboxed”) also keine klassischen Meilensteine
Artefakte:
Product Backlog, Sprint Backlog, auslieferbares Produktinkrement
Sprint:
zeitlich begrenzte Phase, um das Produkt zu entwickeln
Sprint Backlog:
Liste der zu realisierenden User Stories

Continuous Integration: Ziele & Gestalt
Ständiges, automatisiertes Integrieren und Testen des Systems
Zerlegung der großen Integrationsaufgabe in kleine Einheiten
Ziele:
Build-Stabilität
Modul-Integration
Automatisiertes Testen in kurzen Test-Zyklen
Qualitäts-Analysen: Code-Smells, Commit-Historie
Reporting - Benachrichtigung im Fehlerfall
Automatisierte Verteilung auf Testsysteme
Turnus:
Nightly Build
Build on Commit
manuell
Möglich dank:
Versionsverwaltung
Build-Automatisierung
Automatischer Testfallausführung
System muss nach jedem Einchecken:
zu kompilieren sein
Tests bestehen
DevOps: Rollen
Software Development + Software Operations
“A process of putting into use, and supporting end users in the use of software production in operational environment. Its activities include: installation, upgrade, migration, operational control, monitoring, configuration management, alerting, availability and support.”
Getrennten Rollen wie Entwicklung, IT-Betrieb, Qualitätstechnik und Sicherheit, müssen zusammenarbeitemn
Methoden:
CI/CD
Versionskontrolle
Agile Softwareentwicklung
Infrastruktur als Code (IaC)
Konfigurationsverwaltung
Continuous Monitoring
Klassische vs. Agile Prozesse
Wasserfall Modell (V-Modell, RUP):
Aktivitäten sind chronologisch in Phasen unterteilt
70% Fortschritt, 0% verwendbar
Agile Prozesse:
Aktivitäten sind kurze Sprints/Intervalle
Leben von vielen kleinen Iterationen
30% Fortschritt, 30% verwendbar