3 - J (mae)
3 - J (mae)
3 - J (mae)
Kartei Details
Karten | 58 |
---|---|
Sprache | Deutsch |
Kategorie | Scherzfragen |
Stufe | Grundschule |
Erstellt / Aktualisiert | 04.01.2014 / 15.01.2014 |
Weblink |
https://card2brain.ch/box/3_j_mae
|
Einbinden |
<iframe src="https://card2brain.ch/box/3_j_mae/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Unit test (def)
Ein Unit Test ist ein Stück Code (meist eine Methode), das ein anderes Stück Code aufruft und anschließend die Richtigkeit einer oder mehrerer Annahmen überprüft. Falls sich die Annahmen als falsch erweisen, ist der Unit Test fehlgeschlagen.
Eine Unit ist eine Methode oder Funktion.
SUT
SUT steht für »System Under Test«, manche Leute verwenden auch den Begriff CUT (»Class Under Test« oder »Code Under Test«). Wenn wir etwas testen, bezeichnen wir das, was wir testen, als das SUT.
Eigenschaften eines »guten« Unit Tests
Er sollte automatisiert und wiederholbar sein.
Er sollte einfach zu implementieren sein.
Einmal geschrieben, sollte er für die zukünftige Nutzung stehen bleiben.
Jeder sollte in der Lage sein, den Test laufen zu lassen.
Er sollte auf Knopfdruck ablaufen.
Er sollte schnell ablaufen.
=> Gute Tests können von jedem verwendet und ausgeführt werden
Integration Testing
Integration Testing bedeutet, dass zwei oder mehr voneinander abhängige Softwaremodule als eine Gruppe getestet werden.
Unit test vs intergration test
Ein Integration Test behandelt viele sich ergänzende Einheiten von Code, um zu untersuchen, ob die Software ein oder mehrere erwartete Resultate liefert, wohingegen ein Unit Test nur eine einzelne Einheit isoliert betrachtet.
Regression
Eine Regression ist ein Feature, das mal funktioniert hat, jetzt aber nicht mehr.
unit test (erweiterte def)
Ein Unit Test ist ein automatisiertes Stück Code, das eine zu testende Methode oder Klasse aufruft und dann einige Annahmen über das logische Verhalten dieser Methode oder Klasse prüft. Ein Unit Test wird fast immer mithilfe eines Unit Testing Frameworks erstellt. Er kann einfach geschrieben und schnell ausgeführt werden. Er ist vollständig automatisiert, vertrauenswürdig3, lesbar und wartbar.
Logischer Code
Logischer Code ist jegliches Stück Code, das irgendeine Art von Logik enthält, so klein es auch sein mag. Es ist Logischer Code, wenn er irgendetwas von dem folgenden enthält: eine if-Anweisung, eine Schleife, eine switch- oder case- Anweisung, Berechnungen oder irgendeine andere Art von entscheidungsfindendem Code.
TDD ablauf
1. Schreiben Sie einen Test, der fehlschlägt, um zu zeigen, dass im Endprodukt ein Stück Code oder eine Funktionalität fehlt.
2. Lassen Sie den Test erfolgreich ablaufen, indem Sie Produktionscode schreiben, der die Anforderungen des Tests erfüllt.
3. Überarbeiten Sie Ihren Code (Refactoring).
TDD vorteile
hochwertigen Code, hochwertige Tests und ein besseres Design für meinen Code zu entwickeln
Refactoring
Refactoring bedeutet die Änderung eines Code-Stücks, ohne die Funktionalität zu ändern. z.B Klasse umbenennen
Softwarearchitektur (def.)
Lösungsbeschreibung für eine gegebene Anforderung
(Wie die Lösung aufgebaut/konstruiert ist)
3 Hauptblöcke der softwarearchitektur
Anforderungen (einführung, randbedingungen) => scope!
Strukturen (verschiedene sichten)
übergreifende Themen (technische konzepte, entwurfsentscheidungen, szenarien)
Bausteinsicht
packages
codestrukturen
schichten
namensräume
laufzeitsicht
szenairen (use cases, abläufe)
unter verwendung der bausteine aus der bausteinsicht (wie spielt alles zusammen)
zu jedem usecase ein baustein und umgekehrt...
verteilungssicht
was läuft wo
technische konzepte / entwurfsentscheidungen
persistierung, GUI, Fehlerbehandlungen, Sessionhandling, Frameworks, Protokolle..
welche technologien
=> klar dokumentieren für nachwelt!
whitebox
teilprobleme weiter aufgesplittet
UML
UML:= Ist eine "Sprache" für die Modellierung der Strukturen und des Verhaltens von Software- und anderen Systemen.
Stereotyp
<<...>>
Ein Stereotyp ist eine Erweiterung vorhandener Modellelemente in UML. In der Praxis geben Stereotype vor allem die möglichen Verwendungszusammenhänge (Verwendungskontext) einer Klasse, einer Beziehung oder eines Paketes an
Classifier
Verallgemeinerung des Klassenkonzepts, nur in Metamodell verwendet
Ein Classifier innerhalb von UML ist ein abstraktes gedankliches Konstrukt, das Modellierer nie direkt in eines der Diagramme der UML einfügen. Als sogenannte abstrakte Metaklasse ist der Classifier vor allem nützlich für die Autoren der UML-Spezifikation und weniger für Anwender der UML.
Aggregation (weisse Raute)
Kann in mehreren Aggregatobjekten enthalten sein (kapitel in HTML dokument)
überlebt beim tod des ganzen
komposition (schwarze Raute)
selten
kann nur zu einem Aggregatobjekt gehören, dieses aber wechseln (Datei)
stirbt mit dem löschen des Ganzen
generalisierung
is a
erbt von
durchgezogene linie mit weissem dreiecks pfeil, nach oben
beziehung zwischen speziellem zu generellem Classifier
spezialisierung
beziehung von oben nach unten (keihn pfeil)
unteres objekt kann zusätzliche merkale haben zu den schon geerbten
Aktion:
Eine Aktion (action) steht für den Aufruf eines Verhaltens oder die Bearbeitung von Daten, die innerhalb einer Aktivität nicht weiter zerlegt wird. Die Aktion beschreibt einen Einzelschritt, der zur Realisierung des durch die Aktivität beschriebenen Verhaltens beiträgt.
Aktivität:
Die Summe aller Aktionen, einschließlich der Reihenfolge ihrer Ausführung und der zur Laufzeit erstellten und verwendeten Daten, realisiert die Aktivität.
Ziel
<Softwarearchitektur>
Die langfristige Wartbarkeit, die gute Verständlichkeit und die Möglichkeit auch nach Jahren den Überblick über die Strukturen und Zusammenhänge innerhalb ihres Systems noch zu wahren
was ist softwarearchitektur
beschreibt die Strukturen des Systems, dessen Bausteine, Schnittstellen und das zusammenspiel
angemessene architektur Eigenschaften
Eine angemessene, "saubere" Architektur bedeutet:
relevant
effizient
pflegbar
sparsam
verständlich und nachvollziehbar
korrekt und aktuell
prüfbar
akzeptiert bei Lesern
ArchitektIn
Bindeglied zwischen Projektmanager, Requirements Engineers, Entwickler, Tester und Betreiber
Tätigkeiten des Architekten
Anforderungen und Randbedingungen klären
expliziten Architektur-Ziele dokumentieren
Strukturen entwerfen (Technologieentscheide, )
Technische Konzepte entwerfen (für Bausteine)
Architektur kommunizieren
Umsetzung begleiten
qualitätsziehle der architektur
Flexibilität, Erweiterbarkeit, Benutzerfreundlichkeit, Perfomance
fähigkeiten von Architekten
Entwerfen können
Entscheiden können
Vereinfachen können
Implementieren können
Dokumentieren können
Kommunizieren können
Schätzen und bewerten können
Balancieren können
Beraten können
Vermarkten können
Baustein
Programmierkonstrukte: Klassen, Module, Funktionen, Skripte, Programme
Pakete: Namensräume, Gruppierungen von Programmierkonstrukten
Konfiguration: bestimmen das Verhalten oder die Schnittstelle existierender Softwareteile z.B. Spring-Framework, Hibernate-Mapping, Stylesheets
Bibliotheken, Framworks, Standardsoftware: stellen "fertige" Lösungen dar, welche nicht selber entwickelt aber in eigne Software eingebunden oder müssen
eigenschaften von Bausteinen
Merke: Jeder Baustein verfügt über eine Schnittstelle und eine Reihe spezifischer Merkmale wie: Verantwortlichkeit, Variabilität, eventuell einen Verweis auf (von diesem Baustein erfüllten) Anforderungen, Ablageort etc. Kurz: Bausteine sind oft Blackboxen.
blackbox sicht (innenleben ist total verborgen)
Beschreibung von
Zweck und die Verantwortung
Funktionen und/oder Services
Ein- und ausgehende Schnittstellen
whitebox sicht
zeigt innenleben (welches wiederum aus einer menge von kleineren blackboxes besteht)
Bausteinsicht:
zeigt die statische Struktur des Systems, Kernstück der Software-Architektur, erklärt aus welchen Bausteinen das System zusammengebaut ist und welcher Baustein fachliche oder technische Eigenschaften des Systems bereitstellen.
Verteilungssicht:
Verteilungssicht: zeigt die Verteilung von Systembestandteilen auf Hardware- und Softwareumgebungen => Knoten. Kurz: Klärt, welche Teile eines Systems auf welchen Rechnern, an welchem geografischen Standort auf welcher Umgebung ablaufen können. Zwingend für verteilte Systeme!