⚡ Die 14 Punkte, die am meisten Punkte bringen
- ISO 9126 = 6 Merkmale: Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit, Übertragbarkeit. Eselsbrücke: Fiese Zebras Beißen Echt Ärgerlich Übel.
- Sicherheit gehört in ISO 9126 zur Funktionalität! 2FA, Verschlüsselung, Zugriffsschutz → F. (Erst im Nachfolger ISO 25010 ist Sicherheit eigenständig.)
- Ankreuz-Aufgabe mit Minuspunkten: Raten mit 6 Spalten lohnt sich nicht (1/6 Chance auf +1, 5/6 auf −1). Nur kreuzen, wenn du dir sicher bist oder auf 2 eingrenzen kannst.
- Freeware ≠ Freie Software. Freeware = kostenlos, Quellcode zu, nicht verändern. Freie Software = Freiheit (nutzen, studieren, verändern, weitergeben), darf Geld kosten.
- Lehrer-Fall: Freie Software erlaubt Veränderung ausdrücklich → kein Missbrauch. Besser für ihn: Freeware (kostenlos, aber Code geschützt).
- Wasserfall: linear, Phase für Phase, Ergebnis einer Phase = Input der nächsten.
- V-Modell: links Spezifikation, rechts Tests. Jede linke Phase hat eine gegenüberliegende Testphase.
- Spiralmodell (Boehm): iterativ, risikogetrieben, Prototypen, 4 Schritte pro Runde.
- Compiler übersetzt das ganze Programm vorher (schnell beim Ausführen, C/C++). Interpreter Zeile für Zeile zur Laufzeit (schnell testen, Python/PHP).
- Syntax = Regeln/Grammatik → Compiler meckert (fehlendes
;). Semantik = Bedeutung → Programm läuft, macht aber Falsches. - int / int schneidet ab:
9 / 5=1,7 / 2=3. Mit7.0 / 2=3.5. =ist Zuweisung,==ist Vergleich.if (x = 5)ist ein Bug.- „mehr als 5" →
> 5· „ab 18" →>= 18· „unter 12" →< 12. - Kommazahlen mit Punkt (
1.25). Geld →double, Stückzahl →int, Text →string.
1 · Software-Arten & Make or Buy
Anwendungssoftware löst konkrete berufliche/private Aufgaben (Word, Browser, DATEV).
| Benutzer | Anwendungen | Art | Beispiel |
|---|---|---|---|
| Viele | Viele | Standardsoftware | Word, Excel, Chrome, WhatsApp |
| Viele | Eine/Wenige | Branchensoftware | DATEV (Steuerberater), Arztpraxis-Software, Werkstatt-Warenwirtschaft |
| Einer/Wenige | Eine/Wenige | Individualsoftware | Speziell für eine Firma gebaute Zeiterfassung |
Entwickeln vs. Anschaffen (Vor-/Nachteile)
| Entwicklung (Individual) | Anschaffung (Standard) |
|---|---|
| + passt exakt auf die Prozesse + Wettbewerbsvorteil + volle Kontrolle, keine Herstellerabhängigkeit | + günstiger, sofort verfügbar + ausgereift, von vielen getestet + Support, Updates, Schulungen |
| − teuer, dauert lange − Projektrisiko (Bugs, Verzug) − Wartung selbst stemmen | − passt nicht 100 % − Abhängigkeit vom Hersteller − laufende Lizenzkosten, ungenutzte Funktionen |
Entscheidung ist vor allem betriebswirtschaftlich: Kosten, Zeit, Nutzen, Risiko.
2 · Qualitätsmerkmale nach ISO 9126
| Merkmal | Frage | Teilmerkmale |
|---|---|---|
| Funktionalität | Kann sie, was sie soll? | Angemessenheit, Richtigkeit, Interoperabilität, Sicherheit, Ordnungsmäßigkeit |
| Zuverlässigkeit | Läuft sie stabil, auch bei Fehlern? | Reife, Fehlertoleranz, Wiederherstellbarkeit |
| Benutzbarkeit | Ist sie leicht bedienbar? | Verständlichkeit, Erlernbarkeit, Bedienbarkeit, Attraktivität |
| Effizienz | Schnell und sparsam? | Zeitverhalten, Verbrauchsverhalten (CPU, RAM) |
| Änderbarkeit | Leicht anpassbar/wartbar? | Analysierbarkeit, Modifizierbarkeit, Stabilität, Testbarkeit |
| Übertragbarkeit | Läuft sie woanders? | Anpassbarkeit, Installierbarkeit, Koexistenz, Austauschbarkeit |
- Symbole intuitiv, ohne Handbuch → B
- Zwei-Faktor-Authentifizierung → F (Sicherheit ist Teil von F)
- Export als verschlüsselte PDF → F (Funktion, die das System bietet)
- 1.000 Datensätze in < 0,2 s, minimale CPU → E
3 · Prinzipien der Softwareentwicklung
| Prinzip | Beschreibung |
|---|---|
| Strukturierung | Software wird übersichtlich und hierarchisch gegliedert (z. B. Top-down: vom Groben ins Feine). Erhöht Lesbarkeit und Verständlichkeit. |
| Modularisierung | Zerlegung in abgeschlossene, möglichst unabhängige Module mit klar definierten Schnittstellen. Module sind einzeln entwickel-, test- und austauschbar. |
| Mehrfachverwendung | Bereits vorhandene, getestete Komponenten (Funktionen, Bibliotheken) werden wiederverwendet. Spart Zeit und Kosten, senkt Fehlerquote. |
| Standardisierung | Einheitliche Regeln und Normen: Namenskonventionen, Dokumentation, Notationen (z. B. UML), Programmierrichtlinien. Erleichtert Teamarbeit und Wartung. |
4 · Software-Lizenzen
| Lizenz | Kosten | Quellcode | Verändern | Kern |
|---|---|---|---|---|
| Proprietär | egal | zu | nein | Hersteller behält alle Rechte; Kopie/Weitergabe nur mit seiner Zustimmung |
| Kommerziell | kostet | meist zu | meist nein | wird gegen Geld vertrieben (Gewinnabsicht) |
| Freeware | gratis | zu | nein | kostenlos nutzen, Urheber behält Rechte |
| Shareware | erst gratis | zu | nein | Testversion (zeit-/funktionsbegrenzt), danach zahlen |
| Freie Software | darf kosten | offen | ja | 4 Freiheiten: nutzen, studieren, verändern, weitergeben (GNU GPL, oft Copyleft) |
| Open Source | meist gratis | offen | ja | Quellcode offen, Änderung/Weitergabe erlaubt (MIT, Apache, GPL); praktischer Fokus |
| Halbfrei | privat gratis | offen | ja, aber | Nutzen/Ändern/Weitergeben erlaubt, aber nicht kommerziell |
| Public Domain | gratis | egal | ja | Urheber verzichtet auf alle Rechte (Sonderfall; in DE rechtlich nicht voll möglich, daher z. B. CC0) |
Copyleft: veränderte Versionen müssen wieder unter derselben freien Lizenz stehen. „Free as in freedom, not free beer."
- Halbfrei hat nur kostenlose Versionen, keine kostenpflichtigen → falsch (Einschränkung ist „nicht kommerziell", für kommerzielle Nutzung gibt es oft eine Bezahl-Lizenz)
- Proprietär nur mit Zustimmung des Herstellers vervielfältigen/verbreiten → korrekt
- Freie Software und Freeware sind dasselbe → falsch
- Freeware darf verändert werden → falsch (nur kostenlos nutzen)
- Open Source hat keinen sichtbaren Quellcode → falsch (genau das Gegenteil)
- Anbieter dürfen für Freeware Geld verlangen → falsch (Freeware ist per Definition kostenlos; nur Freie Software darf kosten)
5 · Vorgehensmodelle
| Vorteile | Nachteile |
|---|---|
| + Planbarkeit von Zeit & Kosten + klare Struktur, Rollen, Verantwortung + bessere Qualität & Dokumentation | − Mehraufwand/Bürokratie (Overhead) − klassische Modelle unflexibel bei Änderungen − Kunde sieht Ergebnis oft erst spät |
Wasserfallmodell klassisch · sequenziell
+ einfach, gut planbar, gut dokumentiert · − unflexibel, Fehler werden spät entdeckt
V-Modell klassisch · sequenziell
| Links (Spezifikation) | Rechts (Test) |
|---|---|
| Anforderungsanalyse | Abnahmetest |
| Systementwurf | Systemtest |
| Architekturentwurf | Integrationstest |
| Modulentwurf | Modultest (Unit-Test) |
Spiralmodell iterativ · risikogetrieben
- Ziele, Rahmenbedingungen und Alternativen festlegen
- Risikoanalyse und Bewertung der Alternativen
- Entwicklung und Test (Prototyp)
- Planung der nächsten Runde
RUP (Rational Unified Process) Mitte
Scrum agil · iterativ
Artefakte: Product Backlog, Sprint Backlog, Increment.
Events: Sprint (1–4 Wochen), Sprint Planning, Daily Scrum (15 Min), Sprint Review (Ergebnis zeigen), Retrospektive (Prozess verbessern).
XP (Extreme Programming) agil
Kanban agil · am iterativsten
Agiles Manifest (4 Werte)
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Funktionierende Software über umfassende Dokumentation
- Zusammenarbeit mit dem Kunden über Vertragsverhandlung
- Reagieren auf Veränderung über Befolgen eines Plans
6 · Vom Code zur Maschinensprache
Interpreter: liest den Code erst während der Ausführung Zeile für Zeile ein, analysiert und führt ihn direkt aus.
Analogie (Barcelona-Folie): Compiler = Übersetzer, der das ganze Buch vorher übersetzt. Interpreter = Dolmetscher, der Satz für Satz live übersetzt.
| Compiler | Interpreter |
|---|---|
| + Code wird optimiert + schnell und effizient zur Laufzeit + gut für lange laufende Programme | + schnelle Tests ohne Übersetzen + einfachere Fehlersuche + plattformunabhängig |
| − nach jeder Änderung neu kompilieren − höherer Aufwand in der Entwicklung − plattformabhängig | − langsamer, ineffizienter − gleiche Teile werden jedes Mal neu übersetzt |
| C, C++, Pascal | PHP, Perl, Python, Ruby, BASIC |
Mischform: Java/C# → Bytecode + JIT-Compiler.
- Lexikalische Analyse: Quelltext → Tokens (
z = 10 * x + y;→ id, op, literal …) - Syntaktische Analyse: Tokens → Syntaxbaum (stimmt die Grammatik?)
- Semantische Analyse: Typen prüfen, Symboltabelle (z. B. int → double umwandeln)
- Optimierung und Codeerzeugung
Syntax: die Regeln, nach denen Sprachkonstrukte gebildet werden (Grammatik). Fehler → Compiler bricht ab, z. B. fehlendes
;.Semantik: die Bedeutung der Konstrukte. Semantischer Fehler → Code kompiliert, tut aber das Falsche, z. B.
erg = a - b; obwohl addiert werden soll.
7 · C++ Basics
#include <iostream>lädt Ein-/Ausgabe (cin,cout)using namespace std;erspartstd::int main() { }Startpunkt, läuft von oben nach untencout <<Pfeile zum Bildschirm ·cin >>Pfeile in die Variable ·endl= Zeilenumbruch- Text in
"…"wird wörtlich ausgegeben, ohne Anführungszeichen der Inhalt der Variable cin >> nameliest nur bis zum Leerzeichen („Max Mustermann" → „Max")
| Typ | Inhalt | Bit | Byte |
|---|---|---|---|
| bool | true (1) / false (0) | 8 | 1 |
| short | Ganzzahl −32.768 bis 32.767 | 16 | 2 |
| int | Ganzzahl ca. ±2,1 Mrd. | 32 | 4 |
| long long | Ganzzahl ca. ±9,2 Trillionen | 64 | 8 |
| float | Kommazahl | 32 | 4 |
| double | Kommazahl, doppelt genau | 64 | 8 |
| char | ein Zeichen (ASCII), 'a' | 8 | 1 |
| string | Zeichenkette, "Hallo" | var. | var. |
Folie schreibt „bis 32768" bzw. „2.147.483.648". Korrekt ist das Maximum jeweils um 1 kleiner (32.767 / 2.147.483.647), weil die 0 mitzählt. unsigned int = nur positive Zahlen. Zu große Typen kosten unnötig Speicher.
+ - * / und % (Rest: 7 % 3 = 1).Ganzzahldivision:
int / int schneidet Nachkommastellen ab: 9 / 5 = 1. Ein double im Spiel → Kommaergebnis.Division durch 0 bei int → Absturz. Vorher mit
if (b != 0) prüfen.Konstante:
const double PI = 3.14159; oder global #define PI 3.14159.Überschreiben:
erg = a + b; danach erg = a - b; → der alte Wert ist weg.
8 · Selektion: if / else
| Vergleich | Logisch | ||
|---|---|---|---|
== | gleich | && | UND (beide wahr) |
!= | ungleich | || | ODER (mind. eins wahr) |
< / <= | kleiner (gleich) | ! | NICHT (Umkehrung) |
> / >= | größer (gleich) |
Zwischen 12 und 24: if (zahl > 12 && zahl < 24) — nicht 12 < zahl < 24!
if (x = 5)→ Zuweisung, immer wahr. Richtig:==if (x > 5);→ Semikolon beendet das if, der Block läuft immer- Reihenfolge bei
else if: die erste wahre Bedingung gewinnt. Bei Altersstufen von klein nach groß prüfen (< 12, dann< 18, dannelse) - Strings mit
==vergleichen geht beistring:if (antwort == "ja") - Jede
{braucht ihre}
9 · Lösungen der Übungsaufgaben
Quadrat, Rechteck, Kreis (6.5 Aufgabe 1 + 2)
Quadrat: U = 4·a, A = a·a · Rechteck: U = 2·(a+b), A = a·b · Kreis: U = 2·π·r, A = π·r²
Eigene Form: Rechteck + Halbkreis (Aufgabe 3)
L-Form/Treppe: einfach in Rechtecke zerlegen und Flächen addieren.
Promillerechner (inkl. Probezeit)
Regeln: unter 21 oder Probezeit → 0,0 ‰ · ab 21 bis 0,3 ‰ ok · 0,3 bis 0,5 ‰ erlaubt mit Warnung · ab 0,5 ‰ verboten.
Kino Phase 1–3 (Preis, Popcorn, Dienstag)
„mehr als 5" → > 5. Bei genau 5 Tickets gibt es kein Popcorn.
Kino Phase 4 (verschachtelte Verzweigung)
Die Lehrer-Version fragt statt eines Alters die Anzahl pro Altersgruppe ab und rechnet 5*u12 + 7*u18 + 9*erw, mit Plausibilitätsprüfung („Netter Versuch!"). Gleiches Prinzip, nur mehr Abfragen.
Kino-Code des Lehrers erklärt (Popcorn-Trick)
int popcorn = anzahl / 5; → Ganzzahldivision: 9 Tickets → 9/5 = 1,8 → abgeschnitten = 1 Tüte. 12 Tickets → 2 Tüten.Am Dienstag wird der ganze
else-Block übersprungen. Sonst: Kinder abfragen, wenn mehr als Tickets → auf Maximum korrigieren; dann Jugendliche gegen die übrigen Tickets prüfen; Rest = Erwachsene.
10 · Fehler finden
Finde alle Fehler und ordne zu: Syntax oder Semantik?
- Zeile 2:
;fehlt nachstd→ Syntax - Zeile 5:
intfür 7.50 → wird zu 7 abgeschnitten → Semantik (richtig:double) - Zeile 6:
cout >>→ Syntax (richtig:<<) - Zeile 7:
=statt==→ kompiliert, ist aber immer wahr → Semantik - Zeile 8:
;fehlt nachendl→ Syntax
- Ausgabe „Addition", gerechnet wird Subtraktion → Semantik
a / bbei int → Ergebnis abgeschnitten (7/2 = 3) → Semantik, für Kommaergebnisdoublenutzen- Keine Prüfung auf
b == 0→ Absturz bei Division durch 0 → mitif (b != 0)absichern
- Reihenfolge falsch: Wer 8 ist, ist auch
< 18→ bekommt 7 € statt 5 €. Erst< 12prüfen → Semantik - Bei „ab 18" wäre
> 18falsch, weil 18-Jährige rausfallen. Richtig>= 18bzw. einfachelse