Warum gilt die Implementierung als „Herzstück“ der Softwareentwicklung? (S.6)
Weil ohne Codierung keine lauffähige Software entsteht, auch wenn sie nur einen Teil der Gesamtkosten ausmacht.
Welche Phasen der Softwareentwicklung gibt es nach dem klassischen Modell? (S.6)
Analyse/ Spezifikation/ Grobentwurf/ Feinentwurf/ Codierung/ Integration, Test, Abnahme/ Betrieb und Wartung.
Was versteht man unter „Programmieren als Handwerkskunst“? (S.8)
Programmieren hängt von individuellem Können, Detailgenauigkeit und Werkzeugnutzung ab und erfordert Erfahrung, Materialkenntnis und Theorie.
Hier geht es um Technik, Regeln und Disziplin.
Man muss sauberen Code schreiben, Standards einhalten, strukturieren, testen, dokumentieren.
Hier geht es um Kreativität und Problemlösung.
Softwareentwicklung bedeutet oft, neue Lösungen zu entwerfen, für die es keine fertigen Rezepte gibt.
Was ist der Werkstoff in der Implementierung? (S.9)
Die Programmiersprache, die Entwickler:innen zur Erstellung des Programms einsetzen.
Warum beeinflusst der Werkstoff die Qualität? (S.9)
Sprachmerkmale wie Syntax, Typsystem, Speicherverwaltung oder Ausnahmebehandlung
-> Haltbarkeit und Qualität der Software prägen.
Welche wünschenswerten Eigenschaften sollte eine Programmiersprache haben? (S.10)
Modulstrukturen/ Trennung von Schnittstelle und Implementierung/ Typsystem und Typprüfung/ Lesbare Syntax/ Automatische Speicherverwaltung/ Ausnahmebehandlung.
Übung: Für welche Programmiersprache würden Sie den Tankautomaten T-3000 implementieren? (S.11)
Frei wählbar, Begründung anhand Kriterien wie Stabilität, Performance, Wartbarkeit, Tool-Support.
Warum sind Abhängigkeiten (in einer Programmiersprache) wichtig? (S.12)
Bibliotheken und Frameworks beeinflussen Qualität und Sicherheit des Gesamtsystems stark.
Worauf sollte man bei der Auswahl von Bibliotheken achten? (S.12)
Seriosität des Anbieters/ Vertrauenswürdigkeit des Distributionskanals/ langfristige Wartung.
Was ist der Unterschied zwischen Übersetzungs- und Laufzeitabhängigkeiten? (S.13)
Compile-Time-Dependencies werden nur zur Übersetzung gebraucht, Runtime-Dependencies zur Ausführung.
Übersetzungsabhängigkeit = “brauche ich zum Kompilieren”.
Laufzeitabhängigkeit = “brauche ich erst beim Ausführen”.
Warum sollte man keine Laufzeitabhängigkeit/ Compile-Time-Dependencies mit ausliefern? (S.13)
Sie sind für die Laufzeit unnötig und blähen das System auf.
Was ist ein Lieferkettenangriff? (S.14)
Manipulation von Bibliotheken oder Distribution, sodass Schadcode unbemerkt in die Software gelangt.
Was macht das gezeigte C-Programm straln/stralign? (S.16)
Es richtet einen String links, rechts oder zentriert in einem Zielpuffer der angegebenen Länge aus.
Was ist Egoless Programming? (S.17)
Ansatz, Programmierung als Teamaufgabe zu sehen, um objektive Bewertung zu sichern und persönliche Identifikation zu reduzieren.
Was sind Styleguides? (S.18)
Richtlinien zur Codegestaltung, Namensgebung, Schnittstellen und Dokumentation, um Lesbarkeit im Team zu verbessern.
Was ist der Nutzen von Styleguides? (S.18)
Erhöhen Lesbarkeit, Konsistenz, Wartbarkeit und reduzieren Missverständnisse im Team.
Nenne Beispiele für Styleguides. (S.21)
Java Code Conventions/ Mozilla Coding Style Guide/ Linux Kernel Coding Style/ Ada95 Quality and Style Guide.
Welche Grundsätze zur Kommentierung nennt der Ada-Styleguide? (S.22)
Code so klar wie möglich/ keine redundanten Infos/ präzise und vollständige Kommentare/ korrekte Sprache/ visuell unterscheidbar/ strukturierte Header.
Was kritisierte Dijkstra 1968 mit „goto considered harmful“? (S.24)
Die unübersichtliche und fehleranfällige Verwendung von GOTO-Anweisungen.
Warum sollte man „Don’t be too clever“ beachten? (S.25)
Trickreiche Lösungen sind schwer nachvollziehbar und mindern Wartbarkeit.
Was bedeutet „Avoid null-then, avoid then-if“? (S.27)
Avoid null-then, avoid then-if“ heißt:
Keine leeren if-Zweige ohne Kommentar.
Statt verschachtelten if lieber else if verwenden.
Ziel: Lesbarkeit und Verständlichkeit des Codes verbessern
Warum sollte man tiefe Schachtelungen vermeiden? (S.28)
Sie verschlechtern Verständlichkeit und Testbarkeit → stattdessen Code aufteilen oder frühzeitig zurückkehren.
Was sind Seiteneffekte und warum vermeiden? (S.29)
Seiteneffekte sind Effekte, die nicht an dem Ort sichtbar werden, an dem sie versucht werden.
Der betreffende Code ist dadurch nicht mehr lokal beschränkt.
Dies schränkt die Verständlichkeit erheblich ein und macht die Wartung fehleranfälliger
Warum sollte man nicht vorschnell optimieren („Don’t suboptimize“)? (S.30–31)
Frühes Tuning senkt Lesbarkeit/ ohne Messung oft sinnlos/ besser Profiling und gezielte Optimierung.
Warum sind Methoden mit mehr als fünf Parametern problematisch? (S.32)
Hinweis auf schlechtes Design, mangelnde Kapselung → Daten besser bündeln.
Wie sollte man logische Aussagen gestalten? (S.33)
Positiv formulieren (TRUE für aktiven Fall)/ Negationen vermeiden.
Warum sollen Text- und Zahlenliterale ausgelagert werden? (S.34)
Bessere Wartbarkeit und Auffindbarkeit, aber Übertreibung vermeiden.
Wiederholung: Welche Werkstoffe nutzen wir in der Softwareentwicklung und warum? (S.36)
Programmiersprachen als Hauptwerkstoff → beeinflussen Qualität und Haltbarkeit.
Wiederholung: Welchen Vorteil und Nachteil haben Bibliotheken? (S.36)
Vorteil: Funktionalität/ Zeitersparnis/ Nachteil: Abhängigkeiten/ Sicherheitsrisiken.
Wiederholung: Welche Qualitätsaspekte können durch Styleguides verbessert werden? (S.36)
Lesbarkeit/ Konsistenz/ Wartbarkeit/ Zusammenarbeit.
Wiederholung: Welche Kommentierungsregel wird im Code `// increment i by one i++` verletzt? (S.36)
Keine redundanten Kommentare schreiben.
Last changeda month ago