Erweiterbarkeit
|
- verwendet Techniken die zu funktionierenden
Programmen führen
- schreibt Programme die auch dann noch funktionieren,
wenn andere Teile geändert werden
- weiß, dass seine Programme später erweitert werden
und programmiert entsprechend
|
| |
Spezifikation Dokumentation
|
schreibt viel mehr als nur Programme
|
|
- Problembeschreibung: Was soll gemacht werden?
- vorläufiges Benutzerhandbuch: Benutzerschnittstelle
- Programmdoku: Wie arbeitet das Programm?
Datenstrukturen, Algorithmen, Modularisierung,
Schnittstellen
|
| |
|
beginnt mit der Programmierung erst dann,
wenn die Problembeschreibung
und die Benutzerschnittstelle fertig und vom Auftraggeber abgesegnet
sind
|
| |
Design
|
- denkt in Einheiten, wie Modul, Klasse und ADT
- trennt Schnittstellen (header-files) und
Implementierungsteile
- versteckt große Teile der Implementierung
- erkennt die große Bedeutung der Datenstrukturen
- verfeinert die Datenstrukturen schrittweise, bevor
die Algorithmen schrittweise verfeinert werden
|
| |
Korrektheit
|
schreibt die schwächsten Vor- und die
stärksten Nachbedingungen
|
| |
Invarianten
|
verwendet für Invarianten für die Konsistenz
von Datenstrukturen
|
|
- diese Liste enthält immer mindestens ein Element
- diese Liste ist aufsteigend sortiert
- diese Liste enthält keine Duplikate
- ...
|
| |
Wartbarkeit
|
scheut sich nicht, schlechten Code wegzuwerfen
und die Funktionalität neu und sauber zu implementieren
|
| |
Portierbarkeit
|
versteht etwas von Rechnerstrukturen
|
|
- Wechsel: 32-bit int zu 16-bit int
- Wechsel: 32-bit int zu 64-bit int
- Ausrichtung auf byte-, Halbwort- oder Wortgrenze
- Bit 0 : Vorzeichen oder gerade/ungerade Bit
|
| |
Wiederverwendbarkeit
|
schreibt wiederverwendbare Software, sogar dann, wenn noch keine
Wiederverwendung in Sicht ist
|
| |
|
dies führt auch zu sauberen und einfachen Schnittstellen
|
| |
Effizienz
|
versteht etwas von Algorithmenanalyse.
Wenn ein Algorithmus langsamer als O(n log n) arbeitet, gibt es einen
schnelleren?
|
| |
Werkzeuge
|
sucht nach Werkzeugen, deren Einsatz die Lösung vereinfachen
|
| |
Können
|
- versucht durch das Lesen von sehr guten Programmen
noch besser zu werden
- kennt ein gutes kleines Programm,
mit dem die Aufgabe gelöst werden kann
|
| |
Ausbildung
|
versteht nicht nur etwas von Programmierung sondern
auch von
|
|
- Mathematik
- Aussagen- und Prädikatenlogik
- Mengen, Funktionen, Relationen, Graphen
- Datenstrukturen und Algorithmen
- Komplexitätstheorie
- Numerik
- anderen Ingenieurdisziplinen
|
| |
|
Eine fundierte Ausbildung in diesen und anderen Gebieten bietet
viel bessere Voraussetzungen für einen erfolgreichen beruflichen
Werdengang als die detailierte Kenntnisse über die im Moment
sich in Mode befindlichen Complier, Datenbanken, IDEs, CASE-tools,
KI-systeme und Betriebssysteme und deren neuster Versionen.
|
| |
|
|