Systemnahe Programmierung in Chome Systemnahe Programmierung in C: Der gute Entwickler Prof. Dr. Uwe Schmidt FH Wedel

Der gute Entwickler

weiter

weiter

oder der Software--Ingenieur

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
weiter
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
weiter
merke
beginnt mit der Programmierung erst dann, wenn die Problembeschreibung und die Benutzerschnittstelle fertig und vom Auftraggeber abgesegnet sind
weiter
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
weiter
Korrektheit
schreibt die schwächsten Vor- und die stärksten Nachbedingungen
weiter
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
  • ...
weiter
Wartbarkeit
scheut sich nicht, schlechten Code wegzuwerfen und die Funktionalität neu und sauber zu implementieren
weiter
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
weiter
Wiederverwendbarkeit
schreibt wiederverwendbare Software, sogar dann, wenn noch keine Wiederverwendung in Sicht ist
weiter
gut
dies führt auch zu sauberen und einfachen Schnittstellen
weiter
Effizienz
versteht etwas von Algorithmenanalyse.

Wenn ein Algorithmus langsamer als O(n log n) arbeitet, gibt es einen schnelleren?

weiter
Werkzeuge
sucht nach Werkzeugen, deren Einsatz die Lösung vereinfachen
weiter
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
weiter
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
weiter
merke
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.
weiter
gut

Letzte Änderung: 09.11.2009
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel