Informationstechnische Systeme programmieren - Informationselektroniker - LF 10
Einleitung
Du arbeitest im dritten Ausbildungsjahr als angehende Informationselektronikerin oder angehender Informationselektroniker. In diesem aiMOOC entwickelst du aus einem fiktiven Kundenauftrag ein testbares, dokumentiertes Programm mit Datenbankanbindung. Du entscheidest begründet über Programmiersprache, Entwicklungsumgebung und Schnittstellen, modellierst Daten, setzt Funktionen um und prüfst sie mit nachvollziehbaren Testfällen. Das ist mehr als das Schreiben einzelner Codezeilen: Zu einer berufsgerechten Lösung gehören Auftragsklärung, Datenschutz, Arbeitssicherheit, Qualitätssicherung und Übergabe.
Curricularer Bezug: Informationselektronikerin und Informationselektroniker, KMK-Lernfeld 10 „Informationstechnische Systeme programmieren“, drittes Ausbildungsjahr, Zeitrichtwert 100 Unterrichtsstunden. Der KMK-Rahmenlehrplan, Seite 19 nennt das Informieren über Entwicklungsumgebungen und Datenbanken, Planen von Algorithmen und ER-Modellen, begründetes Auswählen, Programmieren und Anpassen einschließlich Schnittstellen und Bibliotheken, Datenbankverwaltung, Funktionsprüfung sowie Dokumentieren, Präsentieren und Reflektieren. Zum aktuellen Berufsprofil und zur Ausbildungsordnung siehe BIBB und InfoElekAusbV. Der Kurs ist eine Lernhilfe, keine amtliche Prüfung oder Anerkennung. Stimme konkrete Arbeiten mit dem betrieblichen Ausbildungsplan, dem gültigen Landeslehrplan, deiner Ausbildungsleitung und der zuständigen Handwerkskammer ab.
Sicherheitsrahmen: Alle Versuche laufen an einem fiktiven Datensatz in einer lokalen Simulation. Keine echte Kundenanlage, keine Fremdsysteme, keine personenbezogenen Schüler-, Betriebs- oder Kundendaten. Elektrische Anschlüsse, Messungen oder Arbeiten an Netzspannung sind nicht Teil der Selbstlernaufgaben; praktische Arbeiten an solchen Anlagen erfolgen ausschließlich mit befugter fachlicher Aufsicht, Gefährdungsbeurteilung und geeigneter Freigabe. Die sicheren Alternativen sind lokale Softwaretests und simulierte Sensorwerte.
Kundenauftrag verstehen und Entwicklung planen
Die vollständige berufliche Handlung
Ein fiktiver Servicebetrieb erhält den Auftrag: „Erstellt eine lokale Anwendung, die die Raumtemperatur einer simulierten Werkstatt überwacht, Messungen speichert und ab 28,0 °C einen Alarmstatus anzeigt.“ Erkundige dich zunächst nach Zweck, Nutzerkreis, Eingabequelle, Laufzeitumgebung, Datenmenge, Schnittstellen und gewünschter Übergabe. Trenne Anforderung (was soll erreicht werden?) von Implementierung (wie wird es erreicht?). Ein Lastenheft beschreibt die Anforderungen der Auftraggebenden, ein Pflichtenheft die vereinbarte technische Umsetzung.
| Auftragsaspekt | Konkrete Vereinbarung | Prüfkriterium |
|---|---|---|
| Eingabe | Fünf synthetische Temperaturen in °C; keine echte Hardware | Alle fünf Beispielwerte werden übernommen |
| Plausibilität | Zulässig sind Werte zwischen 15,0 und 35,0 °C einschließlich der Grenzen | Ein Wert von 99 °C wird abgewiesen |
| Alarm | Alarm bei Temperatur ab 28,0 °C | 27,9 °C: kein Alarm; 28,0 °C: Alarm |
| Datenhaltung | Lokale relationale Datenbank mit Gerät und Messungen | Primär- und Fremdschlüssel vorhanden, gezielte Abfrage funktioniert |
| Nachweis | Quelltext, Ablaufplan, Testergebnisse und Kurzhandbuch | Eine andere Person kann das Ergebnis reproduzieren |
Zum Projektmanagement gehören Aufwand, Abhängigkeiten und Abnahmekriterien. Erstelle zuerst einen Arbeitsplan und priorisiere die Risiken (z. B. ungeeignete Schnittstelle, fehlerhafte Grenzen, unkontrollierte Datenweitergabe). Eine mögliche Lernprojektplanung umfasst: Auftragsanalyse 45 Minuten, Modellierung 60 Minuten, Implementierung 120 Minuten, Tests 75 Minuten, Dokumentation und Präsentation 60 Minuten. Summe: 45 + 60 + 120 + 75 + 60 = 360 Minuten = 6 Stunden. Dies ist ein Lernprojekt innerhalb des umfangreicheren Lernfeldes, nicht dessen vollständiger Stundenplan.

Die Entwicklungsphasen sind als Kreislauf zu verstehen: Ein Testbefund kann eine Überarbeitung der Anforderungen oder des Entwurfs auslösen. Grafik: Tazlavi, CC BY-SA 4.0, Wikimedia Commons.
Sprache, Entwicklungsumgebung und Entscheidungsbegründung
Eine integrierte Entwicklungsumgebung verbindet Editor, Fehlersuche, Ausführung und häufig Versionsverwaltung. Ein Compiler übersetzt Programmcode vor einer Ausführung in eine andere Repräsentation; ein Interpreter führt Programmoperationen über eine Laufzeitumgebung aus. Die Unterscheidung ist in der Praxis nicht absolut: CPython übersetzt Python-Quelltext typischerweise zunächst in Bytecode und führt diesen in einer virtuellen Maschine aus. Ein Debugger hilft, Variablenwerte und Programmschritte zu überprüfen. Informationen aus Herstellerhandbüchern und englischsprachigen API-Dokumentationen sind bei Schnittstellenfragen wichtiger als ungeprüfte Forenbeiträge.
| Kriterium | Python und SQLite im Übungsfall | C/C++ auf einem Mikrocontroller |
|---|---|---|
| Hardware | Normaler Schul-/Werkstatt-PC; lokale Simulation | Passend bei knappen Ressourcen und direkter Hardwaresteuerung |
| Entwicklungsaufwand | Kurzer Quelltext, Bibliothek sqlite3 in vielen Python-Installationen verfügbar | Mehr Hardware- und Speicherkenntnisse notwendig |
| Schnittstellen | Datei, lokale Datenbank, spätere GUI leicht demonstrierbar | Ein-/Ausgänge und zeitkritische Steuerung möglich |
| Entscheidung | Python für den lokalen Prototyp: gut prüfbar, keine reale Steuerung | Geeignet für eine spätere fachlich freigegebene Geräteumsetzung |
Beurteile Alternativen nach Wartbarkeit, Funktionsanforderung, Sicherheit, Lizenzbedingungen, Strombedarf und vorhandener Kompetenz. Kostenfreie Werkzeuge sind nicht automatisch frei von Nutzungsbedingungen; prüfe bei Bibliotheken jeweils Quelle, Lizenz, Version und Wartungsstand.
Algorithmen, Datenstrukturen und Programmstruktur
Vom Ablaufplan zu Entscheidungen und Schleifen
Ein Algorithmus ist eine eindeutige, endliche Folge ausführbarer Schritte. Ein Programmablaufplan nutzt grafische Symbole für Start/Ende, Verarbeitung und Entscheidung. Ein Struktogramm stellt Sequenz, Auswahl und Wiederholung als verschachtelte Blöcke dar. Beide helfen, Bedingungen vor dem Codieren zu prüfen. Skizziere für die Temperaturüberwachung: Wert einlesen → Zahl und Messbereich prüfen → bei ungültigem Wert Fehlermeldung → sonst Grenzwert vergleichen → Alarmstatus bestimmen → speichern → Ergebnis anzeigen. Eine Schleife verarbeitet mehrere Messungen; eine Abbruchbedingung verhindert Endlosschleifen.

Beispiel eines deutsch beschrifteten Programmablaufplans, nicht die Lösung des Temperaturfalls. Grafik: Erik Streb, CC BY-SA 3.0, Wikimedia Commons.
Datentypen steuern erlaubte Operationen: float für Dezimalwerte, int für ganze Zahlen und Statuscodes, bool für wahr/falsch, str für Text, list für Reihen und dict für Schlüssel-Wert-Paare. Eine Variable benennt einen gespeicherten Wert. Eine Funktion kapselt wiederverwendbare Logik, damit du Grenzwerte an einer Stelle ändern und gezielt testen kannst. Ein Modul bündelt Funktionen und wird mit import eingebunden.
Beispiel einer reinen Prüffunktion (Python):
def alarm_status(temperatur):
if not isinstance(temperatur, (int, float)):
raise TypeError("Zahl erwartet")
if not 15 <= temperatur <= 35:
raise ValueError("Außerhalb des Messbereichs")
return temperatur >= 28.0
assert alarm_status(27.9) is False
assert alarm_status(28.0) is True
Bei float('nan') greifen reine Bereichsvergleiche nicht zuverlässig; in einer echten Anwendung ist zusätzlich math.isfinite erforderlich. Ein typischer Fehler ist temperatur > 28 statt temperatur >= 28: Damit würde der vereinbarte Grenzwert selbst keinen Alarm auslösen. Ebenso sind Zeichenketten nicht mit Zahlen gleichzusetzen: Die Texteingabe „28“ muss erst sicher konvertiert und validiert werden.
Deutschsprachiges Video „Python Tutorial für Anfänger: Lerne Python in 60 Minuten“, Kanal „Programmieren lernen“ (2024). Für den Lernfeldfokus besonders Eingaben, Variablen, Schleifen, Verzweigungen und Funktionen; externe Plattform und Nutzungsbedingungen beachten.
Versionen, Fehlersuche und Programmänderungen
Wenn du vorhandene Software anpasst, ändere nicht unkontrolliert den gesamten Ablauf. Sicherer Ablauf: Ausgangsversion dokumentieren → Änderungswunsch und Akzeptanztest festhalten → kleinen Schritt implementieren → automatisierte und manuelle Tests wiederholen → Ergebnis versionieren. Versionsverwaltung mit Git erlaubt dir, Änderungen und den Rückweg zu einer funktionierenden Version nachzuvollziehen. Eine Programmänderung kann eine Schnittstellenfunktion oder ein Datenbankschema beeinflussen; prüfe darum nach jeder Änderung die bestehenden Funktionen erneut (Regressionstest).
Häufige Fehlerbilder: falscher Datentyp, vertauschte logische Operatoren, unbehandelte Ausnahme, fehlende Schleifenbegrenzung, veraltete Bibliotheksversion und unzulässige Annahmen zur Hardware. Schreibe zu jedem Fehler einen reproduzierbaren Eingabewert, erwartetes Verhalten, tatsächliches Verhalten und die korrigierte Version auf. Vertrauliche Daten und Passwörter gehören weder in Quellcode noch in öffentlich geteilte Fehlermeldungen.
Schnittstellen und Softwarebausteine sicher integrieren
Systemgrenzen, Bibliotheken und Oberflächen
Eine Programmschnittstelle beschreibt, wie zwei Komponenten Daten austauschen: Parameter, Datentypen, Fehlermeldungen und Berechtigungen. Hardware-Schnittstellen können beispielsweise seriell oder über USB angebunden werden; Software-Schnittstellen verbinden Programme mit Betriebssystemdiensten, einer GUI oder Datenbanken. Ein Auftragsdiagramm benennt Sender, Empfänger und Datenfluss. Im Lernprojekt erzeugt eine Liste die Messwerte; die Programmlogik validiert, die Bibliothek sqlite3 speichert und die Konsolenausgabe zeigt Resultate. Eine spätere GUI müsste die gleichen Funktionen aufrufen, nicht unabhängig eine zweite Alarmberechnung implementieren.

Schematisches Client-Server-Prinzip mit Anfrage und Antwort: hilfreiche Alternative zu einer lokalen Einzelplatzanwendung, aber kein Abbild der gewählten SQLite-In-Memory-Lösung. Grafik: Lubaochuan, CC BY-SA 4.0, Wikimedia Commons.
Bibliotheken sparsam und kontrolliert einbinden: Projektbedarf festhalten, offizielle Dokumentation lesen, Lizenz und Aktualität prüfen, Abhängigkeiten inventarisieren. Verwende bei Datenbankwerten Platzhalter statt SQL aus Benutzereingaben zusammenzusetzen. Die Python-Dokumentation zu sqlite3 empfiehlt Parameterbindung ausdrücklich zur Abwehr von SQL-Injection. In Systemen mit Netzwerkschnittstelle kommen verschlüsselte Übertragung, Authentisierung, Rechteprüfung und eindeutige Fehlerbehandlung hinzu; die gezeigte lokale Demo hat keinen Netzwerkzugriff.
Datenschutz, IT-Sicherheit, Arbeitsschutz und Nachhaltigkeit
Schon bei der Planung entscheidest du, ob überhaupt personenbezogene Daten notwendig sind. Hier werden absichtlich nur erfundene Sensorwerte und ein frei erfundener Gerätename verwendet. Die DSGVO verlangt insbesondere Zweckbindung und Datenminimierung (Art. 5), Datenschutz durch Technikgestaltung (Art. 25) und angemessene Sicherheit (Art. 32); die genaue Rechtsgrundlage ist im realen Projekt zu klären. Benötigt ein Auftrag echte Personenbezüge, werden Zugriffskonzept, Löschregeln, Speicherort, Übertragung, Protokollierung und Auftragsverarbeitung fachkundig bewertet. Keine echten Daten in Testdatenbanken, Screenshots oder KI-Dienste übernehmen. Das BSI beschreibt unter anderem im IT-Grundschutz-Baustein CON.8 sichere Softwareentwicklung und Tests mit geschützten Testdaten.
Bei elektrotechnischen Anlagen gilt zusätzlich die für den Betrieb zuständige Unfallverhütungsvorschrift. Informiere dich über die DGUV Vorschrift 3 sowie aktuelle Betriebs- und Herstelleranweisungen; die Freigabe und Prüfung einer realen Anlage ist keine Eigenübung. Beachte Brandschutz, Stolperstellen, ergonomisches Arbeiten und Pausen am Bildschirm. Vermeide unnötige Neuanschaffungen, halte Software wartbar, dokumentiere Updates und sichere Entsorgung von Altgeräten. Softwareseitige Simulation spart für das Lernziel Hardware, Material und Energie und verhindert Fehlsteuerungen an echter Technik.
Datenbanken modellieren, einrichten und verwalten
Entitäten, Schlüssel und Beziehungen
Eine relationale Datenbank speichert strukturierte Informationen in Tabellen. Jede Zeile ist ein Datensatz, jede Spalte ein Attribut. Ein Primärschlüssel identifiziert einen Datensatz eindeutig; ein Fremdschlüssel verweist auf einen anderen Datensatz. Das Entity-Relationship-Modell (ER-Modell) zeigt Entitäten, Attribute und Beziehungen vor der technischen Umsetzung. Im Auftrag gehört eine Gerätekennung zu vielen Messungen: geraet (id, name) 1:n messung (id, geraet_id, temperatur, alarm). messung.geraet_id verweist auf geraet.id.

Allgemeines Beispiel für eine ER-Darstellung; du überträgst das Prinzip auf Gerät und Messung. Grafik: Wooptoo, als gemeinfrei veröffentlicht, Wikimedia Commons.
Eine 1:n-Beziehung verhindert, dass du bei jeder Messung den Gerätenamen erneut speichern musst. Dies reduziert Redundanz und Inkonsistenzen. Prüfe bei der Normalisierung, ob Attribute vollständig und sinnvoll von ihrem Schlüssel abhängen. Nicht jede Datenbank ist gleichzeitig ein geeignetes Archiv: für produktive Systeme sind Datenaufbewahrung, Wiederherstellbarkeit, Zugriff und Skalierung gesondert zu planen.
Tabellen, Beziehungen, Abfragen und Verwaltung
SQL umfasst Befehle für Struktur und Daten: CREATE TABLE legt Tabellen an, INSERT fügt Zeilen ein, SELECT liest Daten, WHERE filtert und JOIN verbindet passende Datensätze. Beispiel:
SELECT g.name, m.temperatur FROM messung AS m JOIN geraet AS g ON g.id = m.geraet_id WHERE m.alarm = 1 ORDER BY m.id;
Der Join sucht zu jeder ausgewählten Messung das zugehörige Gerät. Typischer Fehler: Ohne korrekte Join-Bedingung entsteht eine unerwünschte Kombination vieler Zeilen (kartesisches Produkt). Mit COUNT, AVG und SUM kannst du Ergebnisse aggregieren. Durchschnittstemperatur und Alarmanzahl sind unterschiedliche Messgrößen, deren Einheiten du in der Dokumentation kennzeichnen musst.
Für SQLite werden Fremdschlüsselprüfungen pro Verbindung ausdrücklich aktiviert: PRAGMA foreign_keys = ON;. Verlasse dich nicht blind auf Vorgabewerte einer installierten Version; prüfe sie, beispielsweise mit PRAGMA foreign_keys; (SQLite-Dokumentation). Zum Verwalten gehören Sicherung und Wiederherstellungsprobe bei persistenten Daten, Zugriffsrechte, kontrollierte Schemaänderungen, Prüfung der Datenintegrität und fachgerechtes Löschen. Die Demonstration verwendet :memory: und verliert alle Daten beim Programmende: Das ist datensparsam, aber keine dauerhafte Datensicherung.
Deutschsprachiges „SQL Tutorial für Anfänger | Grundkurs Deutsch“, Kanal „Programmieren lernen“ (2021), mit Abschnitten zu relationalen Datenbanken, SELECT, Filtern und JOIN. Zeige im Unterricht nur fachlich benötigte Kapitel; externe Nutzungsbedingungen beachten.
Praxisfall: Simulierter Temperaturmonitor mit Prüfnachweis
Arbeitsauftrag, Arbeitsplan und Datenmodell
Situation: Ein erfundener Werkstattkunde benötigt einen offline nutzbaren Prototyp, der Messwerte eines fiktiven Temperatursensors verarbeitet. Er gibt 28,0 °C als Alarmgrenze und 15,0 bis 35,0 °C als plausiblen Wertebereich vor. Der Prototyp muss den Gerätebezug in einer lokalen Datenbank erhalten, Alarmmessungen abfragen und eine Zusammenfassung ausgeben. Abnahmeobjekte: Quelltext, Schema mit 1:n-Beziehung, reproduzierbare Testwerte, Prüftabelle, kurze Benutzeranleitung und begründete Variantenentscheidung.
Arbeitsplan mit Verantwortlichkeit und Ergebnis: (1) Auftrag analysieren und Grenzwerte bestätigen – Anforderungstabelle; (2) Ablaufplan und ER-Modell zeichnen – zwei Entwürfe; (3) Python und SQLite als reine Simulation auswählen – Auswahlbegründung; (4) Validierung, Statusfunktion und Datenbankzugriff programmieren – lauffähige Datei; (5) Grenz- und Fehlerfälle testen – dokumentiertes Testprotokoll; (6) Code, Tests und Einschränkungen erklären – Übergabe. Im realen Betrieb zusätzlich Freigabe-, Rechts-, Hardware- und Sicherheitsprüfungen nach örtlichen Vorgaben organisieren.
Sicherer Simulationsaufbau: Python 3 mit dem Standardmodul sqlite3; ein lokaler Editor und eine Konsole genügen. Keine Sensorverkabelung und keine Datenübertragung. Speicherort :memory: erzeugt eine temporäre SQLite-Datenbank. Die folgenden fünf Eingaben sind frei erfunden: 19,0; 21,5; 27,2; 35,0; 29,3 °C.
Vollständig erläuterte, ausführbare Modelllösung
Speichere den folgenden Code als monitor.py und führe ihn ausschließlich auf einem freigegebenen lokalen Übungssystem aus. Die Funktion bewertet einen Wert, die Datenbank hält die 1:n-Beziehung fest und die Abfrage liefert die vereinbarten Prüfergebnisse. Für ein reales Produkt wären weitere Aufgaben wie Zugriffsverwaltung, Konfiguration, Protokollierung, robuste Updates und geeignete Hardwarefreigabe erforderlich.
import math
import sqlite3
WERTE = [19.0, 21.5, 27.2, 35.0, 29.3]
GRENZE = 28.0
def alarmstatus(wert):
if not isinstance(wert, (int, float)):
raise TypeError("Temperatur muss eine Zahl sein")
if not math.isfinite(wert) or not 15.0 <= wert <= 35.0:
raise ValueError("Wert außerhalb 15 bis 35 Grad")
return int(wert >= GRENZE)
def demo():
datenbank = sqlite3.connect(":memory:")
try:
datenbank.execute("PRAGMA foreign_keys = ON")
datenbank.execute(
"CREATE TABLE geraet ("
"id INTEGER PRIMARY KEY, "
"name TEXT NOT NULL UNIQUE)")
datenbank.execute(
"CREATE TABLE messung ("
"id INTEGER PRIMARY KEY, "
"geraet_id INTEGER NOT NULL REFERENCES geraet(id), "
"temperatur REAL NOT NULL CHECK(temperatur BETWEEN 15 AND 35), "
"alarm INTEGER NOT NULL CHECK(alarm IN (0,1)))")
datenbank.execute(
"INSERT INTO geraet(id, name) VALUES (?, ?)",
(1, "Labor-Simulator"))
for wert in WERTE:
datenbank.execute(
"INSERT INTO messung(geraet_id, temperatur, alarm) "
"VALUES (?, ?, ?)",
(1, wert, alarmstatus(wert)))
ergebnis = datenbank.execute(
"SELECT COUNT(*), ROUND(AVG(temperatur), 1), "
"SUM(alarm) FROM messung").fetchone()
alarmzeilen = datenbank.execute(
"SELECT g.name, m.temperatur FROM messung AS m "
"JOIN geraet AS g ON g.id = m.geraet_id "
"WHERE m.alarm = 1 ORDER BY m.id").fetchall()
assert ergebnis == (5, 26.4, 2)
assert len(alarmzeilen) == 2
assert alarmstatus(27.9) == 0
assert alarmstatus(28.0) == 1
print("Messungen, Mittelwert, Alarme:", ergebnis)
print("Alarmmessungen:", alarmzeilen)
finally:
datenbank.close()
if __name__ == "__main__":
demo()
Prüfbares Arbeitsergebnis: Die erste Ausgabe lautet Messungen, Mittelwert, Alarme: (5, 26.4, 2). Die zweite enthält zwei Alarmdatensätze des Labor-Simulators mit 35,0 und 29,3 Grad. Rechnung: 19,0 + 21,5 + 27,2 + 35,0 + 29,3 = 132,0 °C als Summe der fünf Temperaturwerte; 132,0 / 5 = 26,4 °C als arithmetischer Mittelwert. Zwei Werte sind größer oder gleich 28,0 °C, also 2 Alarme. Die Einheit der Summe ist nur rechnerische Zwischengröße, kein eigener Sensormesswert.
Abgrenzung: Der Code zeigt sowohl Bibliothekseinbindung als auch Programmlogik, relationale Tabellen, Schlüssel, eine parametrisierte Schreiboperation und eine JOIN-Abfrage. Der Prototyp stellt Daten über die Konsole dar; die konsistente Programmschnittstelle könnte später von einer GUI aufgerufen werden. Eine GUI oder reale Sensoranbindung ist für die demonstrierte Abnahme nicht vorhanden und darf nicht als implementiert behauptet werden.
Testprotokoll, Fehlerdiagnose und Bewertungsraster
| Test-ID | Eingabe oder Prüfschritt | Erwartung | Nachweis |
|---|---|---|---|
| T1 | 27,9 °C | Kein Alarm | alarmstatus(27.9) == 0
|
| T2 | 28,0 °C | Alarm | alarmstatus(28.0) == 1
|
| T3 | 99 °C und Text statt Zahl | Wert wird mit Fehler abgewiesen | Fehlerausnahmen getrennt prüfen; darf nicht gespeichert werden |
| T4 | Fünf Testwerte speichern | Anzahl 5, Mittelwert 26,4 °C, Alarme 2 | Zusammenfassung und Assertions im Programm |
| T5 | Gerätebezug abfragen | Beide Alarmzeilen tragen den erwarteten Gerätenamen | JOIN-Abfrage ausführen |
| T6 | Nicht existente Geräte-ID speichern | Fremdschlüsselverletzung wird abgewiesen | Auf Testkopie PRAGMA foreign_keys und Integritätsprüfung nutzen
|
Hinweis zur Testabdeckung: T1, T2, T4 und T5 sind im Beispielcode direkt enthalten. Für T3 und T6 musst du gezielte zusätzliche Tests schreiben, Fehler erwartungsgemäß abfangen und im Bericht mit Datum, Versionsstand, Eingabe und Ergebnis dokumentieren. Beispiel für T3: alarmstatus(99) muss ValueError auslösen. Für T6 ist ein separater Datenbank-Testaufbau nötig. Ungetestete Eigenschaften dürfen nicht als bestanden markiert werden. Prüfe zusätzlich einen leeren Datensatz: SQL-AVG liefert dann NULL statt 0; die Benutzeroberfläche muss dies eindeutig darstellen.
Bewertungsraster für das Lernprojekt (100 Punkte):
| Kriterium | Nachweis / Maßstab | Punkte |
|---|---|---|
| Auftragsanalyse | Anforderungen, Grenzen, Datenschutz und Abnahme eindeutig | 15 |
| Planung und Auswahl | Ablaufplan, ER-Modell, Entwicklungsentscheidung und Zeitplan begründet | 20 |
| Umsetzung | Prüffunktion, Bibliothek, Datenbank, Beziehung, Filter und JOIN korrekt | 30 |
| Test und Sicherheit | Grenzfälle, Fehlereingaben, Integrität, reproduzierbare Protokolle | 20 |
| Dokumentation und Reflexion | Startanleitung, Rechte-/Lizenzcheck, Alternativen und Übergabe | 15 |
| Gesamt | 100 Punkte; Kriterien vor Durchführung bekannt geben | 100 |
Beurteilungsorientierung: 90–100 Punkte = durchgängig nachvollziehbar und sicher; 75–89 = überwiegend vollständig mit kleinen Mängeln; 60–74 = grundlegende Anforderungen erfüllt, nachbesserungsbedürftig; unter 60 = wesentliche Nachweise fehlen. Diese schulische Übungsskala ist keine amtliche Gesellenprüfungsbewertung. Zur Reflexion vergleichst du lokal gespeicherte SQLite-Daten mit einer serverbasierten Lösung und begründest, wann Datenhaltung, Zugriffskontrolle, Wartbarkeit und Energiebedarf jeweils für eine andere Architektur sprechen.
Interaktive Aufgaben
Quiz: Prüfe dein Fachwissen
Was ist bei der Auftragsklärung vor der Programmierung zuerst festzuhalten? (Prüfbare Anforderungen und Abnahmekriterien) (!Nur die Farbe der Benutzeroberfläche) (!Ein beliebiges Datenbankpasswort) (!Die fertige Quellcodedatei ohne Rücksprache)
Welche Darstellung eignet sich zur grafischen Planung von Bedingungen und Abläufen? (Programmablaufplan) (!Geräterechnung) (!Stückpreisübersicht) (!Dateisystembereinigung)
Welche Anweisung löst bei genau 28 Grad den vereinbarten Alarm aus? (Temperatur größer oder gleich 28) (!Temperatur ausschließlich größer als 28) (!Temperatur ausschließlich kleiner als 28) (!Temperatur immer gleich 35)
Warum werden SQL-Werte in Python mit Platzhaltern übergeben? (Damit Werte sicher an eine vorbereitete Abfrage gebunden werden) (!Damit alle Abfragen automatisch verschlüsselt sind) (!Damit keine Datenbanktabellen mehr nötig sind) (!Damit alle Benutzer Administratorrechte erhalten)
Welche Aussage beschreibt einen Fremdschlüssel korrekt? (Er verweist in einer Tabelle auf den Schlüssel eines zugehörigen Datensatzes) (!Er ersetzt grundsätzlich sämtliche Primärschlüssel) (!Er ist immer das Kennwort der Datenbank) (!Er muss in jeder Zeile frei erfunden werden)
Welche SQL-Klausel filtert Messungen mit Alarmstatus? (WHERE) (!CREATE) (!DROP) (!GRANT)
Was gehört zu einem aussagekräftigen Testprotokoll? (Testeingabe, Sollverhalten, Istverhalten und Versionsstand) (!Nur die Behauptung dass alles funktioniert) (!Echte Kundendaten als Pflichtnachweis) (!Nur ein Screenshot ohne Kontext)
Welche Daten eignen sich für den hier beschriebenen Lernprototyp? (Frei erfundene Messwerte ohne Personenbezug) (!Echte Kundennamen aus dem Betrieb) (!Private Passwörter von Mitarbeitenden) (!Ungeprüfte Gesundheitsdaten der Klasse)
Welche Aussage über SQLite im Beispielszenario ist richtig? (Eine In-Memory-Datenbank verliert ihre Inhalte beim Beenden) (!Sie speichert alle Testdaten automatisch für immer) (!Sie erfordert zwingend einen öffentlichen Webserver) (!Sie verhindert ohne zusätzliche Prüfung jede fehlerhafte Eingabe)
Wie soll eine Änderung an einem bestehenden Programm geprüft werden? (Mit erneuten Funktions- und Regressionstests) (!Nur durch Umbenennen der Datei) (!Durch Abschalten aller Fehlermeldungen) (!Durch Löschen der bisherigen Testfälle)
Memory
| Primärschlüssel | Kennung eines Datensatzes innerhalb seiner Tabelle |
| Fremdschlüssel | Verweis auf den Schlüssel eines anderen Datensatzes |
| Debugger | Werkzeug zum schrittweisen Untersuchen eines Programms |
| Compiler | Werkzeug zur Übersetzung von Programmcode |
| Regressionstest | Erneute Prüfung bisher funktionierender Teile nach Änderungen |
| Datenminimierung | Nur für einen festgelegten Zweck notwendige Daten verarbeiten |
Drag-and-drop: Phasen zuordnen
| Ordne die passende Tätigkeit zu. | Phase im Kundenauftrag |
|---|---|
| Kundenbedarf und Abnahmekriterien erfragen | Informieren |
| Ablaufplan und ER-Modell zeichnen | Planen |
| Sprache und Datenbank begründet auswählen | Entscheiden |
| Programm und Datenbank umsetzen | Durchführen |
| Grenzfälle und Soll-Ist-Abgleich prüfen | Kontrollieren |
Kreuzwort
| Compiler | Wie heißt ein Werkzeug zur Übersetzung von Programmcode? |
| Debugger | Wie heißt das Werkzeug zum schrittweisen Suchen von Programmfehlern? |
| Tabelle | In welcher Struktur speichert ein relationales System Datensätze? |
| Abfrage | Wie heißt die gezielte Anforderung von Daten aus einer Datenbank? |
| Schleife | Wie heißt eine Kontrollstruktur zur wiederholten Ausführung? |
| Variable | Wie heißt ein benannter Speicherplatz für einen Programmwert? |
LearningApps
Lückentext
Offene Aufgaben
Leicht
- Lastenheft: Formuliere aus dem fiktiven Temperaturauftrag vier Anforderungen und je einen objektiv prüfbaren Abnahmesatz.
- Programmablaufplan: Zeichne den Ablauf vom Einlesen bis zur Alarmanzeige mit einer Verzweigung und kennzeichne ungültige Eingaben.
- Datentyp: Ordne Temperatur, Alarmstatus, Gerätename und Messwertliste geeigneten Python-Datentypen zu und begründe die Auswahl.
- Arbeitssicherheit: Erstelle eine Sicherheitskarte: Was darfst du lokal simulieren und welche Arbeiten an realer elektrischer Hardware gehören ausschließlich unter befugte Aufsicht?
Standard
- Struktogramm: Entwirf ein Struktogramm für die Werteprüfung und vergleiche es mit einem Programmablaufplan auf Lesbarkeit und Fehlererkennung.
- SQL: Erstelle mit erfundenen Datensätzen die beiden Tabellen und eine gefilterte JOIN-Abfrage; dokumentiere Ergebnis und Schlüsselbeziehung.
- Softwaretest: Ergänze T3 aus dem Praxisfall als ausführbaren Negativtest für 99 Grad und Texteingaben mit erwarteten Ausnahmen.
- Benutzeroberfläche: Entwerfe eine barrierearme Skizze der Alarmansicht mit Zustandsanzeige, verständlichen Fehlermeldungen und ohne echte Daten.
Schwer
- Softwarearchitektur: Vergleiche Python mit einer Mikrocontrollerlösung anhand von Hardwarebedarf, Energie, Sicherheit, Wartbarkeit und Gesamtkosten; begründe die Empfehlung.
- Datenbanknormalisierung: Ergänze zwei simulierte Geräte, erläutere das 1:n-Modell und entwickle Abfragen für Alarmanzahl je Gerät und Mittelwert je Gerät.
- Versionsverwaltung: Plane eine Änderung der Alarmgrenze durch Konfiguration, setze sie in einer Kopie um und protokolliere Regressionstests samt Rückfallmöglichkeit.
- Datenschutz durch Technikgestaltung: Entwirf ein Sicherheits- und Nachhaltigkeitskonzept für einen theoretischen späteren Netzbetrieb mit Rollen, Löschung, verschlüsselter Verbindung und Ressourcenabschätzung.


Lernkontrolle
- Anforderungsanalyse: Leite für einen fiktiven Werkstattauftrag mindestens fünf Akzeptanzkriterien ab und begründe, wie ihre Prüfung Kundenmissverständnisse verhindert.
- Algorithmus: Vergleiche ein Struktogramm mit Python-Code für die Grenzwertlogik und begründe, wo typischerweise ein Grenzfehler entstehen kann.
- Datenbank: Zeichne ein ER-Modell für Gerät und Messung; erkläre die Wahl der Schlüssel und zeige eine JOIN-Abfrage mit Filter und erwartetem Beispielresultat.
- Softwaretest: Entwirf Grenzwert-, Falschtyp-, Leerdaten- und Integritätstests mit erwartetem Verhalten; markiere, welche davon tatsächlich ausgeführt wurden.
- Informationssicherheit: Beurteile eine geplante Cloud-Übertragung realer Sensordaten gegenüber der lokalen Simulation nach Datenminimierung, Schutzbedarf und Betriebskosten.
- Projektdokumentation: Führe eine simulierte Kundenabnahme mit Prüftabelle, Rollenklärung, bekannten Einschränkungen und einer fachlich begründeten nächsten Ausbaustufe durch.
Lernnachweis
Du reichst ein Portfolio mit den folgenden eindeutig überprüfbaren Produkten ein: (1) anonymisierte Auftragsanalyse und Abnahmekriterien, (2) Programmablaufplan oder Struktogramm, (3) ER-Modell und kommentierte Tabellenstruktur, (4) selbst ausführbarer Python-Quelltext mit genauer Startanleitung, (5) Testprotokoll mit Ist-Soll-Vergleich auch für absichtlich ungültige Eingaben, (6) SQL-Abfrage und Ergebnis mit den fünf fiktiven Werten, (7) Lizenz-/Quellennachweise, (8) Sicherheits-, Datenschutz- und Nachhaltigkeitsreflexion sowie (9) fünfminütige Präsentation mit begründetem Alternativenvergleich. Belege deine Ergebnisse ohne echte Personen- oder Betriebsdaten. Der Programmcode im Praxisfall zeigt einen Musterweg; ein Lernnachweis erfordert deine eigene begründete Anpassung und die reproduzierbare Durchführung der zusätzlichen Tests T3 und T6.
Für die Selbstkontrolle kannst du das 100-Punkte-Raster aus dem Praxisfall verwenden. Die Lehrkraft oder Ausbildungsleitung prüft die tatsächliche Leistung; die Musterlösung ersetzt weder betriebliche Freigaben noch den verbindlichen Lernfeld- oder Ausbildungsplan.
OER und Wikipedia
Curriculum und Berufsrecht (offizielle Primärquellen):
- KMK: Rahmenlehrplan Informationselektroniker/in, Lernfeld 10, Seite 19 (Beschluss 18.12.2020). Der Zeitrichtwert beträgt 100 Stunden.
- BIBB: Berufsprofil und Rechtsgrundlagen, einschließlich der im Juni 2026 geänderten Erprobungsverordnung; Stand und Geltung für die individuelle Ausbildung mit der Kammer klären.
- Gesetze im Internet: Informationselektronikerausbildungsverordnung mit Ausbildungsrahmenplan und Regelungen zum Ausbildungsplan.
Technische und rechtliche Fachquellen:
- Python-Dokumentation: sqlite3 und parametrisierte Abfragen (englisch, offizielle Referenz).
- SQLite-Dokumentation: Fremdschlüssel (englisch, offizielle Referenz).
- DSGVO, insbesondere Art. 5, 25 und 32 (amtlicher EU-Text; aktuelle Fassung prüfen).
- DGUV Vorschrift 3 (Hinweise zur jeweils gültigen Fassung und Zuständigkeit beim Unfallversicherungsträger).
- BSI: IT-Grundschutz, CON.8 Software-Entwicklung (aktuelle Edition und konkrete Umsetzung betriebsbezogen prüfen).
Verifizierte Bildquellen und Urheberrechte: Die Abbildungen sind fremde Werke mit ihren jeweils angegebenen Rechten; es wurden keine Bearbeitungen angefertigt. Lizenzpflichten gelten auch bei einer Weiterverwendung außerhalb dieses Kurses.
| Eingebundene Datei | geprüfte Datei-/Quellenseite | Urheber | Lizenz/Status |
|---|---|---|---|
| File:Software Development Life cycle.png | Commons | Tazlavi | CC BY-SA 4.0 |
| File:Flowchart de.svg | Commons | Erik Streb | CC BY-SA 3.0 |
| File:Client-server model.svg | Commons | Lubaochuan | CC BY-SA 4.0 |
| File:Entity-Relationship Model (diagram).png | Commons | Wooptoo | gemeinfrei laut Urhebererklärung |
Videonachweise: Die zwei deutschsprachigen Videos wurden über ihre veröffentlichten YouTube-Einträge und Themenbeschreibungen geprüft. Es handelt sich um externe Verweise bzw. Einbettungen, nicht um frei nachnutzbare Videodateien. Eine offene Lizenz wurde für sie nicht nachgewiesen; daher nicht herunterladen, neu hochladen oder als OER umetikettieren.
- Python Tutorial für Anfänger (deutsch), „Programmieren lernen“, veröffentlicht 10.08.2024.
- SQL Tutorial für Anfänger (deutsch), „Programmieren lernen“, veröffentlicht 25.09.2021.
Wikipedia als ergänzender, offen lizenzierter Einstieg: Relationale Datenbank. Maßgeblich für konkrete APIs, Schutzmaßnahmen und Prüfungen bleiben die oben verlinkten Fach- und Primärquellen.
Verknüpfte Lernbereiche
Lernfeldverbindungen: LF 4 „Informationstechnische Systeme bereitstellen“ (Grundkonfiguration und Dokumentation), LF 7 „Computersysteme konfigurieren und einrichten“ (Datenschutz und Datensicherheit), LF 8 „Vernetzte Systeme installieren, erweitern und administrieren“ (Schnittstellen und Rechte), LF 9 „Anwenderspezifische Systeme auswählen und integrieren“ (Auftragsbezug), LF 11 „Kommunikationssysteme planen und realisieren“ (Datenübertragung) und LF 13 „Komplexe Informationssysteme ändern und instand halten“ (Änderung und Fehlersuche). Die konkrete Reihenfolge folgt Schule, Bundesland und Betrieb.
aiMOOC Projekte
Schulfach+


aiMOOCs


aiMOOC Projekte


MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragenInhalt melden · Hinweise zu Fehlern, Quellen, Medienrechten oder Dubletten
