SWDE 2019

HSLU SWDE 2019 HS

HSLU SWDE 2019 HS


A. B.
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik auf Universitätsniveau, mit Fokus auf Softwareentwicklung und Architektur. Sie decken Bereiche wie Modultests, Schnittstellen, Java-Programmierung und Fehlerbehandlung ab, wobei auch Werkzeuge und Techniken wie RMI, JPA und Unit-Testing-Frameworks wie JUnit behandelt werden. Die Karteikarten sind besonders nützlich für Studierende und Entwickler, die ihr Verständnis von Softwarearchitektur, Teststrategien und objektorientierter Programmierung vertiefen möchten, um robuste und wartbare Software zu erstellen.
Cartes-fiches
61
Utilisateurs
8
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
29.12.2019 / 29.01.2022

Cartes-fiches

Was überprüfen wir beim Testen? Wie wird getestet?

Wir überprüfen das Verhalten eines Programms anhand der Spezifikation.

Es wird so viel wie möglich automatisch gestestet, da manuelles Testen ser aufwändig und zeitintensiv ist.

Testing. Wie finden wir Syntaktische Fehler?

Diese werden durch den Kompiler aufgedeckt. Syntaktische Fehler sind Abweichungen von der Sprachsyntax.

Bsp: if (i = 10) then { i = 0; }

Bsp: Der Leser list den Buch.

Testing. Wie finden wir Semantische Fehler?

Fehler in der Semantik sind Abweichungen oder Unstimmigkeiten die auf Kenntnisse über Dinge beruhen --> Inhaltliche Fehler.

Bsp. Die Erdnuss ass einen Elefanten

Bsp. double Kelvin = celsius - 273.5d;

Wie finden wir funktionale Fehler? Was sind funktionale Fehler?

Funktionale Fehler sind Abweichunggen von den Anfroderungen.

Bsp: Ein Liter Bier kostet 1000CHF

Diese Fehler lassen sich nur bedingt durch Testen finden.

Was bedeutet das "Testen"?

Testen ist das systematische, gezielte und möglichst effiziente "Durchprobieren" nach verschiedenen Qualitätskriterien.

Kein chaotisches Durchprobieren! Testen mit überlegten Eingabedaten und erwarteten Testwerten.

Wie aussagekräftig sind Tests?

Mit Tests kann sich nur das Vorhandensein von Fehlern zeigen, nicht aber die abwesenheit solcher. Der Test zeigt nur dass das Programm für die eingegebenen Daten korrekt läuft.

Das bedeutet es müssen die Testwerte so gewählt werden dass Normalfälle, Sonderfälle und Ausnahmefälle geprüft werden. Bei einem Sortieralgorithmus bedeutet das

- beliebige Fälle (Normalfälle)

- vorsortierte Daten, keine Daten etc. (Sonderfälle)

- ungültige, nicht sortierbare Daten (Ausnahmefälle)

Was bedeutet Unit Test? Was sind die Vorteile von Unit Tests

Dass nur eine Methode, Klasse oder Einheit getestet wird. Der Vorteil bei diesen Tests ist dass diese einfach automatisierbar sind, da diese klein, übersichtlich und schnell ausführbar sind.

Was ist ein bekanntes Unit Testing Framework? Wie läuft die Verifikation der Testfälle ab?

Framework: JUnit

Verifikation findet automatisch statt, da die Testfälle immer "self-validating" ausgeführt sind.

Welche Testarten gibt es?

Unit Tests, Inegrationstests (Man testet mehrere Klassen/Module und Teilsysteme in ihrem Zusammenspiel) und Systemtests ( Man testet das ganze System bestehend aus allen Klassen und Einheiten)

Testing. Was sind "Test Doubles"? Wofür dienen sie?

Ein Double ist ein Platzhalter für die echte, produktive Implemantion während des Testes.

Test Doubles dienen dazu den Aufwand für Integrations-Tests zu reduzieren, indem man stattdessen mehr Testfälle als einfachere Unit Tests realisieren kann.

Testing. Welche Test Doubles gibt es? Wofür setzt man sie ein?

Dummy und Stub --> EInfache Ersatzimplemenationen um eine bessere Testisolation zu erreichen.

Spy und Mock --> Universalwaffen für Behavior-Testing mit Hilfe von Mocking-Frameworks.

Fake --> Eher aufwändige Implementation, bis zur vollständingen Entkopplung vom Original. Muss sich lohnen!

Was ist Software Architektur?

Architektur ist eine Abstraktion. es wird etwas zusammenfassend und vereinfachend dargestellt. --> Modellierung

Sie beschreibt ein System durch:

- Struktur und Aufbau (Sub- und Teilsystemen, Sichtung, Zwiebel, Verteilung)

- darin enthaltene Softwareteile ( Gegliedert nach Aufgaben, Zuständigkeiten, Komponenten, aber auch gegliedert nach Technologien)

- deren Beziehungen untereinander ( Abhängigkeiten, Schnittstellen, Datenflüsse, Deployment)

Was ist eine fundamentale Basis der SW-Architektur?

Gliederung eines Systems in aufeinander aufbauende, funktional klar getrennte Schichten. Diese Kommunizieren über Schnittstellen. Abhängigkeit nur in Richtung der tieferliegenden Schicht. (Lasagnenaufbau)

Was ist unter "deklarativer GUI Beschreibung" zu verstehen und was sind die Vorteile dieser?

JavaFX kann auch im Quellcode erstellt werden. Es ist aber einfacher diese in der XML basierten JavaFX Markup Language (FXML) deklarativ zu beschreiben. Die GUI Komponenten (View) werden mit Hilfe von FXML beschrieben.

Vorteile:

- Schnellere GUI Erstellung (In XML Datei)

- Bessere Code-Wartbarkeit

- GUI Erstellung kann von einem GUI Designer vorgenommen werden, während das Verhalten von einem Programmierer implementiert wird

- einfachere Anpassung von unterschiedlichen Ausgabegeräten., da einfach eine gerätespezifische FXML-Datei erstellt wird.

Was ist OR Mapping und was sind die Vor- und Nachteile?

Object Relational Mapping bezeichnet dass der Entwickler mit vollwertige Objekte in die Datenbank speichert und dort holt Die Abbildung auf Relationen (Tabellen) mit SQL übernimmt eine separate Instanz.

Was ist ein OR Mapper?

Er ist die Instanz die die Abbildung von Objekten auf Relationen (Tabellen) übernimmt.

Was sind die wichtigsten von JPA zur Verfügung gestellten Annotationen und deren Bedeutung?

-@OneToOne [ 1 : 1 ]

-@OneToMany [ 1 : m ]

-@ManyToOne [ m : 1 ]

-@ManyToMany [ m : n ]

Mit den Annotationen werden die unterschiedlichen Beziehungen zwischen einzelnen Objekten (Vererbung inklusive) Abgebildet.

Was ist eine Eigenschaft der Java Persistence Query Language (JPQL)?

Erinnert an SQL, ist jedoch voll Objektorientiert.

EIne JPQL Abfrage muss mindestens ein SELECT und einen FROM Block haben.

Was sind die Eigenschaften der JPQL-Konstrukte Query, TypedQuery und NamedQuery?

- Das Interface javafx.persistence.Query ist die zentrale Schnittstelle bei JPA Abfragen und immer dann gefragt , wenn der Entity Primärschlüssel nicht zur Verfügung steht. (Query query = em.createQuery ("SELECT p FROM Person);

- Das Interface javafx.persistence.TypedQuery < ermöglicht die Abfragen, die einen typisierten Rückgabewert zurückgeben. (TypedQuery<Person> tQuery = em.createQuery ("SELECT p FROM Person p", Person.class);

- Mit JPA können die benannten Abfragen ( named queries ) definiert werden, die mit eindeutigen Namen versehen und später beliebig oft verwendet werden können (@NamedQuery name = Student.findBySemester ",

query= "SELECT e FROM Student e WHERE e.semester semester)

Was ist unter RMI zu verstehen und was sind die Stärken und Schwächen von RMI?

Remote Method Invocation ist eine Middleware, mit der die Entwicklung von verteilten Anwendungen in Java realisiert werden kann. Es ist ein Mechanismus mit dem entfernte Objekte aufgerufen werden können.

Vorteile:

- Details der Netzwerkkommunikation werden maskiert

- die Verteilung von Objekten durch einen Namensdienst wird ermöglicht (RMI-Registry)

- bietet eine synchrone Kommunikation

Nachteile

- Ist Java to Java only

- RMI verwendet den Namensdienst, dieser ist sehr einfach und genügt für manche Anwendungen eventuell nicht.

WIe wird die Kommunikation zwischen Komponenten mit Hilfe von RMI realisiert?

- Client-Host und Client-Programm

- Server-Host und Server-Programm

- Namendienst (RMI Registry)

- Entferntes Objekt ( remote Objekt), Stub und Skeleton

Der RMI-Client besitzt die Referenz auf das entfernte Objekt und kann die gewünschten Methoden dieses Objekts aufrufen.

 

Étudier