Softwaretechnik (Fach) / ADV BKI Abschlussprüfung 2010 (Lektion)
In dieser Lektion befinden sich 66 Karteikarten
Kompletter Lehrplan der Aufbaustufe
Diese Lektion wurde von aemik erstellt.
Diese Lektion ist leider nicht zum lernen freigegeben.
- JDBC in Java benutzen Class.forName("package.Treiberklasse"); Connection c = DriverManager.getConnection(url, login, password); Statement s = c.createStatement(); ResultSet r = s.executeQuery("sqlAusdruck"); while (r.next()) { ... }
- Was ist Sofwaretechnik? ist ein Fachgebiet der Informatik, das sich mit der zielorientierten Bereitstellung und systematischen Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen beschäftigt.
- Grundbegriffe für die Unterstützung des SW-Entwicklung-Prozesses Prinzipien: allgemeine Grundsätze (wiederverwendbar, strukturiert, Abstraktion, Hirarchisierung, Vererbung, Modularisierung, Kapselung, usw.) Techniken: Handwerkszeug (Struktogramme, Pseudocode, usw.) Methoden: Handlungsanweisungen, benutzen Methoden und sind aus den Prinzipien abgeleitet Werkzeug: Programm, dass eine Technik unterstützt Prinzipien werden umgesetzt in Methoden, Methoden benutzen Techniken, Methoden werden realisiert durch Werkzeuge Werkzeuge halten Prinzipien ein
- Allgemeine Instanziierung eines DB-Treibers in Java Application benutzt Driver Manager und erzeugt dynamisch oder statisch ein Driver Objekt, dieses kreiert mit connect() ein Connection Objekt, dieses kreiiert mit createStatement() ein Statement Objekt, dieses kreiiert mit executeQuery() ein ResultSet Objekt
- Prepared Statement in Java JDBC - gekapseltes SQL-Befehlsgerüst - dient dazu, Befehl und Daten zu trennen um das Befehlsgerüst wieder verwenden zu können - schneller und sicherer PreparedStatement ps = c.prepare Statement("UPDATE tabelle SET spalte=? ..."); ps.setString(1, "..."); ps.execute();
- Definition JDBC ist ein generisches (allgemeines) Programmgerüst (Framework) besteht aus herstellerabhängigen Klassen/Interfaces dient dazu DB-Zugriffe möglichst allgemein (herstellerunabhängig) zu codieren.
- Methoden der Problemanalyse 1.) Fallbeispiele aus Anwendersicht festlegen 2.) Begriffe einführen für Dinge und Abläufe 3.) Festlegen von Ablaufstrukturen an der Oberfläche 4.) Benennung der Tätigkeiten die im Hintergrund ablaufen
- DB-Cursor Current Set Of Records - ist eine Satzmenge aus einer rel. DB - wird vom DB-Managementsystem kontrolliert - besteht aus Tupeln, auf die einzeln zugegriffen werden kann
- ResultSet Objekt - kapselt den DB-Cursor - diverse Navigationen innerhalb der Ergebnismenge möglich - next() positioniert den Satzzeiger des Cursors - Lesen durch getString(int colIndex) oder getString(String colName)
- Standardlogik zur Verarbeitung von Datenmengen (sequentiell) Read ahead: Datensatz lesen, solange wie erfolgreich gelesen (Datensatz verarbeiten und Datensatz lesen) lokales Lesen: solange bis lesen nicht erfolgreich (Datensatz lesen, wenn erfolgreich verarbeiten)
- Arten der Parameterübergabe 1.) Rückgabe eines Parameters durch return 2.) Übergabe eines Parameters auf dessen Referenz geschrieben wird (Objekt) 3.) Übergabe eines Parameters der kopiert wird (primitiver Datentyp)
- Trace (Verarbeitungslogik) Fallunterscheidung eines Programmablaufs und Zustände der Variablen
- CachedRowSets Daten werden komplett im Speicher gehalten. Danach Synchronisation
- WebRowSet Daten werden in XML Format gehalten und verschickt.
- JDBCRowSets ResultSets, die durch Wrapper-Schicht in Java-Beans Format gebracht werden.
- Varianten für die Kommunikation zwischen Programmteilen 1.) "all in one" - Eine Methode für alles 2.) Eine Klasse und mehrere Methoden (DB-Connection entweder global oder in einer der Methoden) 3.) Mehrere Klassen - Zuständigkeitsverteilung
-
- SQL Injection - ist dynamisches SQL - Struktur entsteht zur Laufzeit - Laufzeitfehler und Sicherheitsrisiko sind die Folge - Besser: Prepared Statement
- Treibermanager (DriverManager) - Verwendung: Class.forName("treiberklasse"); - Wird in Register eingetragen - einmalig in Java Programm - statisch
- Schichtentrennung - Trennung von Zuständigkeiten - Flexibilität bei verschiedenen Präsentationstechnologien - Präsentationsschichtfremde Exception umwandeln (z.B. SQL zu IllegalArgument) - Oder durch Zustandsvariable als Ausgabeparameter - Oder durch abfragende Zustandsvariable
- Iterator Interface - Verwaltung von großen Containern - Durchquerung von Elementen in einem Aggregat
- Reflection - Prämisse: Klassennamen entsprechen Datenbanktabellennamen - Klasse Class (forName(String className), newInstance(), getFields(), getMethods(), getName()) Code: Class deskriptor = Class.forName(ss_classname); Object aktObject = deskriptor.newInstance(); Field[] t_Field = deskriptor.getFields(); Class fieldType = t_Field[i].getTypes();
- Entity Bean - ist ein fachlicher Typ, dem lediglich eine Datenstruktur zu Grunde liegt - besitzt eine Konvention - dient zum vereinfachten und flexiblen Datenaustausch
- Datenbank View komplexe Sicht auf Datenbestand zur Verfügung stellen CREATE VIEW v_name AS SELECT s.oid AS id FROM t_table1 s, t_table2 a WHERE s.oid = a.oid
- SQLJ Sprache für rel. DBs, die in Java eingebettet ist wird durch einen Preprozessor in Java kompiliert Effizienzsteigerung zur Ausführungszeit durch die Umwandlung erledigt herstellerabhängig (Präprozessor) kein dyn. SQL
- Task Prozess unter der Verwaltung des Betriebssystems
- Prozess Ablauf von Zustandsänderungen
- Thread Prozess wird von der VM verwaltet
- Layers Presentation Layer Business Layer Database Layer (z.B. JDBC) Datasystem Layer (z.B. DBMS)
- Tiers Client PC Application Server DB Server
- Layers across Tiers Single Tier: Alle Layer auf einem Tier (Client PC) Fat-Client (2-Tier): PL, BL, DL auf Client PC, DS auf DB Server Fat Server (2-Tier): PL auf Client PC, PL, BL, DL auf DB Server Multi-Tier: PL auf Client PC, andere Schichten verteilen sich auf App-Server und DB-Server
- Architectural Choices Fat Client: hat alle Schichten auf Client-PC und kann auf verschiedene Datenbanksysteme zugreifen Multi-Tier: PL auf Client-PC, BL und DL in AppServer mit Connection Pooling für verschiedene Datenbanksysteme Transaction Server: Wie Multi-Tier, aber mit zusätzlich Thread Pooling Load Balancing: Verteilung der Clients auf verschiedene App-Server
- SW-Architektur Beispiel: "CBT" class DlgCBT (Client): Erstellt Instanz von CBT_Tutor abstract class CBT_Tutor (Client): erstellt in seiner static getInstance Methode ein CBT_Tutor_Stub Objekt CBT_Tutor_Stub (Client): erbt von CBT_Tutor und erstellt in seinem Konstruktor eine Socket-Verbindung, Businessmethoden werden alle überschrieben, Vector wird mit Stringobjekt (enthält Name der Methode) und Entityobjekt gefüllt und auf Socket geschrieben CBT_ApplicationServer (Server): erbt von Thread, horcht auf dem Socket, bei Accept wird ein neues Verbindungsobjekt erstellt. Verbindung (Server): erbt von Thread, bekommt im Konstruktor ein Socket Objekt übergeben, castet auf einen Vector und übergibt diesen an CBT_Skeleton, parallel wird noch ein Vector für ein Ergebnis bereitgehalten um dem Client eine Rückmeldung geben zu können. CBT_Skeleton: Gerippe, Gerüst, Aufgabe: Demarshalling, Ankommendes Objekt auslesen und weiterleiten an zuständige Klasse, erstellt Instanz von CBT_Tutor (Server) und mappt den Vector auf die passenden Methoden. CBT_Tutor (Server): verweist Methoden auf CBT_DbBroker CBT_DbBroker (Server): Datenbankzugriff
-
- facade pattern (Fassadenmuster) Kapselung des Subsystems Abhängigkeiten zwischen Klassen reduzieren einheitliche Schnittstelle verbirgt Realisierungsdetails häufig als Singleton implementiert Klient greift über Fassadenklasse auf Subsystem zu Entkopplung bietet fachliche Dienste an
- Singleton von einer Klasse kann nur ein Objekt erzeugt werden zentraler Zugriffspunkt privater Konstruktor statische Methode als Zugriffspunkt Multithreading-Problem: "synchronized" bei getInstance(), Instanz in statischer Variable erstellen, statische Variable "volatile" setzen und doppelte null-Prüfung
- Java Virtuelle Maschine Zwischenschicht zwischen OS und Programm (Java Byte Code) Ausführungsmaschine: I,Herzstück, nterpretation von Bytecode in Maschinencode, für jeden Thread eine eigene, eigener Stack und Programmzähler Thread: Kontrollflüsse, parallele (quasi) Abarbeitung Weitere Komponenten: Klassenlader, Garbagecollector, Stack, SecurityManager
- Proxy Entwurfsmuster Stellvertreterobjekt Zugriff auf Objekt kontrollieren Proxy-Objekt wird von Klienten anstatt des Originalobjekts verwendet und leitet diese an das Eigentliche weiter Klient nutzt Schnittstelle die durch Proxy bereitgestellt wird Nützlich bei Netzzugriffen auf entfernte Objekte Proxy ist lokale Kopie des Originalobjekts, um erst später die Änderungen zu aktualisieren
- Architektur eines Relationalen DB-Systems Anwendungsprogramme >> DBMS-Request >> DBMS << DBMS Response << Datenbank
- Tablespaces im DB-System Logische Sicht: Tablespaces Physische Sicht: Dateien haben feste Dateigröße und sind dynamisch erweiterbar Zugriffsrechte
- DB-Block ist ein Block unter der Verwaltung des DBMS DB-Block Kopf: row directory (row-id und Verweis auf Speicheradresse), transaction directory Nutzdaten mit min. und max. Füllgrad Daten der einzelnen Spalten bestehen aus Länge und Inhalt
- Zusammenspiel Oracle Server-Prozesse, DB-Cache und Hintergrundprozesse SQL update Oracle Server Prozess / Thread starten Änderung in DB-Block (Anhand von altem Datensatz in Datenbank) in DB-Cache ablegen. alten Datensatz in Rollback-Puffer speichern alten und neuen Datensatz in Redo-Log Puffer speichern Redo-Log Puffer in Redo-Log Files speichern DB-Block aus DB-Cache in Datenbank schreiben Redo-Log Files archivieren
- Integritäts-Regeln innerhalb der Datenbank primary key: Spalte in Tabelle, Werte sind einmalig unique: wie primary key, aber auch null check: Bedingung für jeden Datensatz default: Standardwert für Attribut foreign key references: Fremdschlüssel, der in Beziehung zu einem primary key einer anderen Tabelle steht.
- Datenbank Sequence erzeugt automatisch eindeutige Integerzahl CREATE SEQUENCE table_id_seq (...) table_id_se.NEXTVAL: gibt nächsten Sequence-Wert zurück SELECT table_id_se.CURRVAL FROM SYS.dual: aktueller Wert
- Datenbank Index besteht aus Spaltenwerten und Zeigern, die auf Datensätze der eigentliche Tabelle zeigen Vermeidung von Full Table Scan CREATE INDEX i_table ON table spaltenname Index sinnvoll wenn: Tabelle groß, häufige Abfragen, wenig Zeilen abgefragt werden, Tabelle selten geändert wird
- PL/SQL Allgemein besteht aus Prozeduren, Funktionen und anonymen Blöcken optionalen Abschnitt für Deklarationen ausführbaren Ausschnitt optionalen Abschnitt für die Behandlung von Exceptions
- PLSQL Prozeduren CREATE (OR REPLACE) PROCEDURE proc (parameterliste) AS ... IN, OUT, IN OUT geben an, wie die Prozedur auf die Parameter zugreifen kann (Lesen, Schreiben, Beides) Aufruf: proc(parameter)
- PL/SQL Function CREATE (OR REPLACE) FUNCTION func_name (parameterliste) RETURN (datentyp) IS ...
- DB Trigger Sicherheit, Auditing, Datenintegrität, Referentielle Integrität, Tabellen-Replikation, Abgeletiete Daten, Protokollierung CREATE OR REPLACE TRIGGER triggername Trigger Zeitpunkt: before / after Trigger Ereignis: insert, update of (spalten), delete Trigger-Typ: for each row Trigger kann deklaratives Constraint nicht unterlaufen
- Datenintegrität Allgemein Korrektheit und Aktualität der Daten Datenkonsistenz: Kontrolle der Dateneingaben Datensicherheit: Sicherstellung des Dauerbetriebs Datenschutz: Schutz der Datenverwendung
- Datenintegrität: Transaktionen ununterbrochene Folge von Aktionen Überführung in einen neuen konsistenten Zustand ACID-Eigenschaften Atomarität: vollständig oder garnicht Konsistenzerhaltung: Transaktion hinterlässt eine konsistente DB Isolation: isoliert von anderen Transaktionen Persistenz: alle Änderungen in der DB müssen gespeichert werden
- Datenintegrität: Mehrbenutzerbetrieb Dirty Read: WR-Konflikt, Zweite Transaktion liest schmutzige Daten der ersten Transaktion, die noch nicht commited wurde Lost Update: WW-Konflikt, Erste Änderung wird durch zweite überschrieben Unrepeatable Read: RWR-Konflikt, Objektzustand wird durch zweite Transaktion verändert Phantom-Problem: Spezialform des Unrepeatable Read Vermeidung der Anomalien durch Isolationskonzepte (Lock-Manager(Table, Table-Block, Row) Explizites Setzen von Sperren: Exclusive (nur einer kann Sperre setzen), Share (mehrere können Sperre setzen), Row Exclusiv, Row Share, Share Row Exclusiv Verwaltung über Transaktionstabelle mit Transaktionsnummern
-