ppls

ppls

ppls


Set of flashcards Details

Flashcards 58
Language Deutsch
Category Chemistry
Level Primary School
Created / Updated 31.03.2018 / 31.03.2018
Weblink
https://card2brain.ch/box/20180331_ppls
Embed
<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?

  1. Requirements Specification
  2. Component Analysis
  3. Requirements Modification
  4. System Design with Reuse
  5. Development and Integration
  6. 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?

  1. Kontextsicht
  2. Laufzeitsicht
  3. Bausteinsicht
  4. 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)