AEuP Ex Speedrun

Software · ISO 9126 · Prinzipien · Lizenzen · Vorgehensmodelle · Compiler · C++ · if/else

⚡ Die 14 Punkte, die am meisten Punkte bringen

  1. ISO 9126 = 6 Merkmale: Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit, Übertragbarkeit. Eselsbrücke: Fiese Zebras Beißen Echt Ärgerlich Übel.
  2. Sicherheit gehört in ISO 9126 zur Funktionalität! 2FA, Verschlüsselung, Zugriffsschutz → F. (Erst im Nachfolger ISO 25010 ist Sicherheit eigenständig.)
  3. 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.
  4. Freeware ≠ Freie Software. Freeware = kostenlos, Quellcode zu, nicht verändern. Freie Software = Freiheit (nutzen, studieren, verändern, weitergeben), darf Geld kosten.
  5. Lehrer-Fall: Freie Software erlaubt Veränderung ausdrücklich → kein Missbrauch. Besser für ihn: Freeware (kostenlos, aber Code geschützt).
  6. Wasserfall: linear, Phase für Phase, Ergebnis einer Phase = Input der nächsten.
  7. V-Modell: links Spezifikation, rechts Tests. Jede linke Phase hat eine gegenüberliegende Testphase.
  8. Spiralmodell (Boehm): iterativ, risikogetrieben, Prototypen, 4 Schritte pro Runde.
  9. Compiler übersetzt das ganze Programm vorher (schnell beim Ausführen, C/C++). Interpreter Zeile für Zeile zur Laufzeit (schnell testen, Python/PHP).
  10. Syntax = Regeln/Grammatik → Compiler meckert (fehlendes ;). Semantik = Bedeutung → Programm läuft, macht aber Falsches.
  11. int / int schneidet ab: 9 / 5 = 1, 7 / 2 = 3. Mit 7.0 / 2 = 3.5.
  12. = ist Zuweisung, == ist Vergleich. if (x = 5) ist ein Bug.
  13. „mehr als 5" → > 5 · „ab 18" → >= 18 · „unter 12" → < 12.
  14. Kommazahlen mit Punkt (1.25). Geld → double, Stückzahl → int, Text → string.

1 · Software-Arten & Make or Buy

Systemsoftware ermöglicht die Nutzung des Computers und der Peripherie (Betriebssystem, Treiber).
Anwendungssoftware löst konkrete berufliche/private Aufgaben (Word, Browser, DATEV).
BenutzerAnwendungenArtBeispiel
VieleVieleStandardsoftwareWord, Excel, Chrome, WhatsApp
VieleEine/WenigeBranchensoftwareDATEV (Steuerberater), Arztpraxis-Software, Werkstatt-Warenwirtschaft
Einer/WenigeEine/WenigeIndividualsoftwareSpeziell 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

MerkmalFrageTeilmerkmale
FunktionalitätKann sie, was sie soll?Angemessenheit, Richtigkeit, Interoperabilität, Sicherheit, Ordnungsmäßigkeit
ZuverlässigkeitLäuft sie stabil, auch bei Fehlern?Reife, Fehlertoleranz, Wiederherstellbarkeit
BenutzbarkeitIst sie leicht bedienbar?Verständlichkeit, Erlernbarkeit, Bedienbarkeit, Attraktivität
EffizienzSchnell und sparsam?Zeitverhalten, Verbrauchsverhalten (CPU, RAM)
ÄnderbarkeitLeicht anpassbar/wartbar?Analysierbarkeit, Modifizierbarkeit, Stabilität, Testbarkeit
ÜbertragbarkeitLäuft sie woanders?Anpassbarkeit, Installierbarkeit, Koexistenz, Austauschbarkeit
Probe-Ex Lösung:
  • 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
Typische weitere: Absturz ohne Datenverlust → Z · läuft auf Windows und Linux → Ü · Bug schnell auffindbar/behebbar → Ä.

3 · Prinzipien der Softwareentwicklung

PrinzipBeschreibung
StrukturierungSoftware wird übersichtlich und hierarchisch gegliedert (z. B. Top-down: vom Groben ins Feine). Erhöht Lesbarkeit und Verständlichkeit.
ModularisierungZerlegung in abgeschlossene, möglichst unabhängige Module mit klar definierten Schnittstellen. Module sind einzeln entwickel-, test- und austauschbar.
MehrfachverwendungBereits vorhandene, getestete Komponenten (Funktionen, Bibliotheken) werden wiederverwendet. Spart Zeit und Kosten, senkt Fehlerquote.
StandardisierungEinheitliche Regeln und Normen: Namenskonventionen, Dokumentation, Notationen (z. B. UML), Programmierrichtlinien. Erleichtert Teamarbeit und Wartung.

4 · Software-Lizenzen

LizenzKostenQuellcodeVerändernKern
ProprietäregalzuneinHersteller behält alle Rechte; Kopie/Weitergabe nur mit seiner Zustimmung
Kommerziellkostetmeist zumeist neinwird gegen Geld vertrieben (Gewinnabsicht)
Freewaregratiszuneinkostenlos nutzen, Urheber behält Rechte
Sharewareerst gratiszuneinTestversion (zeit-/funktionsbegrenzt), danach zahlen
Freie Softwaredarf kostenoffenja4 Freiheiten: nutzen, studieren, verändern, weitergeben (GNU GPL, oft Copyleft)
Open Sourcemeist gratisoffenjaQuellcode offen, Änderung/Weitergabe erlaubt (MIT, Apache, GPL); praktischer Fokus
Halbfreiprivat gratisoffenja, aberNutzen/Ändern/Weitergeben erlaubt, aber nicht kommerziell
Public DomaingratisegaljaUrheber 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."

Richtig/Falsch-Aufgabe (Lösung):
  1. Halbfrei hat nur kostenlose Versionen, keine kostenpflichtigen → falsch (Einschränkung ist „nicht kommerziell", für kommerzielle Nutzung gibt es oft eine Bezahl-Lizenz)
  2. Proprietär nur mit Zustimmung des Herstellers vervielfältigen/verbreiten → korrekt
  3. Freie Software und Freeware sind dasselbe → falsch
  4. Freeware darf verändert werden → falsch (nur kostenlos nutzen)
  5. Open Source hat keinen sichtbaren Quellcode → falsch (genau das Gegenteil)
  6. Anbieter dürfen für Freeware Geld verlangen → falsch (Freeware ist per Definition kostenlos; nur Freie Software darf kosten)
Lehrer-Fall (Musterantwort): Freie Software garantiert ausdrücklich die Freiheit, den Quellcode zu studieren, zu verändern und veränderte Versionen weiterzugeben. Die Anpassung durch andere Schulen ist also genau der Zweck der Lizenz, kein Missbrauch. Besser geeignet wäre Freeware: kostenlos, aber der Quellcode bleibt geschlossen und darf nicht verändert werden, die Kontrolle bleibt beim Lehrer.

5 · Vorgehensmodelle

VorteileNachteile
+ 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
klassischagil iterativ ↑sequenziell ↓ V-Modell Wasserfall Spiralmodell RUP Scrum XP Kanban
Wasserfallmodell klassisch · sequenziell
Linear von oben nach unten: Anforderungsanalyse → Entwurf → Implementierung → Test → Betrieb/Wartung. Das Ergebnis einer Phase ist Input der nächsten, Rücksprung nur zur vorherigen Phase.
+ einfach, gut planbar, gut dokumentiert · − unflexibel, Fehler werden spät entdeckt
V-Modell klassisch · sequenziell
Erweiterung des Wasserfalls um Qualitätssicherung. Links Spezifikationsphasen (absteigend), unten Implementierung, rechts Testphasen (aufsteigend). Jede Testphase prüft die gegenüberliegende Phase anhand vorher festgelegter Testfälle:
Links (Spezifikation)Rechts (Test)
AnforderungsanalyseAbnahmetest
SystementwurfSystemtest
ArchitekturentwurfIntegrationstest
ModulentwurfModultest (Unit-Test)
+ hohe Qualität, Tests früh geplant · − starr, viel Dokumentation · Einsatz: Behörden, sicherheitskritisch (V-Modell XT).
Spiralmodell iterativ · risikogetrieben
Von Barry Boehm. Das Projekt durchläuft mehrere Runden (Spiralen), jede mit 4 Schritten:
  1. Ziele, Rahmenbedingungen und Alternativen festlegen
  2. Risikoanalyse und Bewertung der Alternativen
  3. Entwicklung und Test (Prototyp)
  4. Planung der nächsten Runde
+ Risiken früh erkannt, flexibel · − aufwendig, eher für große Projekte
RUP (Rational Unified Process) Mitte
Iterativ-inkrementell, 4 Phasen: Konzeption (Inception) → Entwurf (Elaboration) → Konstruktion (Construction) → Übergabe (Transition). In jeder Phase laufen Disziplinen (Anforderungen, Design, Implementierung, Test) parallel mit unterschiedlicher Intensität. Nutzt stark UML.
Scrum agil · iterativ
Rollen: Product Owner (priorisiert Product Backlog, vertritt Kunden), Scrum Master (Coach, räumt Hindernisse weg), Developers (selbstorganisiertes Team).
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
Fokus auf Programmierpraktiken: Pair Programming, Test-Driven Development (erst Test, dann Code), kurze Releases, Continuous Integration, Refactoring, Kunde vor Ort.
Kanban agil · am iterativsten
Visualisierung auf einem Board (To Do · Doing · Done). WIP-Limits begrenzen gleichzeitig laufende Aufgaben, Pull-Prinzip, kontinuierlicher Fluss ohne feste Iterationen.
Agiles Manifest (4 Werte)
  1. Individuen und Interaktionen über Prozesse und Werkzeuge
  2. Funktionierende Software über umfassende Dokumentation
  3. Zusammenarbeit mit dem Kunden über Vertragsverhandlung
  4. Reagieren auf Veränderung über Befolgen eines Plans

6 · Vom Code zur Maschinensprache

Compiler: übersetzt die gesamte Quellsprache vor der Ausführung in eine Zielsprache (Maschinencode).
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.
CompilerInterpreter
+ 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++, PascalPHP, Perl, Python, Ruby, BASIC

Mischform: Java/C# → Bytecode + JIT-Compiler.

Phasen eines Compilers:
  1. Lexikalische Analyse: Quelltext → Tokens (z = 10 * x + y; → id, op, literal …)
  2. Syntaktische Analyse: Tokens → Syntaxbaum (stimmt die Grammatik?)
  3. Semantische Analyse: Typen prüfen, Symboltabelle (z. B. int → double umwandeln)
  4. Optimierung und Codeerzeugung
Assembler: übersetzt Assemblercode (maschinennahe Sprache) in Maschinensprache (Binärcode). Sehr nah an der Prozessorarchitektur, effizient, aber an einen Computer-Typ gebunden. Manche Compiler erzeugen erst Assemblercode und rufen dann den Assembler auf.

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; erspart std::
  • int main() { } Startpunkt, läuft von oben nach unten
  • cout << Pfeile zum Bildschirm · cin >> Pfeile in die Variable · endl = Zeilenumbruch
  • Text in "…" wird wörtlich ausgegeben, ohne Anführungszeichen der Inhalt der Variable
  • cin >> name liest nur bis zum Leerzeichen („Max Mustermann" → „Max")
TypInhaltBitByte
booltrue (1) / false (0)81
shortGanzzahl −32.768 bis 32.767162
intGanzzahl ca. ±2,1 Mrd.324
long longGanzzahl ca. ±9,2 Trillionen648
floatKommazahl324
doubleKommazahl, doppelt genau648
charein Zeichen (ASCII), 'a'81
stringZeichenkette, "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.

Rechnen: + - * / 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

VergleichLogisch
==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!

Typische Fallen
  • 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, dann else)
  • Strings mit == vergleichen geht bei string: 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?

  1. Zeile 2: ; fehlt nach std → Syntax
  2. Zeile 5: int für 7.50 → wird zu 7 abgeschnitten → Semantik (richtig: double)
  3. Zeile 6: cout >> → Syntax (richtig: <<)
  4. Zeile 7: = statt == → kompiliert, ist aber immer wahr → Semantik
  5. Zeile 8: ; fehlt nach endl → Syntax
  1. Ausgabe „Addition", gerechnet wird Subtraktion → Semantik
  2. a / b bei int → Ergebnis abgeschnitten (7/2 = 3) → Semantik, für Kommaergebnis double nutzen
  3. Keine Prüfung auf b == 0 → Absturz bei Division durch 0 → mit if (b != 0) absichern
  1. Reihenfolge falsch: Wer 8 ist, ist auch < 18 → bekommt 7 € statt 5 €. Erst < 12 prüfen → Semantik
  2. Bei „ab 18" wäre > 18 falsch, weil 18-Jährige rausfallen. Richtig >= 18 bzw. einfach else

11 · Karteikarten antippen zum Umdrehen

12 · Quiz

0 / 0
↑