• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/73

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

73 Cards in this Set

  • Front
  • Back

Erläutern Sie einen möglichen Aufbau eines Projektmanagements

Zu Anfang wird ein Lenkungsausschuss gebildet. In diesem Lenkungsausschuss sitzt der Auftraggeber, Vertreter der Fachabteilung und Vertreter des Auftragnehmers. Von ihnen wird ein Projektleiter beauftragt, der wiederum seine Entwicklter oder Teilteamleiter und seinen Chefdesigner beauftragt. Der Projektleiter hält direkten Kontakt zu den Vertretern des Arbeitnehmers und berichtet dem Lenkungsausschuss. Zusätzlich benennt der Lenkungsausschuss einen Qualitätsbeauftragten, der an den Lenkungsausschuss und an den Projektleiter berichtet.

Wer sind typischerweise die Stakeholder in einem IT-Projekt und welche Funktionen und Ziele haben Sie?

Management
Erteilt die Genehmigung für das Projekt und gibt das Budget frei. Hat Unternehmensziele und –strategie im Blick



Anwender
Die eigentlichen "Kunden". Hat vorwiegend fachliche Ziele und tägliche Praxis mit dem Produkt.



Wartung und Service
Rechenzentrum rechtzeitig auf die Inbetriebnahme der Software vorbereiten, Telefonhotline schulen



Entwickler
Haben häufig Technologie-spzifische Ziele. Mögliche Probleme können durch Technologie-Verliebtheit entstehen.



Projekt- und Produktgegner
Sehen eigene Machtposition / Knowhow-Vorsprung in Gefahr. Wenn möglich Reduktion des Widerstands anstreben, sonst Anpassung Projektziele.


 

Warum ist die Aufwandsplanung der schwierigste Teil der Projektplanung und wie geht man damit um?

•    man weiß noch nicht viel über das Projekt
•    Anforderungen sind noch nicht klar
•    Anforderungen können sich ändern



Schätzung
•    Aufwand schätzen ohne eine exakte Anforderungsspezifikation
•    keine vollständige Liste von durchzuführenden Arbeitsschritten



Kalkulation
•    Aufwand auf der Basis eines Fachkonzepts kalkulieren, d.h.
    o    Daten- und Funktionsmodell liegt vor
    o    weitgehend vollständige Liste der durchzuführenden Arbeitsschritte liegt vor


 

9 Disziplinen RUP

Sechs "Kernarbeitsschritte"
•    Business Modelling
•    Requirements
•    Analysis and Design
•    Implementation
•    Test
•    Deployment
und drei "unterstützende Arbeitsschritte"
•    Configuration and Change Management
•    Project Management
•    Environment


 

4 Phasen RUP
Inception
 
Elaboration
 
Construction
 
Transition

RUP Inception

Erste Konzeptionsphase
•    Beschreibung des Ist-Zustands
•    ausformulieren eines klaren Ziels
•    Use Cases
•    Risiken identifiziert


 

RUP Elaboration

•    Architektur
•    Priorisierung der Use Cases bzgl. Risiken
•    Klassen- und Zustandsdiagramme mit UML
•    Prototypen
•    Projektplan


 

RUP Construction

•    UML Diagramme überarbeitet
•    integrierter und getesteter Code
•    Tests


 

RUP Transition

•    Abnahme und Akzeptanztests
•    Inbetriebnahme
•    Schulungsmaßnahmen

Beschreiben Sie die Softwareentwicklung mit RUP

RUP ist ein iteratives Vorgehensmodell zur Softwareentwicklung. Die Arbeitsschritte werden für jede Iteration in neun Disziplinen aufgeteilt.


 


Dazu gibt es in RUP vier Phasen, in denen die oben genannten Arbeitsschritte mehr oder weniger intensiv zum Einsatz kommen. Jede Phase ist in eine oder mehrere Phasen unterteilt und resultiert in einem Meilenstein.

Erläutern Sie die Softwareentwicklung mit Scrum

Scrum ist ein inkrementelles und iteratives Vorgehensmodell. Die Projektlaufzeit wird in Sprints unterteilt. Am Anfang wird entworfen, später programmiert und getestet. Jeder Sprint dauert ungafähr gleich lang und liefert am Ende ein funktionsfähiges Inkrement für die auszuliefernde Software.
Sprint = Mini-Release = Herzstück von Scrum
Am Anfang von jedem Sprint steht das Sprint Planning Meeting. Es ist zeitlich begrenzt (pro Woche Sprint ¼ Tag Meeting) und es werden zwei Fragen beantwortet:
•    Was soll im aktuellen Sprint erledigt werden? (User Stories auswählen)
•    Wie soll die ausgewählte Funktionalität realisiert werden ("done")?



Vor jedem Arbeitstag findet das Daily Scrum statt. Es dauert ca. 15 min und findet immer zur gleichen Uhrzeit statt. Drei typische Fragestellungen werden von jedem Entwickler beantwortet:
•    Was habe ich gestern gemacht und erreicht?
•    Was will ich heute machen?
•    Welche Probleme habe ich noch?



Nach jedem Sprint findet das Sprint Review statt. Dort wird das Inkrement präsentiert und Feedback ausgetauscht.
Anschließend findet die Sprint Retrospektive statt, das der Reflexion der Teamarbeit dient.


 

Welche Rollen gibt es im SCRUM Modell?

Product Owner


 


Team


 


ScrumMaster

Was macht der Product Owner bei Scrum?

•    Verantwortlich für das künftige Produkt
•    Verwaltet Product Backlog
•    Reihenfolge im Sprint Review und Sprint Planning Meeting anpassen
•    Release Datum festlegen
•    Fachlicher Chefarchitekt


 

Was macht das Team bei Scrum?

•    Alle Teammitglieder arbeiten am aktuellen Sprint mit (Vollzeit)
•    Das Team deckt alle nötigen Aufgaben ab
•    Das Team ist als ganzes für das Ergebnis des Sprints verantwortlich
•    Alle Teammitglieder sind Entwickler -> flache Hierarchie

Was macht der Scrum Master?

•    sorgt für störungsfreies Arbeiten des Teams
•    sorgt für ein gutes Arbeitsklima im Team
•    sorgt für eine gute Kommunikation

Welche Beziehungsarten kennen Sie? Nennen Sie 3 und erläutern Sie.

Assoziation
lose Beziehung, die Klassen gehören zusammen, können aber ohne weiteres auch ohne die Beziehung unter einander bestehen. Beispiel: Vertriebsbeauftragter – Kunde. Ab UML 2.0 kann die Beziehung mit einem Pfeil am Ende gerichtet dargestellt werden.


 


Aggregation
Die Aggregation stärkt die Bindung zwischen den beteiligten Klassen, trotzdem können die beteiligten Klassen aber auch alleine, d.h. nach Auflösung der Beziehung bestehen. Meist wird diese Beziehung verwendet, wenn etwas Teil eines Ganzen ist. Die Aggregation wird mit einer Raute dargestellt, wobei am "Ganzen" eine unausgefüllte Raute ist.


 


Komposition
Die Komposition ist die stärkste Bindung. Mit ihr wird dargestellt, dass etwas Teil eines Ganzen ist und nicht ohne das Ganze bestehen kann. Die Komposition hat auch eine ausgefüllte Raute, die am Ganzen endet.

Was ist der Zusammenhang von Vererbung, Spezialisierung und Generalisierung?

Eigenschaften der übergeordneten Klasse übernehmen (wiederverwenden). Spezialisierung ist die Blickrichtung von oben nach unten (allgemein zu speziell), Generalisierung ist die Blickrichtung von unten nach oben (speziell zu allgemein)

Was ist ein Versionierungssystem und wozu dient es?

Ein Versionierungssystem dient der Erfassung von Änderungen an Dokumenten und Dateien. Hauptaufgaben sind:
•    Protokollierung
•    Wiederherstellung
•    Archivierung
•    Koordinierung


 

Welche Arten von Versionierungssystemen gibt es?

•    Zentrales Versionierungssystem (z.B. Subversion)
•    Dezentrales Versionierungssystem (z.B. Git, Mercurial)

Erläutern Sie die prinzipielle Arbeitsweise von GIT!

Git ist ein dezentrales Versionierungssystem. Während der Entwickler arbeitet, braucht er keinen Netzwerkzugriff da er ein lokales Repository inklusive Versionsgeschichte hat. Zu Projektbeginn führt jeder Entwickler "Clone" aus, um eine Kopie vo...

Git ist ein dezentrales Versionierungssystem. Während der Entwickler arbeitet, braucht er keinen Netzwerkzugriff da er ein lokales Repository inklusive Versionsgeschichte hat. Zu Projektbeginn führt jeder Entwickler "Clone" aus, um eine Kopie von Origin als lokales Repository zu erzeugen. Mit "Pull" können aktualisierte Dateien von Origin in das lokale Repository herunter geladen werden. Mit Commit werden lokal geänderte Dateien in das lokale Repository übernommen. "Push" lädt die lokalen Änderungen in "origin". Mit "Branching kann ein neuer Zweig erstellt und durch "Merging" kann er wieder zusammen geführt werden.

Was ist der Unterschied zwischen einem Fast-Forward Merge und einem 3-Way Merge?

Bei einem Fast-Forward-Merge gab es keine Änderungen an den bearbeiteten Dateien durch andere Nutzer. Der Feature-Branch kann einfach mit dem Master-Branch gemerged werden. 
Ein 3-Way Merge wird nötig, wenn die Dateien von einem anderen Nutzer editiert worden sind. Um zu vermeiden, dass die Änderungen des anderen Nutzers verloren gehen, wird ein Ergebnisknoten aus zwei Vorgängerknoten (Änderung Nutzer 1 und Änderung Nutzer 2) erstellt. Um eine Prüfung zu erzwingen, gibt es einen Mergekonflikt. Durch einen Syntaxfehler werden die Änderungen markiert und der Nutzer kann die Änderungen anpassen.

Was sind Regressionstests?

Unter einem Regressionstest  versteht man in der Softwaretechnik die Wiederholung von Testfällen, um sicherzustellen, dass Modifikationen in bereits getesteten Teilen der Software keine neuen Fehler ("Regressionen") verursachen.

Beschreiben Sie Test-Drive Development!

Zyklus: Einen Test implementieren
• Fehlerhaft, da noch kein Anwendungscode vorhanden
• Genauso viel Anwendungscode implementieren, dass der Test jetzt erfolgreich durchlaufen wird
• Den nächsten Test implementieren


 


Vorteile
• Nachdenken bei den Testprogrammen -> Bessere und einfachere Schnittstellen
• Umfangreiche Regressionstests

Beschreiben Sie Behavior-Driven Development (BDD)!

Voraussetzung für eine korrekte Implementierung der Tests ist, dass der Entwickler die User Story verstanden haben muss. Um das zu gewährleisten, bietet BDD eine formalisierte Sprache, mit der unmissverständlich die Anforderungen für den Entwickler definiert werden können.

Was gehört zum Build-Management?

• Übersetzung Quell- und Testcode
• Codegenerierung (z.B. JPA-Klassen -> Metamodell-Klassen für Criteria Klassen, LESS-Dateien -> CSS-Dateien)
• Archive erstellen (z.B. .jar und .war Dateien)
• Tests durchführen
• Tools zur Qualitätssicherung aufrufen (z.B. SonarQube)
• Berichte erstellen (z.B. Testberichte, Qualitätsberichte, TODOs)


 


Beispiele: Maven, Gradle, Ant, Jenkins (Continuos Integration)

Erklären Sie die prinzipielle Arbeitsweise eines Ticketsystems am Beispiel JIRA!

Ein Ticketsystem erlaubt Entwicklern Tickets zu formulieren, in denen Sie Aufgaben definieren. 


 


Die Tickets können anhand ihrer Dringlichkeit priorisiert werden. 



Durch das Ticketsystem können Entwickler und vor allem die Projektleiter schnell einen Überblick über den Fortschritt des Projekts bekommen. Aufgaben können bei einer sorgfältigen Nutzung des Systems nicht vergessen werden, was sich wiederum in einer höheren Qualität des Produkts widerspiegelt.

Welche Themen kann ein Ticket in einem Ticketsystem haben?

•    Bug
•    Feature Request (zusätzliche Funktionalität, z.B. Wildfly / Jbos um jsoup.jar ergänzen)
•    Enhancement (Neue Komponente, z.B. HANA Adapter für Hibernate)
•    Task (Aufgaben, die ein Entwickler nicht vergessen darf)

Welche Dringlichkeitsarten gibt es bei einem Ticketsystem?

•    Blocker


•    Critical
•    Major
•    Minor

Was ist Continuous Integration und welche Ziele sollen damit erreicht werden?

Continuous Integration ist eine Methode, um die Komplexität bei Softwareprojekten besser zu beherrschen. Mittels eines Versionierungssystems, vollständig automatisierter Builds (Kompilierung + Tests) und ein automatisiertes Berichtssystem (meist...

• Quellcode in einem Versionierungssystem verwalten, z.B. Git
• Übersetzen und Erstellen der Archive ("Build") ist automatisiert durch z.B. Gradle oder Maven
• Automatisierte Testausführung nach dem Build, z.B. JUnit-Tests durch das Surefire-Plugin von Maven
• Jedes Teammitglied macht täglich mindestens einmal Push
• Build automatisiert auslösen
  o Zeitgesteuert, z.B. jede Nacht um 02:00 Uhr
  o Zeitversetzt (z.B. 15 Min.) nach jedem Push
• Alle Teammitglieder können leicht HTML-Berichte über den Entwicklungsstand und die Fehler einsehen


 

Erläutern Sie die prinzipielle Funktionsweise von Ereignissen bei Javascript!

Es erfolgte eine Benutzereingabe, beispielsweise ein Mausklick. Wenn ein Eventhandler vorhanden ist, wird der zugehörige Javascriptcode ausgeführt, ansonsten die Standardaktion des Browsers. Nach Ausführung des Javascriptcodes wird ebenfalls di...

Es erfolgte eine Benutzereingabe, beispielsweise ein Mausklick. Wenn ein Eventhandler vorhanden ist, wird der zugehörige Javascriptcode ausgeführt, ansonsten die Standardaktion des Browsers. Nach Ausführung des Javascriptcodes wird ebenfalls die Standardaktion des Browsers ausgeführt.


 

Was sind die Ziele eines Ajax Request und wie funktioniert er?
Ziele

•    Kürzere Antwortzeiten

o    indem nur die wirklich notwendigen Daten übertragen werden

•    kein komplettes Neuladen von Webseiten




Funktionsweise

Ein Ereignis löst einen XMLHttpRequest (XHR) aus. Daraufhin ...
Ziele
•    Kürzere Antwortzeiten
o    indem nur die wirklich notwendigen Daten übertragen werden
•    kein komplettes Neuladen von Webseiten

Funktionsweise
Ein Ereignis löst einen XMLHttpRequest (XHR) aus. Daraufhin schickt der Browser einen Partial Request (Anfrage nach XML-Daten als Teil eines DOM-Baums) an den Web Server, der mit einem Partial Response (XML-Daten) antwortet. Eine Callback Methode wartet auf das Ergebnis des Servers, aktualisiert nach Erhalt der Antwort die HTML- und CSS-Daten im Dom-Baum und aktualisiert so das User Interface.

Was ist DOM und wofür braucht man es?

DOM: Document Object Model
DOM ist ein plattform- und Programmiersprachenunabhängiger Standard für den Aufbau von dynamischen Dokumenten, die automatisiert im Hinblick auf Inhalt, Aussehen und Aufbau verändert werden können. Es hat vor allem im Internet große Bedeutung, da erst durch DOM dynamische Webseiten mit Javascript und Ajax möglich werden.

Wie kann die Performance von Ajax Requests verbessert werden?

•    Keine unnötigen Requests
•    Vorhandene Werkzeuge und Bibliotheken nutzen (z.B. JQuery)
•    Minimierung des zu übertragenden Datenvolumens
•    Javascript-Skripte geeignet laden

Was ist ein zustandsloses Protokoll?

keine Unterscheidung zwischen
•    Requests verschiedener Clients
•    aufeinanderfolgender Requests desselben Clients
Beispiel: HTTP

Was sind die Vor- und Nachteile von zustandslosen Protokollen?

Vorteile
•    einfach
•    resourcen-sparend
•    skaliert sehr gut
Nachteile
•    keine Speicherung benutzer-spezifischer Daten

Wie kann mit den Nachteilen von zustandslosen Protokollen umgegangen werden?

Verwendung von CDI-fähigen Beans -> Daten können für die erforderliche Gültigkeitsdauer auf Serverseite gespeichert werden.

Wie funktioniert rollenbasierter Zugriffsschutz?

Dynamische Zugriffsrechte
Definition, welche Rollen auf welche URI's Zugriff haben, in der web.xml -> auth-constraint



statische Zugriffsrechte
mit @RoleAllowed. Vor Klasse -> für alle Methoden der Klasse. Vor Methode: nur für Methode, überschreibt Klassendefinition
nötig bei SOAP basierten WebServices -> es gibt keine web.xml

Erläutern Sie das Observer Pattern!

Das beobachtete Objekt bietet einen Mechanismus, um Beobachter an- und abzumelden, sowie um diese über Änderungen zu informieren. Es kennt seine Beobachter nur über die Schnittstelle Beobachter. Jede Änderung wird an jeden angemeldeten Beobach...

Das beobachtete Objekt bietet einen Mechanismus, um Beobachter an- und abzumelden, sowie um diese über Änderungen zu informieren. Es kennt seine Beobachter nur über die Schnittstelle Beobachter. Jede Änderung wird an jeden angemeldeten Beobachter gemeldet. Die Beobachter implementieren eine Methode um auf Änderungen zu reagieren.

Erläutern Sie das MVC Pattern!

Model
Das Modell enthält die darszustellenden Daten und - abhängig von der Implementierung des MVC Patterns – auch die Geschäftslogik. Es ist von View und Controller unabhängig. Änderungen am Model werden über das Observer Pattern bekanntgegeben – Model ist dabei das zu beobachtende Subjekt, also der Publisher.


 


View
Die Präsentationsschicht ist für die Darstellung der benötigten Daten und für die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennt Model und Controller und wird durch das Observer Pattern von Änderungen im Entwurfsmodell unterrichtet. Benutzerinteraktionen verarbeitet sie nicht weiter, sondern reicht diese an den Controller weiter.


 


Controller
Der Controller verwaltet eine oder mehrere Präsentationen, nimmt Benutzerinteraktionen entgegen und agiert entsprechend. Er sorgt dafür das Benutzerinteraktionen wirksam werden, durch Änderung der Präsentation oder durch Weiterleiten an das Model.

Wie sieht eine Schichten-Architektur mit Java EE aus? 

•    Webseiten
•    Dialogsteuerung
•    Restful W.S.
•    Anwendungskern
•    DB-Zugriffschicht

Was ist eine Thin Server Architecture?

Server
•    Liefert (JSON-) Daten und Layout Templates
•    empfängt (JSON- oder Formular-) Daten


 


Client
•    baut (JSON-) Daten mittels Javascript in den DOM-Baum ein
•    überträgt die (JSON- oder Formular-) Daten an den Server
•    kann Daten auch lokal abspeichern

Was ist JAXB?

JAXB: Java Architecture for XML Binding
@XmlRootElement
@XmlTransient
@XmlSeeAlso

Was ist JPA?

JPA: Java Persistence API -> Siehe OR-Mapping
@Entity
@Table
@Column

Was ist die orm.xml?

Die orm.xml erlaubt die Definition der Persistenz von Klassen in einem xml-File. Das ist immer dann sinnvoll, wenn die Persistenz bestimmter Klassen während der Laufzeit geändert werden soll, was nicht möglich wäre, wenn die Persistenz mit Annotationen festgelegt wäre.

Was ist OR-Mapping, wie funktioniert es und wieso benötigt man es?

object-relational mapping ist eine Technik, mit der Objekte in einer relationalen Datenbank abgelegt werden können.

Was ist JAX-RS?

JAX-RS: Java API for RESTful Web Services
@Path
@Produces (MIME-Typen)
@Consumes (MIME-Typen)

Nennen Sie eine Erweiterung für JSF!

Richfaces
•    r:commandButton
•    r:commandLink
•    r:outputPanel

Was ist CDI?

CDI: Contexts and Dependency Injection
Umsetzung der Dependency Injection mit Java

Welche Patterns werden mit CDI umgesetzt?

Singleton - @ApplicationScoped
Factory - @Produces und @Inject
Observer - @Observes und @Inject

Welche Kontexte für CDI kennen Sie?

@RequestScoped
@ConversationScoped
@SessionScoped
@ApplicationScoped

Erläutern Sie das Prinzip der Proxy-Klassen und Business-Methoden (auch mit CDI)!

Mit Proxy Klassen wird das Proxy Pattern umgesetzt. Die Kontrolle über ein Objekt wird auf ein vorgelagertes Proxy Objekt verlagert. Die Proxy Klasse erbt hierbei vom eigentlichen Objekt. So können zwischen dem eigentlichen Objekt und dem Proxy Objekt Interceptoren eingebaut werden. CDI setzt so verschiedene Verwaltungsaufgaben um, z.B. ein Singleton erstellen, die Bean Validation oder auch Transaktionen.

Was ist JTA?

JTA: Java Transaction API
@TransactionAttribute
@ApplicationException(rollback = true)

Beschreibe das Interceptor-Pattern!

Das Interceptor Pattern ist ein Entwurfsmuster aus der Kategorie Verhaltensmuster. Es ermöglicht die Erweiterung eines Frameworks oder einer Middleware, ohne diese selbst zu verändern.

Komponente A ruft Komponente B auf. Durch den Einsatz von ...

Das Interceptor Pattern ist ein Entwurfsmuster aus der Kategorie Verhaltensmuster. Es ermöglicht die Erweiterung eines Frameworks oder einer Middleware, ohne diese selbst zu verändern.
Komponente A ruft Komponente B auf. Durch den Einsatz von Komponente C kann der Ablauf um die Funktionalität von C erweitert werden.

Was ist JAX-WS?

JAX-WS: Java API for XML Web Services
Vorgänger von JAXB

Was ist der Vorteil von loser Kopplung und wie wird Sie erreicht?

Komponenten können leicht ausgetauscht werden, sie kann durch DI erreicht werden.

Was heißt Lightweight Server?

Ein Lightweight Server ermöglicht kleine WAR-Dateien.
•    Schnelle Übersetzung
•    Schnelles Deployment
WAR-Datei für Java EE < 100 KB (+RichFaces o.ä.)

Was gehört zum Java Web Profile?

•    JPA
•    Bean Validation
•    JAXB
•    CDI
•    JTA
•    Interceptor
•    Common Annotations
•    JAX-RS
•    EJB Lite
•    JSF
•    Expression Language (EL)
•    WebSocket

Was sind WebSockets?

WebSocket ist ein Standard, der Echtzeitkommunikation im Web verbessern soll. Da HTML nur halbduplexe Kommunikation beherrscht, wurde vor dem WebSocket Standard für eine bidirektionale Verbindung jeweils ein Request für ein- und ein anderer für ausgehende Verbindungen benötigt. Das hatte den Nachteil, dass der Server zusätzliches I/O Handling bewältigen musste und das sich der Daten Overhead verdoppelte. WebSockets lassen eine bidirektionale Verbindung zu und helfen so durch eine Reduzierung des Datenvolumens (weniger Overhead) und eine Reduzierung des I/O Handling im Server, eine Echtzeitanwendung deutlich zu beschleunigen.

Wie funktioniert ein Server-Callback für geschützte URIs?

•    Client frägt eine geschützte Resource an
•    Server fragt nach Username und Passwort
•    Client sendet Username und Passwort
•    Server schickt angefragte Resource

Was ist HTTPS?

HTTP mit TLS
benötigt Zertifikat für TLS, um Server und Domain eindeutig zu identifizieren

Beschreiben Sie das Keystore und Truststore Modell für Server und Client!

Der Server erstellt mit einem Keytool den Keystore, d.h. er generiert den öffentlichen und privaten Schlüssel. Dann erstellt er das Server Zertifikat, d.h. er exportiert den öffentlichen Schlüssel aus dem Keystore. Dieses Zertifikat wird von einer neutralen "Certificate Authority" geprüft und ausgestellt. Der Client importiert das Zertifikat in seinen Truststore.
Nachrichtenversand:
•    Client fordert Nachricht an
•    Server signiert Nachricht mit Keystore, schickt sie an Client
•    Client verifiziert Nachricht mit Truststore

Beschreiben Sie das Pattern "Page Objects" und @FindBy!

Ein Page Object bildet die Funktionen einer Webseite in public Methoden ab. Um die Funktionen einer Webseite zu finden, können sie mit der Annotation @FindBy identifiziert werden. Funktionen der Webseite können mit id's, CSS-Klassen, Tagnamen, usw. gefunden werden. Der Vorteil ist die vereinfachte Testbarkeit, vor allem auch bei Änderungen am UI, da Änderungen zentral an einer Stelle getätigt werden können.

Mit welchem Produkt kann das Testen bei Continous Integration durchgeführt werden?

Arquillian

Wie funktioniert der Client-Modus von Arquillian?

Zum Testen der Applikation von Client Seite.
1.    Archiv erstellen
2.    Deployment auf Server mit eigener Java-VM
3.    Testen der Anwendung auf dem Server von Client-Seite aus

Wie funktionieren In-Container Tests?

Zum Testen des Anwendungskerns.
1.    Archiv erstellen
2.    Deployment auf Server mit eigener Java-VM
3.    Tests werden auf dem Server ausgeführt
4.    Resultate werden übermittelt

Was ist das Ziel von Arquillian Graphene?

einfaches API für Page Objekte von Selenium einschl. Ajax und einem einfachen "Waiting API" innerhalb von Integrationstests mit Arquillian

Beschreiben Sie den prinzipiellen Ablauf eines JUnit Tests!

Mit @BeforeClass können zu Beginn die Werte initialisiert werden, die während der JUnit Tests benötigt werden. Sie gelten für die gesamte Laufzeit der Tests. Mit @Before können vor jeder Testmethode Werte erneut gesetzt werden, diese gelten dann nur für die jeweilige Testmethode. Jede Testmethode muss mit @Test gekennzeichnet sein. Nach dem Test werden gegebenenfalls mit @After die Werte erneut gesetzt. Nach den Tests wird ggf. @AfterClass aufgerufen, um Werte wieder auf Normalwerte zu setzen.

Was sind Unit Tests?

Tests, die funktionale Einzelteile von Anwendungen testen.

Was sind Integrationstests?

Das Testen des Zusammenspiels verschiedener, von einander abhängiger Komponenten einer Anwendung.

Typischer Ablauf eines Jobs in Jenkins?

1. Quellcode aus dem Versionierungssystem herunterladen
2. Übersetzen
3. Tests aufrufen
   a. Unit-Tests mit JUnit oder TestNG
   b. Integrationstests mit z.B. Arquillian
   c. Web-Tests mit z.B. Graphene
4. WAR erstellen und archivieren
5. Berichte erstellen
   a. JUnit Werkzeuge
   b. QS-Werkzeuge, z.B. SonarQube

Was ist cross-side request forgery und wie kann es verhindert werden?

CSRF ist, wenn ein Angreifer eine Transaktion in einer Webanwendung durchführt. Er macht dies, indem er einem bereits angemeldeten, unbeteiligten User ein HTTP-Request unterschiebt. Dies kann verhindert werden, indem auf jeder Seite ein sogenanntes Page-Token in einem Hidden-Field eingebunden wird. JSF besitzt ein derartiges Token – den ViewState. In der faces-config.xml können protected views definiert werden. So wird der ViewState zusätzlich verschlüsselt und CSRF wird unmöglich.

Beschreibe das Design-Pattern "Active Record"!

Beim Design Pattern Active Record erbt jedes Objekt, dass persistente Daten enthält, von einer Klasse, die die Zugriffsmethoden auf eine Datenbank kapselt. Jedes Business Object ist somit eine Abbildung einer Tabellenzeile in einer Datenbank. Modifikationen in einem Geschäftsobjekt werden mit den geerbten Methoden von dem Objekt selbst in die Datenbank geschrieben. Wird ein Objekt neu angelegt, wird auch eine neue Zeile in einer Datenbanktabelle angelegt. Nachteile sind, dass es schwierig ist, komplexe Vererbungshierarchien aufzubauen, da jedes Geschäftsobjekt von dem Datenbankobjekt erben muss. Außerdem sind Unit Tests umständlicher, da zum Testen der Anwendung eine funktionierende Datenbank oder zumindest sinnvolle Mockobjekte erforderlich sind.

Beschreiben Sie das Data Access Object Pattern!

Das DAO ist ein Entwurfsmuster, mit dem der Zugriff auf verschiedene Datenquellen gekapselt wird. Die angesprochene Datenquelle kann gewechselt werden, ohne dass der aufrufende Code geändert werden muss. Das Data Access Object erstellt ein Transf...

Das DAO ist ein Entwurfsmuster, mit dem der Zugriff auf verschiedene Datenquellen gekapselt wird. Die angesprochene Datenquelle kann gewechselt werden, ohne dass der aufrufende Code geändert werden muss. Das Data Access Object erstellt ein Transferobjekt auf Basis der zugrundeliegenden Datenquelle. Das Business Object erhält dieses Transfer Object und legt die Daten darin ab. Anschließend führt das DAO mit diesen Daten die gewünschte Modifikation der Datenquelle durch.