<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://fi-wiki.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moettke</id>
	<title>FI-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://fi-wiki.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moettke"/>
	<link rel="alternate" type="text/html" href="https://fi-wiki.de/Spezial:Beitr%C3%A4ge/Moettke"/>
	<updated>2026-11-03T18:54:21Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Themen_AP1&amp;diff=3068</id>
		<title>Themen AP1</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Themen_AP1&amp;diff=3068"/>
		<updated>2026-09-30T13:43:39Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Systemtechnik */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basierend auf den Prüfungskatalogen&lt;br /&gt;
&lt;br /&gt;
== Bücher zur IHK-Abschlussprüfung - Werbung ==&lt;br /&gt;
&lt;br /&gt;
Meine ersten Bücher zur Vorbereitung auf die IHK-Abschlussprüfung in IT-Berufen sind jetzt bei Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
* Der „AP1 Crashkurs für IT-Berufe“ unterstützt Sie mit kompaktem Prüfungswissen bei der gezielten Vorbereitung auf die Abschlussprüfung Teil 1.&lt;br /&gt;
&lt;br /&gt;
* Die Buchreihe „Rechenaufgaben für IT-Berufe“ unterstützt Sie mit praxisnahen Aufgaben und ausführlichen Lösungen bei der gezielten Vorbereitung auf die Abschlussprüfung.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;text-align:center; width:600px; margin-top:15px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:AP1 Crashkurs kl.png|rahmenlos|180px|link=https://link.amazon/B05L0YhEA]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AP1 Crashkurs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B05L0YhEA Bei Amazon ansehen]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:Buch1 kl.png|rahmenlos|180px|link=https://link.amazon/B099lX7eG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabenbuch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B099lX7eG Bei Amazon ansehen]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:Buch2 kl.png|rahmenlos|180px|link=https://link.amazon/B08wtpyhA]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösungsbuch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B08wtpyhA Bei Amazon ansehen]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kaufempfehlungen ==&lt;br /&gt;
In diesem Beitrag befinden sich sogenannte Affiliate-Links. Wenn Sie darüber ein Produkt kaufen, erhalten wir eine kleine Provision. Für Sie entstehen keine Mehrkosten. Mit Ihrem Kauf unterstützen Sie direkt den Aufbau und Betrieb dieses freien IT-Nachschlagewerks. Vielen Dank für Ihre Unterstützung! Diese Links sind entsprechend als Werbung gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Werbung:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Lernkarten IT-Berufe Abschlussprüfung Teil 1 (AP1): &#039;&#039;&#039;[https://amzn.to/4sMJ8gP IT-Berufe Abschlussprüfung Teil 1: Lernkarten]&lt;br /&gt;
* &#039;&#039;&#039;Buch IT-Berufe (AO 2020) Prüfungstrainer Abschlussprüfung Teil 1: &#039;&#039;&#039; [https://amzn.to/4lvt6pt IT-Berufe (AO 2020): Prüfungstrainer Abschlussprüfung Teil 1]&lt;br /&gt;
* &#039;&#039;&#039;Buch Prüfungsvorbereitung aktuell Teil 1: &#039;&#039;&#039; [https://amzn.to/3N8iXSW Prüfungsvorbereitung aktuell Teil 1 ]&lt;br /&gt;
&lt;br /&gt;
== Programmiertechnik ==&lt;br /&gt;
&lt;br /&gt;
* Grundlagen von Programmiersprachen&lt;br /&gt;
** [[Variablen]]&lt;br /&gt;
** [[Datentypen]]&lt;br /&gt;
** Kontrollstrukturen ([[Verzweigungen]], [[Schleifen]])&lt;br /&gt;
** [[Methoden in Java|Funktionen]]&lt;br /&gt;
** [[Klassen und Objekte|Klassen, Objekte]], [[Methoden in Java|Methoden]] ([[OOP]])&lt;br /&gt;
* [[Compiler und Interpreter|Compiler, Interpreter]]&lt;br /&gt;
* Debugging &amp;amp; Fehlersuche&lt;br /&gt;
* [[Pseudocode]] schreiben &amp;amp; interpretieren&lt;br /&gt;
* [[Schreibtischtest]] durchführen&lt;br /&gt;
* [[UML|UML-Grundlagen]]&lt;br /&gt;
** [[UML Use-Case-Diagramm|Use-Case-Diagramm]]&lt;br /&gt;
** [[UML Aktivitätsdiagramm|Aktivitätsdiagramm]]&lt;br /&gt;
** [[UML Klassendiagramm|Klassendiagramm]]&lt;br /&gt;
* Grundverständnis von IDEs&lt;br /&gt;
* Grundkenntnisse Softwareergonomie&lt;br /&gt;
&lt;br /&gt;
== Datenbanken ==&lt;br /&gt;
&lt;br /&gt;
* [[Daten organisieren und speichern|Grundlagen relationaler Datenbanken]]&lt;br /&gt;
* [[Primärschlüssel]] und [[Fremdschlüssel]]&lt;br /&gt;
* [[ERM Modellierung|Einfache ER-Modelle]]&lt;br /&gt;
* &#039;&#039;&#039;SQL nicht Bestandteil der AP1 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Netzwerktechnik ==&lt;br /&gt;
&lt;br /&gt;
* Netzwerkgrundlagen&lt;br /&gt;
* Netzwerkkomponenten&lt;br /&gt;
** Router&lt;br /&gt;
** Switch&lt;br /&gt;
** Access Point&lt;br /&gt;
** Gateway&lt;br /&gt;
* IP-Konfiguration (IPv4 / IPv6)&lt;br /&gt;
* DHCP&lt;br /&gt;
* DNS&lt;br /&gt;
* WLAN-Grundlagen&lt;br /&gt;
* OSI- / TCP-IP-Modell (Grundlagen, keine tiefen Schichtenanalysen)&lt;br /&gt;
* Typische Netzwerkprotokolle&lt;br /&gt;
** Ethernet&lt;br /&gt;
** IP&lt;br /&gt;
** DNS&lt;br /&gt;
* Troubleshooting-Befehle&lt;br /&gt;
** ping&lt;br /&gt;
** tracert / traceroute&lt;br /&gt;
** arp&lt;br /&gt;
** nslookup&lt;br /&gt;
* LAN / WLAN einrichten&lt;br /&gt;
* Client-Server-Grundlagen&lt;br /&gt;
* Netzwerkgrundkonfiguration (IP, Gateway, DNS, WLAN)&lt;br /&gt;
&lt;br /&gt;
== Systemtechnik ==&lt;br /&gt;
&lt;br /&gt;
* Komponenten eines Arbeitsplatzsystems&lt;br /&gt;
** [[CPU]]&lt;br /&gt;
** [[RAM]]&lt;br /&gt;
** [[Grafikkarte]]&lt;br /&gt;
** [[Mainboard]]&lt;br /&gt;
** [[Netzteil]]&lt;br /&gt;
** [[Massenspeicher]] (SSD / HDD)&lt;br /&gt;
* [[BIOS]] / [[UEFI]]&lt;br /&gt;
* Partitionieren &amp;amp; Formatieren&lt;br /&gt;
* Dateisysteme ([[NTFS]], [[FAT32]], [[ext4]], [[APFS]])&lt;br /&gt;
* Geräteklassen ([[Stationäre Computer]], [[Mobile Computer]], [[Professionelle Systeme]], [[Spezial- und Infrastrukturgeräte]])&lt;br /&gt;
* Energieeffizienz, Leistungsdaten&lt;br /&gt;
* [[Betriebssystem]]&lt;br /&gt;
* [[Wichtige Terminalbefehle|CLI-Befehle]]&lt;br /&gt;
* Arbeitsplatzsystem planen &amp;amp; testen&lt;br /&gt;
* [[Backup|Backup &amp;amp; Wiederherstellung]]&lt;br /&gt;
* Grundlegende Hardwarefehleranalyse&lt;br /&gt;
&lt;br /&gt;
== Telekommunikationstechnik ==&lt;br /&gt;
&lt;br /&gt;
* WLAN&lt;br /&gt;
* Bluetooth&lt;br /&gt;
* Videokonferenzsysteme&lt;br /&gt;
* Mobile Endgeräte im Netzwerk&lt;br /&gt;
&lt;br /&gt;
== Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
* Installation &amp;amp; Konfiguration&lt;br /&gt;
* Benutzerkonten &amp;amp; Berechtigungen&lt;br /&gt;
* Dateisystemverwaltung&lt;br /&gt;
* Netzwerkkonfiguration&lt;br /&gt;
* Update- &amp;amp; Patchkonzepte (Grundlagen)&lt;br /&gt;
* Systemnahe Tools &amp;amp; CLI&lt;br /&gt;
* Troubleshooting&lt;br /&gt;
&lt;br /&gt;
== Digitaltechnik ==&lt;br /&gt;
&lt;br /&gt;
* Binärpräfixe / Dezimalpräfixe&lt;br /&gt;
* [[Datenrepräsentation|Grundlagen der Codierungen]]&lt;br /&gt;
* Datenmengen&lt;br /&gt;
* Übertragungsgrößen&lt;br /&gt;
&lt;br /&gt;
== Projektmanagement ==&lt;br /&gt;
&lt;br /&gt;
* [[Projektmanagement]]&lt;br /&gt;
* [[Netzplan]]&lt;br /&gt;
* [[Gantt-Diagramm]]&lt;br /&gt;
* [[Vorgehensmodelle]]&lt;br /&gt;
* [[Lastenheft und Pflichtenheft]]&lt;br /&gt;
&lt;br /&gt;
== Datenschutz und Datensicherheit ==&lt;br /&gt;
&lt;br /&gt;
* [[Datenschutz]]&lt;br /&gt;
* [[Datensicherheit]]&lt;br /&gt;
&lt;br /&gt;
== IT - Service und Kommunikation ==&lt;br /&gt;
&lt;br /&gt;
* [[Zielgruppengerechte Beratung]]&lt;br /&gt;
* [[Kommunikationsmodelle]]&lt;br /&gt;
** [[Sender-Empfänger-Modell]]&lt;br /&gt;
** [[4-Ohren-Modell]]&lt;br /&gt;
* [[Kundenbedarfe ermitteln]]&lt;br /&gt;
* [[Präsentationstechniken]]&lt;br /&gt;
* [[Einweisung in Systeme]]&lt;br /&gt;
* [[Ticketsysteme]]&lt;br /&gt;
* [[SLA-Grundlagen]]&lt;br /&gt;
* [[Support-Level]]&lt;br /&gt;
&lt;br /&gt;
== WISO ==&lt;br /&gt;
&lt;br /&gt;
* Kostenkalkulationen&lt;br /&gt;
** Anschaffungskosten vergleichen&lt;br /&gt;
** Gesamtkosten berechnen&lt;br /&gt;
* Nutzwertanalysen&lt;br /&gt;
* Make-or-Buy-Entscheidungen&lt;br /&gt;
* Angebotsbewertung&lt;br /&gt;
&lt;br /&gt;
== Fachenglisch ==&lt;br /&gt;
&lt;br /&gt;
* Englische Fachbegriffe&lt;br /&gt;
* Englische Benutzeroberflächen&lt;br /&gt;
* Englische technische Dokumente&lt;br /&gt;
* Kundenkommunikation mit englischen Elementen&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Themen_AP1&amp;diff=3067</id>
		<title>Themen AP1</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Themen_AP1&amp;diff=3067"/>
		<updated>2026-09-30T13:42:24Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Projektmanagement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basierend auf den Prüfungskatalogen&lt;br /&gt;
&lt;br /&gt;
== Bücher zur IHK-Abschlussprüfung - Werbung ==&lt;br /&gt;
&lt;br /&gt;
Meine ersten Bücher zur Vorbereitung auf die IHK-Abschlussprüfung in IT-Berufen sind jetzt bei Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
* Der „AP1 Crashkurs für IT-Berufe“ unterstützt Sie mit kompaktem Prüfungswissen bei der gezielten Vorbereitung auf die Abschlussprüfung Teil 1.&lt;br /&gt;
&lt;br /&gt;
* Die Buchreihe „Rechenaufgaben für IT-Berufe“ unterstützt Sie mit praxisnahen Aufgaben und ausführlichen Lösungen bei der gezielten Vorbereitung auf die Abschlussprüfung.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;text-align:center; width:600px; margin-top:15px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:AP1 Crashkurs kl.png|rahmenlos|180px|link=https://link.amazon/B05L0YhEA]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AP1 Crashkurs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B05L0YhEA Bei Amazon ansehen]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:Buch1 kl.png|rahmenlos|180px|link=https://link.amazon/B099lX7eG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabenbuch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B099lX7eG Bei Amazon ansehen]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:200px;&amp;quot; |&lt;br /&gt;
[[Datei:Buch2 kl.png|rahmenlos|180px|link=https://link.amazon/B08wtpyhA]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösungsbuch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://link.amazon/B08wtpyhA Bei Amazon ansehen]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kaufempfehlungen ==&lt;br /&gt;
In diesem Beitrag befinden sich sogenannte Affiliate-Links. Wenn Sie darüber ein Produkt kaufen, erhalten wir eine kleine Provision. Für Sie entstehen keine Mehrkosten. Mit Ihrem Kauf unterstützen Sie direkt den Aufbau und Betrieb dieses freien IT-Nachschlagewerks. Vielen Dank für Ihre Unterstützung! Diese Links sind entsprechend als Werbung gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Werbung:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Lernkarten IT-Berufe Abschlussprüfung Teil 1 (AP1): &#039;&#039;&#039;[https://amzn.to/4sMJ8gP IT-Berufe Abschlussprüfung Teil 1: Lernkarten]&lt;br /&gt;
* &#039;&#039;&#039;Buch IT-Berufe (AO 2020) Prüfungstrainer Abschlussprüfung Teil 1: &#039;&#039;&#039; [https://amzn.to/4lvt6pt IT-Berufe (AO 2020): Prüfungstrainer Abschlussprüfung Teil 1]&lt;br /&gt;
* &#039;&#039;&#039;Buch Prüfungsvorbereitung aktuell Teil 1: &#039;&#039;&#039; [https://amzn.to/3N8iXSW Prüfungsvorbereitung aktuell Teil 1 ]&lt;br /&gt;
&lt;br /&gt;
== Programmiertechnik ==&lt;br /&gt;
&lt;br /&gt;
* Grundlagen von Programmiersprachen&lt;br /&gt;
** [[Variablen]]&lt;br /&gt;
** [[Datentypen]]&lt;br /&gt;
** Kontrollstrukturen ([[Verzweigungen]], [[Schleifen]])&lt;br /&gt;
** [[Methoden in Java|Funktionen]]&lt;br /&gt;
** [[Klassen und Objekte|Klassen, Objekte]], [[Methoden in Java|Methoden]] ([[OOP]])&lt;br /&gt;
* [[Compiler und Interpreter|Compiler, Interpreter]]&lt;br /&gt;
* Debugging &amp;amp; Fehlersuche&lt;br /&gt;
* [[Pseudocode]] schreiben &amp;amp; interpretieren&lt;br /&gt;
* [[Schreibtischtest]] durchführen&lt;br /&gt;
* [[UML|UML-Grundlagen]]&lt;br /&gt;
** [[UML Use-Case-Diagramm|Use-Case-Diagramm]]&lt;br /&gt;
** [[UML Aktivitätsdiagramm|Aktivitätsdiagramm]]&lt;br /&gt;
** [[UML Klassendiagramm|Klassendiagramm]]&lt;br /&gt;
* Grundverständnis von IDEs&lt;br /&gt;
* Grundkenntnisse Softwareergonomie&lt;br /&gt;
&lt;br /&gt;
== Datenbanken ==&lt;br /&gt;
&lt;br /&gt;
* [[Daten organisieren und speichern|Grundlagen relationaler Datenbanken]]&lt;br /&gt;
* [[Primärschlüssel]] und [[Fremdschlüssel]]&lt;br /&gt;
* [[ERM Modellierung|Einfache ER-Modelle]]&lt;br /&gt;
* &#039;&#039;&#039;SQL nicht Bestandteil der AP1 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Netzwerktechnik ==&lt;br /&gt;
&lt;br /&gt;
* Netzwerkgrundlagen&lt;br /&gt;
* Netzwerkkomponenten&lt;br /&gt;
** Router&lt;br /&gt;
** Switch&lt;br /&gt;
** Access Point&lt;br /&gt;
** Gateway&lt;br /&gt;
* IP-Konfiguration (IPv4 / IPv6)&lt;br /&gt;
* DHCP&lt;br /&gt;
* DNS&lt;br /&gt;
* WLAN-Grundlagen&lt;br /&gt;
* OSI- / TCP-IP-Modell (Grundlagen, keine tiefen Schichtenanalysen)&lt;br /&gt;
* Typische Netzwerkprotokolle&lt;br /&gt;
** Ethernet&lt;br /&gt;
** IP&lt;br /&gt;
** DNS&lt;br /&gt;
* Troubleshooting-Befehle&lt;br /&gt;
** ping&lt;br /&gt;
** tracert / traceroute&lt;br /&gt;
** arp&lt;br /&gt;
** nslookup&lt;br /&gt;
* LAN / WLAN einrichten&lt;br /&gt;
* Client-Server-Grundlagen&lt;br /&gt;
* Netzwerkgrundkonfiguration (IP, Gateway, DNS, WLAN)&lt;br /&gt;
&lt;br /&gt;
== Systemtechnik ==&lt;br /&gt;
&lt;br /&gt;
* Komponenten eines Arbeitsplatzsystems&lt;br /&gt;
** [[CPU]]&lt;br /&gt;
** [[RAM]]&lt;br /&gt;
** [[Grafikkarte]]&lt;br /&gt;
** [[Mainboard]]&lt;br /&gt;
** [[Netzteil]]&lt;br /&gt;
** [[Massenspeicher]] (SSD / HDD)&lt;br /&gt;
* [[BIOS]] / [[UEFI]]&lt;br /&gt;
* Partitionieren &amp;amp; Formatieren&lt;br /&gt;
* Dateisysteme ([[NTFS]], [[FAT32]], [[ext4]], [[APFS]])&lt;br /&gt;
* Geräteklassen ([[Stationäre Computer]], [[Mobile Computer]], [[Professionelle Systeme]], [[Spezial- und Infrastrukturgeräte]])&lt;br /&gt;
* Energieeffizienz, Leistungsdaten&lt;br /&gt;
* [[Betriebssystem]]&lt;br /&gt;
* [[Wichtige Terminalbefehle|CLI-Befehle]]&lt;br /&gt;
* Arbeitsplatzsystem planen &amp;amp; testen&lt;br /&gt;
* [[Datensicherheit]]&lt;br /&gt;
* [[Backup|Backup &amp;amp; Wiederherstellung]]&lt;br /&gt;
* Grundlegende Hardwarefehleranalyse&lt;br /&gt;
&lt;br /&gt;
== Telekommunikationstechnik ==&lt;br /&gt;
&lt;br /&gt;
* WLAN&lt;br /&gt;
* Bluetooth&lt;br /&gt;
* Videokonferenzsysteme&lt;br /&gt;
* Mobile Endgeräte im Netzwerk&lt;br /&gt;
&lt;br /&gt;
== Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
* Installation &amp;amp; Konfiguration&lt;br /&gt;
* Benutzerkonten &amp;amp; Berechtigungen&lt;br /&gt;
* Dateisystemverwaltung&lt;br /&gt;
* Netzwerkkonfiguration&lt;br /&gt;
* Update- &amp;amp; Patchkonzepte (Grundlagen)&lt;br /&gt;
* Systemnahe Tools &amp;amp; CLI&lt;br /&gt;
* Troubleshooting&lt;br /&gt;
&lt;br /&gt;
== Digitaltechnik ==&lt;br /&gt;
&lt;br /&gt;
* Binärpräfixe / Dezimalpräfixe&lt;br /&gt;
* [[Datenrepräsentation|Grundlagen der Codierungen]]&lt;br /&gt;
* Datenmengen&lt;br /&gt;
* Übertragungsgrößen&lt;br /&gt;
&lt;br /&gt;
== Projektmanagement ==&lt;br /&gt;
&lt;br /&gt;
* [[Projektmanagement]]&lt;br /&gt;
* [[Netzplan]]&lt;br /&gt;
* [[Gantt-Diagramm]]&lt;br /&gt;
* [[Vorgehensmodelle]]&lt;br /&gt;
* [[Lastenheft und Pflichtenheft]]&lt;br /&gt;
&lt;br /&gt;
== Datenschutz und Datensicherheit ==&lt;br /&gt;
&lt;br /&gt;
* [[Datenschutz]]&lt;br /&gt;
* [[Datensicherheit]]&lt;br /&gt;
&lt;br /&gt;
== IT - Service und Kommunikation ==&lt;br /&gt;
&lt;br /&gt;
* [[Zielgruppengerechte Beratung]]&lt;br /&gt;
* [[Kommunikationsmodelle]]&lt;br /&gt;
** [[Sender-Empfänger-Modell]]&lt;br /&gt;
** [[4-Ohren-Modell]]&lt;br /&gt;
* [[Kundenbedarfe ermitteln]]&lt;br /&gt;
* [[Präsentationstechniken]]&lt;br /&gt;
* [[Einweisung in Systeme]]&lt;br /&gt;
* [[Ticketsysteme]]&lt;br /&gt;
* [[SLA-Grundlagen]]&lt;br /&gt;
* [[Support-Level]]&lt;br /&gt;
&lt;br /&gt;
== WISO ==&lt;br /&gt;
&lt;br /&gt;
* Kostenkalkulationen&lt;br /&gt;
** Anschaffungskosten vergleichen&lt;br /&gt;
** Gesamtkosten berechnen&lt;br /&gt;
* Nutzwertanalysen&lt;br /&gt;
* Make-or-Buy-Entscheidungen&lt;br /&gt;
* Angebotsbewertung&lt;br /&gt;
&lt;br /&gt;
== Fachenglisch ==&lt;br /&gt;
&lt;br /&gt;
* Englische Fachbegriffe&lt;br /&gt;
* Englische Benutzeroberflächen&lt;br /&gt;
* Englische technische Dokumente&lt;br /&gt;
* Kundenkommunikation mit englischen Elementen&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3066</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3066"/>
		<updated>2026-09-29T11:28:35Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Äquivalenzklassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle beispielFunktion(-1, 1) und beispielFunktion(1, -1) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassenbildung ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen ([[Äquivalenzklassen]]) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: x &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: x &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: y &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Werden die Äquivalenzklassen von x und y miteinander kombiniert, ergeben sich vier mögliche Kombinationen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Werden alle Äquivalenzklassen von x und y miteinander kombiniert, führen sie in diesem einfachen Beispiel zu denselben vier Testfällen wie die vollständige Pfadüberdeckung. Das ist jedoch nicht grundsätzlich der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Programmiertechnik&amp;diff=3065</id>
		<title>Programmiertechnik</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Programmiertechnik&amp;diff=3065"/>
		<updated>2026-09-29T11:10:38Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Erweiterte Testverfahren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Willkommen im Themenbereich &#039;&#039;&#039;Programmiertechnik&#039;&#039;&#039;.  &lt;br /&gt;
Hier finden Sie alle Kapitel in der empfohlenen Reihenfolge.&lt;br /&gt;
&lt;br /&gt;
== Kaufempfehlungen ==&lt;br /&gt;
In diesem Beitrag befinden sich sogenannte Affiliate-Links. Wenn Sie darüber ein Produkt kaufen, erhalten wir eine kleine Provision. Für Sie entstehen keine Mehrkosten. Mit Ihrem Kauf unterstützen Sie direkt den Aufbau und Betrieb dieses freien IT-Nachschlagewerks. Vielen Dank für Ihre Unterstützung! Diese Links sind entsprechend als Werbung gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Werbung:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Buch Programmieren lernen mit Java: &#039;&#039;&#039;[https://amzn.to/4sMNogu Programmieren lernen mit Java]&lt;br /&gt;
* &#039;&#039;&#039;Buch Java: Der Grundkurs: &#039;&#039;&#039; [https://amzn.to/4bqW0lI Java: Der Grundkurs]&lt;br /&gt;
&lt;br /&gt;
== Übersicht Programmiertechnik Abschnitt 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Grundlagen der Programmierung ===&lt;br /&gt;
* [[Was sind Programmiersprachen|Was sind Programmiersprachen?]]&lt;br /&gt;
* [[Quellcode und Bytecode]]&lt;br /&gt;
* [[Compiler und Interpreter]]&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung einrichten ===&lt;br /&gt;
* [[Installation JDK und Einrichten der Umgebungsvariablen]]&lt;br /&gt;
* [[Download und Installation von VS Code]]&lt;br /&gt;
* [[Einführung in das Terminal]]&lt;br /&gt;
* [[Wichtige Terminalbefehle]]&lt;br /&gt;
&lt;br /&gt;
=== Erste Schritte in Java ===&lt;br /&gt;
* [[Der Befehl javac]]&lt;br /&gt;
* [[Der Befehl java]]&lt;br /&gt;
* [[Programm HelloWorld]]&lt;br /&gt;
* [[main-Methode]]&lt;br /&gt;
* [[Kommentare in Java]]&lt;br /&gt;
&lt;br /&gt;
=== Grundlagen der Sprache Java ===&lt;br /&gt;
* [[Datentypen|Primitive Datentypen und String]]&lt;br /&gt;
* [[Variablen]]&lt;br /&gt;
* [[Eingabe mit Scanner]]&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
* [[Verzweigungen|Verzweigungen (if, else, switch-case)]]&lt;br /&gt;
* [[Pseudocode]]&lt;br /&gt;
* [[Schleifen|Schleifen (for, while, do-while, Foreach)]]&lt;br /&gt;
&lt;br /&gt;
=== Datenstrukturen ===&lt;br /&gt;
* [[Arrays]]&lt;br /&gt;
* [[ArrayList]]&lt;br /&gt;
&lt;br /&gt;
=== Methoden (Funktionen) ===&lt;br /&gt;
* [[Methoden in Java|Methoden ohne Parameter und ohne Rückgabewert]]&lt;br /&gt;
* [[Methoden in Java|Methoden ohne Parameter und mit Rückgabewert]]&lt;br /&gt;
* [[Methoden in Java|Methoden mit Parameter und ohne Rückgabewert]]&lt;br /&gt;
* [[Methoden in Java|Methoden mit Parameter und mit Rückgabewert]]&lt;br /&gt;
&lt;br /&gt;
=== Umstieg auf eine professionelle IDE ===&lt;br /&gt;
* [[Einführung in IntelliJ IDEA]]&lt;br /&gt;
&lt;br /&gt;
== Übersicht Programmiertechnik Abschnitt 2 ==&lt;br /&gt;
=== Grundlagen der objektorientierten Programmierung (OOP) ===&lt;br /&gt;
* [[OOP|Was ist OOP?]]&lt;br /&gt;
* [[Klassen und Objekte]]&lt;br /&gt;
* [[Instanzvariablen]]&lt;br /&gt;
* [[Getter und Setter]]&lt;br /&gt;
* [[Konstruktor]]&lt;br /&gt;
* [[Objekterzeugung mit new()]]&lt;br /&gt;
&lt;br /&gt;
=== Vererbung ===&lt;br /&gt;
* [[Zweck der Vererbung]]&lt;br /&gt;
* [[Vererbung]]&lt;br /&gt;
* [[Gemeinsamer Datentyp durch Vererbung]]&lt;br /&gt;
* [[Typecasting]]&lt;br /&gt;
* [[Vererbung im UML-Klassendiagramm]]&lt;br /&gt;
&lt;br /&gt;
=== Exceptionhandling ===&lt;br /&gt;
* [[Exceptionhandling Grundlagen]]&lt;br /&gt;
&lt;br /&gt;
=== Testen ===&lt;br /&gt;
* [[Testen allgemein]]&lt;br /&gt;
* [[Statisches Testen]]&lt;br /&gt;
* [[Dynamisches Testen]]&lt;br /&gt;
* [[Black-Box-Test]]&lt;br /&gt;
* [[White-Box-Test]] &lt;br /&gt;
* [[Schreibtischtest]]&lt;br /&gt;
&lt;br /&gt;
=== Vorgehensmodelle ===&lt;br /&gt;
* [[Vorgehensmodelle|Klassische Vorgehensmodelle]]&lt;br /&gt;
* [[Vorgehensmodelle|Agile Vorgehensmodelle]]&lt;br /&gt;
&lt;br /&gt;
=== UML-Diagramme ===&lt;br /&gt;
* [[UML]]&lt;br /&gt;
* [[UML Use-Case-Diagramm]]&lt;br /&gt;
* [[UML Klassendiagramm]]&lt;br /&gt;
* [[UML Aktivitätsdiagramm]]&lt;br /&gt;
&lt;br /&gt;
=== Datentransportformate ===&lt;br /&gt;
* [[CSV]]&lt;br /&gt;
* [[XML]]&lt;br /&gt;
* [[JSON]]&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Inhalte (FIAE – 2. und 4. Semester) ==&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte objektorientierte Techniken ===&lt;br /&gt;
* [[Abstrakte Klassen]]&lt;br /&gt;
* [[Interfaces]]&lt;br /&gt;
* [[Mehrdimensionale Arrays]]&lt;br /&gt;
* [[HashMap|HashMaps]]&lt;br /&gt;
* [[Set|Sets]]&lt;br /&gt;
* [[Sortieralgorithmen]]&lt;br /&gt;
&lt;br /&gt;
=== GUI-Programmierung ===&lt;br /&gt;
* [[GUI-Programmierung (Android)]]&lt;br /&gt;
&lt;br /&gt;
=== Dateien und Dateienzugriffe ===&lt;br /&gt;
* [[Dateien und Datenströme beschreiben]]&lt;br /&gt;
* [[Dateizugriffe realisieren]]&lt;br /&gt;
&lt;br /&gt;
=== Datenbankzugriffe ===&lt;br /&gt;
* [[Datenbankzugriffe realisieren]]&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte UML-Diagramme ===&lt;br /&gt;
* [[UML Sequenzdiagramm]]&lt;br /&gt;
* [[UML Zustandsdiagramm]]&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Testverfahren ===&lt;br /&gt;
* [[Code Coverage]]&lt;br /&gt;
* [[Äquivalenzklassen]]&lt;br /&gt;
&lt;br /&gt;
=== Weitere Programmierkonzepte ===&lt;br /&gt;
* [[Rekursion]]&lt;br /&gt;
* [[Threads]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3064</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3064"/>
		<updated>2026-09-29T11:06:27Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beipiel Passwortlänge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel &amp;quot;Zulässige Altersspanne&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel &amp;quot;Passwortlänge&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss &#039;&#039;&#039;mindestens 8 und höchstens 20 Zeichen&#039;&#039;&#039; lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Passwortlänge&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| weniger als 8 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 5 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 8 bis 20 Zeichen&lt;br /&gt;
| gültig&lt;br /&gt;
| 12 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| mehr als 20 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 25 Zeichen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Als Testfälle werden repräsentative Werte aus den drei Äquivalenzklassen ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;5 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
* &#039;&#039;&#039;12 Zeichen&#039;&#039;&#039; → Passwort wird akzeptiert&lt;br /&gt;
* &#039;&#039;&#039;25 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens &#039;&#039;&#039;ein repräsentativer Wert aus jeder Äquivalenzklasse&#039;&#039;&#039; geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3063</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3063"/>
		<updated>2026-09-29T11:05:55Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beispiel Zulässige Altersspanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel &amp;quot;Zulässige Altersspanne&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel Passwortlänge ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss &#039;&#039;&#039;mindestens 8 und höchstens 20 Zeichen&#039;&#039;&#039; lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Passwortlänge&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| weniger als 8 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 5 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 8 bis 20 Zeichen&lt;br /&gt;
| gültig&lt;br /&gt;
| 12 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| mehr als 20 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 25 Zeichen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Als Testfälle werden repräsentative Werte aus den drei Äquivalenzklassen ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;5 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
* &#039;&#039;&#039;12 Zeichen&#039;&#039;&#039; → Passwort wird akzeptiert&lt;br /&gt;
* &#039;&#039;&#039;25 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens &#039;&#039;&#039;ein repräsentativer Wert aus jeder Äquivalenzklasse&#039;&#039;&#039; geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3062</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3062"/>
		<updated>2026-09-29T10:44:12Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beispiel 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel Zulässige Altersspanne ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel Passwortlänge ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss &#039;&#039;&#039;mindestens 8 und höchstens 20 Zeichen&#039;&#039;&#039; lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Passwortlänge&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| weniger als 8 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 5 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 8 bis 20 Zeichen&lt;br /&gt;
| gültig&lt;br /&gt;
| 12 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| mehr als 20 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 25 Zeichen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Als Testfälle werden repräsentative Werte aus den drei Äquivalenzklassen ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;5 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
* &#039;&#039;&#039;12 Zeichen&#039;&#039;&#039; → Passwort wird akzeptiert&lt;br /&gt;
* &#039;&#039;&#039;25 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens &#039;&#039;&#039;ein repräsentativer Wert aus jeder Äquivalenzklasse&#039;&#039;&#039; geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3061</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3061"/>
		<updated>2026-09-29T10:43:22Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beipiel 2 Passwortlänge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel 1 ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel Passwortlänge ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss &#039;&#039;&#039;mindestens 8 und höchstens 20 Zeichen&#039;&#039;&#039; lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Passwortlänge&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| weniger als 8 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 5 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 8 bis 20 Zeichen&lt;br /&gt;
| gültig&lt;br /&gt;
| 12 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| mehr als 20 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 25 Zeichen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Als Testfälle werden repräsentative Werte aus den drei Äquivalenzklassen ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;5 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
* &#039;&#039;&#039;12 Zeichen&#039;&#039;&#039; → Passwort wird akzeptiert&lt;br /&gt;
* &#039;&#039;&#039;25 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens &#039;&#039;&#039;ein repräsentativer Wert aus jeder Äquivalenzklasse&#039;&#039;&#039; geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3060</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3060"/>
		<updated>2026-09-29T10:42:54Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beipiel 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel 1 ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel 2 Passwortlänge ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss &#039;&#039;&#039;mindestens 8 und höchstens 20 Zeichen&#039;&#039;&#039; lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Passwortlänge&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| weniger als 8 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 5 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 8 bis 20 Zeichen&lt;br /&gt;
| gültig&lt;br /&gt;
| 12 Zeichen&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| mehr als 20 Zeichen&lt;br /&gt;
| ungültig&lt;br /&gt;
| 25 Zeichen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Als Testfälle werden repräsentative Werte aus den drei Äquivalenzklassen ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;5 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
* &#039;&#039;&#039;12 Zeichen&#039;&#039;&#039; → Passwort wird akzeptiert&lt;br /&gt;
* &#039;&#039;&#039;25 Zeichen&#039;&#039;&#039; → Passwort wird abgelehnt&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens &#039;&#039;&#039;ein repräsentativer Wert aus jeder Äquivalenzklasse&#039;&#039;&#039; geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3059</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3059"/>
		<updated>2026-09-29T10:41:20Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Beispiel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel 1 ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Beipiel 2 ==&lt;br /&gt;
&lt;br /&gt;
Ein Passwort muss **mindestens 8 und höchstens 20 Zeichen** lang sein.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
| Äquivalenzklasse | Passwortlänge | Bedeutung | Beispiel |&lt;br /&gt;
|---|---:|---|---|&lt;br /&gt;
| 1 | weniger als 8 Zeichen | ungültig | 5 Zeichen |&lt;br /&gt;
| 2 | 8 bis 20 Zeichen | gültig | 12 Zeichen |&lt;br /&gt;
| 3 | mehr als 20 Zeichen | ungültig | 25 Zeichen |&lt;br /&gt;
&lt;br /&gt;
Als Testfälle reichen zunächst repräsentative Werte aus den drei Klassen:&lt;br /&gt;
&lt;br /&gt;
```text&lt;br /&gt;
5 Zeichen  → Passwort wird abgelehnt&lt;br /&gt;
12 Zeichen → Passwort wird akzeptiert&lt;br /&gt;
25 Zeichen → Passwort wird abgelehnt&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Statt jede mögliche Passwortlänge zu testen, wird mindestens **ein Vertreter jeder Äquivalenzklasse** geprüft.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3058</id>
		<title>Äquivalenzklassen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=%C3%84quivalenzklassen&amp;diff=3058"/>
		<updated>2026-09-29T10:39:41Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Die &amp;#039;&amp;#039;&amp;#039;Äquivalenzklassenbildung&amp;#039;&amp;#039;&amp;#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &amp;#039;&amp;#039;&amp;#039;Äquivalenzklassen&amp;#039;&amp;#039;&amp;#039;, eingeteilt.  Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.  == Beispiel ==  Eine Anwendung erlaubt die R…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Verfahren zum systematischen Erstellen von Testfällen. Dabei werden mögliche Eingabewerte in Gruppen, sogenannte &#039;&#039;&#039;Äquivalenzklassen&#039;&#039;&#039;, eingeteilt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass sich alle Werte innerhalb einer Äquivalenzklasse aus Sicht des Programms gleich verhalten. Deshalb reicht es in der Regel aus, einen repräsentativen Wert aus jeder Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung erlaubt die Registrierung nur für Personen im Alter von &#039;&#039;&#039;18 bis 67 Jahren&#039;&#039;&#039;. Das Alter wird als ganze Zahl eingegeben.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich drei Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Äquivalenzklasse&lt;br /&gt;
! Wertebereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Beispielwert&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Alter &amp;lt; 18&lt;br /&gt;
| ungültig&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 18 ≤ Alter ≤ 67&lt;br /&gt;
| gültig&lt;br /&gt;
| 40&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alter &amp;gt; 67&lt;br /&gt;
| ungültig&lt;br /&gt;
| 75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für einen Test muss nun nicht jedes mögliche Alter geprüft werden. Stattdessen wird aus jeder Äquivalenzklasse ein repräsentativer Wert ausgewählt:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;15&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
* &#039;&#039;&#039;40&#039;&#039;&#039; → Registrierung möglich&lt;br /&gt;
* &#039;&#039;&#039;75&#039;&#039;&#039; → Registrierung nicht möglich&lt;br /&gt;
&lt;br /&gt;
Damit werden alle drei Äquivalenzklassen mit nur drei Testfällen berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Vorteil ==&lt;br /&gt;
&lt;br /&gt;
Durch die Äquivalenzklassenbildung kann die Anzahl der benötigten Testfälle reduziert werden, ohne wichtige Gruppen von Eingabewerten auszulassen.&lt;br /&gt;
&lt;br /&gt;
== Merksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen Eingabewerte mit erwartet gleichem Verhalten zusammen. Aus jeder Klasse wird mindestens ein repräsentativer Wert getestet.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3057</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3057"/>
		<updated>2026-09-29T10:35:44Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Unterschied zwischen Zweig- und Pfadüberdeckung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle beispielFunktion(-1, 1) und beispielFunktion(1, -1) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: x &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: x &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: y &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Werden die Äquivalenzklassen von x und y miteinander kombiniert, ergeben sich vier mögliche Kombinationen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Werden alle Äquivalenzklassen von x und y miteinander kombiniert, führen sie in diesem einfachen Beispiel zu denselben vier Testfällen wie die vollständige Pfadüberdeckung. Das ist jedoch nicht grundsätzlich der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3056</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3056"/>
		<updated>2026-09-29T10:03:33Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Zusammenhang zur Pfadüberdeckung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle für Zweigüberdeckung beispielFunktion(-1, 1), beispielFunktion(1, -1)) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: x &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: x &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: y &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Werden die Äquivalenzklassen von x und y miteinander kombiniert, ergeben sich vier mögliche Kombinationen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Werden alle Äquivalenzklassen von x und y miteinander kombiniert, führen sie in diesem einfachen Beispiel zu denselben vier Testfällen wie die vollständige Pfadüberdeckung. Das ist jedoch nicht grundsätzlich der Fall.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3055</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3055"/>
		<updated>2026-09-29T10:02:29Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Testfälle aus Äquivalenzklassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle für Zweigüberdeckung beispielFunktion(-1, 1), beispielFunktion(1, -1)) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: x &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: x &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: y &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Werden die Äquivalenzklassen von x und y miteinander kombiniert, ergeben sich vier mögliche Kombinationen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Die Äquivalenzklassen führen in diesem Beispiel direkt zu den gleichen Testfällen wie die &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039;.  &lt;br /&gt;
Allerdings ist die Methode allgemeiner und wird vor allem zur Planung von Testfällen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3054</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3054"/>
		<updated>2026-09-29T10:01:48Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Anwendung auf das Beispiel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle für Zweigüberdeckung beispielFunktion(-1, 1), beispielFunktion(1, -1)) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: x &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: x &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* Äquivalenzklasse 1: y &amp;gt; 0&lt;br /&gt;
* Äquivalenzklasse 2: y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Aus den Klassen lassen sich sinnvolle Testfälle ableiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Die Äquivalenzklassen führen in diesem Beispiel direkt zu den gleichen Testfällen wie die &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039;.  &lt;br /&gt;
Allerdings ist die Methode allgemeiner und wird vor allem zur Planung von Testfällen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3053</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3053"/>
		<updated>2026-09-29T10:00:04Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Unterschied zwischen Zweig- und Pfadüberdeckung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle für Zweigüberdeckung beispielFunktion(-1, 1), beispielFunktion(1, -1)) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt; 0 und y &amp;gt; 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* x &amp;gt; 0 (gültig)&lt;br /&gt;
* x ≤ 0 (nicht positiv)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* y &amp;gt; 0 (gültig)&lt;br /&gt;
* y ≤ 0 (nicht positiv)&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Aus den Klassen lassen sich sinnvolle Testfälle ableiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Die Äquivalenzklassen führen in diesem Beispiel direkt zu den gleichen Testfällen wie die &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039;.  &lt;br /&gt;
Allerdings ist die Methode allgemeiner und wird vor allem zur Planung von Testfällen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3052</id>
		<title>Code Coverage</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Code_Coverage&amp;diff=3052"/>
		<updated>2026-09-29T09:56:23Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Pfadüberdeckung (Path Coverage) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Code Coverage&#039;&#039;&#039; (Testabdeckung) gibt an, wie viel Prozent des Programmcodes während eines Tests tatsächlich ausgeführt wurde.  &lt;br /&gt;
Sie misst also, &#039;&#039;&#039;wie gut der vorhandene Code durch Tests abgedeckt ist&#039;&#039;&#039; und hilft einzuschätzen, ob wichtige Teile des Programms ausreichend getestet wurden.&lt;br /&gt;
&lt;br /&gt;
Eine hohe Code Coverage bedeutet nicht automatisch fehlerfreie Software, zeigt aber, dass viele Wege im Programm getestet wurden.  &lt;br /&gt;
Typische Messgrößen sind Anweisungsüberdeckung, Zweigüberdeckung und Pfadüberdeckung.&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Beispiel {&lt;br /&gt;
    public static void beispielFunktion(int x, int y) {&lt;br /&gt;
        if (x &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
        }        &lt;br /&gt;
        if (y &amp;gt; 0) {&lt;br /&gt;
            System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.&lt;br /&gt;
&lt;br /&gt;
== Anweisungsüberdeckung (Statement Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Anweisungsüberdeckung bedeutet, dass &#039;&#039;&#039;jede&#039;&#039;&#039; Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 1&#039;&#039;&#039;: if (x &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 1&#039;&#039;&#039;: System.out.println(&amp;quot;x ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingung 2&#039;&#039;&#039;: (y &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anweisung 2&#039;&#039;&#039;: System.out.println(&amp;quot;y ist positiv&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfall für 100% Anweisungsüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);  // x &amp;gt; 0, y &amp;gt; 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
&lt;br /&gt;
* Bei beispielFunktion(1, 1) wird die Bedingung x &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;x ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
* Ebenso wird die Bedingung y &amp;gt; 0 erfüllt, also wird System.out.println(&amp;quot;y ist positiv&amp;quot;) ausgeführt.&lt;br /&gt;
&lt;br /&gt;
== Zweigüberdeckung (Branch Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung &#039;&#039;&#039;mindestens einmal&#039;&#039;&#039; getestet wird (true und false).&lt;br /&gt;
&lt;br /&gt;
* if (x &amp;gt; 0): true / false&lt;br /&gt;
* if (y &amp;gt; 0): true / false&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Zweigüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);  // x &amp;lt;= 0, y &amp;gt; 0&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);  // x &amp;gt; 0, y &amp;lt;= 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.&lt;br /&gt;
&lt;br /&gt;
== Pfadüberdeckung (Path Coverage) ==&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung bedeutet, dass &#039;&#039;&#039;alle möglichen Kombinationen&#039;&#039;&#039; von Pfaden durch den Code getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mögliche Pfade:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# x &amp;gt; 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;gt; 0 und y &amp;lt;= 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;gt; 0&lt;br /&gt;
# x &amp;lt;= 0 und y &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testfälle für 100% Pfadüberdeckung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // Pfad 1&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // Pfad 2&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // Pfad 3&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // Pfad 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.&lt;br /&gt;
&lt;br /&gt;
Bei Programmen mit Schleifen kann eine vollständige Pfadüberdeckung praktisch unmöglich sein, da durch unterschiedliche Schleifendurchläufe sehr viele oder sogar theoretisch unendlich viele Ausführungspfade entstehen können.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zwischen Zweig- und Pfadüberdeckung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung&#039;&#039;&#039; prüft nur, ob jeder Zweig der Bedingung (z.B. if- oder else-Zweig) mindestens einmal durchlaufen wurde. Die Testfälle für Zweigüberdeckung beispielFunktion(-1, 1), beispielFunktion(1, -1)) erreichen dies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039; geht einen Schritt weiter und stellt sicher, dass jede Kombination der Bedingungen getestet wird. Hier sind zwei zusätzliche Testfälle (beispielFunktion(-1, -1), beispielFunktion(1, 1)) notwendig, um den Pfad x &amp;lt;= 0 und y &amp;lt;= 0 , sowie x &amp;gt;= 0 und y &amp;gt;= 0 zu testen. Diese Pfade werden bei der reinen Zweigüberdeckung nicht getestet.&lt;br /&gt;
&lt;br /&gt;
== Äquivalenzklassen ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Äquivalenzklassenbildung&#039;&#039;&#039; ist ein Testverfahren, bei dem Eingabewerte in Gruppen (Klassen) eingeteilt werden.  &lt;br /&gt;
Alle Werte einer Klasse verhalten sich aus Sicht des Programms gleich, sodass es ausreicht, nur einen repräsentativen Wert pro Klasse zu testen.&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
&lt;br /&gt;
* Reduzierung der Anzahl an Testfällen  &lt;br /&gt;
* trotzdem gute Testabdeckung  &lt;br /&gt;
* systematisches Testen von Eingaben  &lt;br /&gt;
&lt;br /&gt;
=== Anwendung auf das Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Die Funktion prüft die Bedingungen:&lt;br /&gt;
&lt;br /&gt;
* x &amp;gt; 0  &lt;br /&gt;
* y &amp;gt; 0  &lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich folgende Äquivalenzklassen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für x:&#039;&#039;&#039;&lt;br /&gt;
* x &amp;gt; 0 (gültig)&lt;br /&gt;
* x ≤ 0 (nicht positiv)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Für y:&#039;&#039;&#039;&lt;br /&gt;
* y &amp;gt; 0 (gültig)&lt;br /&gt;
* y ≤ 0 (nicht positiv)&lt;br /&gt;
&lt;br /&gt;
=== Testfälle aus Äquivalenzklassen ===&lt;br /&gt;
&lt;br /&gt;
Aus den Klassen lassen sich sinnvolle Testfälle ableiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Beispiel.beispielFunktion(1, 1);    // beide positiv&lt;br /&gt;
Beispiel.beispielFunktion(1, -1);   // x positiv, y nicht&lt;br /&gt;
Beispiel.beispielFunktion(-1, 1);   // x nicht, y positiv&lt;br /&gt;
Beispiel.beispielFunktion(-1, -1);  // beide nicht positiv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zusammenhang zur Pfadüberdeckung ===&lt;br /&gt;
&lt;br /&gt;
Die Äquivalenzklassen führen in diesem Beispiel direkt zu den gleichen Testfällen wie die &#039;&#039;&#039;Pfadüberdeckung&#039;&#039;&#039;.  &lt;br /&gt;
Allerdings ist die Methode allgemeiner und wird vor allem zur Planung von Testfällen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Äquivalenzklassen fassen ähnliche Eingaben zusammen, sodass weniger, aber gezielte Testfälle benötigt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Anweisungsüberdeckung:&#039;&#039;&#039; 1 Testfall reicht aus, wenn alle Anweisungen mindestens einmal ausgeführt werden (z. B. beispielFunktion(1, 1))&lt;br /&gt;
* &#039;&#039;&#039;Zweigüberdeckung:&#039;&#039;&#039; Du kannst 100% Zweigüberdeckung mit 2 Testfällen erreichen, da beide Zweige jeder Bedingung (true/false) getestet werden.&lt;br /&gt;
* &#039;&#039;&#039;Pfadüberdeckung:&#039;&#039;&#039; Du benötigst 4 Testfälle, um alle Kombinationen der Bedingungen (also alle Pfade) zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Blue-ray_Disc&amp;diff=3051</id>
		<title>Blue-ray Disc</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Blue-ray_Disc&amp;diff=3051"/>
		<updated>2026-09-07T11:31:13Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Moettke verschob die Seite Blue-ray Disc nach Blu-ray Disc: Falsch geschriebener Name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Blu-ray Disc]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Blu-ray_Disc&amp;diff=3050</id>
		<title>Blu-ray Disc</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Blu-ray_Disc&amp;diff=3050"/>
		<updated>2026-09-07T11:31:13Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Moettke verschob die Seite Blue-ray Disc nach Blu-ray Disc: Falsch geschriebener Name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Blu-ray Disc (BD)&#039;&#039;&#039; ist ein [[optische Medien|optischer Hochspeicher-Datenträger]], der deutlich mehr Daten speichern kann als [[CD]] und [[DVD]].  &lt;br /&gt;
Sie wird mit einem &#039;&#039;&#039;blauen-violettem&#039;&#039;&#039; Laser ausgelesen, der eine sehr hohe Datendichte ermöglicht.&lt;br /&gt;
&lt;br /&gt;
== Warum ein blauer Laser? ==&lt;br /&gt;
Ein blauer Laser hat eine &#039;&#039;&#039;sehr kurze Wellenlänge (405 nm)&#039;&#039;&#039;.  &lt;br /&gt;
Dadurch können viel kleinere Strukturen fokussiert und gelesen werden. Das ermöglicht die sehr hohe Speicherdichte der Blu-ray.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* Kapazität:  &lt;br /&gt;
  * &#039;&#039;&#039;25 GB&#039;&#039;&#039; (Single Layer)  &lt;br /&gt;
  * &#039;&#039;&#039;50 GB&#039;&#039;&#039; (Dual Layer)  &lt;br /&gt;
  * bis zu &#039;&#039;&#039;100–128 GB&#039;&#039;&#039; (BD-XL)  &lt;br /&gt;
* extrem kleine [[Pits und Lands]] und enge Spuren  &lt;br /&gt;
* Nutzung eines &#039;&#039;&#039;blauen/violetten&#039;&#039;&#039; Lasers mit &#039;&#039;&#039;405 nm&#039;&#039;&#039;  &lt;br /&gt;
* hohe Datenrate, ideal für HD- und 4K-Videos&lt;br /&gt;
&lt;br /&gt;
== Varianten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Typ !! Beschreibung !! Besonderheit&lt;br /&gt;
|-&lt;br /&gt;
| BD-ROM || nur lesbar || Filme, Spiele&lt;br /&gt;
|-&lt;br /&gt;
| BD-R || einmal beschreibbar || große Datenmengen, Archivierung&lt;br /&gt;
|-&lt;br /&gt;
| BD-RE || wiederbeschreibbar || Daten können gelöscht/überschrieben werden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
* Full-HD- und 4K-Filme  &lt;br /&gt;
* Spiele für Konsolen (z. B. PlayStation)  &lt;br /&gt;
* große [[Backup]]s und Archivierung  &lt;br /&gt;
* Datenverteilung mit sehr hoher Kapazität&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Die Blu-ray verwendet einen blauen Laser mit kurzer Wellenlänge und erreicht so sehr hohe Speicherdichten bis über 100 GB.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=USB&amp;diff=3049</id>
		<title>USB</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=USB&amp;diff=3049"/>
		<updated>2026-09-07T11:25:24Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* USB-Versionen und Geschwindigkeiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;USB (Universal Serial Bus)&#039;&#039;&#039; ist ein universeller Anschlussstandard zur Verbindung von Peripheriegeräten mit Computern und anderen Endgeräten.  &lt;br /&gt;
USB ermöglicht &#039;&#039;&#039;Datenübertragung&#039;&#039;&#039;, &#039;&#039;&#039;Stromversorgung&#039;&#039;&#039; und – bei neueren Versionen – auch &#039;&#039;&#039;Video- und Audioübertragung&#039;&#039;&#039; über ein einziges Kabel.&lt;br /&gt;
&lt;br /&gt;
== Ziele von USB ==&lt;br /&gt;
USB wurde entwickelt, um:&lt;br /&gt;
* viele verschiedene Anschlüsse zu ersetzen (seriell, parallel, PS/2)&lt;br /&gt;
* Geräte einfach anschließen zu können (Plug-and-Play)&lt;br /&gt;
* gleichzeitig Daten und Strom bereitzustellen&lt;br /&gt;
&lt;br /&gt;
== Steckerformen ==&lt;br /&gt;
===&#039;&#039;&#039;USB-A&#039;&#039;&#039; – klassischer rechteckiger Stecker===&lt;br /&gt;
[[Datei:Usba stecker.jpg|rahmenlos|links|upright=1|alternativtext=USB A Stecker|USB A Stecker]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;USB-B&#039;&#039;&#039; – meist bei Druckern===&lt;br /&gt;
[[Datei:Usbb stecker.jpg|rahmenlos|links|upright=1|alternativtext=USB B Stecker|USB B Stecker]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;Micro-USB&#039;&#039;&#039; – ältere Smartphones===&lt;br /&gt;
[[Datei:Microusb stecker.jpg|rahmenlos|links|upright=1|alternativtext=MicroUSB Stecker|MicroUSB Stecker]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;USB-C&#039;&#039;&#039; – beidseitig steckbar, Standard für moderne Geräte===&lt;br /&gt;
[[Datei:Usbc stecker.jpg|rahmenlos|links|upright=1|alternativtext=USB C Stecker|USB C Stecker]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Historie ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Jahr !! Version !! Maximale Datenrate !! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| 1996 || USB 1.0 || 12 Mbit/s || erste Version&lt;br /&gt;
|-&lt;br /&gt;
| 2000 || USB 2.0 || 480 Mbit/s || großer Durchbruch&lt;br /&gt;
|-&lt;br /&gt;
| 2008 || USB 3.0 || 5 Gbit/s || deutlich höhere Geschwindigkeit&lt;br /&gt;
|-&lt;br /&gt;
| 2013 || USB 3.1 || 10 Gbit/s || effizientere Codierung&lt;br /&gt;
|-&lt;br /&gt;
| 2017 || USB 3.2 || bis 20 Gbit/s || mehrere Lanes&lt;br /&gt;
|-&lt;br /&gt;
| 2019 || USB4 Gen 3x2|| 40 Gbit/s || Thunderbolt-Technik integriert&lt;br /&gt;
|-&lt;br /&gt;
| 2022 || USB4v2 Gen 4x2|| 80 Gbit/s || Thunderbolt-Technik integriert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== USB-Versionen und Geschwindigkeiten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bezeichnung !! Geschwindigkeit !! Videoübertragung&lt;br /&gt;
|-&lt;br /&gt;
| USB 2.0 || 480 Mbit/s || nein&lt;br /&gt;
|-&lt;br /&gt;
| USB 3.0 / USB 3.1 Gen 1 || 5 Gbit/s || optional (über USB-C mit [[DisplayPort]] Alt Mode)&lt;br /&gt;
|-&lt;br /&gt;
| USB 3.1 Gen 2 || 10 Gbit/s || optional (über USB-C mit DisplayPort Alt Mode)&lt;br /&gt;
|-&lt;br /&gt;
| USB 3.2 Gen 2x2 || 20 Gbit/s || optional (über USB-C mit DisplayPort Alt Mode)&lt;br /&gt;
|-&lt;br /&gt;
| USB4 || 20–40 Gbit/s&amp;lt;br /&amp;gt;(USB4 v2.0 bis 80 Gbit/s) || ja (DisplayPort/Thunderbolt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== USB4 und Thunderbolt – Unterschied ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;USB4&#039;&#039;&#039; und &#039;&#039;&#039;[[Thunderbolt]]&#039;&#039;&#039; nutzen beide den &#039;&#039;&#039;USB-C-Stecker&#039;&#039;&#039; und ermöglichen die Übertragung von Daten, Video und Strom.  &lt;br /&gt;
Der wesentliche Unterschied liegt in den &#039;&#039;&#039;verpflichtenden Funktionen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
USB4 bietet hohe Geschwindigkeiten und Videoübertragung, diese sind jedoch &#039;&#039;&#039;optional&#039;&#039;&#039; und abhängig von Gerät und Kabel.&lt;br /&gt;
&lt;br /&gt;
Thunderbolt ist strenger definiert:&lt;br /&gt;
* garantierte hohe Datenrate&lt;br /&gt;
* verpflichtende Videoübertragung&lt;br /&gt;
* verpflichtende PCIe-Unterstützung&lt;br /&gt;
* zertifizierte Kabel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merksatz:&#039;&#039;&#039;&lt;br /&gt;
 USB4 kann vieles – Thunderbolt muss alles können.&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung über USB ==&lt;br /&gt;
USB stellt neben Daten auch &#039;&#039;&#039;elektrische Energie&#039;&#039;&#039; bereit.&lt;br /&gt;
&lt;br /&gt;
=== Klassische USB-Stromstärken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Standard !! Spannung !! Strom !! Leistung&lt;br /&gt;
|-&lt;br /&gt;
| USB 2.0 || 5 V || 0,5 A || 2,5 W&lt;br /&gt;
|-&lt;br /&gt;
| USB 3.x || 5 V || 0,9 A || 4,5 W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Power Delivery: ===&lt;br /&gt;
&#039;&#039;&#039;USB Power Delivery (USB-PD)&#039;&#039;&#039; ist eine Erweiterung des USB-Standards zur &#039;&#039;&#039;flexiblen und leistungsstarken Stromversorgung&#039;&#039;&#039; von Geräten. Im Gegensatz zu klassischem USB erlaubt USB-PD höhere Spannungen und Leistungen, die zwischen den Geräten automatisch ausgehandelt werden.&lt;br /&gt;
&lt;br /&gt;
Dadurch können über &#039;&#039;&#039;USB-C&#039;&#039;&#039; nicht nur Smartphones, sondern auch &#039;&#039;&#039;Laptops, Monitore und Dockingstationen&#039;&#039;&#039; mit Strom versorgt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;USB-PD&#039;&#039;&#039; ist &#039;&#039;&#039;nicht an eine bestimmte USB-Datenversion&#039;&#039;&#039; (z. B. USB 2.0, 3.x, USB4) gebunden,  &lt;br /&gt;
sondern an den &#039;&#039;&#039;USB-C-Stecker&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
USB Power Delivery unterscheidet zwei Leistungsbereiche:&lt;br /&gt;
&lt;br /&gt;
==== SPR – Standard Power Range ====&lt;br /&gt;
Die &#039;&#039;&#039;Standard Power Range (SPR)&#039;&#039;&#039; ist der klassische USB-PD-Leistungsbereich.&lt;br /&gt;
&lt;br /&gt;
* Spannungen: &#039;&#039;&#039;5 V, 9 V, 15 V, 20 V&#039;&#039;&#039;&lt;br /&gt;
* Maximale Leistung: &#039;&#039;&#039;bis zu 100 W&#039;&#039;&#039; (20 V, 5 A)&lt;br /&gt;
* Unterstützt ab &#039;&#039;&#039;USB-PD 2.0 / 3.0&#039;&#039;&#039;&lt;br /&gt;
* bidirektional (Geräte können Strom liefern oder empfangen)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Typische Geräte:&#039;&#039;&#039;&lt;br /&gt;
Smartphones, Tablets, Notebooks, Monitore&lt;br /&gt;
&lt;br /&gt;
==== EPR – Extended Power Range ====&lt;br /&gt;
Die &#039;&#039;&#039;Extended Power Range (EPR)&#039;&#039;&#039; erweitert USB-PD für leistungsstarke Geräte.&lt;br /&gt;
&lt;br /&gt;
* Spannungen: &#039;&#039;&#039;28 V, 36 V, 48 V&#039;&#039;&#039;&lt;br /&gt;
* Maximale Leistung: &#039;&#039;&#039;bis zu 240 W&#039;&#039;&#039; (48 V, 5 A)&lt;br /&gt;
* Unterstützt ab &#039;&#039;&#039;USB-PD 3.1&#039;&#039;&#039;&lt;br /&gt;
* erfordert &#039;&#039;&#039;EPR-fähige USB-C-Kabel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Typische Geräte:&#039;&#039;&#039;&lt;br /&gt;
leistungsstarke Laptops, Workstations, Monitore&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merksatz:&#039;&#039;&#039;&lt;br /&gt;
 SPR reicht bis 100 W – EPR erweitert USB-PD auf bis zu 240 W.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Videoübertragung über USB ==&lt;br /&gt;
&lt;br /&gt;
Moderne USB-Verbindungen können neben Daten und Strom auch &#039;&#039;&#039;Videosignale&#039;&#039;&#039; übertragen.  &lt;br /&gt;
Dies ist vor allem über den &#039;&#039;&#039;USB-C-Stecker&#039;&#039;&#039; möglich.&lt;br /&gt;
&lt;br /&gt;
Die Videoübertragung erfolgt dabei nicht über USB selbst, sondern über sogenannte &#039;&#039;&#039;Alternate Modes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== DisplayPort Alternate Mode ====&lt;br /&gt;
Der &#039;&#039;&#039;DisplayPort Alt Mode&#039;&#039;&#039; nutzt die Leitungen von USB-C, um ein DisplayPort-Signal zu übertragen.&lt;br /&gt;
&lt;br /&gt;
* Übertragung von Video (und Audio)&lt;br /&gt;
* Unterstützung für hohe Auflösungen (z. B. 4K, 5K)&lt;br /&gt;
* häufig bei Laptops, Dockingstationen und Monitoren&lt;br /&gt;
&lt;br /&gt;
=== HDMI Alternate Mode ===&lt;br /&gt;
* ermöglicht HDMI-Video über USB-C&lt;br /&gt;
* wird seltener eingesetzt als DisplayPort Alt Mode&lt;br /&gt;
&lt;br /&gt;
=== USB4 und Thunderbolt ===&lt;br /&gt;
Bei &#039;&#039;&#039;USB4&#039;&#039;&#039; und &#039;&#039;&#039;[[Thunderbolt]]&#039;&#039;&#039; ist die Videoübertragung direkt integriert.&lt;br /&gt;
&lt;br /&gt;
* gleichzeitige Übertragung von Daten, Video und Strom&lt;br /&gt;
* Unterstützung mehrerer Monitore&lt;br /&gt;
* hohe Bandbreite bis 40 Gbit/s&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039;&lt;br /&gt;
Nicht jeder USB-C-Anschluss unterstützt Videoübertragung –  &lt;br /&gt;
dies hängt vom Gerät, Controller und Kabel ab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merksatz:&#039;&#039;&#039;&lt;br /&gt;
 Video über USB funktioniert meist über USB-C und DisplayPort Alt Mode.&lt;br /&gt;
&lt;br /&gt;
== USB-C (Sonderrolle) ==&lt;br /&gt;
USB-C ist &#039;&#039;&#039;nur die Steckerform&#039;&#039;&#039;, nicht automatisch die Geschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
USB-C kann:&lt;br /&gt;
* USB 2.0 oder USB4 sein&lt;br /&gt;
* USB Power Delivery unterstützen&lt;br /&gt;
* Video über DisplayPort-Alt-Mode übertragen&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
* [[Eingabegeräte]] ([[Maus]], [[Tastatur]])&lt;br /&gt;
* USB-Sticks, externe [[SSD]] / [[HDD]]&lt;br /&gt;
* Smartphones, Tablets, Laptops&lt;br /&gt;
* Dockingstationen&lt;br /&gt;
* [[Monitor|Monitore]] über USB-C&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;USB ist ein universeller Standard für Daten und Strom – moderne Geräte nutzen überwiegend USB-C mit USB-Power-Delivery.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=M.2&amp;diff=3048</id>
		<title>M.2</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=M.2&amp;diff=3048"/>
		<updated>2026-09-07T11:22:19Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* M.2-Keying */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;M.2&#039;&#039;&#039; ist ein kompakter Steckkartenstandard für [[SSD]]s und Erweiterungsmodule in modernen PCs und Notebooks.  &lt;br /&gt;
Er ersetzt ältere Formfaktoren wie mSATA und ermöglicht hohe Geschwindigkeiten sowie sehr kleine Bauformen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* sehr kompakter Formfaktor  &lt;br /&gt;
* unterstützt verschiedene Signale ([[PCIe]], [[SATA]], [[USB]])  &lt;br /&gt;
* wird direkt auf das [[Mainboard]] gesteckt  &lt;br /&gt;
* ideal für SSDs, WLAN-Module und Mobilgeräte&lt;br /&gt;
&lt;br /&gt;
== M.2-Anschluss ==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;M.2-Anschluss&#039;&#039;&#039; ist ein kompakter Steckplatz auf dem [[Mainboard]], über den [[SSD]]s, WLAN- oder LTE-Module direkt verbunden werden. Er unterstützt verschiedene Protokolle wie [[PCIe]], [[NVMe]], [[SATA]] und [[USB]], je nach Slottyp (Key B, Key M oder B+M).  &lt;br /&gt;
Durch seine kleine Bauform eignet sich M.2 besonders für schnelle NVMe-SSDs und moderne Notebooks.&lt;br /&gt;
&lt;br /&gt;
== M.2-Keying ==&lt;br /&gt;
&lt;br /&gt;
Der Anschlusstyp von M.2-Modulen wird unter anderem durch Kerben (&#039;&#039;&#039;Keys&#039;&#039;&#039;) festgelegt. Sie bestimmen, in welche M.2-Steckplätze ein Modul mechanisch eingesetzt werden kann und welche Schnittstellen grundsätzlich möglich sind.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Key !! Typische Verwendung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;B-Key&#039;&#039;&#039; || SATA-SSDs, PCIe-SSDs mit bis zu 2 PCIe-Lanes sowie Mobilfunkmodule&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M-Key&#039;&#039;&#039; || vor allem NVMe-SSDs mit bis zu 4 PCIe-Lanes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;B+M-Key&#039;&#039;&#039; || besitzt beide Kerben und kann mechanisch in B-Key- und M-Key-Steckplätze passen; häufig bei SATA-SSDs oder PCIe-SSDs mit bis zu 2 Lanes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formate ==&lt;br /&gt;
M.2-Module haben Größenangaben wie:&lt;br /&gt;
* &#039;&#039;&#039;2280&#039;&#039;&#039; → 22 mm breit, 80 mm lang  &lt;br /&gt;
* weitere Längen: 2242, 2260, 22110  &lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
* [[NVMe]]- und SATA-SSDs  &lt;br /&gt;
* WLAN- und Bluetooth-Module  &lt;br /&gt;
* Mobil- und Embedded-Systeme&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;M.2 ist ein flexibler, sehr kompakter Steckkartenstandard für schnelle [[SSD]]s und Erweiterungsmodule.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=RAID&amp;diff=3047</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=RAID&amp;diff=3047"/>
		<updated>2026-09-07T11:20:27Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Kurzfazit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RAID (Redundant Array of Independent Disks)&#039;&#039;&#039; bezeichnet verschiedene Verfahren, bei denen mehrere [[HDD|Festplatten]] oder [[SSD]]s zu einem Verbund kombiniert werden.  &lt;br /&gt;
Ziel ist höhere Geschwindigkeit, mehr [[Datensicherheit]] oder beides.&lt;br /&gt;
&lt;br /&gt;
== Wichtige RAID-Level (kurz) ==&lt;br /&gt;
&lt;br /&gt;
=== [[RAID 0|RAID 0 – Striping]] ===&lt;br /&gt;
* höhere Geschwindigkeit&lt;br /&gt;
* keine Ausfallsicherheit&lt;br /&gt;
* mindestens 2 Laufwerke&lt;br /&gt;
* nutzbare Kapazität: &#039;&#039;&#039;n × Plattengröße&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== [[RAID 1|RAID 1 – Mirroring]] ===&lt;br /&gt;
* Daten werden gespiegelt&lt;br /&gt;
* hohe Ausfallsicherheit&lt;br /&gt;
* mindestens 2 Laufwerke&lt;br /&gt;
* nutzbare Kapazität entspricht der Kapazität der kleinsten Festplatte&lt;br /&gt;
&lt;br /&gt;
=== [[RAID 5|RAID 5 – Parität]] ===&lt;br /&gt;
* Sicherheit + guter nutzbarer Speicher&lt;br /&gt;
* mindestens 3 Laufwerke&lt;br /&gt;
* &#039;&#039;&#039;ein&#039;&#039;&#039; Laufwerk darf ausfallen&lt;br /&gt;
* nutzbare Kapazität: &#039;&#039;&#039;(n−1) × Plattengröße&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== [[RAID 6|RAID 6 – Doppelte Parität]] ===&lt;br /&gt;
* sehr hohe Ausfallsicherheit (&#039;&#039;&#039;2&#039;&#039;&#039; Laufwerke dürfen ausfallen)&lt;br /&gt;
* Schreiben langsamer durch doppelte Parität&lt;br /&gt;
* mindestens 4 Laufwerke&lt;br /&gt;
* nutzbare Kapazität: &#039;&#039;&#039;(n−2) × Plattengröße&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== [[RAID 10|RAID 10 – Kombination aus 1 und 0]] ===&lt;br /&gt;
* sehr schnell und sehr sicher&lt;br /&gt;
* mindestens 4 Laufwerke&lt;br /&gt;
* nutzbare Kapazität: &#039;&#039;&#039;(n/2) × Plattengröße&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Vergleich der wichtigsten RAID-Level ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! RAID-Level&lt;br /&gt;
! Mindestanzahl&lt;br /&gt;
! Max. Ausfälle&lt;br /&gt;
! Geschwindigkeit&lt;br /&gt;
! Nutzbare Kapazität&lt;br /&gt;
! Kurzbeschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAID 0&#039;&#039;&#039;&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| sehr hoch&lt;br /&gt;
| n × Plattengröße&lt;br /&gt;
| Striping – schnell, aber kein Schutz&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAID 1&#039;&#039;&#039;&lt;br /&gt;
| 2&lt;br /&gt;
| 1 pro Spiegelpaar&lt;br /&gt;
| gut (lesen oft schneller)&lt;br /&gt;
| (n/2) × Plattengröße&lt;br /&gt;
| Spiegelung – sehr sicher, Kapazität abhängig von Spiegelgruppen&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAID 5&#039;&#039;&#039;&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| gut (Schreiben langsamer)&lt;br /&gt;
| (n−1) × Plattengröße&lt;br /&gt;
| Parität – guter Kompromiss aus Speicher &amp;amp; Sicherheit&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAID 6&#039;&#039;&#039;&lt;br /&gt;
| 4&lt;br /&gt;
| 2&lt;br /&gt;
| mittel (Schreiben langsamer)&lt;br /&gt;
| (n−2) × Plattengröße&lt;br /&gt;
| doppelte Parität – hohe Ausfallsicherheit für große Arrays&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAID 10&#039;&#039;&#039;&lt;br /&gt;
| 4&lt;br /&gt;
| 1 pro Spiegelpaar (mind. 1, je nach Verteilung mehr möglich)&lt;br /&gt;
| sehr hoch&lt;br /&gt;
| (n/2) × Plattengröße&lt;br /&gt;
| 1+0 – schnell UND sicher&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kurzfazit ==&lt;br /&gt;
* &#039;&#039;&#039;[[RAID 0]]&#039;&#039;&#039; → maximale Geschwindigkeit, kein Schutz  &lt;br /&gt;
* &#039;&#039;&#039;[[RAID 1]]&#039;&#039;&#039; → hohe Ausfallsicherheit, halbe Kapazität  &lt;br /&gt;
* &#039;&#039;&#039;[[RAID 5]]&#039;&#039;&#039; → guter Mittelweg für NAS und Server  &lt;br /&gt;
* &#039;&#039;&#039;[[RAID 6]]&#039;&#039;&#039; → sehr hohe Ausfallsicherheit (2 Platten dürfen ausfallen), ideal für große Arrays  &lt;br /&gt;
* &#039;&#039;&#039;[[RAID 10]]&#039;&#039;&#039; → schnell und sicher, aber doppelte Laufwerkskosten&lt;br /&gt;
&lt;br /&gt;
== Wichtig ==&lt;br /&gt;
RAID ersetzt &#039;&#039;&#039;keine [[Backup]]s&#039;&#039;&#039;! Es schützt nur vor Ausfall einer einzelnen Festplatte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz gesagt:&#039;&#039;&#039;  &lt;br /&gt;
RAID erhöht entweder die Geschwindigkeit, die Datensicherheit oder beides, indem mehrere Laufwerke zusammenarbeiten.&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=RAID_1&amp;diff=3046</id>
		<title>RAID 1</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=RAID_1&amp;diff=3046"/>
		<updated>2026-09-07T11:19:28Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Eigenschaften von RAID 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RAID 1 (Mirroring)&#039;&#039;&#039; speichert alle Daten doppelt, indem zwei Laufwerke gespiegelt werden.  &lt;br /&gt;
Beide enthalten stets identische Inhalte – fällt eines aus, läuft das System weiter.&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
In der Praxis wird RAID 1 meist mit &#039;&#039;&#039;zwei&#039;&#039;&#039; Festplatten eingesetzt. &lt;br /&gt;
Bei mehr Laufwerken werden häufig andere RAID-Level wie [[RAID 10]] verwendet, &lt;br /&gt;
da diese eine bessere Kombination aus Speicherplatz, Geschwindigkeit &lt;br /&gt;
und Ausfallsicherheit bieten.&lt;br /&gt;
&lt;br /&gt;
== Skizze RAID 1 ==&lt;br /&gt;
[[Datei:RAID 1.png|frameless|upright=2|links|alternativtext=RAID 1|RAID 1]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften von RAID 1 ==&lt;br /&gt;
* benötigt mindestens &#039;&#039;&#039;2 Laufwerke&#039;&#039;&#039;  &lt;br /&gt;
* &#039;&#039;&#039;hohe Ausfallsicherheit&#039;&#039;&#039; – ein Laufwerk darf ausfallen  &lt;br /&gt;
* nutzbare Kapazität bei 2 Datenträgern = &#039;&#039;&#039;50 %&#039;&#039;&#039; (zwei 1-TB-Platten → 1 TB nutzbar)  &lt;br /&gt;
* Lesegeschwindigkeit kann höher sein (durch paralleles Lesen)  &lt;br /&gt;
* Schreibgeschwindigkeit bleibt etwa gleich wie bei einem Laufwerk&lt;br /&gt;
&lt;br /&gt;
== Einsatzgebiete ==&lt;br /&gt;
* wichtige Daten  &lt;br /&gt;
* Server, Office-PCs, NAS  &lt;br /&gt;
* Systeme, die hohe Zuverlässigkeit benötigen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz gesagt:&#039;&#039;&#039;  &lt;br /&gt;
RAID 1 spiegelt alle Daten und bietet hohe Sicherheit – ideal für wichtige Daten, aber halbiert die nutzbare Kapazität.&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=FAT32&amp;diff=3045</id>
		<title>FAT32</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=FAT32&amp;diff=3045"/>
		<updated>2026-09-07T11:18:32Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Kurzmerksatz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FAT32 (File Allocation Table 32)&#039;&#039;&#039; ist ein weit verbreitetes, einfaches Dateisystem, das ursprünglich für ältere Windows-Versionen entwickelt wurde.  &lt;br /&gt;
Es wird heute vor allem auf USB-Sticks, Speicherkarten und Geräten mit hoher Kompatibilität eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* unterstützt nahezu alle Betriebssysteme und Geräte  &lt;br /&gt;
* einfach aufgebaut und sehr kompatibel  &lt;br /&gt;
* maximale Dateigröße: &#039;&#039;&#039;4 GiB&#039;&#039;&#039;  &lt;br /&gt;
* maximale Partitionsgröße: in der Praxis oft bis 2 TB  &lt;br /&gt;
* kein [[Journaling]], daher weniger ausfallsicher&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* funktioniert auf fast allen Geräten (PC, Kamera, TV, Spielekonsolen, Router)  &lt;br /&gt;
* ideal für Datenaustausch zwischen Windows, macOS, Linux und Embedded-Geräten  &lt;br /&gt;
* geringe Verwaltungsstruktur → wenig Overhead&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
* maximale Dateigröße 4 GiB (z. B. ungeeignet für große Videos)  &lt;br /&gt;
* keine Rechteverwaltung  &lt;br /&gt;
* keine Verschlüsselung  &lt;br /&gt;
* keine moderne Fehlerkorrektur (kein [[Journaling]])  &lt;br /&gt;
* weniger sicher und robust als [[NTFS]] oder [[ExFat|exFAT]]&lt;br /&gt;
&lt;br /&gt;
== Einsatzgebiete ==&lt;br /&gt;
* USB-Sticks  &lt;br /&gt;
* SD- und microSD-Karten  &lt;br /&gt;
* ältere Systeme und Embedded-Geräte  &lt;br /&gt;
* Datenaustausch zwischen vielen Plattformen&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;FAT32 ist ein sehr kompatibles, aber technisch eingeschränktes Dateisystem mit einer maximalen Dateigröße von 4 GiB.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=FAT32&amp;diff=3044</id>
		<title>FAT32</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=FAT32&amp;diff=3044"/>
		<updated>2026-09-07T11:18:19Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Nachteile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FAT32 (File Allocation Table 32)&#039;&#039;&#039; ist ein weit verbreitetes, einfaches Dateisystem, das ursprünglich für ältere Windows-Versionen entwickelt wurde.  &lt;br /&gt;
Es wird heute vor allem auf USB-Sticks, Speicherkarten und Geräten mit hoher Kompatibilität eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* unterstützt nahezu alle Betriebssysteme und Geräte  &lt;br /&gt;
* einfach aufgebaut und sehr kompatibel  &lt;br /&gt;
* maximale Dateigröße: &#039;&#039;&#039;4 GiB&#039;&#039;&#039;  &lt;br /&gt;
* maximale Partitionsgröße: in der Praxis oft bis 2 TB  &lt;br /&gt;
* kein [[Journaling]], daher weniger ausfallsicher&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* funktioniert auf fast allen Geräten (PC, Kamera, TV, Spielekonsolen, Router)  &lt;br /&gt;
* ideal für Datenaustausch zwischen Windows, macOS, Linux und Embedded-Geräten  &lt;br /&gt;
* geringe Verwaltungsstruktur → wenig Overhead&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
* maximale Dateigröße 4 GiB (z. B. ungeeignet für große Videos)  &lt;br /&gt;
* keine Rechteverwaltung  &lt;br /&gt;
* keine Verschlüsselung  &lt;br /&gt;
* keine moderne Fehlerkorrektur (kein [[Journaling]])  &lt;br /&gt;
* weniger sicher und robust als [[NTFS]] oder [[ExFat|exFAT]]&lt;br /&gt;
&lt;br /&gt;
== Einsatzgebiete ==&lt;br /&gt;
* USB-Sticks  &lt;br /&gt;
* SD- und microSD-Karten  &lt;br /&gt;
* ältere Systeme und Embedded-Geräte  &lt;br /&gt;
* Datenaustausch zwischen vielen Plattformen&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;FAT32 ist ein sehr kompatibles, aber technisch eingeschränktes Dateisystem mit einer maximalen Dateigröße von 4 GB.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=FAT32&amp;diff=3043</id>
		<title>FAT32</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=FAT32&amp;diff=3043"/>
		<updated>2026-09-07T11:18:10Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Eigenschaften */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FAT32 (File Allocation Table 32)&#039;&#039;&#039; ist ein weit verbreitetes, einfaches Dateisystem, das ursprünglich für ältere Windows-Versionen entwickelt wurde.  &lt;br /&gt;
Es wird heute vor allem auf USB-Sticks, Speicherkarten und Geräten mit hoher Kompatibilität eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* unterstützt nahezu alle Betriebssysteme und Geräte  &lt;br /&gt;
* einfach aufgebaut und sehr kompatibel  &lt;br /&gt;
* maximale Dateigröße: &#039;&#039;&#039;4 GiB&#039;&#039;&#039;  &lt;br /&gt;
* maximale Partitionsgröße: in der Praxis oft bis 2 TB  &lt;br /&gt;
* kein [[Journaling]], daher weniger ausfallsicher&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* funktioniert auf fast allen Geräten (PC, Kamera, TV, Spielekonsolen, Router)  &lt;br /&gt;
* ideal für Datenaustausch zwischen Windows, macOS, Linux und Embedded-Geräten  &lt;br /&gt;
* geringe Verwaltungsstruktur → wenig Overhead&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
* maximale Dateigröße 4 GB (z. B. ungeeignet für große Videos)  &lt;br /&gt;
* keine Rechteverwaltung  &lt;br /&gt;
* keine Verschlüsselung  &lt;br /&gt;
* keine moderne Fehlerkorrektur (kein [[Journaling]])  &lt;br /&gt;
* weniger sicher und robust als [[NTFS]] oder [[ExFat|exFAT]]&lt;br /&gt;
&lt;br /&gt;
== Einsatzgebiete ==&lt;br /&gt;
* USB-Sticks  &lt;br /&gt;
* SD- und microSD-Karten  &lt;br /&gt;
* ältere Systeme und Embedded-Geräte  &lt;br /&gt;
* Datenaustausch zwischen vielen Plattformen&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;FAT32 ist ein sehr kompatibles, aber technisch eingeschränktes Dateisystem mit einer maximalen Dateigröße von 4 GB.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Datums-_und_Zeitfunktionen_in_SQL&amp;diff=3042</id>
		<title>Datums- und Zeitfunktionen in SQL</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Datums-_und_Zeitfunktionen_in_SQL&amp;diff=3042"/>
		<updated>2026-09-07T11:14:59Z</updated>

		<summary type="html">&lt;p&gt;Moettke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datums- und Zeitfunktionen in [[SQL]] werden verwendet, um Datums- und Zeitwerte zu erzeugen, zu verändern, zu vergleichen oder einzelne Bestandteile wie Jahr, Monat oder Uhrzeit zu extrahieren.&lt;br /&gt;
&lt;br /&gt;
== Grundfunktionen ==&lt;br /&gt;
&lt;br /&gt;
[[SQL]] stellt spezielle Funktionen zur Verarbeitung von &#039;&#039;&#039;Datums- und Zeitwerten&#039;&#039;&#039; bereit.  &lt;br /&gt;
Mit diesen Funktionen lassen sich Datum und Uhrzeit aus Zeitstempeln extrahieren oder das aktuelle Systemdatum bzw. die aktuelle Uhrzeit ermitteln.  &lt;br /&gt;
Sie werden häufig für Filter, Berechnungen und Auswertungen verwendet (z. B. bei Logdaten oder Bestellungen).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || Gibt nur das Datum zurück&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TIME(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || Gibt nur die Uhrzeit zurück&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; || Gibt aktuelles Datum und Uhrzeit zurück&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Die folgenden Beispiele zeigen die Rückgabewerte der Funktionen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beispiel !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || 2025-06-06&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TIME(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || 15:30:00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; || 2025-06-06 15:30:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Extraktion einzelner Komponenten ==&lt;br /&gt;
&lt;br /&gt;
[[SQL]] bietet Funktionen, mit denen &#039;&#039;&#039;einzelne Bestandteile von Datums- und Zeitwerten&#039;&#039;&#039; gezielt ausgelesen werden können.  &lt;br /&gt;
Diese Funktionen sind besonders nützlich für Filterbedingungen, Gruppierungen und Auswertungen, z. B. nach Jahr, Monat oder Uhrzeit.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;YEAR(&#039;2025-06-06&#039;)&amp;lt;/code&amp;gt; || Extrahiert das Jahr&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MONTH(&#039;2025-06-07&#039;)&amp;lt;/code&amp;gt; || Extrahiert den Monat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DAY(&#039;2025-06-07&#039;)&amp;lt;/code&amp;gt; || Extrahiert den Tag&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HOUR(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || Extrahiert die Stunde&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MINUTE(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || Extrahiert die Minute&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SECOND(&#039;2025-06-06 15:30:45&#039;)&amp;lt;/code&amp;gt; || Extrahiert die Sekunde&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Die folgenden Beispiele zeigen typische Rückgabewerte der Funktionen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beispiel !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;YEAR(&#039;2025-06-06&#039;)&amp;lt;/code&amp;gt; || 2025&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MONTH(&#039;2025-06-07&#039;)&amp;lt;/code&amp;gt; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DAY(&#039;2025-06-07&#039;)&amp;lt;/code&amp;gt; || 7&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;HOUR(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || 15&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MINUTE(&#039;2025-06-06 15:30:00&#039;)&amp;lt;/code&amp;gt; || 30&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SECOND(&#039;2025-06-06 15:30:45&#039;)&amp;lt;/code&amp;gt; || 45&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aktuelles Datum / Zeit ==&lt;br /&gt;
&lt;br /&gt;
SQL stellt spezielle Funktionen bereit, um das &#039;&#039;&#039;aktuelle Datum und die aktuelle Uhrzeit&#039;&#039;&#039; des Datenbankservers abzufragen.  &lt;br /&gt;
Diese Funktionen werden häufig für Zeitstempel, Protokolle, Vergleiche oder zeitabhängige Abfragen verwendet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; || Gibt das aktuelle Datum und die aktuelle Zeit zurück&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CURDATE()&amp;lt;/code&amp;gt; || Gibt das aktuelle Datum zurück&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CURTIME()&amp;lt;/code&amp;gt; || Gibt die aktuelle Uhrzeit zurück&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Die folgenden Beispiele zeigen typische Rückgabewerte der Funktionen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beispiel !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt; || 2025-06-06 15:30:00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CURDATE()&amp;lt;/code&amp;gt; || 2025-06-06&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CURTIME()&amp;lt;/code&amp;gt; || 15:30:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zusatzfunktionen ==&lt;br /&gt;
&lt;br /&gt;
Neben den Grundfunktionen stellt SQL weitere Funktionen zur Verfügung, um &#039;&#039;&#039;Datumswerte zu verändern oder Zeitabstände zu berechnen&#039;&#039;&#039;.  &lt;br /&gt;
Diese Funktionen werden häufig für Fristen, Laufzeiten, Altersberechnungen oder zeitliche Auswertungen verwendet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE_ADD(&#039;2025-06-06&#039;, INTERVAL 7 DAY)&amp;lt;/code&amp;gt; || Fügt 7 Tage zum Datum hinzu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE_SUB(&#039;2025-06-06&#039;, INTERVAL 1 MONTH)&amp;lt;/code&amp;gt; || Zieht 1 Monat vom Datum ab&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATEDIFF(&#039;2025-06-10&#039;, &#039;2025-06-06&#039;)&amp;lt;/code&amp;gt; || Berechnet die Differenz in Tagen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Die folgenden Beispiele zeigen typische Rückgabewerte der Zusatzfunktionen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beispiel !! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE_ADD(&#039;2025-06-06&#039;, INTERVAL 7 DAY)&amp;lt;/code&amp;gt; || 2025-06-13&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATE_SUB(&#039;2025-06-06&#039;, INTERVAL 1 MONTH)&amp;lt;/code&amp;gt; || 2025-05-06&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DATEDIFF(&#039;2025-06-10&#039;, &#039;2025-06-06&#039;)&amp;lt;/code&amp;gt; || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testen ==&lt;br /&gt;
&lt;br /&gt;
In diesem Abschnitt werden typische &#039;&#039;&#039;SQL-Abfragen zu Datums- und Zeitfunktionen&#039;&#039;&#039; ausgeführt und deren Rückgabewerte überprüft.  &lt;br /&gt;
So lässt sich nachvollziehen, welche Werte die einzelnen Funktionen liefern.&lt;br /&gt;
&lt;br /&gt;
=== Aktuelles Datum und Uhrzeit ===&lt;br /&gt;
&#039;&#039;&#039;Query:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT NOW(), CURDATE(), CURTIME();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ergebnis:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! NOW() !! CURDATE() !! CURTIME()&lt;br /&gt;
|-&lt;br /&gt;
| 2025-06-06 15:30:00 || 2025-06-06 || 15:30:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Datum und Uhrzeit trennen ===&lt;br /&gt;
&#039;&#039;&#039;Query:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DATE(&#039;2025-06-06 15:30:00&#039;), TIME(&#039;2025-06-06 15:30:00&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ergebnis:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! DATE(&#039;2025-06-06 15:30:00&#039;) !! TIME(&#039;2025-06-06 15:30:00&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| 2025-06-06 || 15:30:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Einzelne Datumsbestandteile ===&lt;br /&gt;
&#039;&#039;&#039;Query:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT YEAR(&#039;2025-06-07&#039;), MONTH(&#039;2025-06-07&#039;), DAY(&#039;2025-06-07&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ergebnis:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! YEAR(&#039;2025-06-07&#039;) !! MONTH(&#039;2025-06-07&#039;) !! DAY(&#039;2025-06-07&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| 2025 || 6 || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Semester1]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Konstruktor&amp;diff=3041</id>
		<title>Konstruktor</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Konstruktor&amp;diff=3041"/>
		<updated>2026-09-07T10:51:38Z</updated>

		<summary type="html">&lt;p&gt;Moettke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; ist ein spezieller Bestandteil einer Klasse, der beim Erzeugen eines [[Klassen und Objekte|Objekts]] automatisch aufgerufen wird. Er dient dazu, das Objekt zu initialisieren und beispielsweise Attribute mit Anfangswerten zu versehen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften von Konstruktoren ==&lt;br /&gt;
&lt;br /&gt;
* Hat denselben Namen wie die Klasse&lt;br /&gt;
* Kein Rückgabetyp (auch nicht void)&lt;br /&gt;
* Wird mit dem Schlüsselwort &#039;&#039;&#039;new&#039;&#039;&#039; aufgerufen&lt;br /&gt;
* Kann überladen werden (mehrere Konstruktoren mit verschiedenen Parametern)&lt;br /&gt;
&lt;br /&gt;
== Default-Konstruktor ==&lt;br /&gt;
&lt;br /&gt;
Wenn kein Konstruktor angegeben wird, stellt Java automatisch einen parameterlosen &#039;&#039;&#039;Standardkonstruktor ([[Default-Konstruktor]])&#039;&#039;&#039; bereit. &amp;lt;br&amp;gt;&lt;br /&gt;
Dabei werden die Attribute mit den Standardwerten des jeweiligen Datentyps initialisiert: &amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039; für Zahlen,&lt;br /&gt;
* &#039;&#039;&#039;null&#039;&#039;&#039; für Objekte,&lt;br /&gt;
* &#039;&#039;&#039;false&#039;&#039;&#039; für booleans&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Auto {&lt;br /&gt;
    String marke;&lt;br /&gt;
    int baujahr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Auto a = new Auto(); // Standardkonstruktor setzt marke auf null und baujahr auf 0 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benutzerdefinierter Konstruktor ==&lt;br /&gt;
Ein [[benutzerdefinierter Konstruktor]] ist ein selbst geschriebener Konstruktor, der Parameter entgegennimmt, um ein Objekt direkt beim Erzeugen mit bestimmten Werten zu initialisieren.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Auto {&lt;br /&gt;
    String marke;&lt;br /&gt;
    int baujahr;&lt;br /&gt;
&lt;br /&gt;
    public Auto(String marke, int baujahr) {&lt;br /&gt;
        this.marke = marke;&lt;br /&gt;
        this.baujahr = baujahr;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Auto meinAuto = new Auto(&amp;quot;BMW&amp;quot;, 2021);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmieren]]&lt;br /&gt;
[[Kategorie:Semester2]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Default-Konstruktor&amp;diff=3040</id>
		<title>Default-Konstruktor</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Default-Konstruktor&amp;diff=3040"/>
		<updated>2026-09-07T10:49:03Z</updated>

		<summary type="html">&lt;p&gt;Moettke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; wird beim Erzeugen eines Objekts aufgerufen und dient zur Initialisierung des Objekts.&lt;br /&gt;
Wird in einer Java-Klasse &#039;&#039;&#039;kein eigener Konstruktor&#039;&#039;&#039; definiert, erzeugt der Compiler automatisch einen sogenannten &#039;&#039;&#039;Default-Konstruktor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Die Klasse besitzt keinen selbst definierten Konstruktor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Person {&lt;br /&gt;
    String name;&lt;br /&gt;
    int alter;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trotzdem kann ein Objekt ohne Argumente erzeugt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Person person = new Person();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Compiler stellt dafür automatisch einen Default-Konstruktor bereit.&lt;br /&gt;
&lt;br /&gt;
Vereinfacht entspricht dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public Person() {&lt;br /&gt;
    super();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sichtbarkeit des automatisch erzeugten Default-Konstruktors entspricht dabei der Sichtbarkeit der Klasse.&lt;br /&gt;
&lt;br /&gt;
== Initialwerte der Attribute ==&lt;br /&gt;
&lt;br /&gt;
Werden Attribute nicht ausdrücklich initialisiert, erhalten sie ihre Standardwerte.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Datentyp !! Standardwert&lt;br /&gt;
|-&lt;br /&gt;
| byte, short, int, long || 0&lt;br /&gt;
|-&lt;br /&gt;
| float, double || 0.0&lt;br /&gt;
|-&lt;br /&gt;
| boolean || false&lt;br /&gt;
|-&lt;br /&gt;
| char || &#039;\u0000&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Referenztypen || null&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Person {&lt;br /&gt;
    String name;&lt;br /&gt;
    int alter;&lt;br /&gt;
    boolean aktiv;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Person person = new Person();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gelten zunächst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
name  → null&lt;br /&gt;
alter → 0&lt;br /&gt;
aktiv → false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigener Konstruktor ==&lt;br /&gt;
&lt;br /&gt;
Sobald mindestens ein eigener Konstruktor definiert wird, erzeugt der Compiler &#039;&#039;&#039;keinen Default-Konstruktor mehr&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Person {&lt;br /&gt;
    String name;&lt;br /&gt;
&lt;br /&gt;
    public Person(String name) {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Folgender Aufruf ist jetzt nicht mehr möglich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Person person = new Person();   // Compilerfehler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es existiert nur der selbst definierte Konstruktor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Person person = new Person(&amp;quot;Anna&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Soll zusätzlich ein Konstruktor ohne Parameter vorhanden sein, muss dieser selbst definiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public Person() {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Person(String name) {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default-Konstruktor und parameterloser Konstruktor ==&lt;br /&gt;
&lt;br /&gt;
Die Begriffe sollten nicht verwechselt werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Default-Konstruktor:&#039;&#039;&#039; wird automatisch vom Compiler erzeugt, wenn kein Konstruktor definiert wurde.&lt;br /&gt;
* &#039;&#039;&#039;Parameterloser Konstruktor:&#039;&#039;&#039; besitzt keine Parameter und kann auch selbst programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public Person() {&lt;br /&gt;
    name = &amp;quot;Unbekannt&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Konstruktor ist &#039;&#039;&#039;parameterlos&#039;&#039;&#039;, aber kein Default-Konstruktor, da er vom Programmierer selbst definiert wurde.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Definiert eine Klasse keinen Konstruktor, erzeugt der Java-Compiler automatisch einen Default-Konstruktor. Sobald ein eigener Konstruktor vorhanden ist, wird kein Default-Konstruktor mehr erzeugt.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Default-Konstruktor&amp;diff=3039</id>
		<title>Default-Konstruktor</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Default-Konstruktor&amp;diff=3039"/>
		<updated>2026-09-07T10:47:03Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Automatisch erzeugter Default-Konstruktor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Default-Konstruktor&#039;&#039;&#039; (Standardkonstruktor) ist ein Konstruktor ohne Parameter.  &lt;br /&gt;
Er wird automatisch erzeugt, wenn in einer Klasse &#039;&#039;&#039;kein eigener Konstruktor&#039;&#039;&#039; definiert ist.  &lt;br /&gt;
Seine Aufgabe ist es, ein Objekt mit Standardwerten zu initialisieren.&lt;br /&gt;
&lt;br /&gt;
== Selbst definierter Default-Konstruktor ==&lt;br /&gt;
Man kann den Default-Konstruktor auch selbst anlegen, z. B. um Startwerte zu setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Auto {&lt;br /&gt;
&lt;br /&gt;
    String marke;&lt;br /&gt;
    int baujahr;&lt;br /&gt;
&lt;br /&gt;
    public Auto() {&lt;br /&gt;
        marke = &amp;quot;Unbekannt&amp;quot;;&lt;br /&gt;
        baujahr = 0;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wichtig ==&lt;br /&gt;
* Sobald ein &#039;&#039;&#039;eigener Konstruktor&#039;&#039;&#039; mit Parametern definiert wird,  &lt;br /&gt;
  erstellt Java den Default-Konstruktor **nicht mehr automatisch**.  &lt;br /&gt;
* Wenn man dann trotzdem einen parameterlosen Konstruktor benötigt,  &lt;br /&gt;
  muss er manuell hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Auto auto = new Auto();   // ruft den Default-Konstruktor auf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Der Default-Konstruktor ist ein parameterloser Konstruktor, der automatisch entsteht,außer die Klasse besitzt eigene Konstruktoren.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Blu-ray_Disc&amp;diff=3038</id>
		<title>Blu-ray Disc</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Blu-ray_Disc&amp;diff=3038"/>
		<updated>2026-09-07T08:27:48Z</updated>

		<summary type="html">&lt;p&gt;Moettke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Blu-ray Disc (BD)&#039;&#039;&#039; ist ein [[optische Medien|optischer Hochspeicher-Datenträger]], der deutlich mehr Daten speichern kann als [[CD]] und [[DVD]].  &lt;br /&gt;
Sie wird mit einem &#039;&#039;&#039;blauen-violettem&#039;&#039;&#039; Laser ausgelesen, der eine sehr hohe Datendichte ermöglicht.&lt;br /&gt;
&lt;br /&gt;
== Warum ein blauer Laser? ==&lt;br /&gt;
Ein blauer Laser hat eine &#039;&#039;&#039;sehr kurze Wellenlänge (405 nm)&#039;&#039;&#039;.  &lt;br /&gt;
Dadurch können viel kleinere Strukturen fokussiert und gelesen werden. Das ermöglicht die sehr hohe Speicherdichte der Blu-ray.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* Kapazität:  &lt;br /&gt;
  * &#039;&#039;&#039;25 GB&#039;&#039;&#039; (Single Layer)  &lt;br /&gt;
  * &#039;&#039;&#039;50 GB&#039;&#039;&#039; (Dual Layer)  &lt;br /&gt;
  * bis zu &#039;&#039;&#039;100–128 GB&#039;&#039;&#039; (BD-XL)  &lt;br /&gt;
* extrem kleine [[Pits und Lands]] und enge Spuren  &lt;br /&gt;
* Nutzung eines &#039;&#039;&#039;blauen/violetten&#039;&#039;&#039; Lasers mit &#039;&#039;&#039;405 nm&#039;&#039;&#039;  &lt;br /&gt;
* hohe Datenrate, ideal für HD- und 4K-Videos&lt;br /&gt;
&lt;br /&gt;
== Varianten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Typ !! Beschreibung !! Besonderheit&lt;br /&gt;
|-&lt;br /&gt;
| BD-ROM || nur lesbar || Filme, Spiele&lt;br /&gt;
|-&lt;br /&gt;
| BD-R || einmal beschreibbar || große Datenmengen, Archivierung&lt;br /&gt;
|-&lt;br /&gt;
| BD-RE || wiederbeschreibbar || Daten können gelöscht/überschrieben werden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
* Full-HD- und 4K-Filme  &lt;br /&gt;
* Spiele für Konsolen (z. B. PlayStation)  &lt;br /&gt;
* große [[Backup]]s und Archivierung  &lt;br /&gt;
* Datenverteilung mit sehr hoher Kapazität&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Die Blu-ray verwendet einen blauen Laser mit kurzer Wellenlänge und erreicht so sehr hohe Speicherdichten bis über 100 GB.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=CPU&amp;diff=3037</id>
		<title>CPU</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=CPU&amp;diff=3037"/>
		<updated>2026-09-07T08:25:51Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Fertigungsverfahren (Nanometer) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;metadesc&amp;gt;&lt;br /&gt;
Die CPU verständlich erklärt: Aufbau, Funktionsweise, Takt, Kerne, Threads und warum der Prozessor das Herzstück moderner Computersysteme ist.&lt;br /&gt;
&amp;lt;/metadesc&amp;gt;&lt;br /&gt;
Der&#039;&#039;&#039; Prozessor (CPU – Central Processing Unit) &#039;&#039;&#039; ist das Rechenzentrum des Computers.  &lt;br /&gt;
Sie führt Befehle aus, verarbeitet Daten und steuert den gesamten Ablauf von Programmen.  &lt;br /&gt;
Oft wird sie auch als das „&#039;&#039;&#039;Gehirn des Computers&#039;&#039;&#039;“ bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Vergleich: Aufgaben und Eigenschaften einer CPU ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Rechenleistung&lt;br /&gt;
| führt arithmetische und logische Operationen aus&lt;br /&gt;
| Addieren, Vergleichen, Schieben&lt;br /&gt;
|-&lt;br /&gt;
| Steuerung&lt;br /&gt;
| koordiniert Befehlsabfolge und Datenfluss&lt;br /&gt;
| Programmzähler, Steuerwerk&lt;br /&gt;
|-&lt;br /&gt;
| Parallelität&lt;br /&gt;
| arbeitet mit mehreren Kernen gleichzeitig&lt;br /&gt;
| 4, 6, 8, 12, 16 Kerne …&lt;br /&gt;
|-&lt;br /&gt;
| Cache-Speicher&lt;br /&gt;
| extrem schnelle Zwischenspeicher&lt;br /&gt;
| L1, L2, L3&lt;br /&gt;
|-&lt;br /&gt;
| Energieverwaltung&lt;br /&gt;
| passt Taktfrequenz und Spannung an&lt;br /&gt;
| Boost, Turbo, Energiesparmodi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufbau einer CPU ==&lt;br /&gt;
Eine moderne CPU besteht aus mehreren Funktionsblöcken:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ALU|Rechenwerk (ALU)]]&#039;&#039;&#039; – führt Rechenoperationen aus  &lt;br /&gt;
* &#039;&#039;&#039;[[FPU|Gleitkommaeinheit (FPU)]]&#039;&#039;&#039; – für mathematisch komplexe Berechnungen  &lt;br /&gt;
* &#039;&#039;&#039;[[Steuerwerk|Steuerwerk (Control Unit)]]&#039;&#039;&#039; – holt, dekodiert und steuert Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Register|Register]]&#039;&#039;&#039; – extrem schnelle, kleine Speicherbereiche  &lt;br /&gt;
* &#039;&#039;&#039;[[Cache|Cache (L1, L2, L3)]]&#039;&#039;&#039; – Zwischenspeicher für Daten und Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Mehrere Kerne]]&#039;&#039;&#039; – parallel arbeitende Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threading-Technologie]]&#039;&#039;&#039; – z. B. Intel Hyper-Threading oder AMD SMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skizze 2-Kern-CPU===&lt;br /&gt;
[[Datei:Aufbau cpu.png|rahmenlos|links|upright=3|alternativtext=Aufbau cpu|Aufbau cpu]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sockeltypen ==&lt;br /&gt;
Der [[CPU-Sockel]] bestimmt, welche Prozessoren auf einem [[Mainboard]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Sockel&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Intel&lt;br /&gt;
| LGA 1151, LGA 1200, LGA 1700&lt;br /&gt;
| Core i5, i7, i9&lt;br /&gt;
|-&lt;br /&gt;
| AMD&lt;br /&gt;
| AM4, AM5&lt;br /&gt;
| Ryzen 5, 7, 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine CPU passt nur in den dafür vorgesehenen Sockel – Kompatibilität ist zwingend.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Taktfrequenz, Kerne und Kerne und Threads ==&lt;br /&gt;
* &#039;&#039;&#039;[[Taktfrequenz|Taktfrequenz (GHz)]]&#039;&#039;&#039; → bestimmt, wie viele Operationen pro Sekunde ausgeführt werden  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Kerne]]&#039;&#039;&#039; → mehrere unabhängige Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threads]]&#039;&#039;&#039; → logische Aufgabenströme pro Kern  &lt;br /&gt;
&lt;br /&gt;
Beispiel:  &lt;br /&gt;
Ein Ryzen 7 (8 Kerne / 16 Threads) kann bis zu 16 Hardware-Threads bereitstellen. Das Betriebssystem plant wesentlich mehr Software&lt;br /&gt;
Threads zeitlich darauf ein.&lt;br /&gt;
&lt;br /&gt;
== Fertigungsverfahren (Nanometer) ==&lt;br /&gt;
Die oft genannten Angaben wie &#039;&#039;&#039;14 nm&#039;&#039;&#039;, &#039;&#039;&#039;7 nm&#039;&#039;&#039; oder &#039;&#039;&#039;5 nm&#039;&#039;&#039; beziehen sich auf das &#039;&#039;&#039;[[CPU-Fertigungsverfahren|Fertigungsverfahren]]&#039;&#039;&#039; eines Prozessors.  &lt;br /&gt;
Es beschreibt die Größe der kleinsten Strukturen (insbesondere [[Transistor]]en), die während der Chipproduktion hergestellt werden können.&lt;br /&gt;
Moderne Prozessorbezeichnungen sind Technologies-/Generationsnamen und keiner einzelnen messbaren Struktur eindeutig gleichzusetzen.&lt;br /&gt;
&lt;br /&gt;
Kleinere Fertigungsprozesse bedeuten in der Regel:&lt;br /&gt;
* geringerer Stromverbrauch  &lt;br /&gt;
* höhere Energieeffizienz  &lt;br /&gt;
* mehr [[Transistor]]en pro Fläche (höhere Leistungspotenziale)  &lt;br /&gt;
* weniger Wärmeentwicklung&lt;br /&gt;
&lt;br /&gt;
== Cache-Speicher (L1, L2, L3) ==&lt;br /&gt;
[[Cache]] ist ein &#039;&#039;&#039;extrem schneller Speicher direkt in der CPU&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Cache&lt;br /&gt;
! Größe&lt;br /&gt;
! Geschwindigkeit&lt;br /&gt;
! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| L1&lt;br /&gt;
| sehr klein (32–128 KB)&lt;br /&gt;
| extrem schnell&lt;br /&gt;
| Daten/Instruktionen pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L2&lt;br /&gt;
| mittelgroß (256 KB – 1 MB)&lt;br /&gt;
| sehr schnell&lt;br /&gt;
| Zwischendaten pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L3&lt;br /&gt;
| groß (8–64 MB)&lt;br /&gt;
| langsamer, aber viel Speicher&lt;br /&gt;
| geteilt zwischen allen Kernen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CISC und RISC ==&lt;br /&gt;
&lt;br /&gt;
Prozessoren folgen unterschiedlichen Befehlssatz-Architekturen.  &lt;br /&gt;
Die zwei wichtigsten sind &#039;&#039;&#039;CISC&#039;&#039;&#039; und &#039;&#039;&#039;RISC&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
=== CISC (Complex Instruction Set Computer) ===&lt;br /&gt;
* viele komplexe Befehle  &lt;br /&gt;
* einzelne Befehle können sehr viel Arbeit auf einmal erledigen  &lt;br /&gt;
* Beispiel: x86-Prozessoren (Intel, AMD)&lt;br /&gt;
&lt;br /&gt;
=== RISC (Reduced Instruction Set Computer)=== &lt;br /&gt;
* kleiner, einfacher Befehlssatz  &lt;br /&gt;
* dafür sehr schnelle und effiziente Ausführung  &lt;br /&gt;
* Beispiel: ARM-Prozessoren (Smartphones, Tablets, Apple M-Chips)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz gesagt:&#039;&#039;&#039;  &lt;br /&gt;
CISC setzt auf &#039;&#039;komplexe Befehle&#039;&#039;, RISC auf &#039;&#039;einfache, schnelle Befehle&#039;&#039;. Beide verfolgen unterschiedliche Wege zur hohen CPU-Leistung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CPU-interne Bussysteme ==&lt;br /&gt;
[[CPU-interne Bussysteme]] sorgen dafür, dass Daten, Adressen und Steuersignale schnell zwischen den internen Einheiten wie [[Register]], [[ALU]], [[Cache]] und [[Steuerwerk]] ausgetauscht werden. Sie verbinden alle Funktionsblöcke innerhalb des Prozessors und ermöglichen dessen Ablauf und Rechenoperationen.&lt;br /&gt;
&lt;br /&gt;
== Kühlung der CPU ==&lt;br /&gt;
Eine [[CPU]] erzeugt Wärme und benötigt eine geeignete [[Prozessorkühlung|Kühlung]]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Luftkühler&#039;&#039;&#039; – Tower-Kühler, Radiallüfter  &lt;br /&gt;
* &#039;&#039;&#039;Wasserkühlung (AIO)&#039;&#039;&#039; – 120/240/360 mm Radiatoren  &lt;br /&gt;
* &#039;&#039;&#039;Wärmeleitpaste&#039;&#039;&#039; – verbessert die Wärmeübertragung zur Kühlung  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine Erwärmung über ~90°C kann die CPU drosseln (Thermal Throttling).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Leistungsbegriffe ==&lt;br /&gt;
* &#039;&#039;&#039;TDP (Thermal Design Power)&#039;&#039;&#039; - Wärmeabgabe unter typischer Last (keine maximale Stromaufnahme!)  &lt;br /&gt;
* &#039;&#039;&#039;Boost-/Turbo-Takt&#039;&#039;&#039; - kurzfristig erhöhter Takt für mehr Leistung  &lt;br /&gt;
* &#039;&#039;&#039;[[IPC|IPC (Instructions per Cycle)]] &#039;&#039;&#039; - wie viele Befehle pro Takt ausgeführt werden können&lt;br /&gt;
&lt;br /&gt;
== Virtualisierung ==&lt;br /&gt;
Die &#039;&#039;&#039;[[Virtualisierung|Virtualisierung]]&#039;&#039;&#039; ermöglicht es, mehrere Betriebssysteme oder Rechnerumgebungen gleichzeitig auf derselben Hardware auszuführen.  &lt;br /&gt;
Die CPU stellt dafür spezielle Funktionen bereit, um virtuelle Maschinen effizient und sicher zu betreiben.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
* Die CPU ist die zentrale Recheneinheit des Computers.  &lt;br /&gt;
* [[Kerne und Threads]] bestimmen, wie viele Aufgaben gleichzeitig verarbeitet werden können.  &lt;br /&gt;
* [[Cache]]-Speicher verbessert die Geschwindigkeit erheblich.  &lt;br /&gt;
* Der [[CPU-Sockel|Sockel]] legt fest, welche CPU auf welches [[Mainboard]] passt.  &lt;br /&gt;
* [[Prozessorkühlung]] ist entscheidend für Leistung und Lebensdauer.  &lt;br /&gt;
* [[Taktfrequenz]] allein ist nicht aussagekräftig. Architektur und [[IPC]] sind ebenso wichtig.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AP1]] &lt;br /&gt;
[[Kategorie: Systemtechnik]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=CPU&amp;diff=3036</id>
		<title>CPU</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=CPU&amp;diff=3036"/>
		<updated>2026-09-07T08:25:12Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Fertigungsverfahren (Nanometer) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;metadesc&amp;gt;&lt;br /&gt;
Die CPU verständlich erklärt: Aufbau, Funktionsweise, Takt, Kerne, Threads und warum der Prozessor das Herzstück moderner Computersysteme ist.&lt;br /&gt;
&amp;lt;/metadesc&amp;gt;&lt;br /&gt;
Der&#039;&#039;&#039; Prozessor (CPU – Central Processing Unit) &#039;&#039;&#039; ist das Rechenzentrum des Computers.  &lt;br /&gt;
Sie führt Befehle aus, verarbeitet Daten und steuert den gesamten Ablauf von Programmen.  &lt;br /&gt;
Oft wird sie auch als das „&#039;&#039;&#039;Gehirn des Computers&#039;&#039;&#039;“ bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Vergleich: Aufgaben und Eigenschaften einer CPU ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Rechenleistung&lt;br /&gt;
| führt arithmetische und logische Operationen aus&lt;br /&gt;
| Addieren, Vergleichen, Schieben&lt;br /&gt;
|-&lt;br /&gt;
| Steuerung&lt;br /&gt;
| koordiniert Befehlsabfolge und Datenfluss&lt;br /&gt;
| Programmzähler, Steuerwerk&lt;br /&gt;
|-&lt;br /&gt;
| Parallelität&lt;br /&gt;
| arbeitet mit mehreren Kernen gleichzeitig&lt;br /&gt;
| 4, 6, 8, 12, 16 Kerne …&lt;br /&gt;
|-&lt;br /&gt;
| Cache-Speicher&lt;br /&gt;
| extrem schnelle Zwischenspeicher&lt;br /&gt;
| L1, L2, L3&lt;br /&gt;
|-&lt;br /&gt;
| Energieverwaltung&lt;br /&gt;
| passt Taktfrequenz und Spannung an&lt;br /&gt;
| Boost, Turbo, Energiesparmodi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufbau einer CPU ==&lt;br /&gt;
Eine moderne CPU besteht aus mehreren Funktionsblöcken:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ALU|Rechenwerk (ALU)]]&#039;&#039;&#039; – führt Rechenoperationen aus  &lt;br /&gt;
* &#039;&#039;&#039;[[FPU|Gleitkommaeinheit (FPU)]]&#039;&#039;&#039; – für mathematisch komplexe Berechnungen  &lt;br /&gt;
* &#039;&#039;&#039;[[Steuerwerk|Steuerwerk (Control Unit)]]&#039;&#039;&#039; – holt, dekodiert und steuert Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Register|Register]]&#039;&#039;&#039; – extrem schnelle, kleine Speicherbereiche  &lt;br /&gt;
* &#039;&#039;&#039;[[Cache|Cache (L1, L2, L3)]]&#039;&#039;&#039; – Zwischenspeicher für Daten und Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Mehrere Kerne]]&#039;&#039;&#039; – parallel arbeitende Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threading-Technologie]]&#039;&#039;&#039; – z. B. Intel Hyper-Threading oder AMD SMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skizze 2-Kern-CPU===&lt;br /&gt;
[[Datei:Aufbau cpu.png|rahmenlos|links|upright=3|alternativtext=Aufbau cpu|Aufbau cpu]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sockeltypen ==&lt;br /&gt;
Der [[CPU-Sockel]] bestimmt, welche Prozessoren auf einem [[Mainboard]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Sockel&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Intel&lt;br /&gt;
| LGA 1151, LGA 1200, LGA 1700&lt;br /&gt;
| Core i5, i7, i9&lt;br /&gt;
|-&lt;br /&gt;
| AMD&lt;br /&gt;
| AM4, AM5&lt;br /&gt;
| Ryzen 5, 7, 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine CPU passt nur in den dafür vorgesehenen Sockel – Kompatibilität ist zwingend.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Taktfrequenz, Kerne und Kerne und Threads ==&lt;br /&gt;
* &#039;&#039;&#039;[[Taktfrequenz|Taktfrequenz (GHz)]]&#039;&#039;&#039; → bestimmt, wie viele Operationen pro Sekunde ausgeführt werden  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Kerne]]&#039;&#039;&#039; → mehrere unabhängige Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threads]]&#039;&#039;&#039; → logische Aufgabenströme pro Kern  &lt;br /&gt;
&lt;br /&gt;
Beispiel:  &lt;br /&gt;
Ein Ryzen 7 (8 Kerne / 16 Threads) kann bis zu 16 Hardware-Threads bereitstellen. Das Betriebssystem plant wesentlich mehr Software&lt;br /&gt;
Threads zeitlich darauf ein.&lt;br /&gt;
&lt;br /&gt;
== Fertigungsverfahren (Nanometer) ==&lt;br /&gt;
Die oft genannten Angaben wie &#039;&#039;&#039;14 nm&#039;&#039;&#039;, &#039;&#039;&#039;7 nm&#039;&#039;&#039; oder &#039;&#039;&#039;5 nm&#039;&#039;&#039; beziehen sich auf das &#039;&#039;&#039;[[CPU-Fertigungsverfahren|Fertigungsverfahren]]&#039;&#039;&#039; eines Prozessors.  &lt;br /&gt;
Es beschreibt die Größe der kleinsten Strukturen (insbesondere [[Transistor]]en), die während der Chipproduktion hergestellt werden können.&lt;br /&gt;
Moderne Prozessbezeichnungen sind Technologies-/Generationsnamen und keiner einzelnen messbaren Struktur eindeutig gleichzusetzen.&lt;br /&gt;
&lt;br /&gt;
Kleinere Fertigungsprozesse bedeuten in der Regel:&lt;br /&gt;
* geringerer Stromverbrauch  &lt;br /&gt;
* höhere Energieeffizienz  &lt;br /&gt;
* mehr [[Transistor]]en pro Fläche (höhere Leistungspotenziale)  &lt;br /&gt;
* weniger Wärmeentwicklung&lt;br /&gt;
&lt;br /&gt;
== Cache-Speicher (L1, L2, L3) ==&lt;br /&gt;
[[Cache]] ist ein &#039;&#039;&#039;extrem schneller Speicher direkt in der CPU&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Cache&lt;br /&gt;
! Größe&lt;br /&gt;
! Geschwindigkeit&lt;br /&gt;
! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| L1&lt;br /&gt;
| sehr klein (32–128 KB)&lt;br /&gt;
| extrem schnell&lt;br /&gt;
| Daten/Instruktionen pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L2&lt;br /&gt;
| mittelgroß (256 KB – 1 MB)&lt;br /&gt;
| sehr schnell&lt;br /&gt;
| Zwischendaten pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L3&lt;br /&gt;
| groß (8–64 MB)&lt;br /&gt;
| langsamer, aber viel Speicher&lt;br /&gt;
| geteilt zwischen allen Kernen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CISC und RISC ==&lt;br /&gt;
&lt;br /&gt;
Prozessoren folgen unterschiedlichen Befehlssatz-Architekturen.  &lt;br /&gt;
Die zwei wichtigsten sind &#039;&#039;&#039;CISC&#039;&#039;&#039; und &#039;&#039;&#039;RISC&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
=== CISC (Complex Instruction Set Computer) ===&lt;br /&gt;
* viele komplexe Befehle  &lt;br /&gt;
* einzelne Befehle können sehr viel Arbeit auf einmal erledigen  &lt;br /&gt;
* Beispiel: x86-Prozessoren (Intel, AMD)&lt;br /&gt;
&lt;br /&gt;
=== RISC (Reduced Instruction Set Computer)=== &lt;br /&gt;
* kleiner, einfacher Befehlssatz  &lt;br /&gt;
* dafür sehr schnelle und effiziente Ausführung  &lt;br /&gt;
* Beispiel: ARM-Prozessoren (Smartphones, Tablets, Apple M-Chips)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz gesagt:&#039;&#039;&#039;  &lt;br /&gt;
CISC setzt auf &#039;&#039;komplexe Befehle&#039;&#039;, RISC auf &#039;&#039;einfache, schnelle Befehle&#039;&#039;. Beide verfolgen unterschiedliche Wege zur hohen CPU-Leistung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CPU-interne Bussysteme ==&lt;br /&gt;
[[CPU-interne Bussysteme]] sorgen dafür, dass Daten, Adressen und Steuersignale schnell zwischen den internen Einheiten wie [[Register]], [[ALU]], [[Cache]] und [[Steuerwerk]] ausgetauscht werden. Sie verbinden alle Funktionsblöcke innerhalb des Prozessors und ermöglichen dessen Ablauf und Rechenoperationen.&lt;br /&gt;
&lt;br /&gt;
== Kühlung der CPU ==&lt;br /&gt;
Eine [[CPU]] erzeugt Wärme und benötigt eine geeignete [[Prozessorkühlung|Kühlung]]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Luftkühler&#039;&#039;&#039; – Tower-Kühler, Radiallüfter  &lt;br /&gt;
* &#039;&#039;&#039;Wasserkühlung (AIO)&#039;&#039;&#039; – 120/240/360 mm Radiatoren  &lt;br /&gt;
* &#039;&#039;&#039;Wärmeleitpaste&#039;&#039;&#039; – verbessert die Wärmeübertragung zur Kühlung  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine Erwärmung über ~90°C kann die CPU drosseln (Thermal Throttling).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Leistungsbegriffe ==&lt;br /&gt;
* &#039;&#039;&#039;TDP (Thermal Design Power)&#039;&#039;&#039; - Wärmeabgabe unter typischer Last (keine maximale Stromaufnahme!)  &lt;br /&gt;
* &#039;&#039;&#039;Boost-/Turbo-Takt&#039;&#039;&#039; - kurzfristig erhöhter Takt für mehr Leistung  &lt;br /&gt;
* &#039;&#039;&#039;[[IPC|IPC (Instructions per Cycle)]] &#039;&#039;&#039; - wie viele Befehle pro Takt ausgeführt werden können&lt;br /&gt;
&lt;br /&gt;
== Virtualisierung ==&lt;br /&gt;
Die &#039;&#039;&#039;[[Virtualisierung|Virtualisierung]]&#039;&#039;&#039; ermöglicht es, mehrere Betriebssysteme oder Rechnerumgebungen gleichzeitig auf derselben Hardware auszuführen.  &lt;br /&gt;
Die CPU stellt dafür spezielle Funktionen bereit, um virtuelle Maschinen effizient und sicher zu betreiben.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
* Die CPU ist die zentrale Recheneinheit des Computers.  &lt;br /&gt;
* [[Kerne und Threads]] bestimmen, wie viele Aufgaben gleichzeitig verarbeitet werden können.  &lt;br /&gt;
* [[Cache]]-Speicher verbessert die Geschwindigkeit erheblich.  &lt;br /&gt;
* Der [[CPU-Sockel|Sockel]] legt fest, welche CPU auf welches [[Mainboard]] passt.  &lt;br /&gt;
* [[Prozessorkühlung]] ist entscheidend für Leistung und Lebensdauer.  &lt;br /&gt;
* [[Taktfrequenz]] allein ist nicht aussagekräftig. Architektur und [[IPC]] sind ebenso wichtig.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AP1]] &lt;br /&gt;
[[Kategorie: Systemtechnik]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=CPU&amp;diff=3035</id>
		<title>CPU</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=CPU&amp;diff=3035"/>
		<updated>2026-09-07T08:22:55Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Taktfrequenz, Kerne und Kerne und Threads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;metadesc&amp;gt;&lt;br /&gt;
Die CPU verständlich erklärt: Aufbau, Funktionsweise, Takt, Kerne, Threads und warum der Prozessor das Herzstück moderner Computersysteme ist.&lt;br /&gt;
&amp;lt;/metadesc&amp;gt;&lt;br /&gt;
Der&#039;&#039;&#039; Prozessor (CPU – Central Processing Unit) &#039;&#039;&#039; ist das Rechenzentrum des Computers.  &lt;br /&gt;
Sie führt Befehle aus, verarbeitet Daten und steuert den gesamten Ablauf von Programmen.  &lt;br /&gt;
Oft wird sie auch als das „&#039;&#039;&#039;Gehirn des Computers&#039;&#039;&#039;“ bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Vergleich: Aufgaben und Eigenschaften einer CPU ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Rechenleistung&lt;br /&gt;
| führt arithmetische und logische Operationen aus&lt;br /&gt;
| Addieren, Vergleichen, Schieben&lt;br /&gt;
|-&lt;br /&gt;
| Steuerung&lt;br /&gt;
| koordiniert Befehlsabfolge und Datenfluss&lt;br /&gt;
| Programmzähler, Steuerwerk&lt;br /&gt;
|-&lt;br /&gt;
| Parallelität&lt;br /&gt;
| arbeitet mit mehreren Kernen gleichzeitig&lt;br /&gt;
| 4, 6, 8, 12, 16 Kerne …&lt;br /&gt;
|-&lt;br /&gt;
| Cache-Speicher&lt;br /&gt;
| extrem schnelle Zwischenspeicher&lt;br /&gt;
| L1, L2, L3&lt;br /&gt;
|-&lt;br /&gt;
| Energieverwaltung&lt;br /&gt;
| passt Taktfrequenz und Spannung an&lt;br /&gt;
| Boost, Turbo, Energiesparmodi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufbau einer CPU ==&lt;br /&gt;
Eine moderne CPU besteht aus mehreren Funktionsblöcken:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ALU|Rechenwerk (ALU)]]&#039;&#039;&#039; – führt Rechenoperationen aus  &lt;br /&gt;
* &#039;&#039;&#039;[[FPU|Gleitkommaeinheit (FPU)]]&#039;&#039;&#039; – für mathematisch komplexe Berechnungen  &lt;br /&gt;
* &#039;&#039;&#039;[[Steuerwerk|Steuerwerk (Control Unit)]]&#039;&#039;&#039; – holt, dekodiert und steuert Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Register|Register]]&#039;&#039;&#039; – extrem schnelle, kleine Speicherbereiche  &lt;br /&gt;
* &#039;&#039;&#039;[[Cache|Cache (L1, L2, L3)]]&#039;&#039;&#039; – Zwischenspeicher für Daten und Befehle  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Mehrere Kerne]]&#039;&#039;&#039; – parallel arbeitende Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threading-Technologie]]&#039;&#039;&#039; – z. B. Intel Hyper-Threading oder AMD SMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skizze 2-Kern-CPU===&lt;br /&gt;
[[Datei:Aufbau cpu.png|rahmenlos|links|upright=3|alternativtext=Aufbau cpu|Aufbau cpu]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sockeltypen ==&lt;br /&gt;
Der [[CPU-Sockel]] bestimmt, welche Prozessoren auf einem [[Mainboard]] funktionieren.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Hersteller&lt;br /&gt;
! Sockel&lt;br /&gt;
! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Intel&lt;br /&gt;
| LGA 1151, LGA 1200, LGA 1700&lt;br /&gt;
| Core i5, i7, i9&lt;br /&gt;
|-&lt;br /&gt;
| AMD&lt;br /&gt;
| AM4, AM5&lt;br /&gt;
| Ryzen 5, 7, 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine CPU passt nur in den dafür vorgesehenen Sockel – Kompatibilität ist zwingend.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Taktfrequenz, Kerne und Kerne und Threads ==&lt;br /&gt;
* &#039;&#039;&#039;[[Taktfrequenz|Taktfrequenz (GHz)]]&#039;&#039;&#039; → bestimmt, wie viele Operationen pro Sekunde ausgeführt werden  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Kerne]]&#039;&#039;&#039; → mehrere unabhängige Verarbeitungseinheiten  &lt;br /&gt;
* &#039;&#039;&#039;[[Kerne und Threads|Threads]]&#039;&#039;&#039; → logische Aufgabenströme pro Kern  &lt;br /&gt;
&lt;br /&gt;
Beispiel:  &lt;br /&gt;
Ein Ryzen 7 (8 Kerne / 16 Threads) kann bis zu 16 Hardware-Threads bereitstellen. Das Betriebssystem plant wesentlich mehr Software&lt;br /&gt;
Threads zeitlich darauf ein.&lt;br /&gt;
&lt;br /&gt;
== Fertigungsverfahren (Nanometer) ==&lt;br /&gt;
Die oft genannten Angaben wie &#039;&#039;&#039;14 nm&#039;&#039;&#039;, &#039;&#039;&#039;7 nm&#039;&#039;&#039; oder &#039;&#039;&#039;5 nm&#039;&#039;&#039; beziehen sich auf das &#039;&#039;&#039;[[CPU-Fertigungsverfahren|Fertigungsverfahren]]&#039;&#039;&#039; eines Prozessors.  &lt;br /&gt;
Es beschreibt die Größe der kleinsten Strukturen (insbesondere [[Transistor]]en), die während der Chipproduktion hergestellt werden können.&lt;br /&gt;
&lt;br /&gt;
Kleinere Fertigungsprozesse bedeuten in der Regel:&lt;br /&gt;
* geringerer Stromverbrauch  &lt;br /&gt;
* höhere Energieeffizienz  &lt;br /&gt;
* mehr [[Transistor]]en pro Fläche (höhere Leistungspotenziale)  &lt;br /&gt;
* weniger Wärmeentwicklung&lt;br /&gt;
&lt;br /&gt;
== Cache-Speicher (L1, L2, L3) ==&lt;br /&gt;
[[Cache]] ist ein &#039;&#039;&#039;extrem schneller Speicher direkt in der CPU&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Cache&lt;br /&gt;
! Größe&lt;br /&gt;
! Geschwindigkeit&lt;br /&gt;
! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| L1&lt;br /&gt;
| sehr klein (32–128 KB)&lt;br /&gt;
| extrem schnell&lt;br /&gt;
| Daten/Instruktionen pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L2&lt;br /&gt;
| mittelgroß (256 KB – 1 MB)&lt;br /&gt;
| sehr schnell&lt;br /&gt;
| Zwischendaten pro Kern&lt;br /&gt;
|-&lt;br /&gt;
| L3&lt;br /&gt;
| groß (8–64 MB)&lt;br /&gt;
| langsamer, aber viel Speicher&lt;br /&gt;
| geteilt zwischen allen Kernen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CISC und RISC ==&lt;br /&gt;
&lt;br /&gt;
Prozessoren folgen unterschiedlichen Befehlssatz-Architekturen.  &lt;br /&gt;
Die zwei wichtigsten sind &#039;&#039;&#039;CISC&#039;&#039;&#039; und &#039;&#039;&#039;RISC&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
=== CISC (Complex Instruction Set Computer) ===&lt;br /&gt;
* viele komplexe Befehle  &lt;br /&gt;
* einzelne Befehle können sehr viel Arbeit auf einmal erledigen  &lt;br /&gt;
* Beispiel: x86-Prozessoren (Intel, AMD)&lt;br /&gt;
&lt;br /&gt;
=== RISC (Reduced Instruction Set Computer)=== &lt;br /&gt;
* kleiner, einfacher Befehlssatz  &lt;br /&gt;
* dafür sehr schnelle und effiziente Ausführung  &lt;br /&gt;
* Beispiel: ARM-Prozessoren (Smartphones, Tablets, Apple M-Chips)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kurz gesagt:&#039;&#039;&#039;  &lt;br /&gt;
CISC setzt auf &#039;&#039;komplexe Befehle&#039;&#039;, RISC auf &#039;&#039;einfache, schnelle Befehle&#039;&#039;. Beide verfolgen unterschiedliche Wege zur hohen CPU-Leistung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CPU-interne Bussysteme ==&lt;br /&gt;
[[CPU-interne Bussysteme]] sorgen dafür, dass Daten, Adressen und Steuersignale schnell zwischen den internen Einheiten wie [[Register]], [[ALU]], [[Cache]] und [[Steuerwerk]] ausgetauscht werden. Sie verbinden alle Funktionsblöcke innerhalb des Prozessors und ermöglichen dessen Ablauf und Rechenoperationen.&lt;br /&gt;
&lt;br /&gt;
== Kühlung der CPU ==&lt;br /&gt;
Eine [[CPU]] erzeugt Wärme und benötigt eine geeignete [[Prozessorkühlung|Kühlung]]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Luftkühler&#039;&#039;&#039; – Tower-Kühler, Radiallüfter  &lt;br /&gt;
* &#039;&#039;&#039;Wasserkühlung (AIO)&#039;&#039;&#039; – 120/240/360 mm Radiatoren  &lt;br /&gt;
* &#039;&#039;&#039;Wärmeleitpaste&#039;&#039;&#039; – verbessert die Wärmeübertragung zur Kühlung  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis: Eine Erwärmung über ~90°C kann die CPU drosseln (Thermal Throttling).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Leistungsbegriffe ==&lt;br /&gt;
* &#039;&#039;&#039;TDP (Thermal Design Power)&#039;&#039;&#039; - Wärmeabgabe unter typischer Last (keine maximale Stromaufnahme!)  &lt;br /&gt;
* &#039;&#039;&#039;Boost-/Turbo-Takt&#039;&#039;&#039; - kurzfristig erhöhter Takt für mehr Leistung  &lt;br /&gt;
* &#039;&#039;&#039;[[IPC|IPC (Instructions per Cycle)]] &#039;&#039;&#039; - wie viele Befehle pro Takt ausgeführt werden können&lt;br /&gt;
&lt;br /&gt;
== Virtualisierung ==&lt;br /&gt;
Die &#039;&#039;&#039;[[Virtualisierung|Virtualisierung]]&#039;&#039;&#039; ermöglicht es, mehrere Betriebssysteme oder Rechnerumgebungen gleichzeitig auf derselben Hardware auszuführen.  &lt;br /&gt;
Die CPU stellt dafür spezielle Funktionen bereit, um virtuelle Maschinen effizient und sicher zu betreiben.&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
* Die CPU ist die zentrale Recheneinheit des Computers.  &lt;br /&gt;
* [[Kerne und Threads]] bestimmen, wie viele Aufgaben gleichzeitig verarbeitet werden können.  &lt;br /&gt;
* [[Cache]]-Speicher verbessert die Geschwindigkeit erheblich.  &lt;br /&gt;
* Der [[CPU-Sockel|Sockel]] legt fest, welche CPU auf welches [[Mainboard]] passt.  &lt;br /&gt;
* [[Prozessorkühlung]] ist entscheidend für Leistung und Lebensdauer.  &lt;br /&gt;
* [[Taktfrequenz]] allein ist nicht aussagekräftig. Architektur und [[IPC]] sind ebenso wichtig.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AP1]] &lt;br /&gt;
[[Kategorie: Systemtechnik]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Datensicherheit&amp;diff=3034</id>
		<title>Datensicherheit</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Datensicherheit&amp;diff=3034"/>
		<updated>2026-09-07T08:14:31Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* = Wichtige Prinzipien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datensicherheit umfasst alle Maßnahmen zum Schutz von Daten vor Verlust, Manipulation und unbefugtem Zugriff.&lt;br /&gt;
&lt;br /&gt;
== Schutzziele der Datensicherheit ==&lt;br /&gt;
Die Datensicherheit basiert auf drei zentralen Schutzzielen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Schutzziel !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Vertraulichkeit&#039;&#039;&#039; || Schutz der Daten vor unbefugtem Zugriff, sodass nur autorisierte Personen Zugang haben&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Integrität&#039;&#039;&#039; || Sicherstellung, dass Daten vollständig und unverändert bleiben und nicht unberechtigt manipuliert werden&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Verfügbarkeit&#039;&#039;&#039; || Systeme und Daten müssen bei Bedarf jederzeit verfügbar sein, um Ausfallzeiten zu minimieren&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technische und organisatorische Maßnahmen (TOMs) ==&lt;br /&gt;
&lt;br /&gt;
Technische und organisatorische Maßnahmen dienen der praktischen Umsetzung der Schutzziele.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Maßnahme !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Zutrittskontrolle || Schutz von Gebäuden und Räumen (z. B. Schlüsselkarten, Wachpersonal)&lt;br /&gt;
|-&lt;br /&gt;
| Zugangskontrolle || Schutz vor unbefugtem Systemzugang (Passwörter, Biometrie, 2FA)&lt;br /&gt;
|-&lt;br /&gt;
| Zugriffskontrolle || Regelung, welche Benutzer auf welche Daten zugreifen dürfen&lt;br /&gt;
|-&lt;br /&gt;
| Weitergabekontrolle || Schutz bei der Datenübertragung (z. B. Verschlüsselung)&lt;br /&gt;
|-&lt;br /&gt;
| Eingabekontrolle || Nachvollziehbarkeit von Änderungen durch Protokollierung&lt;br /&gt;
|-&lt;br /&gt;
| Auftragskontrolle || Verarbeitung von Daten nur im Rahmen definierter Aufgaben&lt;br /&gt;
|-&lt;br /&gt;
| Verfügbarkeitskontrolle || Sicherstellung der Systemverfügbarkeit (Backups, Redundanz)&lt;br /&gt;
|-&lt;br /&gt;
| Trennung von Daten || Logische oder physische Trennung von Daten unterschiedlicher Zwecke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[Bedrohungsszenarien]] und Gegenmaßnahmen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bedrohung !! Beschreibung !! Gegenmaßnahme&lt;br /&gt;
|-&lt;br /&gt;
| SQL-Injection || Einschleusen von SQL-Code über Eingabefelder || Prepared Statements, Eingabevalidierung&lt;br /&gt;
|-&lt;br /&gt;
| Cross-Site Scripting (XSS) || Einschleusen von Schadcode in Webseiten || Output-Encoding, Filterung&lt;br /&gt;
|-&lt;br /&gt;
| Phishing || Täuschung zum Diebstahl von Zugangsdaten || Schulungen, 2FA, Spamfilter&lt;br /&gt;
|-&lt;br /&gt;
| Malware || [[Virus|Viren]], [[Trojaner]], [[Ransomware]] || Antivirensoftware, Updates&lt;br /&gt;
|-&lt;br /&gt;
| Brute-Force || Automatisiertes Erraten von Passwörtern || Starke Passwörter, Rate-Limiting&lt;br /&gt;
|-&lt;br /&gt;
| Man-in-the-Middle || Abfangen von Datenübertragungen || HTTPS/TLS-Verschlüsselung&lt;br /&gt;
|-&lt;br /&gt;
| Social Engineering || Manipulation von Menschen || Awareness-Training, klare Prozesse&lt;br /&gt;
|-&lt;br /&gt;
| Datenverlust || Verlust durch Defekte oder Angriffe || Backups, RAID, Cloud-Sicherungen&lt;br /&gt;
|-&lt;br /&gt;
| DDoS || Überlastung durch Massenanfragen || Load-Balancing, DDoS-Schutzdienste&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Authentifizierung und Autorisierung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Authentifizierung&#039;&#039;&#039; überprüft die Identität eines Benutzers (z. B. Benutzername und Passwort).&lt;br /&gt;
* &#039;&#039;&#039;Autorisierung&#039;&#039;&#039; legt fest, welche Rechte ein authentifizierter Benutzer besitzt.&lt;br /&gt;
&lt;br /&gt;
=== Authentifizierungsfaktoren ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Faktor !! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Wissen || Passwort, PIN&lt;br /&gt;
|-&lt;br /&gt;
| Besitz || Sicherheitsschlüssel, Chipkarte, Smartphone&lt;br /&gt;
|-&lt;br /&gt;
| Sein || Fingerabdruck, Gesichtserkennung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Autorisierung ===&lt;br /&gt;
Nach erfolgreicher Authentifizierung prüft ein System die Berechtigungen. Häufige Modelle sind:&lt;br /&gt;
&lt;br /&gt;
* rollenbasierte Zugriffskontrolle (RBAC)&lt;br /&gt;
* attributbasierte Zugriffskontrolle (ABAC)&lt;br /&gt;
* Zugriffslisten (ACL)&lt;br /&gt;
&lt;br /&gt;
==== Wichtige Prinzipien ====&lt;br /&gt;
* Least Privilege – nur notwendige Rechte vergeben&lt;br /&gt;
* Need-to-know – Zugriff nur bei fachlichem Bedarf&lt;br /&gt;
* Trennung von Aufgaben – kritische Vorgänge auf mehrere Personen verteilen&lt;br /&gt;
* regelmäßige Überprüfung und Entzug nicht mehr benötigter Rechte&lt;br /&gt;
&lt;br /&gt;
Mehrfaktor-Authentifizierung verwendet mindestens zwei unabhängige Faktoren aus unterschiedlichen Kategorien. Zwei Passwörter sind deshalb keine echte Zwei-Faktor-Authentifizierung.&lt;br /&gt;
&lt;br /&gt;
== IT-Grundschutz des BSI ==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;IT-Grundschutz des BSI&#039;&#039;&#039; bietet eine systematische Methodik zur Informationssicherheit:&lt;br /&gt;
&lt;br /&gt;
* Identifikation und Bewertung von Sicherheitsrisiken  &lt;br /&gt;
* Umsetzung geeigneter Sicherheitsmaßnahmen  &lt;br /&gt;
* Regelmäßige Überprüfung und Verbesserung der Sicherheitslage  &lt;br /&gt;
&lt;br /&gt;
== Zertifizierungen und ISMS ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ISO 27001&#039;&#039;&#039; – internationaler Standard für Informationssicherheitsmanagementsysteme  &lt;br /&gt;
* &#039;&#039;&#039;ISMS&#039;&#039;&#039; – systematischer Ansatz zur Planung, Umsetzung und Kontrolle der Informationssicherheit  &lt;br /&gt;
&lt;br /&gt;
== Härtung eines Betriebssystems ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Härtung eines Betriebssystems&#039;&#039;&#039; reduziert gezielt die Angriffsfläche eines Systems.&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Maßnahmen ===&lt;br /&gt;
* Deaktivierung nicht benötigter Dienste  &lt;br /&gt;
* Regelmäßige Updates und Patch-Management  &lt;br /&gt;
* Einschränkung von Benutzerrechten (Prinzip der minimalen Rechte)  &lt;br /&gt;
* Starke Authentifizierung (MFA)  &lt;br /&gt;
* [[Firewall]]-Konfiguration  &lt;br /&gt;
* Verschlüsselung von Daten  &lt;br /&gt;
* Deaktivierung unnötiger Schnittstellen  &lt;br /&gt;
* Protokollierung und Monitoring  &lt;br /&gt;
* Sicherheitsrichtlinien durchsetzen  &lt;br /&gt;
&lt;br /&gt;
Die Härtung ist ein kontinuierlicher Prozess und muss regelmäßig angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Datensicherung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Datensicherung&#039;&#039;&#039; ist das deutsche Wort für &#039;&#039;&#039;[[Backup]]&#039;&#039;&#039; und dient dem Schutz vor Datenverlust.&lt;br /&gt;
&lt;br /&gt;
=== Ziele der Datensicherung ===&lt;br /&gt;
* Schutz der Daten  &lt;br /&gt;
* Sicherstellung der Verfügbarkeit  &lt;br /&gt;
&lt;br /&gt;
=== Ursachen für Datenverlust ===&lt;br /&gt;
* Technische Defekte (Stromausfall, Hardwarefehler)&lt;br /&gt;
* Menschliches Versagen&lt;br /&gt;
* Böswillige Angriffe&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen an Datensicherung ===&lt;br /&gt;
* Geeignete Sicherungsmedien wählen  &lt;br /&gt;
* Wiederherstellungsszenarien planen  &lt;br /&gt;
* Sicherungsdauer, Kosten und Datenmenge berücksichtigen  &lt;br /&gt;
&lt;br /&gt;
=== Backup-Medien ===&lt;br /&gt;
* Magnetbänder  &lt;br /&gt;
* Externe Festplatten ([[HDD]], [[SSD]])  &lt;br /&gt;
* Cloud-Speicher&lt;br /&gt;
&lt;br /&gt;
=== Backup-Arten ===&lt;br /&gt;
* &#039;&#039;&#039;[[Voll-Backup|Vollsicherung]]&#039;&#039;&#039; – alle Daten  &lt;br /&gt;
* &#039;&#039;&#039;[[Inkrementelles Backup|Inkrementell]]&#039;&#039;&#039; – Änderungen seit letztem Backup  &lt;br /&gt;
* &#039;&#039;&#039;[[Differentielles Backup|Differentiell]]&#039;&#039;&#039; – Änderungen seit letztem Vollbackup&lt;br /&gt;
&lt;br /&gt;
=== Backup-Prinzipien ===&lt;br /&gt;
* Großvater-Vater-Sohn-Prinzip  &lt;br /&gt;
* 3-2-1-Regel  &lt;br /&gt;
* Hot Backup / Cold Backup  &lt;br /&gt;
&lt;br /&gt;
=== Identifikation schützenswerter Daten ===&lt;br /&gt;
* Maschinell wiederherstellbar  &lt;br /&gt;
* Unersetzliche Daten  &lt;br /&gt;
&lt;br /&gt;
=== Gegenmaßnahmen ===&lt;br /&gt;
* Redundante Systeme  &lt;br /&gt;
* Regelmäßige [[Backup]]s  &lt;br /&gt;
* [[USV]] und Überspannungsschutz  &lt;br /&gt;
* [[Firewall]] und Virenscanner&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Datensicherheit schützt Daten durch technische, organisatorische und personelle Maßnahmen vor Verlust, Manipulation und unbefugtem Zugriff.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Datensicherheit&amp;diff=3033</id>
		<title>Datensicherheit</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Datensicherheit&amp;diff=3033"/>
		<updated>2026-09-07T08:14:22Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Authentifizierung und Autorisierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datensicherheit umfasst alle Maßnahmen zum Schutz von Daten vor Verlust, Manipulation und unbefugtem Zugriff.&lt;br /&gt;
&lt;br /&gt;
== Schutzziele der Datensicherheit ==&lt;br /&gt;
Die Datensicherheit basiert auf drei zentralen Schutzzielen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Schutzziel !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Vertraulichkeit&#039;&#039;&#039; || Schutz der Daten vor unbefugtem Zugriff, sodass nur autorisierte Personen Zugang haben&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Integrität&#039;&#039;&#039; || Sicherstellung, dass Daten vollständig und unverändert bleiben und nicht unberechtigt manipuliert werden&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Verfügbarkeit&#039;&#039;&#039; || Systeme und Daten müssen bei Bedarf jederzeit verfügbar sein, um Ausfallzeiten zu minimieren&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technische und organisatorische Maßnahmen (TOMs) ==&lt;br /&gt;
&lt;br /&gt;
Technische und organisatorische Maßnahmen dienen der praktischen Umsetzung der Schutzziele.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Maßnahme !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Zutrittskontrolle || Schutz von Gebäuden und Räumen (z. B. Schlüsselkarten, Wachpersonal)&lt;br /&gt;
|-&lt;br /&gt;
| Zugangskontrolle || Schutz vor unbefugtem Systemzugang (Passwörter, Biometrie, 2FA)&lt;br /&gt;
|-&lt;br /&gt;
| Zugriffskontrolle || Regelung, welche Benutzer auf welche Daten zugreifen dürfen&lt;br /&gt;
|-&lt;br /&gt;
| Weitergabekontrolle || Schutz bei der Datenübertragung (z. B. Verschlüsselung)&lt;br /&gt;
|-&lt;br /&gt;
| Eingabekontrolle || Nachvollziehbarkeit von Änderungen durch Protokollierung&lt;br /&gt;
|-&lt;br /&gt;
| Auftragskontrolle || Verarbeitung von Daten nur im Rahmen definierter Aufgaben&lt;br /&gt;
|-&lt;br /&gt;
| Verfügbarkeitskontrolle || Sicherstellung der Systemverfügbarkeit (Backups, Redundanz)&lt;br /&gt;
|-&lt;br /&gt;
| Trennung von Daten || Logische oder physische Trennung von Daten unterschiedlicher Zwecke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[Bedrohungsszenarien]] und Gegenmaßnahmen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bedrohung !! Beschreibung !! Gegenmaßnahme&lt;br /&gt;
|-&lt;br /&gt;
| SQL-Injection || Einschleusen von SQL-Code über Eingabefelder || Prepared Statements, Eingabevalidierung&lt;br /&gt;
|-&lt;br /&gt;
| Cross-Site Scripting (XSS) || Einschleusen von Schadcode in Webseiten || Output-Encoding, Filterung&lt;br /&gt;
|-&lt;br /&gt;
| Phishing || Täuschung zum Diebstahl von Zugangsdaten || Schulungen, 2FA, Spamfilter&lt;br /&gt;
|-&lt;br /&gt;
| Malware || [[Virus|Viren]], [[Trojaner]], [[Ransomware]] || Antivirensoftware, Updates&lt;br /&gt;
|-&lt;br /&gt;
| Brute-Force || Automatisiertes Erraten von Passwörtern || Starke Passwörter, Rate-Limiting&lt;br /&gt;
|-&lt;br /&gt;
| Man-in-the-Middle || Abfangen von Datenübertragungen || HTTPS/TLS-Verschlüsselung&lt;br /&gt;
|-&lt;br /&gt;
| Social Engineering || Manipulation von Menschen || Awareness-Training, klare Prozesse&lt;br /&gt;
|-&lt;br /&gt;
| Datenverlust || Verlust durch Defekte oder Angriffe || Backups, RAID, Cloud-Sicherungen&lt;br /&gt;
|-&lt;br /&gt;
| DDoS || Überlastung durch Massenanfragen || Load-Balancing, DDoS-Schutzdienste&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Authentifizierung und Autorisierung ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Authentifizierung&#039;&#039;&#039; überprüft die Identität eines Benutzers (z. B. Benutzername und Passwort).&lt;br /&gt;
* &#039;&#039;&#039;Autorisierung&#039;&#039;&#039; legt fest, welche Rechte ein authentifizierter Benutzer besitzt.&lt;br /&gt;
&lt;br /&gt;
=== Authentifizierungsfaktoren ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Faktor !! Beispiele&lt;br /&gt;
|-&lt;br /&gt;
| Wissen || Passwort, PIN&lt;br /&gt;
|-&lt;br /&gt;
| Besitz || Sicherheitsschlüssel, Chipkarte, Smartphone&lt;br /&gt;
|-&lt;br /&gt;
| Sein || Fingerabdruck, Gesichtserkennung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Autorisierung ===&lt;br /&gt;
Nach erfolgreicher Authentifizierung prüft ein System die Berechtigungen. Häufige Modelle sind:&lt;br /&gt;
&lt;br /&gt;
* rollenbasierte Zugriffskontrolle (RBAC)&lt;br /&gt;
* attributbasierte Zugriffskontrolle (ABAC)&lt;br /&gt;
* Zugriffslisten (ACL)&lt;br /&gt;
&lt;br /&gt;
==== Wichtige Prinzipien ===&lt;br /&gt;
* Least Privilege – nur notwendige Rechte vergeben&lt;br /&gt;
* Need-to-know – Zugriff nur bei fachlichem Bedarf&lt;br /&gt;
* Trennung von Aufgaben – kritische Vorgänge auf mehrere Personen verteilen&lt;br /&gt;
* regelmäßige Überprüfung und Entzug nicht mehr benötigter Rechte&lt;br /&gt;
&lt;br /&gt;
Mehrfaktor-Authentifizierung verwendet mindestens zwei unabhängige Faktoren aus unterschiedlichen Kategorien. Zwei Passwörter sind deshalb keine echte Zwei-Faktor-Authentifizierung.&lt;br /&gt;
&lt;br /&gt;
== IT-Grundschutz des BSI ==&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;IT-Grundschutz des BSI&#039;&#039;&#039; bietet eine systematische Methodik zur Informationssicherheit:&lt;br /&gt;
&lt;br /&gt;
* Identifikation und Bewertung von Sicherheitsrisiken  &lt;br /&gt;
* Umsetzung geeigneter Sicherheitsmaßnahmen  &lt;br /&gt;
* Regelmäßige Überprüfung und Verbesserung der Sicherheitslage  &lt;br /&gt;
&lt;br /&gt;
== Zertifizierungen und ISMS ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ISO 27001&#039;&#039;&#039; – internationaler Standard für Informationssicherheitsmanagementsysteme  &lt;br /&gt;
* &#039;&#039;&#039;ISMS&#039;&#039;&#039; – systematischer Ansatz zur Planung, Umsetzung und Kontrolle der Informationssicherheit  &lt;br /&gt;
&lt;br /&gt;
== Härtung eines Betriebssystems ==&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Härtung eines Betriebssystems&#039;&#039;&#039; reduziert gezielt die Angriffsfläche eines Systems.&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Maßnahmen ===&lt;br /&gt;
* Deaktivierung nicht benötigter Dienste  &lt;br /&gt;
* Regelmäßige Updates und Patch-Management  &lt;br /&gt;
* Einschränkung von Benutzerrechten (Prinzip der minimalen Rechte)  &lt;br /&gt;
* Starke Authentifizierung (MFA)  &lt;br /&gt;
* [[Firewall]]-Konfiguration  &lt;br /&gt;
* Verschlüsselung von Daten  &lt;br /&gt;
* Deaktivierung unnötiger Schnittstellen  &lt;br /&gt;
* Protokollierung und Monitoring  &lt;br /&gt;
* Sicherheitsrichtlinien durchsetzen  &lt;br /&gt;
&lt;br /&gt;
Die Härtung ist ein kontinuierlicher Prozess und muss regelmäßig angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Datensicherung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Datensicherung&#039;&#039;&#039; ist das deutsche Wort für &#039;&#039;&#039;[[Backup]]&#039;&#039;&#039; und dient dem Schutz vor Datenverlust.&lt;br /&gt;
&lt;br /&gt;
=== Ziele der Datensicherung ===&lt;br /&gt;
* Schutz der Daten  &lt;br /&gt;
* Sicherstellung der Verfügbarkeit  &lt;br /&gt;
&lt;br /&gt;
=== Ursachen für Datenverlust ===&lt;br /&gt;
* Technische Defekte (Stromausfall, Hardwarefehler)&lt;br /&gt;
* Menschliches Versagen&lt;br /&gt;
* Böswillige Angriffe&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen an Datensicherung ===&lt;br /&gt;
* Geeignete Sicherungsmedien wählen  &lt;br /&gt;
* Wiederherstellungsszenarien planen  &lt;br /&gt;
* Sicherungsdauer, Kosten und Datenmenge berücksichtigen  &lt;br /&gt;
&lt;br /&gt;
=== Backup-Medien ===&lt;br /&gt;
* Magnetbänder  &lt;br /&gt;
* Externe Festplatten ([[HDD]], [[SSD]])  &lt;br /&gt;
* Cloud-Speicher&lt;br /&gt;
&lt;br /&gt;
=== Backup-Arten ===&lt;br /&gt;
* &#039;&#039;&#039;[[Voll-Backup|Vollsicherung]]&#039;&#039;&#039; – alle Daten  &lt;br /&gt;
* &#039;&#039;&#039;[[Inkrementelles Backup|Inkrementell]]&#039;&#039;&#039; – Änderungen seit letztem Backup  &lt;br /&gt;
* &#039;&#039;&#039;[[Differentielles Backup|Differentiell]]&#039;&#039;&#039; – Änderungen seit letztem Vollbackup&lt;br /&gt;
&lt;br /&gt;
=== Backup-Prinzipien ===&lt;br /&gt;
* Großvater-Vater-Sohn-Prinzip  &lt;br /&gt;
* 3-2-1-Regel  &lt;br /&gt;
* Hot Backup / Cold Backup  &lt;br /&gt;
&lt;br /&gt;
=== Identifikation schützenswerter Daten ===&lt;br /&gt;
* Maschinell wiederherstellbar  &lt;br /&gt;
* Unersetzliche Daten  &lt;br /&gt;
&lt;br /&gt;
=== Gegenmaßnahmen ===&lt;br /&gt;
* Redundante Systeme  &lt;br /&gt;
* Regelmäßige [[Backup]]s  &lt;br /&gt;
* [[USV]] und Überspannungsschutz  &lt;br /&gt;
* [[Firewall]] und Virenscanner&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Datensicherheit schützt Daten durch technische, organisatorische und personelle Maßnahmen vor Verlust, Manipulation und unbefugtem Zugriff.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=VPN&amp;diff=3032</id>
		<title>VPN</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=VPN&amp;diff=3032"/>
		<updated>2026-09-07T07:32:31Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Ein &amp;#039;&amp;#039;&amp;#039;Virtual Private Network (VPN)&amp;#039;&amp;#039;&amp;#039; stellt über ein fremdes Netzwerk einen geschützten logischen Tunnel bereit.   Es wird beispielsweise für Homeoffice oder die Kopplung von Standorten verwendet.  == VPN-Arten == {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot; ! Art !! Beschreibung |- | Remote-Access-VPN || einzelnes Endgerät verbindet sich mit einem Unternehmensnetz |- | Site-to-Site-VPN || verbindet zwei oder mehr Netzwerke über VPN…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Virtual Private Network (VPN)&#039;&#039;&#039; stellt über ein fremdes Netzwerk einen geschützten logischen Tunnel bereit.  &lt;br /&gt;
Es wird beispielsweise für Homeoffice oder die Kopplung von Standorten verwendet.&lt;br /&gt;
&lt;br /&gt;
== VPN-Arten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Art !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Remote-Access-VPN || einzelnes Endgerät verbindet sich mit einem Unternehmensnetz&lt;br /&gt;
|-&lt;br /&gt;
| Site-to-Site-VPN || verbindet zwei oder mehr Netzwerke über VPN-Gateways&lt;br /&gt;
|-&lt;br /&gt;
| Host-to-Host-VPN || schützt die Verbindung zwischen zwei Endsystemen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schutzeigenschaften ==&lt;br /&gt;
Ein korrekt konfiguriertes VPN kann bieten:&lt;br /&gt;
&lt;br /&gt;
* Verschlüsselung für Vertraulichkeit&lt;br /&gt;
* Integritätsprüfung&lt;br /&gt;
* Authentifizierung der Gegenstellen&lt;br /&gt;
* Schutz vor Wiederholung alter Nachrichten&lt;br /&gt;
&lt;br /&gt;
Welche Eigenschaften tatsächlich gelten, hängt vom eingesetzten Protokoll und der Konfiguration ab.&lt;br /&gt;
&lt;br /&gt;
== Häufige Technologien ==&lt;br /&gt;
* IPsec&lt;br /&gt;
* TLS-basierte VPNs&lt;br /&gt;
* WireGuard&lt;br /&gt;
&lt;br /&gt;
== Split Tunneling ==&lt;br /&gt;
Beim Split Tunneling läuft nur bestimmter Verkehr durch das VPN. Ohne Split Tunneling wird gewöhnlich der gesamte passende Verkehr über den Tunnel geführt. Die Entscheidung beeinflusst Sicherheit, Bandbreite und Zugriffsmöglichkeiten.&lt;br /&gt;
&lt;br /&gt;
== Grenzen ==&lt;br /&gt;
Ein VPN schützt den Tunnel, aber nicht automatisch unsichere Endgeräte, gestohlene Zugangsdaten oder Daten nach dem Entschlüsseln am Ziel.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Ein VPN bildet einen geschützten Tunnel für die Kommunikation einzelner Geräte oder ganzer Netze.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Netzwerktechnik]]&lt;br /&gt;
[[Kategorie:IT-Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=VLAN&amp;diff=3031</id>
		<title>VLAN</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=VLAN&amp;diff=3031"/>
		<updated>2026-09-07T07:31:56Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Ein &amp;#039;&amp;#039;&amp;#039;Virtual Local Area Network (VLAN)&amp;#039;&amp;#039;&amp;#039; teilt ein physisches Switch-Netz logisch in getrennte Broadcast-Domänen auf.  == Zweck == * Abteilungen oder Gerätetypen logisch trennen * Broadcastverkehr begrenzen * Sicherheitsregeln zwischen Netzsegmenten anwenden * Netzstruktur unabhängig von der Verkabelung gestalten  == Access- und Trunk-Port == {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot; ! Porttyp !! Aufgabe |- | Access-Port || geh…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Virtual Local Area Network (VLAN)&#039;&#039;&#039; teilt ein physisches [[Switch]]-Netz logisch in getrennte Broadcast-Domänen auf.&lt;br /&gt;
&lt;br /&gt;
== Zweck ==&lt;br /&gt;
* Abteilungen oder Gerätetypen logisch trennen&lt;br /&gt;
* Broadcastverkehr begrenzen&lt;br /&gt;
* Sicherheitsregeln zwischen Netzsegmenten anwenden&lt;br /&gt;
* Netzstruktur unabhängig von der Verkabelung gestalten&lt;br /&gt;
&lt;br /&gt;
== Access- und Trunk-Port ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Porttyp !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Access-Port || gehört gewöhnlich zu einem VLAN; Frames zum Endgerät meist ungetaggt&lt;br /&gt;
|-&lt;br /&gt;
| Trunk-Port || transportiert mehrere VLANs zwischen Netzwerkgeräten; Frames meist mit IEEE 802.1Q gekennzeichnet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kommunikation zwischen VLANs ==&lt;br /&gt;
Geräte in verschiedenen VLANs befinden sich in getrennten Layer-2-Netzen. Für die Kommunikation ist Routing erforderlich, beispielsweise durch einen [[Router]] oder Layer-3-Switch.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! VLAN-ID !! Nutzung !! Beispielnetz&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Verwaltung || 192.168.10.0/24&lt;br /&gt;
|-&lt;br /&gt;
| 20 || Schulungsraum || 192.168.20.0/24&lt;br /&gt;
|-&lt;br /&gt;
| 30 || Gäste || 192.168.30.0/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein VLAN ist allein noch keine vollständige Sicherheitsmaßnahme. Zugriffe zwischen VLANs müssen durch Routing- und [[Firewall]]regeln kontrolliert werden.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;VLANs trennen ein Switch-Netz logisch in mehrere Broadcast-Domänen; Kommunikation zwischen ihnen benötigt Routing.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3030</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3030"/>
		<updated>2026-09-07T07:30:56Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Kurzmerksatz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
=== Artefakte und Commitments ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Änderungen im Sprint ===&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
=== Empirie ===&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
=== Kurzmerksatz ===&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3029</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3029"/>
		<updated>2026-09-07T07:30:43Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Empirie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
=== Artefakte und Commitments ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Änderungen im Sprint ===&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
=== Empirie ===&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3028</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3028"/>
		<updated>2026-09-07T07:30:31Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Änderungen im Sprint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
=== Artefakte und Commitments ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Änderungen im Sprint ===&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3027</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3027"/>
		<updated>2026-09-07T07:30:21Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Artefakte und Commitments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
=== Artefakte und Commitments ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Änderungen im Sprint ==&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3026</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3026"/>
		<updated>2026-09-07T07:30:10Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Ereignisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
=== Ereignisse ===&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
== Artefakte und Commitments ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Änderungen im Sprint ==&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3025</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3025"/>
		<updated>2026-09-07T07:29:59Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Verantwortlichkeiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
=== Verantwortlichkeiten ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
== Ereignisse ==&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
== Artefakte und Commitments ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Änderungen im Sprint ==&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3024</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3024"/>
		<updated>2026-09-07T07:29:46Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* Anwendungsbereiche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Scrum ==&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
== Verantwortlichkeiten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
== Ereignisse ==&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
== Artefakte und Commitments ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Änderungen im Sprint ==&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3023</id>
		<title>Vorgehensmodelle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Vorgehensmodelle&amp;diff=3023"/>
		<updated>2026-09-07T07:27:57Z</updated>

		<summary type="html">&lt;p&gt;Moettke: /* SCRUM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aufgrund stetig zunehmender Komplexität der Software gewinnt das Thema Vorgehensmodelle in der Softwareentwicklung zunehmend an Bedeutung. Zu Beginn der Zeit der Softwareentwicklung wurden Programme hauptsächlich nach dem &amp;quot;Code and Fix&amp;quot; Prinzip erstellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ziele&#039;&#039;&#039;: Projekt planbar machen und somit die Software-Qualität gewährleisten&lt;br /&gt;
&lt;br /&gt;
== Klassische Vorgehensmodelle (z. B. Wasserfallmodell, V-Modell) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Linear und sequenziell – Phasen wie Anforderungsanalyse, Planung, Umsetzung, Test und Wartung folgen strikt aufeinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Feste Abläufe und Meilensteine&lt;br /&gt;
* Frühzeitige, vollständige Planung&lt;br /&gt;
* Änderungen sind später schwierig&lt;br /&gt;
* Klare Dokumentation und Rollenverteilung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Projekte mit klaren, stabilen Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Agile Vorgehensmodelle (z. B. Scrum, Kanban) ==&lt;br /&gt;
&#039;&#039;&#039;Ablauf&#039;&#039;&#039;: Iterativ und inkrementell – das Projekt wird in kurzen Zyklen (Sprints) entwickelt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merkmale&#039;&#039;&#039;:&lt;br /&gt;
* Flexibel, anpassbar an Veränderungen&lt;br /&gt;
* Enge Zusammenarbeit im Team und mit dem Kunden&lt;br /&gt;
* Laufende Lieferung von funktionsfähigen Teilprodukten&lt;br /&gt;
* Kaum oder wenig Bürokratie, Fokus auf funktionierende Ergebnisse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geeignet für&#039;&#039;&#039;: Dynamische Projekte mit sich ändernden Anforderungen&lt;br /&gt;
&lt;br /&gt;
== Wasserfallmodell ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem sequentiellen Vorgehensmodell ist der Entwicklungsprozess in aufeinanderfolgenden Phasen organisiert: &lt;br /&gt;
* Analyse, &lt;br /&gt;
* Entwurf, &lt;br /&gt;
* Implementierung, &lt;br /&gt;
* Test, &lt;br /&gt;
* Installation, Wartung. &lt;br /&gt;
&lt;br /&gt;
Dabei wird jede einzelne Phase stark dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Sobald die vorhergehende Stufe beendet wird, beginnt die nächste, die auf konkreten Ergebnissen der vorherigen Phase basiert. &lt;br /&gt;
&lt;br /&gt;
Deshalb gibt es keine Möglichkeit, beispielsweise, Softwareanforderungen während der Entwicklungsphase neu zu bewerten.&lt;br /&gt;
&lt;br /&gt;
Es ist auch unmöglich, die fertige Software zu sehen und zu testen, bis die letzte Entwicklungsstufe vollständig abgeschlossen ist, was zu hohen Projektrisiken und unvorhersehbaren Ergebnissen führt.&lt;br /&gt;
&lt;br /&gt;
Deshalb werden Fehler nur am Ende des Projektes in der Testphase gefunden.&lt;br /&gt;
  &lt;br /&gt;
Deren umgehende Behebung erfordert einen größeren Aufwand und führt zu steigenden Gesamtkosten.&lt;br /&gt;
&lt;br /&gt;
BILD&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbereiche ===&lt;br /&gt;
&lt;br /&gt;
Einfache kleine oder mittelgroße Softwareprojekte mit klar definierten und unveränderlichen Anforderungen (Entwicklung einer Website für kleine Unternehmen).&lt;br /&gt;
&lt;br /&gt;
Projekte, bei denen ein bekanntes Technologie-Stack und Tools zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scrum&#039;&#039;&#039; ist ein leichtgewichtiges Rahmenwerk zur Entwicklung komplexer Produkte.  &lt;br /&gt;
Die Arbeit erfolgt in Sprints mit fester Länge von höchstens einem Monat.&lt;br /&gt;
&lt;br /&gt;
== Verantwortlichkeiten ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Verantwortung !! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| Product Owner || maximiert den Produktwert und verantwortet das Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
| Scrum Master || unterstützt Scrum, beseitigt Hindernisse und fördert die Zusammenarbeit&lt;br /&gt;
|-&lt;br /&gt;
| Developers || erstellen in jedem Sprint ein nutzbares Increment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Gemeinsam bilden sie das Scrum Team. Scrum definiert innerhalb des Teams keine weiteren Hierarchien oder Unterteams.&lt;br /&gt;
&lt;br /&gt;
== Ereignisse ==&lt;br /&gt;
* Sprint – Rahmen für alle weiteren Ereignisse&lt;br /&gt;
* Sprint Planning – Sprint-Ziel und geplante Arbeit festlegen&lt;br /&gt;
* Daily Scrum – tägliche Planung der Developers&lt;br /&gt;
* Sprint Review – Ergebnis mit Stakeholdern prüfen und weitere Anpassungen beraten&lt;br /&gt;
* Sprint Retrospective – Zusammenarbeit und Arbeitsweise verbessern&lt;br /&gt;
&lt;br /&gt;
== Artefakte und Commitments ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Artefakt !! Commitment&lt;br /&gt;
|-&lt;br /&gt;
| Product Backlog || Product Goal&lt;br /&gt;
|-&lt;br /&gt;
| Sprint Backlog || Sprint Goal&lt;br /&gt;
|-&lt;br /&gt;
| Increment || Definition of Done&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Änderungen im Sprint ==&lt;br /&gt;
Das Sprint-Ziel darf nicht gefährdet werden. Qualität darf nicht sinken. Der Umfang kann geklärt und mit dem Product Owner neu verhandelt werden; das Sprint Backlog wird während des Sprints angepasst.&lt;br /&gt;
&lt;br /&gt;
== Empirie ==&lt;br /&gt;
Scrum beruht auf:&lt;br /&gt;
&lt;br /&gt;
* Transparenz&lt;br /&gt;
* Überprüfung&lt;br /&gt;
* Anpassung&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Scrum organisiert komplexe Produktentwicklung in kurzen Sprints mit klaren Verantwortlichkeiten, Ereignissen, Artefakten und regelmäßiger Anpassung.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Verschl%C3%BCsselung-Hashfunktionen&amp;diff=3022</id>
		<title>Verschlüsselung-Hashfunktionen</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Verschl%C3%BCsselung-Hashfunktionen&amp;diff=3022"/>
		<updated>2026-09-07T07:24:08Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Die &amp;#039;&amp;#039;&amp;#039;Kryptografie&amp;#039;&amp;#039;&amp;#039; schützt Informationen durch mathematische Verfahren.   Verschlüsselung und Hashfunktionen erfüllen unterschiedliche Aufgaben.  == Symmetrische Verschlüsselung == Zum Ver- und Entschlüsseln wird derselbe geheime Schlüssel verwendet.  * sehr schnell * geeignet für große Datenmengen * sicherer Schlüsselaustausch erforderlich * Beispiel: AES  == Asymmetrische Verschlüsselung == Ein Schlüsselpaar besteht aus öffentlichem und…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &#039;&#039;&#039;Kryptografie&#039;&#039;&#039; schützt Informationen durch mathematische Verfahren.  &lt;br /&gt;
Verschlüsselung und Hashfunktionen erfüllen unterschiedliche Aufgaben.&lt;br /&gt;
&lt;br /&gt;
== Symmetrische Verschlüsselung ==&lt;br /&gt;
Zum Ver- und Entschlüsseln wird derselbe geheime Schlüssel verwendet.&lt;br /&gt;
&lt;br /&gt;
* sehr schnell&lt;br /&gt;
* geeignet für große Datenmengen&lt;br /&gt;
* sicherer Schlüsselaustausch erforderlich&lt;br /&gt;
* Beispiel: AES&lt;br /&gt;
&lt;br /&gt;
== Asymmetrische Verschlüsselung ==&lt;br /&gt;
Ein Schlüsselpaar besteht aus öffentlichem und privatem Schlüssel.&lt;br /&gt;
&lt;br /&gt;
* öffentlicher Schlüssel darf verteilt werden&lt;br /&gt;
* privater Schlüssel muss geheim bleiben&lt;br /&gt;
* ermöglicht Verschlüsselung, Schlüsselaustausch und digitale Signaturen&lt;br /&gt;
* Beispiele: RSA und elliptische Kurvenverfahren&lt;br /&gt;
&lt;br /&gt;
In der Praxis kombinieren hybride Verfahren asymmetrischen Schlüsselaustausch mit schneller symmetrischer Verschlüsselung.&lt;br /&gt;
&lt;br /&gt;
== Hashfunktion ==&lt;br /&gt;
Eine kryptografische Hashfunktion erzeugt aus Daten einen Wert fester Länge.&lt;br /&gt;
&lt;br /&gt;
* Einwegfunktion: der Ursprung soll nicht aus dem Hash berechnet werden können&lt;br /&gt;
* kleine Änderung der Eingabe verändert den Hash stark&lt;br /&gt;
* Kollisionen sollen praktisch schwer zu finden sein&lt;br /&gt;
* Beispiele: SHA-256, SHA-3&lt;br /&gt;
&lt;br /&gt;
Hashen ist keine Verschlüsselung, weil kein Schlüssel zum Entschlüsseln existiert.&lt;br /&gt;
&lt;br /&gt;
== Passwörter ==&lt;br /&gt;
Passwörter werden mit speziellen langsamen Passwort-Hashverfahren und einem individuellen Salt gespeichert, beispielsweise Argon2id, scrypt, bcrypt oder PBKDF2. Ein einfacher SHA-256-Hash ist dafür nicht ausreichend.&lt;br /&gt;
&lt;br /&gt;
== Digitale Signatur ==&lt;br /&gt;
Eine digitale Signatur kann Herkunft und Integrität von Daten prüfen. Sie stellt keine Vertraulichkeit her.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Verschlüsselung schützt Vertraulichkeit; Hashfunktionen dienen unter anderem der Integritätsprüfung; digitale Signaturen bestätigen Integrität und Urheberschaft.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:IT-Sicherheit]]&lt;br /&gt;
[[Kategorie:AP1]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=WLAN&amp;diff=3021</id>
		<title>WLAN</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=WLAN&amp;diff=3021"/>
		<updated>2026-09-07T07:23:18Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Ein &amp;#039;&amp;#039;&amp;#039;Wireless Local Area Network (WLAN)&amp;#039;&amp;#039;&amp;#039; verbindet Geräte per Funk in einem lokalen Netzwerk.   Die technischen Grundlagen werden vor allem in der IEEE-802.11-Familie beschrieben.  == Frequenzbereiche == {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot; ! Bereich !! Typische Eigenschaft |- | 2,4 GHz || größere Reichweite, wenige überlappungsfreie Kanäle, häufig stark belegt |- | 5 GHz || mehr Kanäle und meist höhere Datenraten, gerin…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Wireless Local Area Network (WLAN)&#039;&#039;&#039; verbindet Geräte per Funk in einem lokalen Netzwerk.  &lt;br /&gt;
Die technischen Grundlagen werden vor allem in der IEEE-802.11-Familie beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Frequenzbereiche ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich !! Typische Eigenschaft&lt;br /&gt;
|-&lt;br /&gt;
| 2,4 GHz || größere Reichweite, wenige überlappungsfreie Kanäle, häufig stark belegt&lt;br /&gt;
|-&lt;br /&gt;
| 5 GHz || mehr Kanäle und meist höhere Datenraten, geringere Reichweite durch Bauteile und Wände&lt;br /&gt;
|-&lt;br /&gt;
| 6 GHz || zusätzlicher Frequenzraum für aktuelle WLAN-Generationen; Unterstützung und Zulassung erforderlich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bestandteile ==&lt;br /&gt;
* Access Point – verbindet WLAN-Clients mit dem Netzwerk&lt;br /&gt;
* SSID – Name eines WLANs&lt;br /&gt;
* BSSID – Kennung eines konkreten Funkzugangspunkts&lt;br /&gt;
* Kanal – verwendeter Frequenzbereich&lt;br /&gt;
&lt;br /&gt;
== Sicherheit ==&lt;br /&gt;
* WPA2 mit AES/CCMP oder WPA3 verwenden&lt;br /&gt;
* langes, nicht erratbares Kennwort nutzen&lt;br /&gt;
* WPS nach Möglichkeit deaktivieren&lt;br /&gt;
* Firmware aktuell halten&lt;br /&gt;
* Gast- und interne Netze bei Bedarf trennen&lt;br /&gt;
&lt;br /&gt;
Eine versteckte SSID und MAC-Filter bieten allein keinen wirksamen Zugriffsschutz.&lt;br /&gt;
&lt;br /&gt;
== Datenrate und Reichweite ==&lt;br /&gt;
Bruttodatenraten aus Produktangaben sind nicht mit dem tatsächlich nutzbaren Datendurchsatz gleichzusetzen. Entfernung, Störungen, Kanalbreite, Anzahl der Antennen und gleichzeitig aktive Geräte beeinflussen die Leistung.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;WLAN überträgt lokale Netzwerkdaten per Funk; Frequenz, Kanal, Umgebung und Absicherung bestimmen Qualität und Sicherheit.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Netzwerktechnik]]&lt;br /&gt;
[[Kategorie:AP1]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Ports-Protokolle&amp;diff=3020</id>
		<title>Ports-Protokolle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Ports-Protokolle&amp;diff=3020"/>
		<updated>2026-09-07T07:22:40Z</updated>

		<summary type="html">&lt;p&gt;Moettke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Port&#039;&#039;&#039; ist eine 16-Bit-Nummer, über die [[TCP-UDP|TCP oder UDP]] Daten einer Anwendung zuordnet.  &lt;br /&gt;
Die Kombination aus IP-Adresse, Transportprotokoll und Port kennzeichnet einen Kommunikationsendpunkt.&lt;br /&gt;
&lt;br /&gt;
== Portbereiche ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich !! Bezeichnung&lt;br /&gt;
|-&lt;br /&gt;
| 0–1023 || System Ports / Well-Known Ports&lt;br /&gt;
|-&lt;br /&gt;
| 1024–49151 || User Ports / Registered Ports&lt;br /&gt;
|-&lt;br /&gt;
| 49152–65535 || Dynamic bzw. Private Ports&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Häufige Ports ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Dienst !! Transport !! Standardport&lt;br /&gt;
|-&lt;br /&gt;
| FTP-Steuerung || TCP || 21&lt;br /&gt;
|-&lt;br /&gt;
| SSH || TCP || 22&lt;br /&gt;
|-&lt;br /&gt;
| SMTP || TCP || 25&lt;br /&gt;
|-&lt;br /&gt;
| DNS || UDP/TCP || 53&lt;br /&gt;
|-&lt;br /&gt;
| DHCPv4 || UDP || 67/68&lt;br /&gt;
|-&lt;br /&gt;
| HTTP || TCP || 80&lt;br /&gt;
|-&lt;br /&gt;
| POP3 || TCP || 110&lt;br /&gt;
|-&lt;br /&gt;
| IMAP || TCP || 143&lt;br /&gt;
|-&lt;br /&gt;
| HTTPS || TCP || 443&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein Dienst kann abweichend konfiguriert werden. Die Portnummer allein beweist deshalb nicht, welches Anwendungsprotokoll tatsächlich übertragen wird.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Ports ordnen TCP- und UDP-Kommunikation den richtigen Anwendungen auf einem Endgerät zu.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Netzwerktechnik]]&lt;br /&gt;
[[Kategorie:AP1]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
	<entry>
		<id>https://fi-wiki.de/index.php?title=Ports-Protokolle&amp;diff=3019</id>
		<title>Ports-Protokolle</title>
		<link rel="alternate" type="text/html" href="https://fi-wiki.de/index.php?title=Ports-Protokolle&amp;diff=3019"/>
		<updated>2026-09-07T07:22:26Z</updated>

		<summary type="html">&lt;p&gt;Moettke: Die Seite wurde neu angelegt: „Ein &amp;#039;&amp;#039;&amp;#039;Port&amp;#039;&amp;#039;&amp;#039; ist eine 16-Bit-Nummer, über die TCP oder UDP Daten einer Anwendung zuordnet.   Die Kombination aus IP-Adresse, Transportprotokoll und Port kennzeichnet einen Kommunikationsendpunkt.  == Portbereiche == {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot; ! Bereich !! Bezeichnung |- | 0–1023 || System Ports / Well-Known Ports |- | 1024–49151 || User Ports / Registered Ports |- | 49152–65535 || Dynamic bzw. Priv…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Port&#039;&#039;&#039; ist eine 16-Bit-Nummer, über die [[TCP und UDP|TCP oder UDP]] Daten einer Anwendung zuordnet.  &lt;br /&gt;
Die Kombination aus IP-Adresse, Transportprotokoll und Port kennzeichnet einen Kommunikationsendpunkt.&lt;br /&gt;
&lt;br /&gt;
== Portbereiche ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Bereich !! Bezeichnung&lt;br /&gt;
|-&lt;br /&gt;
| 0–1023 || System Ports / Well-Known Ports&lt;br /&gt;
|-&lt;br /&gt;
| 1024–49151 || User Ports / Registered Ports&lt;br /&gt;
|-&lt;br /&gt;
| 49152–65535 || Dynamic bzw. Private Ports&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Häufige Ports ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
! Dienst !! Transport !! Standardport&lt;br /&gt;
|-&lt;br /&gt;
| FTP-Steuerung || TCP || 21&lt;br /&gt;
|-&lt;br /&gt;
| SSH || TCP || 22&lt;br /&gt;
|-&lt;br /&gt;
| SMTP || TCP || 25&lt;br /&gt;
|-&lt;br /&gt;
| DNS || UDP/TCP || 53&lt;br /&gt;
|-&lt;br /&gt;
| DHCPv4 || UDP || 67/68&lt;br /&gt;
|-&lt;br /&gt;
| HTTP || TCP || 80&lt;br /&gt;
|-&lt;br /&gt;
| POP3 || TCP || 110&lt;br /&gt;
|-&lt;br /&gt;
| IMAP || TCP || 143&lt;br /&gt;
|-&lt;br /&gt;
| HTTPS || TCP || 443&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein Dienst kann abweichend konfiguriert werden. Die Portnummer allein beweist deshalb nicht, welches Anwendungsprotokoll tatsächlich übertragen wird.&lt;br /&gt;
&lt;br /&gt;
== Kurzmerksatz ==&lt;br /&gt;
&#039;&#039;&#039;Ports ordnen TCP- und UDP-Kommunikation den richtigen Anwendungen auf einem Endgerät zu.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Netzwerktechnik]]&lt;br /&gt;
[[Kategorie:AP1]]&lt;/div&gt;</summary>
		<author><name>Moettke</name></author>
	</entry>
</feed>