O GoConqr está de visual novo! Conte para nós o que você achou.

Flashcards

Software Engineering I

daniel-eberwein Software Engineering I Alemão 96 flashcards

Software Engineering I

Flashcards do conjunto (96)

  1. 1Komplexitätstheorieexponentiell: k^n
    polynominal: n^k
    logarithmisch: log n
    linear: n
    konstant: 1
  2. 2Darstellungsarten von Endliche AutomatenDiagramm
    Tabelle
    Matrix
  3. 3TransduktorenMealy-Automat
    Moore-Automat
  4. 4Mealy Automat- Ausgabe bei jedem Zustandsübergang
    - relativ wenige Zustände
    - Wahl der Ausgabe: aktueller Zustand + Eingabe
  5. 5Moore-Automat- Ausgabe bei Erreichen eines Zustands
    - eher mehr Zustände, aber bei gleicher Anzahl dafür weniger verschiedene Ausgaben
    - Wahl der Ausgabe: neuer Zustand
    - übersichtlicher, wenn alle Ausgaben bei jeweils einem Zustand gleich sind
  6. 6Akzeptorohne Ausgabe
    nur Endzustände
  7. 7Mutexwechselseitiger Ausschluss
    Wer darf zuerst?
    Philosophen Problem
  8. 8Race ConditionGeschwindigkeit der Verarbeitung beeinflusst das Ergebnis
    besonders bei verteilten Systemen oder nebenläufiger Programmierung
  9. 9SemaphoreVerwaltung von Ressourcen
    abstrakte Datenstruktur
    konkurrierende (CPU-Zeit) und kooperative Semaphore (Erzeuger-Verbraucher)
    löst das Erzeuger-Verbraucher-Problem
  10. 10Connection Pooling (Probleme)Leaks: Ressourcen nicht freigegeben
    Starvation: Ressourcen zu spät zugeteilt
    Deadlocks: Threads blockieren sich gegenseitig
  11. 11Synchronisationüber Callback geregelt:
    Aufruf einer Funktion, welcher eine andere Funktion als Parameter übergeben wird.
    Aufruf eines Buchungssystems, welches außerhalb des aktuellen Programms liegt; Warten auf Antwort des Callbacks
  12. 12Callback (Probleme)- Wie lange wartet man?
    - Nachrichten können verloren gehen
    - fehlerhafte oder nicht erreichbare Systeme
    - Race Conditions
  13. 13AbstraktionWeglassen irrelevanter Details
    Konzentration auf das Wesentliche
  14. 14KapselungGeheimnisprinzip / Sichtbarkeit
    Zugriff auf Daten nur über Methoden (GET/SET)
  15. 15VererbungErweiterung durch Spezialisierung
    Subklasse erbt alle Merkmale der Superklasse
  16. 16PolymorphismusAustauschbarkeit
    Gleiche Schnittstelle, anderes Verhalten
    überschriebene Methoden
  17. 17KohäsionMaß für die Verantwortlichkeiten der Bestandteile einer Komponente
    starke Kohäsion: eine Komponente - eine Aufgabe
    schwache Kohäsion: eine Komponente - viele Aufgaben
  18. 18KopplungMaß für die Abhängigkeit zwischen Komponenten
    lose Kopplung: Änderung an der Komponente beeinflussen andere Komponenten nicht
    kann nie auf 0 gebracht werden
  19. 19DRY (Don't repeat yourself)Vermeidung von dupliziertem Code
    Fehler müssen sonst an mehreren Stellen verbessert werden
  20. 20SOC (Seperation of concerns)Eine Komponente soll genau eine Aufgabe/Verantwortlichkeit haben (hohe Kohäsion)
    Eine Komponente soll so wenig wie möglich von anderen abhängen (lose Kopplung)
  21. 21SRP (Single Responsibility Principle)es sollte nur einen Grund geben eine Klasse zu ändern
    ansonsten hätte die Klasse mehrere Verantwortungen
    (Auto Beispiel: Was sind die zentralen Aufgaben eines Autos?)
  22. 22OCP (Open Closed Principle)Klassen sollen offen gegenüber Erweiterungen sein, aber geschlossen gegenüber Veränderungen
    Verwendung von abstrakten Basisklassen
    Klassen sind somit robuster
  23. 23LSP (Liskov Substitution Principle)Ein Programm, welches Objekte der Basisklasse verwendet, soll auch mit Objekten einer davon abgeleiteten Klasse umgehen können
    Verhalten der Methoden bei einer Vererbung beachten
    (Quadrat - Rechteck - Beispiel)
  24. 24ISP (Interface Segregation Principle)Clients sollen nicht gezwungen werden Interfaces zu implementieren, die sie nicht benötigen
    Vermeidung von Interface Pollution
    Wenn eine Klasse ein Interface implementiert, dann braucht es die darin vorhandenen Methoden auch wirklich
  25. 25DIP (Dependency Inversion Principle)Module höherer Ebene sollten nicht von Modulen niedrigerer Ebene abhängen
    Das Modul höherer Ebene definiert eine Schnittstelle, mit der es arbeitet. Module niedrigerer Ebene realisieren die Schnittstellen
    beide sollten also von Abstraktionen abhängen
    (Schalter - Lampe - Beispiel)
  26. 26SDP (Stable Dependencies Principle)Abhängigkeiten zwischen Packages sollten in der selben Richtung wie die Stabilität verlaufen
    Stabilität = ausgehende Kopplung / totale Kopplung
    Packages sollten nur von Packages abhängen, welche stabiler sind als es selbst
    = 0 --> stabiles Package
    = 1 --> instabiles Package
  27. 27SAP (Stable Abstraction Principle)Packages, die maximal stabil sind, sollten auch maximal abstrakt sein (und umgekehrt)
    Abstraktheit = #abstrakte Klassen / #alle Klassen
    = 0 --> konkretes Package
    = 1 --> abstraktes Package
  28. 28Zone of Painstabile, nicht abstrake Klassen
    Stabilität = 0 und Abstraktion = 0
    Diese Komponenten sind schwer zu verändern
  29. 29Zone of Uselessnessinstabile und abstrakte Klassen
    Stabilität = 1
    Abstraktheit = 1
    Klassen sind abstrakt, werden aber nirgends erweitert
  30. 30Definition einer Sprache1) Eigenschaftsspezifikation (verbale Beschreibung)
    2) Erzeugungsverfahren (Grammatiken)
    3) Erkennungsverfahren (Erkennen durch Automaten)
  31. 31GrammatikGrammatik G bestehend aus:
    - Menge N aus Nonterminalsymbolen (Variablen)
    - Terminalsymbole (Zeichenvorrat)
    - endliche Menge an Produktionen
    - Startvariabel S aus N
  32. 32ProduktionAbleitungen einzelner Bestandteile in neue Bestandteile
  33. 33Syntaxbaumauch: Ableitungsbaum
    stelle Produktion grafisch als Baumstruktur dar
  34. 34Chomsky Typ 3: Reguläre Sprachen- erzeugt durch reguläre Grammatiken
    - Produktionen haben die Form:
    Chomsky Typ 3: Reguläre Sprachen
  35. 35Endliche Automaten in Bezug auf Grammatiken1) Für jede reguläre Grammatik gibt es einen nichtdeterministischen endlichen Automaten
    2) Jeder nichtdeterministische endliche Automat ist in einen deterministischen endlichen Automaten überführbar
    3) Zu jedem deterministischen endlichen Automaten gibt es eine reguläre Grammatik
  36. 36Chomsky Typ 2: Kontextktfreie SpracheBsp.: Programmiersprachen
    Definition:
    Chomsky Typ 2: Kontextktfreie Sprache
  37. 37SyntaxdiagrammeRechtecke: Nonterminalsymbole
    Ovale: Terminalsymbole
  38. 38Backus-Naur-Form (BNF)formale MetaspracheBackus-Naur-Form (BNF)
  39. 39EBNFDefinition: =
    Aufzählung: ,
    Terminalsymbol: "text"
    Nonterminalsymbol: nichts spezielles
    Alternative: |
    Option: []
    Wiederholung {}
    Ende einer Regel: ;
    Gruppierung: ()
  40. 40Abstrakter SyntaxbaumWeglassen von:
    - Knoten
    - Klammern
    - Zwischenschritten
    Anreicherung, z.B. Variablen Deklaration
    Bsp.: DOM
  41. 41SingletonVon einer Klasse soll es nur eine Instanz geben
  42. 42Factory MethodEin Objekt wird durch Aufruf einer Methode anstatt durch direkten Aufruf eines Konstruktors erzeugt.
    Product <-- Concrete Product
    Creator <-- Concrete Creator
  43. 43Abstract FactorySchnittstelle zur Erzeugung einer Familie von Objekten, wobei die konkreten Klassen der zu instanziierenden Objekte nicht näher festgelegt werden.
    Definition einer zusammenhängenden Familie aus Produkten
  44. 44FacadeUnterteilung eines komplexen Systems in mehrere einfache Subsysteme
    Facade als high-level-interface, um das Subsystem leichter nutzen zu können
  45. 45DecoratorHinzufügen / Entfernen von Funktionalitäten über eine Schnittstelle
  46. 46AdapterÜbersetzung einer Schnittstelle in eine andere.
    Kommunikation von Klassen mit zueinander imkompatiblen Schnittstellen wird ermöglicht
  47. 47Template MethodTeilschritte eines Algorithmus können variabel gehalten werden
    Definition einer Schablone, die ähnliche Algorithmen implementiert und einzelne Ausführungsschritte an Unterklassen delegiert
  48. 48Strategydefiniert eine Familie austauschbarer Algorithmen
    bei vielen ähnlichen Klassen, die sich nur im Verhalten unterscheiden, können diese durch gemeinsame Strategy-Schnittstelle
  49. 49ObserverWenn ein Objekt seinen Zustand ändert, erfahren dies alle abhängigen Objekte und werden direkt aktualisiert. Bsp.: Wenn die Veränderung eines Objekts die Modifikation eines oder mehrerer Objekte nötig macht
  50. 50JSONeinfaches Modell, welches insbesondere für Webtechnologien eingesetzt wird
    leicht lesbare Syntax
    Praktisch: siehe Aufgabe und Skript
  51. 51JSON - BeispielJSON - Beispiel
  52. 52XML (wohlgeformt)Wohlgeformt:
    - geordnete, syntaktische Eigenschaften
    - alle Elemente haben öffnendes und schließendes Tag
    - ein Wurzelelement
    - nur ein Wert pro Attribut
  53. 53XML (Validierung)valid: es folgt einem Schema
    --> DTD oder XML Schema
    Einschränkungen der Elementnamen oder der Sturktur
    ergänzend zur Wohlgeformtheit
  54. 54DTD- beschreibt ein Dokument
    - inhaltliche Einschränkungen
    eigene Syntax, kein XML
    Syntax:
    (a,b,c): Liste von Unterelementen
    (a|b|c): Alternativen
    Kardinalitäten: * + ?
    Attribute:
    Zusätze: #REQUIRED, #IMPLIED, Default-Wert
  55. 55XML SchemaSchema selbst ist wieder ein XML
    simpleType:
    - auf Basis von base (ähnlich Vererbung)
    - restriction: Einschränkung bzgl. Wertebereich, Aufzählung, Muster, Länge
    - sequence: entspricht (A,B) bei DTD
    - choice: entspricht (A|B) bei DTD
    - all: beliebige Reihenfolge
    -Kardinalitäten: minOccurs, max Occurs
    Attribute:
  56. 56DOMDarstellung von XML als Baum-Struktur
    Root: Wurzelknoten
    Children: Kindknoten
    Parent: Elternknoten
    previous/next Sibling: Knoten mit gemeinsamen Parent
    Methoden:
    - Navigation
    - Manipulation
    - Serialisierung (DOM in XML wandeln)
  57. 57XPathbestehend aus Location Steps
    /Achse::node [prädikat]
    Achse: child, self, parent, attribute
    Node Test: auf Knotenname, *, comment()
    Prädikat: [1]: wählt erstes Element aus, [@lang='de'] wählt ELement mit dem Wert "de" für lang Attribut aus
  58. 58XQueryFLOWR-Ausdrücke:
    for: Iterationsvariable
    let: Nicht-iterierende Varibale
    where: einschränkende Bedingungen
    order by: Sortierung
    return: Einbettung
  59. 59XSLTPrinzip:
    1) Einlesen eines Dokumens
    2) Vorbereitung Zielbaum
    3) Transformationen (Template Rules) bestimmen welche Inhalte was im Zielbaum bewirken
    Template Rules:
    - bestehend aus Pattern zum matchen und Template für Änderungen
    value-of: extrahiert den Wert des Knotens, alternativ: username = {@username}
  60. 60XSLT - weitere AnweisungenXSLT - weitere Anweisungen
  61. 61XSLT - Conflict ResolutionWenn Knoten von mehreren Templates gematched
    --> importierte Regeln: niedrigste Priorität
    --> spezifischere Patterns haben höhere Priorität als unspezifischere
    --> mehrere gleichberechtigte Patterns/Regeln führen zu einem Fehler
  62. 62Software Infrastruktur- Konfigurationsmanagement (Verwaltung der Artefakte)
    - Build-Automatisierung (automat. Erzeugen und Zusammenfügen von Komponenten)
    - Testautomatisierung
    - Defektmanagement
  63. 63Management-Prozesse- Vorgehensmodelle (grundlegende Arbeitsweise)
    - Reifegradmodelle (objektive Analyse und Optimierung der Prozesse)
  64. 64Konstruktive QSArbeitstechniken und Tätigkeiten die zur Erfüllung der Anforderungen angewendet werden
    Prozess im Fokus
    Fehlervermeidungsstrategie
    - Software-Richtlinien: Programmiersprache, Best-Practices
    - Typisierung: Verwendung typisierter Programmiersprachen
    - Vertragsbasierte & Fehlertolerante Programmierung:
    - Dokumentation
  65. 65Analytische QSgeplante und systematische Tätigkeiten
    Produkt im Fokus
    Fehlerfindungsstrategie
    - statischer Test
    - dynamischer Test
  66. 66Statischer TestSoftware wird nicht ausgeführt
    - Software-Metriken: quantitative Erfassung von Qualitätsmerkmalen
    - Anomalie-Analyse: Entdecken von Unstimmigkeiten im Programmablauf (nicht verwendete Objekte)
    - Manuelle Software-Prüfung: Review
  67. 67Dynamischer TestSoftware wird ausgeführt
    - BlackBox Test: Code muss nicht bekannt sein, Ableitung der Testfälle aus Spezifikation
    - WhiteBox-Test: Code ist bekannt, Ableitung der Testfälle aus Codestruktur
    - GreyBox Test: vereint Vorteile von BlackBox und WhiteBox Tests, TDD
    - Akzeptanztest: BlackBox Test zur Überprüfung der Anforderungen
  68. 68BlackBox-Test (Vor- und Nachteile)BlackBox-Test (Vor- und Nachteile)
  69. 69WhiteBox-Test (Vor- und Nachteile)WhiteBox-Test (Vor- und Nachteile)
  70. 70TDDTestgetriebene Programmierung: jede Verhaltensänderung am Code wird durch automatisierten Test motiviert
    Refactoring: Code in einfacher Form und Design wird Schritt für Schritt während der Programmierung entwickelt
    Häufige Integration
    Warum TDD?
    - sichert den Erhalt der Funktionen bei Erweiterung
    - Refactoring verlängert produktive Lebensdauer der Software
    - Code lässt sich im Nachhinein oft schlechter testen
  71. 71TDD - AblaufTDD - Ablauf
  72. 72Unit TestTesten einzelner Komponenten
    Nutzen:
    - Änderungen können sofort überprüft werden
    - kürzere Entwicklungszeiten
    - einfachere Dokumentation
    Voraussetzungen:
    - einfache Implementierung
    - schnelle & automatisierte Ausführung der Tests
  73. 73Integrationstest- Prüft zusammengesetzte Programmeinheiten in ihrer Interaktion
    - Schnittstellentest
  74. 74RegressionstestFolgefehler und Seiteneffekte in einer neuen Version von Software erkennen
    Problem:
    - Programmänderungen können unerwünschte Nebenwirkungen oder neue Fehler mit sich bringen
    Vorgehensweise:
    - Wiederholung von bereist durchgeführten Tests mit gleichen Eingaben
    - als Unit-Test oder Integrationstest möglich
    Annahmen:
    - Änderungen sind geringfügig
    - Programm war vorher möglichst fehlerfrei
  75. 75Continious Integration- regelmäßiges und vollständiges Bauen, Testen und Verteilen einer Anwendung
    - frühes und häufiges Einchecken von Änderungen
    - inkrementelle und funktionsfähige Änderungen
    - bei Änderung wird Gesamtsystem neu gebaut und automatisch getestet
  76. 76Continious DeliveryAutomatisierung aller Schritte bis zur produktiven Auslieferung einer Software
    automatisierte Deployments
    bei jedem neuen Einchecken von Änderungen werden automatisiert Unit- und Integrationstests durchgeführt und evtl. direkt deployed
    jederzeit steht ein deploy-bereiter Zustand der Software zur Verfügung
    Voraussetzungen:
    - CI muss etabliert sein
    - regelmäßige Commits und automatisierte Tests müssen durchgeführt werden
  77. 77Adressierte Risiken (CI+CD)- späte Fehlerbehebung
    - schlechte Code-Qualität
    - nicht oder erst spät verfügbare ausführbare Software
    - mangelnde Transparenz
  78. 78Voraussetzungen CI + CD- gemeinsame Codebasis
    - automatisierte Kompilierung
    - kontinuierliche Test-Entwicklung
    - häufige Integration
    - kurze Testzyklen
    - Testumgebung (falls möglich)
    - automat. Reporting & Deployment
  79. 79WasserfallmodellWasserfallmodell
  80. 80V-Modell- basierend auf Wasserfallmodell
    - V-förmiger Aufbau
    - jeder Entwicklungsphase steht eine Testphase gegenüber
    - Erhöhung der Testabdeckung
  81. 81Iterativ vs. inkrementelliterativ: in Zyklen, reagieren auf Änderungen
    inkrementell: kleine Einheiten fertigstellen und nacheinander bearbeiten
  82. 82Requirements Engineering (RE)Anforderungen ermitteln, spezifizieren und analysieren, validieren sowie abnehmen
    Artefakte: Lastenheft, Pflichtenheft
  83. 83LastenheftAnforderungsspezifikation durch Auftraggeber
    Aufbau:
    1) Visionen und Ziele
    2) Rahmenbedingungen
    3) Kontext und Überblick
    4) Funktionale Anforderungen
    5) Qualitätsanforderungen
  84. 84Pflichtenheftvom Auftragnehmer erstellt, beschreibt die Realisierung aller Anforderungen auf fachlicher Ebene
    Aufbau:
    1) Visionen und Ziele
    2) Rahmenbedingungen
    3) Kontext und Überblick
    4) Funktionale Anforderungen
    5) Qualitätsanforderungen
    6) Abnahmekriterien
    7) Subsystemstruktur (optinal)
    8) Glossar
  85. 85RE-Prozessals eigenständige Entwicklungsphase
    entwicklungsbegleitend
    produktübergreifend
  86. 86RE RahmenbedingungenOrganisatorisch:
    - Anwendungsbereiche
    - Zielgruppen
    - Betriebsbedingungen
    Technisch:
    - Soft- und Hardware
    - Zugriff auf andere Systeme
  87. 87Kontext und ÜberblickSystemgrenze: was gehört zum System und was nicht
    Kontext: relevante Umgebung für das System
    Abgrenzung: was gehört nicht dazu
  88. 88funktionale vs nicht-funktionale Anforderungenfunktionale:
    - eine bereitzustellende Funktion
    -Use Cases
    nicht-funktional:
    - Qualitätsmerkmale
    - Performance
    - Verfügbarkeit
  89. 89Abnahmekriterien3 Stufen:
    1) Ausgangssituation
    2) Ereignis
    3) Erwartetes Ergebnis
  90. 90Agiles VorgehenAnforderungen in Form von User Stories
    INVEST-Modell:
    Independent
    Negotiable
    Valuable
    Estimatable
    Small
    Testable
    "As a ROLE I want to GOAL, so I can REASON"
  91. 91SchätzverfahrenAnalogiemethode: anhand bereits abgeschlossener Projekte
    Expertenschätzung: durch Erfahrung
    Bottom-Up: Expertenschätzung auf unterer Ebene
    Algorithmische Schätzung: z.B.: Function-Points-Methode
  92. 92Implementierungbeinhaltet:
    - Programmierung
    - Dokumentation
    - Testen
  93. 93ProgrammierrichtlinienFormatierung: Abstände, Einrückung,...
    Namens-Konventionen: In Englisch, Camel Case
    Implementierungs-Dokumentation: JavaDoc, so wenig wie möglich, so viel wie nötig
  94. 94Test & AbnahmeTest: Finden von Fehlern & Nachweis der Funktionalität
    Abnahme: formale Abnahme: schriftlich Erklärung der Annahme eines Produkts
  95. 95Testarten (ergänzend)Smoke-Test: kurzer, minimaler Test
    Usability-Test: verstehen Anwender die Oberfläche?
    Entwicklertest: während der Entwicklung von Entwicklern selbst durchgeführt, frühzeitiges Erkennen von Fehlern
  96. 96Wartung vs. PflegePflege:
    - Änderung, Erweiterung
    - ist planbar
    Wartung:
    - ereignisgesteuert

Informações

Descrição
Kein Anspruch auf Vollständigkeit
Criado por
daniel-eberwein
Visualizações
70
Avaliação

Fale Conosco

Sobre o que é sua mensagem?

O que você acha do novo visual?

Você gostou?