IT Begriffe Flashcards
(43 cards)
Single-Responsibility-Prinzip
(auch SRP, dt. „Prinzip der eindeutigen Verantwortlichkeit“) ist eine Softwareentwurfsrichtlinie (aus SOLID).
„A module should be responsible to one, and only one, actor.“ (aus Robert C. Martin: Clean Architecture), d. h. aber nicht, dass eine Klasse nur eine definierte Aufgabe zu erfüllen hat.
Zur Verallgemeinerung des SRP siehe: Curly‘s Law
Curly‘s Law
Eine Verallgemeinerung des SRP, es fasst zusammen SRP, methods should do one thing, once and only once (OAOO), don‘t repeat yourself (DRY) und single source of truth (SSOT).
Es bezieht sich auf den gesamten Softwareentwurf, also auch Klassen, Funktionen und Variablen (daher auch bei nicht-OOP anwendbar).
(D. h. z. B. der veränderte Inhalt einer Variable muss in einer Neuen gespeichert werden, z. B. $numbers->sort in $sortedNumbers.)
SCADA
Supervisory Control and Data Acquisition (dt. Überwachung, Steuerung und Datenerfassung) beschreibt das Computersystem, bzw. die Software, zur Überwachung und Steuerung technischer Prozesse im Bereich von ICS (Industrial Control System, dt. industrielle Steuerungsanlagen).
PLC
Programmable Logic Controller (dt. speicherprogrammierbare Steuerung) ein digital programmierbares Gerät zur Steuerung einer Maschine. Löste die „festverdrahtete“ verbindungsprogrammierte Steuerung (VPS, engl. hard-wired programmed logic controller) ab.
CVE
Common Vulnerabilities and Exposures
CGI/FastCGI
(Common Gateway Interface) Schnittstelle zwischen einem Webserver und dritter Software, die Anfragen beantwortet.
CGI startet und beendet einen Prozess pro Request (viel Overhead = schlechte Performance) und FastCGI stellt zentrale Prozessressourcen für mehrere Requests bereit (schneller, ressourcensparender).
DIE-Modell
Distributed – verteilt, Immutable – unveränderbar, Ephemeral – kurzlebig
CAN
Controller Area Network
CIA-Triade
Schutzziele (Confidentiality, Integrity und Availability)
(Code-) Walkthrough
Folgen des Pfades durch den Algorithmus bzw. Quellcode. (s. a. Cognitive Walkthrough).
Cognitive Walkthrough
(dt. kognitiver Durchgang, Durchdenken des Problemes) Eine Usability-Inspektionsmethode aus den analytischen Evaluationsverfahren (im Gegensatz zu empirischen Evaluationsverfahren, wie dem Usability-Test). Hineinversetzen in einen (hypothetischen) Nutzer und Analyse konkreter (vorgegebener) Handlungsabläufe unter der Prämisse der Wahl eines Weges des geringsten kognitiven Aufwandes.
Usability-Test
Überprüfung (als empirisches Evaluationsverfahren) der Gebrauchstauglichkeit einer Software (oder Hardware). Ziel ist die Detailoptimierung von Interaktionsprozessen.
Audit
Untersuchung durch (geschulte) Auditoren, ob ein Managementsystem die gesetzten Anforderungen erfüllt und ob es wirksam ist.
Mehrfachvererbung
Teil der Objektorientierten Programmierung, bei der eine abgeleitete Klasse von mehr als einer Basisklasse erbt (z. B. Amphibienfahrzeug von Land- und Wasserfahrzeug). Abgrenzung zur sequentiellen, mehrstufigen Vererbung, mit jeweils nur einer Ableitung pro Klasse.
Mögliche Probleme: komplizierter, unübersichtlich (s. a. Diamond-Problem)
Diamond-Problem
Durch Mehrfachvererbung erbt D (Amphibienfahrzeug) von B (Landfahrzeug) und C (Wasserfahrzeug) und B und C von A (Fahrzeug).
Verhält sich D wie B UND C oder wie B ODER C?
Die Höchstgeschwindigkeit weicht ab (D hat zwei Fortbewegungsarten, aber A, B und C jeweils nur Eine.), die Sitzplatzanzahl bleibt aber unverändert.
statischer Test
Ein Test ohne Programmausführung.
Z. B. Review oder statische Code-Analyse (auch formale Verifikation)
dynamischer Test
Ein Test mit Programmausführung.
Z. B. strukturorientierter Test (Kontrollflussorientiert, wie Anweisungs-, Zweig-, Bedingungs- und Pfadüberdeckungstests ODER Datenflussorientiert, wie Defs-/Uses-Kriterien, Required k-Tupels-Test, Datenkontextüberdeckung), funktionsorientierter Test gegen eine Spezifikation (funktionale Äquivalenzklassenbildung, zustandsbasierter Test, Ursache-Wirkungs-Analyse, Syntaxtest, transaktionsflussbasierter Test, Test auf Basis von Entscheidungstabellen ODER Positiv- (Anforderungen verifizieren) und Negativtest (Prüfung der Robustheit)), diversifizierender Test der Ergebnisse mehrerer Tests (Regressionstest, Back-To-Back-Test, Mutationen-Test) und sonstige (Bereicherungstest bzw. Domain Testing, Error guessing, Grenzwertanalyse, Zusicherungstechniken).
Regressionstest
(lat. regredior, regressus sum „zurückschreiten“) Wiederholung von Testfällen, dass Modifikationen keine neuen Fehler (Regressionen) in zuvor getesteten Teilen verursacht haben.
Back-To-Back-Test
Aus der n-Versionen-Programmierung ergeben sich mehrere Versionen, aus unabhängigen Teams, nach gleicher Spezifikation, die gegeneinander getestet werden.
Teueres Gesamtverfahren, nur bei (sehr) hohen Sicherheitsanforderungen gerechtfertigt.
Mutationen-Test
Verwendet/Testet andere Testmethoden durch künstliches Einfügen von (typischen) Fehlern, um festzustellen, ob sie detektiert werden.
Review
Manuelle Prüfung von Arbeitsergebnissen per Durchsicht einer anderen Person (Gutachter).
Z. B. Code-Review (Quelltext) und Architektur-Review (Softwarearchitektur).
statische Code-Analyse
Zur Übersetzungszeit wird der Quelltext formalen Prüfungen unterzogen, um bestimmte Fehler zu finden, noch vor Ausführung (Modultest) der Software. Falsifizierendes Verfahren (Anwesenheit von Fehlern finden).
Klassisches Programm dafür ist „Lint“, daher gebräuchlich linten (engl. linting).
Verifizierung/Verifikation
(verifizieren von Software)
Feststellen, ob ein Programm den Spezifikationen entspricht (z. B. math. Hoare-Kalkül über den Quellcode). Fehlerfreiheit kann dabei nicht festgestellt werden.
Modultest / unit test
(auch Komponententest) häufig durch den Entwickler durchgeführter Test von einzelnen, abgrenzbaren Teilen (Codeabschnitt, Unterprogramm, Unit, Klasse) eines Softwareprogrammes, um die technische Lauffähigkeit und Korrektheit ihrer fachlichen (Teil-)Ergebnisse nachzuprüfen.