ppls
ppls
ppls
Kartei Details
Karten | 58 |
---|---|
Sprache | Deutsch |
Kategorie | Chemie |
Stufe | Grundschule |
Erstellt / Aktualisiert | 31.03.2018 / 31.03.2018 |
Weblink |
https://card2brain.ch/box/20180331_ppls
|
Einbinden |
<iframe src="https://card2brain.ch/box/20180331_ppls/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was versteht man unter Architekturstile und -muster
- beschreibt Dekomposition eines einzelnen Software-Sytems
- Definieren Richtlinien und Vorgaben
Was sind klassische Architekturstile?
- Layer
- Peer-To-Peer
- Pipes-And-Filter
- Shared Data
- Client-Server
Architektur Elemente
- Elemente können hierarchisch angeordnet sein
- Zugriff auf Funktionen erfolgt über Interfaces
Wie können Interaktionen stattfinden?
- lokal
- Verteilt
- durch Mittlerkomponente
Was sind Direktiven?
Sind zusätzliche Eigenschaften, Richtlinien und Einschränken welche sich nicht unmittelbar aus der Dekomposition ergeben.
Oft durch: Qualitätsanforderungen, technische Anforderungen, grundlegenden Architekturstil, organisatorische Rahmenbedingungen
Was sind technische Schulden?
- Qualitätseinbußen, (un)bewusst falsche oder suboptimale technische Entscheidungen
- Implementationsschulden (Code-Smells), Architekturschulden, Testschulden, Dokumentationsschulden
Was ist die Idee und das Ziel der Komponentenorientierung?
- Idee: Erstellung von Software durch Komposition von vorgefertigten, unabhängigen Software Komponenten
- (Zusammenbau von Systemen aus einzelnen Teilen)
- Ziel: Reduktion von Kosten und Zeit
Wie wird eine Komponente implementiert?
- wird implementiert durch ein Objekt
- kann mehrere Interfaces besitzen
- weißt Abhängigkeiten aus
Was zeichnet einen Microservice aus?
- besitzt eine Implementierung
- kann ein UI besitzen
- kann mehrere REST-Interfaces besitzen
- besitzt einen Datenhaushalt
- hat eine Laufzeitumgebung
Welche Rollen gibt es bei der Entwicklung von Komponenten?
- -Entwickler
- -Zusammensteller (zum Teil Endanwender)
- Entwickelt Applikation durch (Wieder)verwendung von Komponenten
- System-Architekt
- Setzt LFU für Komponenten auf
- Einhaltung von Qualitätsanforderungen
Welche Eigenschaften hat eine Komponente?
Deployment ist wichtigste Eigenschaft einer Komponente!
Standardisiert Müssen standardisierten Komponentenmodell entsprechen; Vorgabe von Schnittstellen, Metadaten, Dokumentation, Zusammenstellungsart, Bereitstellung
Unabhängig Sollte ohne Abhängigkeiten auskommen; falls benötigt sollte die Abhängigkeit spezifiziert sein
Einsetzbar (deployable)Kann in LZU eingesetzt werden; liegen in Binärform vor; LZU baut auf OS auf
Dokumentiert Vollständig dokumentiert, damit Benutzer entscheiden können ob Ansprüche erfüllt sind; Beschreibung Syntax und Semantik
Zusammenstellbar Kann mit (mehreren) anderen zu höherwertigen Komposition zusammengestellt werden; Interaktion über öffentliche Schnittstellen
Was sind die Grundparadigmen der Objektorientierung?
- Kapselung des Zustands
- Abstraktion
- Generalisierung und Spezialisierung
- Polymorphie
Unterscheide Klasse und Komponente
- Komponenten legen keine Datentypen fest
- Implementierung von Komponenten sind verschlossen
- Komponenten sind sprachunabhängig
- Komponenten sind standardisiert
Komponente:
- Binärform
- Wird in LZU deployed
- kann aus LZU entfernt werden
- Deployment während der Laufzeit
Objekt:
- Source Code
- Java: nur Kompolierung der Klasse, dann flexibles Einsetzen in Classpath möglich, keine Verlinkung
Wofür stehts COTS und was zeichnet es aus?
Commerciall Off-the-Shelf
- seriengefertigte Komponenten, gleichartig aufgebaut
- geringe bis gar keine Konfiguration
- vollständige Software-Lösung
Was zeichnet ein Framework aus?
- Rahmenwerk
- Definiert Software-Architektur
- Enthält Klassen, Bibliotheken und LZU
- nicht unmittelbar ausführbar, hohe Anpassung notwendig
Inwiefern lassen sich Komponentenmodelle unterscheiden?
Serverseitig und Clientseitig
Erzähle was zu serverseitigen Komponentenmodellen.
- auf Application Server eingesetzt
- oft hohe Sicherheitsanforderungen
- Entwickler kann sich auf Geschäftslogik konzentieren
- Qualitätsanforderungen: hohe Skalierbarkeit, hohe Möglichkeit der Anpassung
- Transaktionsverarbeitung; Daten-Persistenz
- Bekannte Modelle: EJB, CORBA, .NET, OSGi
Wie lassen sich clientseitige Komponentenmodelle unterscheiden, was zeichnet die Unterscheidungen aus?
Thin-Client
- Darstellungs-Komponenten realisieren interaktive UI
- oft webbasiert
- Deployment auf Presentation Server; reine Darstellungs- und Interaktionslogik
- Bekannte Vertreter: Java Server Pages, Java Server Faces, AngularJS
Fat-Client
- ClientKomponenten realisieren interaktive UI; zum Teil mit Geschäftslogik
- Komponenten werden in Client-Umgebung eingesetzt
- Desktop-Anwendungen, Entwicklungsumgebungen
- Bekannte Vertreter: OSGi, JavaBeans, Active X, Adobe Flex, W3C Web Components, Rich Internet Applikation (RIA)
Wie lassen sich Schnittstellen differenzieren?
- required vs provided Interfaces
- operation vs port based
- drei Interface Levels zur Verifikation
- Kommunikation: Request-Response und Pipe & Filter
Differenziere Required und Provided Interfaces
- Required Interface (Halbkreis)
- Definiert Schnittstellen, welche die Komponente verwendet
- Wird zur Laufzeit ausgelesen und übergeben (Dependency Injection)
- Alternativ: aktive Einholung der Dependency
- Provided Interface (Lolipop)
- Was wird bereitgestellt
Differenziere operation und Port based Interfaces
- Operation-based
- Schnittstelle wird durch Reihe von Operationen mit Eingabe- und Ausgabeparametern definiert
- Port-based
- Ports sind Eintrittspujnkte für das Versenden und Empfangen von Daten
- Anwendung: Verarbeiten von Sensor-Daten in eingebetteten Systemen
Welche drei Interface Levels zur Verifikation der Kompatibilität kennst du?
- Syntaktisch (Signatur des Interface, Datentypen)
- Semantisch (Werte innerhalb entsprechenden Rahmen)
- Verhalten (Angabe über Reihenfolge, wie Operationen aufgerufen werden)
Differenziere zwischen Request-Response und Pipe&Filter
- Request Response (bidirektional)
- Sub-Varianten: Synchron vs Asynchron
- Pipe & Filter (unidirektional)
- Koponenten sind Filter, welche Daten verarbeiten
- Verbindungen sind die Pipes, welche Daten zur nächsten Komponente transportieren
- Vor allem für datenfluss-basierte Architekturen
Was weißt du zur JAR Hell?
- JAR kann nicht ausdrücken, zu welchen JARs Abhängigkeit existiert
- zu viele JARs säumen Classpath
- Fehlende Abhängigkeiten erst zur Laufzeit bekannt
- Überdeckung (Shadowing) Typ-gleicher Klassen aus verschiedenen JARs
Was weißt du zum Binding von Komponenten?
Vertical Binding: Verbindung von zwei Interfaces vom gleichen Typ
Horizontal Binding: Verbindung von Required und Provided Interface
First-Party: Verbindung durch Entwickler
Third-Party: wird vom Anwender verbunden
Differenziere Exogenous und Endogenous Composition
Exogenous
- explizite Verwendung von Konnektoren zur Interaktion zwischen Komponenten
Endogenous
- Binding ohne Konnektoren
- Binding, Interaktionsprotokolle und Fehlerhandling sind Bestandteil der Komponente
Welche Eigenschaften hat eine Laufzeitumgebung?
- Grundlegende Kommunikation zwischen Komponenten
- Konfiguration von einzelnen horizontalen Services (bspw. Datenbanken)
- Konfiguration von sicherheitstechnischen Einstellungen
- Konfiguration von Qualitätsanforderungen an die LZU
- Kontrolle des Lebenszyklus der eingesetzten Komponenten
Was macht die Management Schnittstelle einer LZU?
- Dynamisches Deployment
- Definition von Bindungen
- Testen von Komponenten
- Status-Anzeige von Komponenten
- Konfiguration der LZU
Welche Phasen gibt es bei der Entwicklung einer komponentenbasierten Applikation?
- Requirements Specification
- Component Analysis
- Requirements Modification
- System Design with Reuse
- Development and Integration
- System Validation
Erzähle etwas zu den einzelnen Phasen der Entwicklung einer komponentenbasierten Applikation
- Requirements Specification
- Component Analysis:
- Suche nach Komponenten, die (Teile) der Anforderungen erfüllen
- meistens kein exakter Match möglich
- Requirments Modificatoion: Überarbeitung der Anforderungen; Berücksichtigung der gefundenen Komponenten
- System Design with Reuse: Entwicklung Software-Architektur; Berücksichtigung der gefunden Komponenten; Auswahl Komponentenmodell und LZU
- Development and Integration: Integration der Software-Komponenten (mit Entwicklung)
Welche Variationen bei der Auswahl von Komponenten gibt es?
- In-House (Eigenentwicklung)
- Commercial off the shelf (vorgefertigt; kein Sourcecode)
- Open Source Components
- Outsource
Welche vier Sichten kennst du aus der Vorlesung?
- Kontextsicht
- Laufzeitsicht
- Bausteinsicht
- Verteilungssicht
Erzähle etwas zur Kontextsicht
- abstrakte Darstellung als Blackbox; logische Zusammenfassung von Systemen
- Schnittstellen werden nicht berücksichtigt, aber Abhängigkeiten
- Beim Datenfluss lediglich DTOs angeben (fachliche Sicht)
Umsetzung mit Paketdiagramm
Erzähle etwas zur Bausteinsicht
- zeigen Ekemente des Systems, Subsystem, Komponenten, Klassen und deren Schnittstellen
- Darstellung von Abhängigkeiten
Nimmt etwa 60% der Architekturmodellierung in Anspruch
Komponenten-, Kompositionsstruktur-, Klassen-
Erzähle etwas zur Verteilungssicht
- beschreibt Hardware-Komponenten (Server, Netzwerk, Firewall) mit beteiligten Protokollen
- Darstellung auch von LZU
Verteilungsdiagramm
Erzähle etwas zur Laufzeitsicht
- Welche Bestandteile des Systems zur Laufzeit existieren und wie diese zusammenwirken
- Modellierung von Boundary-Conditions: Systemstart, Shut-Down
Wie lässt sich eine Software Architektur dokumentieren?
- Modellbasierte Modellierung
- Architecture Description Language (ADL)
- Textuelle Architektur- Templates
Erzähle etwas zur modellbasierten Modellierung
- semi-formal (unpräzise, mehrdeutig)
- dient zur Kommunikation: Entwickler <-> Kunde
- UML
Erzähle etwas zur Architecture Description Language
- Textuell, formal
- weniger Kommunikation, eher Umsetzung / Analyse
- ACME, Darwin, C2, PeerCAT
Erzähle etwas zu textuellen Architektur Templates
- freisprachliche Beschreibung der Architekturelemente
- keine formale Vorgaben
- wenige Standards (arc42)