SWARCH

Software Architecture HTWG Prof. Dr. Boger

Software Architecture HTWG Prof. Dr. Boger


J. F.
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik, insbesondere im Bereich der Datenbanken und Softwarearchitekturen. Sie vertiefen sich in verschiedene Architekturtypen wie MVC, Rich Internet Applications und Client-Server-Modelle, sowie in Technologien wie Hibernate, EBean und db4o. Die Karteikarten erklären, wie Objekte auf relationale Datenbanken abgebildet werden, und gehen auf die Vor- und Nachteile verschiedener Abfragesprachen und Persistenzstrategien ein. Diese Lernkarten richten sich an Studierende und Entwickler, die ihre Kenntnisse in der objektorientierten Datenbankprogrammierung und Softwarearchitektur vertiefen möchten.
Karten
42
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
15.03.2016 / 07.07.2017

Lernkarten

Was ist Softwarearchitektur?

Menge von prinzipiellen Design-Entscheidungen über ein Software-System

--> Jede Application hat eine Architektur

--> Architektur ist keine Phase der Entwicklung, ein fortlaufender Prozess

"Architecture is the art of making the arrows point in the right direction" , Robert Martin

Welche Punkte beeinflussen Architektur?

  • Funktionale Anforderungen
  • Nicht-funktionale Anforderungen
  • Finanzielle Einschränkungen
  • Erfahrung
  • Verfügbare Technologie
  • Bestehende Implementierungen
  • Verfügbare Bibliotheken, Komponenten oder Frameworks

Was ist eine Product Line?

Selbe Applikation aber andere Hardware,feature set, user interface oder anderes backend.

--> Verschiedene Kunden,Preismodelle

Was ist eine Produkt Familie?

Gleiche Applikation: Gleiche domain,Prozess,Interface,Technologie ABER unterschiedliche Datenmengen, unterschiedliche Abstraktionen.

Was macht ein Softwarearchitekt?

  • Versteht die gegebene Architektur (gegebenfalls)
  • Analysiert Anforderungen,Einschränkungen für die nächste Phase der Entwicklung
  • Wählt Sprache,Tool und Komponenten aus
  • Entwickelt Zielarchitektur für die nächste Entwicklungsphase
  • Verwaltet den Übergang
  • Dokumentiert die Architektur

Wie sind Teams gerne Strukturiert?

Viele Tems mit zwei zentralen Rollen organisiert: Dem Projektmanager und dem Softwarearchitekten. Kommunizieren viel miteinander. Andere Teammitglieder wären: Entwickler, Testentwickler, Deploymentspezialist, Perfomancespezialist, Dokumentierkerl

Was ist die Rolle des Projektmanagers?

  • Organisiert den Entwicklungsprozess
  • überwacht den Fortschritt
  • Passt auf Kosten auf
  • Stellt Deadlines sicher
  • Stellt Mitarbeiter ein
  • Kommuniziert mit höherem Management
  • Kommuniziert mit Kunden-Management

Was ist die Rolle des Architekten?

  • Verantwortlich für technische Qualität des Codes/der Architektur
  • Kommuniziert mit Kunden-domain-experten
  • Versteht anforderungen/Limitierungen
  • Kennt und bewertet viele Technologien um die passensten auszuwählen
  • Gibt Domain - wissen an die Entwickler
  • Berechnet Kosten
  • Verteilt Aufgaben an Entwickler
  • Kontrollt und hilft dem technischen Fortschritt der Aufgaben

Wer entwickelte das MVC-Architekturmuster?

Reenskaug ca 1970

Was beudeutet das Non-strict Layering 1 bei MVC? ( Nachteile)

Der Controller greift auf das Model zu, das Model auf die View.

Der Nachteil: Model hat Verbindung zur View, nimmt man das Model als Objektbaum ist die View mit drin! -> Viel zu groß wenn man es in die DB stecken mag

Was beudetet das Non-Strict-Layering 2? (Nachteile)

der Controller greift auf das Model zu, die View greift auch auf das Model zu. Die View ändert also direkt Daten

Nachteile: Wird das Model ausgetauscht kann das zu Problemen mit der View führen.

Wie liegen die schichten bei dem Architekturtyp Console?

Server: Model,View,Controller         Client: -

Wie liegen die schichten bei dem Architekturtyp Fat Client?

Server: -     Client: Model,View,Contrller

-> Eigentliche Verarbeitung der Daten wird vor Ort auf Client vollzogen

Wie liegen die schichten bei dem Architekturtyp Rich Client?

Server: Model,           Client: Controller, View

-> Datenhaltung wo anders ( z.B. SAP)

Wie liegen die schichten bei dem Architekturtyp Web Applikation)

Server: Model, Controller        Client: View

->Thin client: Stark auf andere Computer angewiesen

Wie liegen die schichten bei dem Architekturtyp RIA? (Rich Internet Application)

Server: Model, Controller               Client: Controller, View

--> Teil des Controllers auf Client, teil auf Server

Wie liegen die schichten bei dem Architekturtyp Mobile?

Server: Model       Client: Model, View, Controller

-> Datenhaltungsschicht repliziert auf Server

Was bedeutet Build by Feature?

Projekt nach Features gruppiert, pro Feature dann z.B. MVC.

Bsp.: Packages: com.app.doctor, com.app.drug, com.app.patient, com.app.security, ...

Was bedeutet Build by Layer? Z.b. com.app.model , com.app.view, com.app.controller  , in den Packages selber dann die jeweiligen Schichten des Doctors, der drugs, des patients, ..

Projekt in Schichten aufgebaut (bsp. MVC) die die verschiedenen Features enthalten.

Was bedeutet ODBMS?

Object Database Management System

Welche Vorteile bringen ODBMS's?

- Einfach zu lernen

- Konsistentes Programmiermodell

- Schneller als RDBMS für komplexe Daten

Was sind die Schlüsseleigenschaften von db4o?

  • keine Umwandlung/Mapping benötigt
  • Klassen müssen nicht geändert werden um Objekte persistent zu machen
  • eine Zeile um Objekte zu speichern
  • Läuft lokal oder in client/server-Mode
  • ACID transaktionen (Atomicity,Consistency, Isolation, Durability)
  • Object caching, integration mit nativer Garbage collection
  • Automatisches management und versionierung des Datenbankschematas
  • Geringe Größe

Was ist ein Object Container? (db4o)

  • Repräsentiert db4o datenbanken
  • stellt eine Transaktion dar, gestartet wenn container geöffnet
  •  

Wie kann man in db4o Objekte zurückholen?

Drei Abfrage Sprachen:

  • Query by Example:
  • Native Queries: In Programmiersprache selbst (typsicher!)
  • Simple Object Data Access (SODA);

Was sind die Grenzen von Query by Example?

  • Objekte müssen ohne initialisierte Felder kreiert werden können
  • Man braucht einen Konstruktor um Objekte ohne initialisierte Felder zu erzeugen
  • Man kann keine erweiterten Abfragen erstellen (AND,OR,NOT,...)
  • Man kann keine default werte vergeben

Was sind die Eigenscaften von Nativen Queries?

  • In der nativen Sprache (java)
  • typensicher
  • ändern sich beim Refactoren mit
  • Vollkommen objektorientiert
  • Können Methoden auf objekten in der DB ausführen

Was gibt es für Eigenschaften bei den Transaktionen?

  • Starten implizit wenn ein Container geöffnet wird
  • Aktuelle Transaktion wird commited wenn Container geschlossen wird
  • mann kann explizit commiten/aborten mit commit/rollback

Data Acces Object Pattern!

z.B.http://www.tutorialspoint.com/design_pattern/data_access_object_pattern.htm

Warum passen OO Sprachen und realtionale Tabellen nicht wirklich zusammen?

  • Granularität (Beschaffenheit)
  • Vererbung
  • Identität
  • Assoziationen
  • Datennavigation

Objekte müssten auf relationale Tabellen abgebldet werden

Was bedeutet Object-Relational Mapping?

Objecte werden auf relationen abgebildet. Beispiele hierfür sind z.B. Hybernate, Toplink, EBean, ...

Was ist Hibernate?

Framework f+r die object relationale Abbildung. Hat keine eigene DB, braucht eine DB dahinter sowie Berechtigungen dafür.

Kann fast auf jedes RDBMS mappen. Vermittelt den eindruck ein OODBMS würde existieren.

Was ist die Java Persistence API?

Eine Schnittstelle für Java-Anwendungen, welche die Zuordnung und Übertragung von Objekten zu Datenbankeintragungen vereinfacht.

Metadaten definieren das Mapping von OO zu Relations (Mit Annotationen oder als XML)

Wie wird Hibernate konfiguriert?

Als XML file, heißt hybernate.cfg.xml und kommt in den src ordner des Projektes.

Konfiguriert den Typ der Datenbank (MySQL, PostgreSQL,Oracle,..), die Datenbank selber (User,

passwort, port), Einstellungen für Hibernate, Dateien oder Klassen die die Persistenz selber konfigurieren

Wie kann in Hibernate gemappt werden?

  • automatisch (Nützlich für nicht pre-existing DB)
  • vom Entwickler (Nützlich für pre-existing DB)

Wie müssen Klassen für Hibernate vorbereitet werden?

  • Serialisierbares Interface
  • Konstruktor ohne Parameter
  • getter/setter für alle persistenten Attribute (Bean)
  • Attribut das als Primary Key dient (int id)

Wie bekommen wir eine Session in Hybernate?

In einer Singelton HibernateUtil erzeugen wir eine sessionFactory:

(p19, Hibernate)

Was gibt es in Hibernate für Query arten?

  • Native SQL
    • SQL wie von der DB unterstüzt
  • Hibernate Query Language (HQL)
    • wie SQL aber ohne OO navigation
    • bsp.: select <attribute> from <entity> where <properties>
  • Criteria
    • fließendes Interface
    • um Abfragend dnyamisch zu bauen
  • Am besten HQL für readability and Criteria für dynamic queries

Wie unterscheidet sich HQL von SQL?

  • Reine abfrage, keine Updatesprache
  • Versteht vererbung,polymorphie,object-orientierten besitz von Assoziationen
  • Die miesten teiele sind optional

Was sind die HQL-Basics?

  • Einfachste HQL-query: from Employee  (return all employees from db)
  • Implementiert die vier ANSI join typen und Oracle-Cartesian-joins
  • Clauses:
    • SELECT (optional)
    • FROM (required,except with Session.filter)
    • WHERE (optional)
    • Other: ORDER BY, GROUP BY, HAVING, ..
  • Use createQuery("").list() um Query zu bauen

Was ist Criteria?

  • API von Hibernate um Queries zu bauen (dynamisch)
  • ähnlich wie Java
  • bsp.: List<Book> books = session.createCriteria(Book.class).list();

Lernen