SWARCH
Software Architecture HTWG Prof. Dr. Boger
Software Architecture HTWG Prof. Dr. Boger
-
- 1 / 42
-
Flashcards
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();