Software Engineering II
Informatik, 4. Semester
Informatik, 4. Semester
Kartei Details
Karten | 54 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 17.01.2017 / 28.11.2019 |
Weblink |
https://card2brain.ch/box/20170117_software_engineering_ii
|
Einbinden |
<iframe src="https://card2brain.ch/box/20170117_software_engineering_ii/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
Welche Bedingungen müssen vor Start der eigentlichen Implementierung erfüllt sein?
- Vorhandensein einer Architektur
- Definition eines Teams
- Treffen einer Entscheidung bzgl. Programmiersprache und Toolunterstützung
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?
- Testen zeigt die Anwesenheit von Fehlern
- Vollständiges Testen ist nicht möglich
- Mit dem Testen frühzeitig beginnen
- Häufung von Fehlern
- Wiederholungen haben keine Wirksamkeit
- Testen ist abhängig vom Umfeld
- 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
- strukturelle Abdeckung mit White-Box-Tests
- Nichtfunktionale Softwaretests
- Performance-Test
Was sind Ziele und Aufgaben des Entwurfs? (6 Stück)
- Entwurf eines Systems, das die Anforderungen des Kunden optimal beschreibt
- sorgt für Umsetzung der nicht-funktionalen und funktionalen Anforderungen
- Beschreibung des Systems auf technischer Ebene
- Ausgangspunkt für Implementierung
- Festlegung auf Architektur des Systems
- auf Bausteinebene
- auf Gesamtsystemebene
- Kommunikationsmittel zwischen den Projekt-Stakeholdern
Wie lässt sich "Architektur" definieren?
- Beschreibung von Systemstrukturen
- erstes Artefakt zur Analyse der Einhaltung von Qualitätseigenschaften
- Beschreibung der Beziehung von Komponenten und Verbindungen
- fundamentale Organisation eines Systems, verkörpert durch
- seine Komponenten,
- deren Beziehungen,
- deren Umwelt,
- die Prinzipien hinter dem Design + der Evolution des Systems
In welche zwei Kategorien lässt sich ein Entwurf unterteilen?
- strategischer Entwurf
- taktischer Entwurf
Was versteht man unter einem strategischen Entwurf?
- Architektur im „Großen“
- Entwurf auf Systemebene
- Entscheidungen über Technologie, Gesamtaufbau des Systems, etc.
Was versteht man unter einem taktischen Entwurf?
- Architektur im "Kleinen“
- Entwurf auf Bausteinebene (also im klassischem SWE-Sinne)
- Entscheidungen über Aufbau der einzelnen Bausteine (z. B. Entwurf der Klassen, usw.)
Die Architektur ist Hauptträger der Systemqualitäten. Welche drei sind dies?
- Performanz
- Veränderbarkeit
- Sicherheit
Fasse das Ziel des Entwurfs in einem kurzen Satz zusammen.
Das Ziel des Entwurf ist eine Abbildung eines Systems, das die Anforderungen optimal beschreibt.
Welche Arten von Anforderungen gibt es? Handelt es sich um Faktoren hinter dem stragischen oder dem taktischen Entwurf?
- Nicht-funktionale Anforderungen:
- z. B. Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit, Übertragbarkeit
- Faktoren hinter strategischem Entwurf
- Funktionale Anforderungen:
- z. B. Verarbeitung von Eingaben, Erstellen und etwaige Verarbeitung von Ausgaben
- Faktoren hinter taktischem Entwurf
Was sind Voraussetzungen, um Anforderungen in eine Architektur umzusetzen?
- Erfahrung des Softwarearchitekten
- Unterstützung durch Auftraggeber
Wie hat sich die Softwarearchitektur mit der Zeit verändert?
- prozedurale --> objektorientierte Programmiersprache
- Großcomputer --> mobile Geräte
- monolithische Applikationen --> modulare Systeme
- Unified Modeling Language (UML) zur Abbildung von komplexen Systemen
- 80er, 90er, frühe 00er: Rich-Client-Applikationen
- durch PHP, Java Server Pages, ASP.net --> Webapplikationen
- heutzutage: Server Oriented Architecture (SOA)
Was ist eine Rich-Client-Applikation?
- gesamte Geschäftslogik und Funktionalität der Anwendung wird so weit wie möglich in die Desktop-Applikation verlagert
- etwaiges Backend (z. B. Datenbank-Server) bedient sich ausschließlich Funktionalitäten, die nicht in der Desktop-Anwendung abgebildet werden können
Nenne drei historische Softwarearchitekturen.
- 2-Tier-Architekur
- 3-Tier-Architektur
- Service-orientierte Architektur (SOA)
Was versteht man unter einer 2-Tier-Architektur?
- Anwendung + Backend-Komponente --> Trennung von Logik/Präsentation + Datenbank
- Vorteil: zentral verfügbare Datenmenge, die von mehreren Benutzern verwendet wird; nur an einer Stelle Administrationsaufwand
- Nachteil: Notwendigkeit von erweiterten Maßnahmen zur Sicherstellung der Datenkonsistenz
Was versteht man unter einer 3-Tier-Architektur?
- Geschäftslogik wird aus Anwendungsschicht extrahiert und ähnlich wie die Datenbank zentral verfügbar gemacht --> Präsentation + Logik + Datenbank
- Vorteile: konsistenter Datenzugriff + bessere Wartbarkeit
- Nachteil: längere + detailliertere Planungsphase
Was versteht man unter einer Service-orientierten Architektur?
- Services als komplett eigenständige Komponenten
- Neukonfiguration der Kommunikation mit minimalem Aufwand möglich
-
- 1 / 54
-