Software Engineering II

Informatik, 4. Semester

Informatik, 4. Semester


Set of flashcards Details

Flashcards 54
Language Deutsch
Category Computer Science
Level University
Created / Updated 17.01.2017 / 28.11.2019
Weblink
https://card2brain.ch/cards/20170117_software_engineering_ii?max=40&offset=40
Embed
<iframe src="https://card2brain.ch/box/20170117_software_engineering_ii/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Von welchen Faktoren hängt die Wahl der Programmiersprache ab?

  • Kenntnisse des Teams
  • Anforderung des Kunden (Stichwort Integration in Systemlandschaft
  • Lizenzerfordernisse der Entwicklungswerkzeuge
  • Verfügbarkeit von notwendigen Frameworks und Bibliotheken

Was ist ein Framework?

  • Applikationsskelett, welches vom Entwickler angepasst (spezialisiert) werden kann, um Anforderungen optimal umzusetzen
  • wiederverwendbarer Entwurf; oft durch Menge von abstrakten Klassen + Zusammenspiel ihrer Instanzen beschrieben
  • effiziente Art der Softwarewiederverwendung
  • Programmierung von Rahmen, die um Methodenimplementierungen ergänzt werden können
  • können Steuerung gleichartiger Aufgaben übernehmen
  • typische Nutzung: Nutzer instanziiert Framework-Komponenten, d.h übergibt seine Objekte zur Bearbeitung durch das Framework
  • typischer Arbeitsschritt: Framework steuert, d.h. ruft Methoden der Nutzerobjekte auf

Was sind Bibliotheken?

  • stellen Standardlösungen für häufig wiederkehrende Probleme dar
  • typische Nutzung: Nutzer erzeugt und ruft Objekte (Klassen) der Bibliothek auf
  • sind geprüft und für Laufzeiten optimiert
  • ihre Dokumentation wichtig zum effizienten Einsatz
  • je größer Verbreitungsgrad, desto einfacher die Weiterverwendung von Ergebnissen

Wozu Frameworks und Bibliotheken?

  • decken oft benötigte Funktionalitäten ab --> Vermeidung von erneuten Implementierungen von Standardfunktionalitäten 
  • Wiederverwendung existierender Funktionalität --> Kosteneinsparung, gesteigerte Qualität

Auf welche zwei Arten erfolgt die Dokumentation in der Regel?

  • innerhalb der Methode: Kommentare beschreiben konkrete Aufgabe eines bestimmten Code-Segments
  • in Verbindung mit automatischen Dokumentationsgeneratoren: auch innerhalb der Klasse, aber Fokus liegt auf Methodenbeschreibungen; Verwendung definierter Tags --> Kommentare können automatisch ausgewertet werden --> Erzeugung einer umfassenden Dokumentation

Welche Arten von Dokumentationen gibt es?

  • Verwaltungsdokumentation (Autor, Datum, ...)
  • Schnittstellendokumentation (Voraussetzungen, Ergebniszusicherungen, ...)
  • Deklarationsdokumentation (Bedeutung von Konstanten + Variablen)
  • Ablaufdokumentation (Verdeutlichen des Algorithmus)
  • Strukturdokumentation (statischer Aufbau des Programms; typisch durch Einrücken + Zwischentitel)

Welche Regeln gelten für das Dokumentieren?

  • konsistent
  • kein Nachbeten des Codes
  • schlechen Code + Tricks nicht dokumentieren, sondern neu schreiben
  • Programmstruktur durch Einrücken
  • geeignete Namen
  • Coderichtlinien beachten
  • falscher Code wird durch ausführliche Dokumentation nicht richtig
  • schlechter Code wird durch Dokumentation nicht besser
  • nicht überdokumentieren

Was ist bei der Entwicklung im Team zu beachten?

  • komplizierter als eine 1-Person-Entwicklung
  • Notwendigkeit definierter Entwicklungsprozesse
    • Verwaltung + Zuweisung der Tasks
    • definierte Namingconventions + Codestrukturierungen
    • Verwendung von Versionskontrollsystem
    • Verwendung von Continuous Integration Tools
    • Verwendung von Tools für Konfigurationsmanagement
  • Notwendigkeit definierter Codeverantwortlichkeiten

Was besagt die 1-10-100-Regel bzgl. der Kosten der Fehlerbehebung?

  • Faktor 1: bei Entdeckung durch den Programmierer selbst
  • Faktor 10: bei Entdeckung durch einen Tester
  • Faktor 100: bei Entdeckung im Live-Betrieb

Wie lässt sich "Softwaretest" definieren?

  • formeller Prozess
  • von speziellem Testteam durchgeführt
  • bewilligte Testfälle

Was sind die Ziele des Softwaretests?

  • Identifikation von Testfällen, mit denen die höchste Wahrscheinlichkit gegeben ist festzustellen, ob das Softwaresystem korrekt funktioniert
  • guter Test =hohe funktionale oder nichtfunktionale Abdeckung
  • Idenktfikation von Fehlern von Programmen
  • Fehler gefunden --> Test erfolgreich

Was sind die sieben Grundsätze des Softwaretests?

  1. Testen zeigt die Anwesenheit von Fehlern
  2. Vollständiges Testen ist nicht möglich
  3. Mit dem Testen frühzeitig beginnen
  4. Häufung von Fehlern
  5. Wiederholungen haben keine Wirksamkeit
  6. Testen ist abhängig vom Umfeld
  7. Trugschluss: Keine Fehler bedeuten ein brauchbares System

Was gibt es für Arten von Tests?

  • Integrationstest
    • Big-Bang-Integration
    • Top-Down-Integration
    • Bottom-Up-Integration
    • Vertikale Integration
  • Systemtest
  • Akzeptanztest
  • Funktionale Softwaretests
    • strukturelle Abdeckung mit White-Box-Tests
      • Anweisungsüberdeckungstest (C0)
      • Zweigüberdeckungstest (C1)
      • Einfacher Bedingungsüberdeckungstest (C2)
      • Mehrfach-Bedingungsüberdeckungstest (C3)
      • Pfad-Überdeckungstest (C4)
    • funktionale Abdeckung mit Black-Box-Tests
      • Äquivalenzklassenanalyse
      • Grenzwertanalyse
      • Informelle Testmethoden
    • Kombination von beiden mit White- und Black-Box-Tests
  • Nichtfunktionale Softwaretests
    • Performance-Test

Wie sieht das Fehlermanagement aus?