<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fachrichtung übergreifende berufsprofilgebende Fertigkeiten, Kenntnisse und Fähigkeiten Archive -</title>
	<atom:link href="https://gernardt.net/category/informatik/ausbildung/fachrichtung-uebergreifende-berufsprofilgebende-fertigkeiten-kenntnisse-und-faehigkeiten/feed/" rel="self" type="application/rss+xml" />
	<link>https://gernardt.net/category/informatik/ausbildung/fachrichtung-uebergreifende-berufsprofilgebende-fertigkeiten-kenntnisse-und-faehigkeiten/</link>
	<description></description>
	<lastBuildDate>Mon, 02 Mar 2026 19:39:59 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://gernardt.net/wp-content/uploads/2026/03/favicon-1-150x150.png</url>
	<title>Fachrichtung übergreifende berufsprofilgebende Fertigkeiten, Kenntnisse und Fähigkeiten Archive -</title>
	<link>https://gernardt.net/category/informatik/ausbildung/fachrichtung-uebergreifende-berufsprofilgebende-fertigkeiten-kenntnisse-und-faehigkeiten/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Lfd 5 a Betriebliche Qualitätssicherung systematisch feststellen, beseitigen und dokumentieren</title>
		<link>https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/</link>
					<comments>https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/#comments</comments>
		
		<dc:creator><![CDATA[Stephan Gernardt]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 17:04:32 +0000</pubDate>
				<category><![CDATA[Laufende Nummer 5 des Rahmenplan für Fachinformatiker]]></category>
		<guid isPermaLink="false">https://gernardt.net/?p=824</guid>

					<description><![CDATA[<p>In diesem Bereich des des Ausbildungsrahmenplan muss der oder die Auszubildende lernen wie systematische Qualitätsmängel erkannt, behoben und dokumentiert werden.Folgende [&#8230;]</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 a Betriebliche Qualitätssicherung systematisch feststellen, beseitigen und dokumentieren</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In diesem Bereich des des Ausbildungsrahmenplan muss der oder die Auszubildende lernen wie systematische Qualitätsmängel erkannt, behoben und dokumentiert werden.<br>Folgende Lerninhalte sind in diesem Feld vorhanden:</p>



<ul class="wp-block-list">
<li><strong>Qualitätsstandards und -richtlinien kennen:</strong> Es gibt ein haufen an Standard und richtlinien. Alle muss man nicht kennen. Viele Softwarefirmen sind z.B. ISO 9001 zertifiziert. Es wird festgelegt wie Unternehmen ihre Prozesse dokumentieren und kontinuirlich verbessern sollen.<br>Um bei dem Beispiel der ISO 9001 zu bleiben ist dort festgelegt wie der Entwicklungsprozess von der Anforderungsanalyse bis zur Abnahme Dokumentiert wird. Dies wird gemacht, damit die Entwicklung transparent und Nachvollziehbar ist.</li>



<li><strong>Fehlerquellen analysieren:</strong> Systematisch wird hier gelernt Schwachstellen in IT Systemen, Prozessen oder Software zu erkennen und diese zu bewerten. Dazu sind verschiedene Schritte nötig:
<ul class="wp-block-list">
<li><strong>Fehlerarten Identifizieren:</strong> Es muss unterschieden werden zwischen 
<ul class="wp-block-list">
<li>bedienfehlern</li>



<li>Softwarefehler</li>



<li>Hardwaredefekten</li>
</ul>
</li>



<li><strong>Ursachenanalyse durchführen:</strong> Mithilfe verschiedenster Methoden wird gelernt den Fehler auf dem Grund zu gehen. Einige Methoden sind:
<ul class="wp-block-list">
<li><strong>5-Why-Methode:</strong> Eigentlich eine Einfache Methode 5 mal fragt man sich selber Warum.  Ein Beispiel dazu ist weiter unten unter 5-Why-Methode zu finden.</li>



<li><strong>Ishikawa-Diagramm:</strong> Ursache-Wirkungs-Diagramm oder auch Fischgrätendiagramm genannt. <br>Das Ishikawa-Diagramm – auch bekannt als Fischgrätendiagramm oder Ursache-Wirkungs-Diagramm – dient der strukturierten Analyse möglicher Fehlerursachen. Ein Beispiel dazu ist weiter unten unter Beispiel Ishikawa-Diagramm zu finden.</li>
</ul>
</li>
</ul>
</li>



<li><strong>Tests und Prüfverfahren anwenden:</strong> Zunächst werden verschiedenste Testarten kennengelernt (wie z.B. Unit-Integrations-,Systemtest) sowie verschiedene Testmethoden (Z.B. Blackbox, Whitebox,etc.). Hier sollten Auszubildene mittels praktischer Übung selbst ein Programm erstellen und für dieses Programm Testfälle erstellen. Dafür eignen sich Unit Tests sehr gut. Je nach Anwendung wird hier gelernt wie  Testdaten ausgewählt oder Testprotokolle erstellt werden. Dieser Punkt fördert das Qualitätsbewussten. (Siehe weiter unten das Beispiel Tests und Prüfverfahren).</li>



<li><strong>Maßnahmen zur Fehlerbehebung umsetzen</strong>: Tritt ein Fehler während eines Tests auf, sollte dieser natürlich behoben werden. Dazu muss folgendes erfolgen:
<ul class="wp-block-list">
<li><strong>Lösungsstrategien entwickeln:</strong> Es wird gelernt aus Fehlerursachen konkrete Maßnahmen abzuleiten. Beispiel den Code korrigieren (anhand des Beispielen Fehler &#8222;Division durch 0&#8220; eine automatische Prüfung das als Divisor der Benutzer ein Hinweis erhält das 0 als Divisor nicht erlaubt ist.</li>



<li><strong>Fehlerbehebung dokumentieren:</strong> Jede Behebung nachvollziehbar in einem Fehlerprotokoll festhalten.</li>



<li><strong>Wirksamkeit prüfen:</strong> Durch erneute Tests prüfen ob der Fehler tatsächlich behoben ist und sich durch die Behebung nicht neue Fehler eingeschlichen haben.</li>



<li><strong>Kommunikation im Team:</strong> Der / die Auszubindende natürlich lernen Fehler und Lösungen im Team zu kommunizieren.</li>



<li><strong>Prävention ableiten:</strong> Es ist noch kein Meister vom Himmel gefallen. Hier ist tatsächlich der Satz &#8222;Lerne aus deinem Fehlern&#8220; Programm. Durch die Lösung und ordentlichen Dokumentation (einschweißen der Lösung) können diese oder ähnliche Fehler präventiv für die Zukunft ausgeschlossen werden.<br></li>
</ul>
</li>



<li><strong>Dokumentation und Nachverfolgung:</strong> Hier geht es darum Fehler nachvollziehbar, strukturier und auch dauerhaft verfügbar zu Dokumentieren. Bei der Dokumentation ist folgendes zu beachten:
<ul class="wp-block-list">
<li><strong>Vollständigkeit der Dokumentation:</strong> Alle Informationen müssen enthalten sein, z.B. die Fehlerbeschreibung, die Ursache, die Lösung des Problemes und alle Testergebnisse.</li>



<li><strong>Nachvollziehbarkeit:</strong> Die Kollegen oder nachvolgende Programmierer müssen die Dokumentation verstehen können.</li>



<li><strong>Struktur:</strong> Das Dokument sollte Strukturiert sein. Also Einheitliche Formate verwenden </li>



<li><strong>Korrekte Sprache:</strong> Fachlich präzise in verständlicher Form.</li>



<li><strong>Versionierung:</strong> Änderungen an der Dokumentation sollten Versioniert werden um so die Dokumente Nachvollziehbar zu gestalten. Einige Firmen verwenden zur Qualitätskontrolle sowie implementierung neuer Programmteile und Fehlerbehebung Tools wie <a href="https://www.atlassian.com/de/software/jira" target="_blank">Jira</a> (externer Link).<br></li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Beispiele zur Fehlerquellenanalyse</h2>



<p>Bei den Beispielen der Ursachenanalyse wird der Fehler &#8222;Division durch 0&#8220; als Fallbeispiel für die unterschiedlichen Methoden verwendet.</p>



<h3 class="wp-block-heading">5-Why-Methode</h3>



<p>Das folgende Beispiel der 5-Why-Methode veranschaulicht die herangehensweise bei den Fehler &#8222;Division durch 0&#8220;:<br></p>



<ul class="wp-block-list">
<li><strong>Warum</strong> wird durch 0 geteilt?<br>→ Weil der Divisor zur Laufzeit den Wert 0 hat.</li>



<li><strong>Warum</strong> hat der Divisor zur Laufzeit den Wert 0?<br>→ Weil er aus einer Benutzereingabe oder Berechnung stammt, die 0 ergibt.</li>



<li><strong>Warum</strong> wurde die Eingabe oder Berechnung nicht überprüft?<br>→ Weil im Code keine Validierung auf den Wert 0 vor der Division erfolgt.</li>



<li><strong>Warum</strong> fehlt die Validierung?<br>→ Weil sie im ursprünglichen Entwicklungsprozess nicht berücksichtigt oder getestet wurde.</li>
</ul>



<h3 class="wp-block-heading">Beispiel Ishikawa-Diagramm</h3>



<p>Das folgende Diagramm veranschaulicht typische Ursachen für diesen Fehler und zeigt auf, wie er sich vermeiden lässt. Das Ishikawa-Diagramm (auch als Fischgrätendiagramm oder Ursache-Wirkung-Diagramm bekannt) hilft bei der Ursachenanalye.<br>Als Beispiel verwende ich ein Programmfehler &#8222;Division durch 0&#8220; (ich denke kennt fast jeder der mit dem Programmieren anfängt).<br>Das folgende Diagramm zeigt ein Beispiel des Ishikawa-Diagramm zeigt Ursachen zu dem Fehler &#8222;Division durch 0&#8220; und wie diese verhindert werden können.</p>



<div class="wp-block-group alignwide is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="480" height="320" src="https://gernardt.net/wp-content/uploads/2025/06/IshikawaDiagramm-1.webp" alt="Ishikawa oder auch Fischgräten Diagramm. Der Fehler wäre der Fischkopf und die Gräten die möglichen Fehlerursachen" class="wp-image-830" srcset="https://gernardt.net/wp-content/uploads/2025/06/IshikawaDiagramm-1.webp 480w, https://gernardt.net/wp-content/uploads/2025/06/IshikawaDiagramm-1-300x200.webp 300w" sizes="(max-width: 480px) 100vw, 480px" /><figcaption class="wp-element-caption">Ishikawa Diagramm zu dem Fehler &#8222;Division durch 0&#8220; (z.B. 1/0) Quelle MS Copilot</figcaption></figure>
</div>



<h3 class="wp-block-heading">FMEA (Fehlermöglichkeits- und einflussanalyse)</h3>



<p>Die klassische Struktur der FMEA besitz 3 Kernbewertungen. Auftretenwahrscheinlichkeit (A), Bedeutung (B) sowie Entdeckungswahrscheinlichkeit(E).<br>Dabei werden die Kernbewertungen auf einer Skala von 1 (niedrig) bis 10(hoch) bewertet.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Prozessschritt</strong></td><td><strong>Fehlermöglichkeit</strong></td><td><strong>Fehlerursache</strong></td><td><strong>Fehlerfolge</strong></td><td><strong>A</strong></td><td><strong>B</strong></td><td><strong>E</strong></td><td><strong>Risikoprioritätszahl</strong></td><td><strong>Maßnahme</strong></td></tr><tr><td>Berechnung durchführen</td><td>Division durch 0</td><td>Keine Prüfung des Divisors</td><td>Programmabsturz / Ausnahmefehler</td><td>6</td><td>8</td><td>4</td><td>192</td><td>Validierung de Divisors vor berechnung</td></tr><tr><td>Benutzereingabe verarbeiten</td><td>Eingabe von 0 als Divisor</td><td>Fehlende eingabeprüfung</td><td>Programmabsturz / ausnahmefehler</td><td>5</td><td>7</td><td>5</td><td>175</td><td>Eingabefeld prüfen</td></tr><tr><td>Code Review durchführen</td><td>Fehler wird übersehen</td><td>Kein Fokus auf Mathematische Ausdrücke</td><td>Fehler gelangt in Programm</td><td>3</td><td>6</td><td>6</td><td>108</td><td>Checkliste für Mathematische operationen nutzen</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Beispiel Tests und Prüfverfahren</h2>



<p>Test für Division durch 0</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Testfall-ID</strong></td><td><strong>Datum</strong></td><td><strong>Tester</strong></td><td><strong>Eingabe</strong></td><td><strong>Erwartetes Ergebnis</strong></td><td><strong>Tatsächliches Ergebnis</strong></td><td><strong>Ergebnis</strong></td></tr><tr><td>Test001</td><td>16.06.2021</td><td>Gernardt</td><td>42 / 0</td><td>Fehlermeldung &#8222;Division durch 0 nicht erlaubt&#8220;</td><td>Fehlermeldung &#8222;Division durch 0 nicht erlaubt&#8220;</td><td>Bestanden</td></tr></tbody></table></figure>



<p>Durch diesen Test soll vermieden werden, dass das Programm abstürzt oder eine unbehandelte Ausnahme auswirft. Mit dem Beispiel Protokoll wird der Testfall festgehalten.</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 a Betriebliche Qualitätssicherung systematisch feststellen, beseitigen und dokumentieren</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Lfd 5 b Ursachen Qualitätsmängel systematisch feststellen, beseitigen und dokumentieren</title>
		<link>https://gernardt.net/lfd-5-b-ursachen-qualitaetsmaengel-systematisch-feststellen-beseitigen-und-dokumentieren/</link>
					<comments>https://gernardt.net/lfd-5-b-ursachen-qualitaetsmaengel-systematisch-feststellen-beseitigen-und-dokumentieren/#respond</comments>
		
		<dc:creator><![CDATA[Stephan Gernardt]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 17:03:32 +0000</pubDate>
				<category><![CDATA[Laufende Nummer 5 des Rahmenplan für Fachinformatiker]]></category>
		<guid isPermaLink="false">https://gernardt.net/?p=836</guid>

					<description><![CDATA[<p>Hier geht es darum, das Übel an der Wurzel zu packen und nicht nur die Symptome zu behandeln! Hier lernt [&#8230;]</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-b-ursachen-qualitaetsmaengel-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 b Ursachen Qualitätsmängel systematisch feststellen, beseitigen und dokumentieren</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Hier geht es darum, das Übel an der Wurzel zu packen und nicht nur die Symptome zu behandeln!</p>



<ul class="wp-block-list">
<li><strong>Ursachen Feststellen:</strong><br>Aufbauend auf <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/" type="post" id="824">Lfd 5 a</a> müssen erst einmal die Fehler analysiert werden. Dazu können natürlich Datenquellen verwendet werden, wie z.B. Log Files. Aus den Logs oder anderen Monitoring-Tools sowie das Verhalten des Programmes müssen Zusammenhänge erkannt werden.</li>



<li><strong>Maßnahmen zur Beseitigung umsetzten:</strong> Durch Anpassung des Codes kann Zielgerichtet eine Lösung entwickelt werden. Nach der Änderung des Codes muss des erneut geprüft werden ob der Fehler tatsächlich behoben ist (Dokumentieren nicht vergessen), bzw. keine Fehler an andere Stelle auftauchen. </li>



<li><strong>Dokumentation:</strong> Änderungen und Ergebnisse müssen klar, verständlich sowie nachvollziehbar dokumentiert oder im Team kommuniziert werden (Siehe <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/" type="post" id="824">Lfd 5 a</a>).</li>
</ul>



<p>Hier lernt man nicht nur reaktiv zu lernen, sondern proaktiv und Nachhaltig mit Qualitätsmängeln umzugehen.</p>



<h2 class="wp-block-heading">Fallbeispiel</h2>



<p>Bleiben wir bei den Fehler &#8222;Division durch 0&#8220; aus den Beitrag <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/"><a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/" type="post" id="824"><a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/" type="post" id="824">Lfd 5 a</a></a></a>.<br><strong>Ausgangssituation:</strong> Es wurde gemeldet das ein Programm plötzlich beim Rechnen abstürzt <br></p>



<ul class="wp-block-list">
<li><strong>Ursache Festellen:</strong>
<ul class="wp-block-list">
<li><strong>Fehlerbild:</strong> Anwendungs stürzt ohne Meldung ab.</li>



<li><strong>Analyse:</strong> Es wird das Logfile geprüft, dort fällt folgende Meldung auf &#8222;Unhandled Exception: Division by zero&#8220;</li>
</ul>
</li>



<li><strong>Methode angewendet:</strong> 5-Why-Methode (Siehe <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 a</a>)
<ul class="wp-block-list">
<li>Warum stürzt die App ab? → Weil sie eine Division durch 0 ausführt.</li>



<li>Warum wird durch 0 geteilt? → Weil keine erledigten Tickets vorhanden sind.</li>



<li>Warum prüft das Programm das nicht vorher? → Weil keine Validierung eingebaut ist.</li>



<li>Warum fehlt die Validierung? → Weil im ursprünglichen Konzept dieser Fall nicht bedacht wurde.</li>



<li>Warum wurde dieser Fall nicht getestet? → Es gab keinen Testfall für „keine erledigten Tickets“.</li>
</ul>
</li>



<li><strong>Maßnahmen zur Fehlerbehebung anwenden:</strong>
<ul class="wp-block-list">
<li>Im Code wird die Eingabe durch eine Validierung der Eingaben des Benutzers geprüft.</li>



<li>Es wird ein Testfall zu dieser Rechnung erstellt</li>



<li>Es wird ein Regressionstest durchgeführt um sicher zu stellen, das der Fehler nun behoben ist und nicht an anderer Stelle der Software ein Fehler durch der Änderung auftritt.</li>
</ul>
</li>



<li><strong>Dokumentation und Nachverfolgung:</strong><br>Der Fehler, die Ursache sowie Maßnahme und aktueller Status wird Dokumentiert (Siehe <a href="https://gernardt.net/lfd-5-a-betriebliche-qualitaetssicherung-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 a</a>).</li>
</ul>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-b-ursachen-qualitaetsmaengel-systematisch-feststellen-beseitigen-und-dokumentieren/">Lfd 5 b Ursachen Qualitätsmängel systematisch feststellen, beseitigen und dokumentieren</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gernardt.net/lfd-5-b-ursachen-qualitaetsmaengel-systematisch-feststellen-beseitigen-und-dokumentieren/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lfd 5 c im Rahmen eines Verbesserungsprozesses die Zielerreichung kontrollieren, insbesondere einen Soll-Ist-Vergleich durchführen</title>
		<link>https://gernardt.net/lfd-5-c-im-rahmen-eines-verbesserungsprozesses-die-zielerreichung-kontrollieren-insbesondere-einen-soll-ist-vergleich-durchfuehren/</link>
					<comments>https://gernardt.net/lfd-5-c-im-rahmen-eines-verbesserungsprozesses-die-zielerreichung-kontrollieren-insbesondere-einen-soll-ist-vergleich-durchfuehren/#respond</comments>
		
		<dc:creator><![CDATA[Stephan Gernardt]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 17:03:14 +0000</pubDate>
				<category><![CDATA[Laufende Nummer 5 des Rahmenplan für Fachinformatiker]]></category>
		<guid isPermaLink="false">https://gernardt.net/?p=840</guid>

					<description><![CDATA[<p>Hier wird vermittelt, wie überprüft werden kann ob geplante Maßnahmen zur Qualitätsverbesserung den gewünschten Effekt erzielt haben, und wie daraus [&#8230;]</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-c-im-rahmen-eines-verbesserungsprozesses-die-zielerreichung-kontrollieren-insbesondere-einen-soll-ist-vergleich-durchfuehren/">Lfd 5 c im Rahmen eines Verbesserungsprozesses die Zielerreichung kontrollieren, insbesondere einen Soll-Ist-Vergleich durchführen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Hier wird vermittelt, wie überprüft werden kann ob geplante Maßnahmen zur Qualitätsverbesserung den gewünschten Effekt erzielt haben, und wie daraus weitere Schritte zur Qualitätssicherung abgeleitet werden können. Man könnte es auch als die Messbarmachung der Qualität bezeichnen.</p>



<p>Wie kann ich als Softwareentwickler die Qualität der Software messbar machen? </p>



<p>Das klingt zunächst etwas merkwürdig, nicht wahr? <br>Nun, so ungewöhnlich ist es auch nicht; ich nehme eines Beispiel für Quellcode, den ich <a href="https://gernardt.net/coding-vergleich-strings-und-array-mit-viel-inhalt/" type="post" id="430">hier</a> veröffentlicht habe.</p>



<h2 class="wp-block-heading">Fallbeispiel</h2>



<p>Nehmen wir an, es wird ein Programm erstellt, welches eine mit &#8222;;&#8220; getrennte Textdatei erstellen soll (Export von Daten), diese Textdatei hat am ende ca. 7688460 Zeichen. Da wir uns selber die Anforderung stellen das wir den Kunden nicht zu lange warten lassen möchten, setzen wir uns als Zeit direkt die höchst zeit von 1 Sekunde (welche wir auch als Qualitätsmerkmal verwenden).</p>



<p>Nach der Programmierung sehen wir das wir mehr als 48 Minuten nur zum einlesen benötigen. Jetzt schauen wir uns unser Gesetzes Ziel an:</p>



<p>Soll-Ziel: Ladezeit der Textdatei &lt;=1 Sekunde<br>Ist-Zustand: ca. 48 Minuten<br>Etwas zu lang, 2.880 Sekunden.</p>



<p>Nach einem Brainstorming im Team erkennen wir, dass solche Aktionen besser mit einem String-Array anstatt mit einem normalen String durchgeführt werden sollten. Daher schreiben wir den Code um und testen ihn erneut.</p>



<p>Soll-Ziel: Ladezeit der Textdatei &lt;=1 Sekunde<br>Ist-Zustand: ca. 0,23 Sekunden<br>Perfekt!</p>



<p>Wir haben uns übertroffen.<br></p>



<p>Mittlerweile gibt es ganz gute Frameworks, welche Daten aus einer Tabelle in einer CSV speichern können. Aber als Ausbilder war ich auch immer darauf bedacht den angehenden Programmierer die Roots zu zeigen, wenn er oder sie dann die Roots verstanden hat darf er/sie gerne Tools und Frameworks verwenden (sofern diese Lizenzrechtlich für die jeweiligen zwecke verwendbar sind).</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-5-c-im-rahmen-eines-verbesserungsprozesses-die-zielerreichung-kontrollieren-insbesondere-einen-soll-ist-vergleich-durchfuehren/">Lfd 5 c im Rahmen eines Verbesserungsprozesses die Zielerreichung kontrollieren, insbesondere einen Soll-Ist-Vergleich durchführen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gernardt.net/lfd-5-c-im-rahmen-eines-verbesserungsprozesses-die-zielerreichung-kontrollieren-insbesondere-einen-soll-ist-vergleich-durchfuehren/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lfd 4 e Datenbankmodelle unterscheiden, Daten organisieren und speichern sowie Abfragen erstellen</title>
		<link>https://gernardt.net/lfd-4-e-datenbankmodelle-unterscheiden-daten-organisieren-und-speichern-sowie-abfragen-erstellen/</link>
					<comments>https://gernardt.net/lfd-4-e-datenbankmodelle-unterscheiden-daten-organisieren-und-speichern-sowie-abfragen-erstellen/#respond</comments>
		
		<dc:creator><![CDATA[Stephan Gernardt]]></dc:creator>
		<pubDate>Tue, 25 Feb 2025 20:10:32 +0000</pubDate>
				<category><![CDATA[Laufende Nummer 4 des Rahmenlehrplan für Fachinformatiker]]></category>
		<guid isPermaLink="false">https://gernardt.net/?p=743</guid>

					<description><![CDATA[<p>Dies ist nun das tägliche des Anwendungsentwicklers. Zu unterscheiden sind vier verschiedene Datenbank: Datenbankmodelle unterscheiden Hierarchisches Modell Daten werden in [&#8230;]</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-4-e-datenbankmodelle-unterscheiden-daten-organisieren-und-speichern-sowie-abfragen-erstellen/">Lfd 4 e Datenbankmodelle unterscheiden, Daten organisieren und speichern sowie Abfragen erstellen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dies ist nun das tägliche des Anwendungsentwicklers. Zu unterscheiden sind vier verschiedene Datenbank:</p>



<h2 class="wp-block-heading">Datenbankmodelle unterscheiden</h2>



<h3 class="wp-block-heading">Hierarchisches Modell</h3>



<p>Daten werden in einer Baumartigen Struktur organisiert, wobei jeder untergeordneten Entität genau einer übergeordneten Entität zugeordnet ist. Beispiel eines Hierarchisches Modell:</p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="175" height="243" data-id="744" src="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-hierarchisch.png" alt="Beispiel hierachische Struktur.
Im Unternehmen gibt es Abteilungen, diesen Abteilungen sind Mitarbeiter zugeordnet.
" class="wp-image-744"/></figure>
</figure>



<p>Ein Unternehmen ist in Abteilungen aufgeteilt. Beispiel Abteilung 1, die Technik. <br>Die Technik ist aufgeteilt in 2 Teams, einmal Entwicklung (Team 1) und Support (Team 2).<br>Abteilung 2 könnte z.B. Vertrieb mit dem Vertriebsteam sein.</p>
</div>



<h3 class="wp-block-heading">Netzwerkmodell</h3>



<p>Ähnlich dem Hierarchischen Modell, aber jede untergeordnete Entität kann mehreren übergeordneten Entitäten zugeordnet sein, was eine komplexere Struktur ermöglicht:</p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img decoding="async" width="174" height="240" src="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-netzwerk.png" alt="Netzwerkmodell.
Hier können Mitarbeiter in mehreren Abteilungen Arbeiten." class="wp-image-747"/></figure>



<p>Wie an dem nebenstehenden Beispiel zu sehen, schaut es nahezu gleich aus. Mit dem Unterschied, das hier der Mitarbeiter 1 aus dem Team 1  der Abteilung 1 zusätzlich in der Abteilung 1 sein Dienst verrichtet.</p>
</div>



<h3 class="wp-block-heading">Relationales Modell</h3>



<p>Daten werden in Tabellen (Relationen) organisiert, wobei jede Tupel (Zeile) einen Datensatz darstellt und jedes Attribut (Spalte) einen Datentyp darstellt.<br></p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="431" height="354" src="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational.png" alt="Beispiel einer Relationalen Datenbank.
Wir haben eine Firma, der Firma sind Abteilungen zugeordnet und den Abteilungen sind Mitarbeiter zugeordnet.
" class="wp-image-748" srcset="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational.png 431w, https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-300x246.png 300w" sizes="auto, (max-width: 431px) 100vw, 431px" /></figure>



<p>Beispiel einer Relationalen Datenbank.<br>Wir haben eine Firma, der Firma sind Abteilungen zugeordnet und den Abteilungen sind Mitarbeiter zugeordnet.<br>In diesem relationalen Modell haben wir 3 Tabelle, welche durch einen Fremdschlüssel (UnternehmenID, AbteilungID und MitarbeiterID) miteinander Verknüpft sind.<br>Diese Verknüpfung (Relation) ermöglicht es uns, aus allen drei Tabellen Informationen abzufragen.</p>
</div>



<h3 class="wp-block-heading">Objektorientiertes Modell</h3>



<p>Dies ist für viele lernenden das wohl schwerste Modell. <br>Ein objektorientiertes Datenbankmodell verwendet Objekte, ähnlich wie in der objektorientierten Programmierung. Jedes Objekt kann Attribute (Daten) und Methoden (Funktionen) enthalten und definieren.<br>Hier ein Beispiel für ein Objektorientiertes Modell (C#):</p>



<pre class="wp-block-code"><code>///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Klasse Mitarbeiter
using System;

public class Mitarbeiter
{
    public int MitarbeiterID { get; set; }
    public string Name { get; set; }
    public string Position { get; set; }
    public int AbteilungID { get; set; }

    public Mitarbeiter(int mitarbeiterID, string name, string position, int abteilungID)
    {
        MitarbeiterID = mitarbeiterID;
        Name = name;
        Position = position;
        AbteilungID = abteilungID;
    }

    public void AnzeigenInfo()
    {
        Console.WriteLine($"Mitarbeiter: {Name}, Position: {Position}, AbteilungID: {AbteilungID}");
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Klasse Abteilung
using System;
using System.Collections.Generic;

public class Abteilung
{
    public int AbteilungID { get; set; }
    public string Name { get; set; }
    public List&lt;Mitarbeiter&gt; Mitarbeiter { get; set; }

    public Abteilung(int abteilungID, string name)
    {
        AbteilungID = abteilungID;
        Name = name;
        Mitarbeiter = new List&lt;Mitarbeiter&gt;();
    }

    public void AnzeigenInfo()
    {
        Console.WriteLine($"Abteilung: {Name}, AbteilungID: {AbteilungID}");
        foreach (var mitarbeiter in Mitarbeiter)
        {
            mitarbeiter.AnzeigenInfo();
        }
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Programm
using System;

public class Program
{
    public static void Main()
    {
        // Abteilungen erstellen
        Abteilung marketing = new Abteilung(101, "Marketing");
        Abteilung it = new Abteilung(102, "IT");

        // Mitarbeiter erstellen und zu Abteilungen hinzufügen
        Mitarbeiter elsbeth= new Mitarbeiter(1, "Elsbeth", "Manager", 101);
        Mitarbeiter noah= new Mitarbeiter(2, "Noah", "Entwickler", 102);
        Mitarbeiter lea= new Mitarbeiter(3, "Lea", "Designer", 101);

        marketing.Mitarbeiter.Add(alice);
        marketing.Mitarbeiter.Add(carol);
        it.Mitarbeiter.Add(bob);

        // Informationen anzeigen
        marketing.AnzeigenInfo();
        it.AnzeigenInfo();
    }
}</code></pre>



<h2 class="wp-block-heading">Daten organisieren und speichern</h2>



<h3 class="wp-block-heading">Normalisierung</h3>



<p>Der Prozess der Strukturierung einer Datenbank zur Reduzierung von Redundanz und Verbesserung der Datenintegrität.<br>Ich verwende hier ein extremes Beispiel der Normalisierung in einer Relationalen Datenbank.</p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="583" height="111" src="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-001.png" alt="Relationale, nicht normalisierte Datenbank mit einer Tabelle Kunden" class="wp-image-752" srcset="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-001.png 583w, https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-001-300x57.png 300w" sizes="auto, (max-width: 583px) 100vw, 583px" /></figure>



<p>Beispiel einer nicht normalisierten Datenbank in der Kunden gespeichert werden.<br>In der Tabelle kann gesehen werden, das einige Einträge redundant sind. Auch redundante Einträge verbrauchen<br>Speicherplatz, was in der kleinen Tabelle kein Problem ist.</p>
</div>



<div class="wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-23441af8 wp-block-group-is-layout-flex">
<p>Beispiel einer Normalisierten Datenbank.<br>Sieht erstmal nach größerer Arbeit aus. Besonders weil es nur 3 Datensätze sind.<br>Anhand der Tabelle <strong>TabelleKunden</strong> das nur noch verweise für die Daten des Kunden gespeichert werden.<br>Dies bedeutet, egal wieviele Kunden wir mit dem Namen &#8222;Musterfrau&#8220; besitzen, benötigt dieser Name nur für 1x speichern<br>den Speicherplatz, danach nur noch den Speicherplatz des <a href="https://gernardt.net/349/" data-type="post" data-id="349">Datentype </a>der ID. <br>Mit dieser kleinen Beispieltabelle ist er Aufwand etwas groß, aber bei der Datenbank des Kraftfahrbundesamtes <br>(Punktesammelstelle in Flensburg) sieht es wieder anders aus.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="531" height="453" src="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-002.png" alt="" class="wp-image-753" srcset="https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-002.png 531w, https://gernardt.net/wp-content/uploads/2025/02/Beispiel-relational-002-300x256.png 300w" sizes="auto, (max-width: 531px) 100vw, 531px" /></figure>
</div>



<h3 class="wp-block-heading">Tabellen und Beziehungen</h3>



<p>Verwende Tabellen, um verschiedene Datentypen zu organisieren und definiere Beziehungen zwischen diesen Tabellen (z.B. Primär- und Fremdschlüssel).<br>Als Beispiel verwende ich wieder das Beispiel der Firma, Abteilung und Mitarbeiter. Diese Tabelle ist nicht zu 100% vollständig, veranschaulicht aber die Beziehungen zwischen Tabellen.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="783" height="237" src="https://gernardt.net/wp-content/uploads/2025/02/DBRelBeispiel.png" alt="Einfache Relation von Tabellen" class="wp-image-757" srcset="https://gernardt.net/wp-content/uploads/2025/02/DBRelBeispiel.png 783w, https://gernardt.net/wp-content/uploads/2025/02/DBRelBeispiel-300x91.png 300w, https://gernardt.net/wp-content/uploads/2025/02/DBRelBeispiel-768x232.png 768w" sizes="auto, (max-width: 783px) 100vw, 783px" /><figcaption class="wp-element-caption">Einfache Relation von Tabellen (1:n Beziehung)</figcaption></figure>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex">
<p>Kurze Erklärung zur oben abgebildeten Datenbank:<br>Die Datenbank besteht aus 3 Tabellen (Unternehmen, Abteilung und Mitarbeiter), diese enthält eigentlich nur den Namen. Normalerweise oder in einem echten Programm kommen da noch sehr viel mehr Attribute und Relationen zu stande. Aber ich denke zum veranschaulichen von Relationen ist ein kleinere Beispiel einfacher für Auszubildene zu verstehen.<br>In jeder Tabelle ist in dem Namen des ersten Feldes (Attribut) der Name der Tabelle und ein mit ID. So läßt es sich schnell und einfach veranschaulichen das es sich um einen einmaligen (unique) Key handelt, der Primary Key. Einige Datenbankdesigner nennen den Primarykey aber auch oft mit PK_[Tabellenname]_ID (Beispiel: PK_Unternehmen_ID). In der Grafik habe ich in den Tabellen Abteilung und Mitarbeiter jeweils zusätzlich 1 Feld gelb markiert, dies ist der Foreignkey. Dieser Schlüssel zeigt auf einem Datensatz der jeweils anderen Tabelle. <br>Tabelle Abteilung zeigt auf einem Datensatz aus der Tabelle Unternehmen, Tabelle Mitarbeiter zeigt auf einem Datensatz der Tabelle Abteilung.</p>



<p>Der Foreignkey (Fremdschlüssel) wird verwendet um eine Beziehung zu einer anderen Tabelle herzustellen, dabei verweist der Foreignkey auf dem Primarykey der referenzierten Tabelle.<br>Beispiel:<br>Die Abteilung &#8218;Entwicklung&#8216;, verweist auf dem Unternehmen.<br>Ein/e Mitarbeiter/in &#8218;Müller&#8216;, besitzt eine Referenz auf der Abteilung &#8218;Entwicklung&#8216;.</p>



<h4 class="wp-block-heading">Referenzen</h4>



<ul class="wp-block-list">
<li><strong>1:1 Eins-zu-Eins Beziehung:</strong> Eine Zeile einer Tabelle kann genau einer Zeile der Referenzierten Tabelle zugeordnet werden.<br>Beispiel: Jeder besitzt genau 1 Personalausweis.</li>



<li><strong>1:N Eins-zu-viele Beziehung:</strong> Eine Zeile einer Tabelle ist mit mehreren Zeilen der Referenzierten Tabelle zugeordnet.<br>Beispiel: Eine Abteilung hat viele Mitarbeiter.</li>



<li><strong>N:M Viele-zu-viele Beziehung:</strong> Mehrere Zeilen einer Tabelle kann auch mehrere Zeilen einer anderen Tabelle zugeordnet sein.<br>Beispiel: Ein Projekt kann mehrere Mitarbeiter haben, und 1 Mitarbeiter kann mehrere Projekte haben.</li>
</ul>



<p>In derigen Darstellung kleinen Datenbank ist es nicht erforderlich, dem Mitarbeiter erneut eine Beziehung zum Unternehmen zuzuweisen. diese Datenbank so wurde, dass ein Mitarbeiter einer Abteilung und die Abteilung Unternehmen zugeordnet ist, ist es per SQL, Mitarbeiter eines Unternehmens abzufragen.<br>Beispiel SQL:</p>



<pre class="wp-block-code"><code>SELECT Name FROM Mitarbeiter WHERE AbteilungID IN(
  SELECT AbteilungID FROM Abteilung WHERE AbteilungID IN (
    SELECT UnternehmenID WHERE Name = 'Beispielfirma'
  )
)</code></pre>
</div>



<p></p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-4-e-datenbankmodelle-unterscheiden-daten-organisieren-und-speichern-sowie-abfragen-erstellen/">Lfd 4 e Datenbankmodelle unterscheiden, Daten organisieren und speichern sowie Abfragen erstellen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gernardt.net/lfd-4-e-datenbankmodelle-unterscheiden-daten-organisieren-und-speichern-sowie-abfragen-erstellen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lfd 4 d Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen</title>
		<link>https://gernardt.net/lfd-4-d-algorithmen-formulieren-und-anwendungen-in-einer-programmiersprache-erstellen/</link>
					<comments>https://gernardt.net/lfd-4-d-algorithmen-formulieren-und-anwendungen-in-einer-programmiersprache-erstellen/#respond</comments>
		
		<dc:creator><![CDATA[Stephan Gernardt]]></dc:creator>
		<pubDate>Sat, 08 Feb 2025 16:08:17 +0000</pubDate>
				<category><![CDATA[Laufende Nummer 4 des Rahmenlehrplan für Fachinformatiker]]></category>
		<guid isPermaLink="false">https://gernardt.net/?p=733</guid>

					<description><![CDATA[<p>Natürlich gehört es auch zu Ausbildung, ein bisschen zu Programmieren.In diesem Teil der Ausbildung muss der Auszubildende in die Tasten [&#8230;]</p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-4-d-algorithmen-formulieren-und-anwendungen-in-einer-programmiersprache-erstellen/">Lfd 4 d Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Natürlich gehört es auch zu Ausbildung, ein bisschen zu Programmieren.<br>In diesem Teil der Ausbildung muss der Auszubildende in die Tasten hauen und ein ersten Algorithmus in einer Programmiersprache dahin zaubern.</p>



<p>Es gibt diverse Sortieralgorithmen, welche jeder Programmierer aus dem FF können sollte. Darunter sind <a href="https://gernardt.net/software/algorithmen-die-jeder-programmierer-kennen-sollte/standard-bubblesort/" data-type="page" data-id="123">Bubblesort</a>, <a href="https://gernardt.net/software/algorithmen-die-jeder-programmierer-kennen-sollte/standard-quicksort-algorithmus/" data-type="page" data-id="128">Quicksort </a>und <a href="https://gernardt.net/software/algorithmen-die-jeder-programmierer-kennen-sollte/standard-mergesort-algorithmus/" data-type="page" data-id="132">Mergesort</a>. Ich habe hier Beispielcodes der 3 wichtigsten Sortieralgorithmen veröffentlicht. Merkt euch die Funktionsweise der Algorithmen und nicht den Code. Testen oder genauer analysieren dürft ihr ihn natürlich, kopieren erlaubt.</p>



<p></p>
<p>Der Beitrag <a href="https://gernardt.net/lfd-4-d-algorithmen-formulieren-und-anwendungen-in-einer-programmiersprache-erstellen/">Lfd 4 d Algorithmen formulieren und Anwendungen in einer Programmiersprache erstellen</a> erschien zuerst auf <a href="https://gernardt.net"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gernardt.net/lfd-4-d-algorithmen-formulieren-und-anwendungen-in-einer-programmiersprache-erstellen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
