Das ist ein sehr umfassendes Thema... Also grobe Einteilung ist mal zuerst die Planungsphase und danach die Entwicklungsphase. Was die Entwicklungsphase ist, wird wohl klar sein, da codet man dann

Die Planungsphase ist, je nachdem wie groß das Projket werden soll, unterschiedlich umfangreich. Für ein "Kleinstprogramm" (z.B. ein Programm, dass dir DM in € umrechnet oder so) braucht man so gut wie keine Planungsphase, da reicht es, wenn man sich das ne halbe Stunde überlegt und dann kann man gleich loscoden. Wenn das Projekt ein "kleines Projekt" ist (z.B. ein Programm, mit dem man seine Berge von CDs zu Hause verwaltet), sollte auf jeden Fall am Ende ein Klassendiagramm (UML?) dastehen. Dazu muss man sich natürlich erst mal darüber klar werden, was soll das Programm alles können etc. Das muss vorher feststehen. Bei einem Großprojekt (z.B. die Personalverwaltung von einem großen Konzern) muss man exterm Zeit darin investieren, herauszufinden, was das Programm alles können muss. Das schließt eine Menge Gespräche mit dem Kunden (der das Programm am Ende nutzt) ein und muss alles sehr wohl durchdacht sein. Da fallen dann auch mehr Diagramme an, als nur das Klassendiagramm. Zu diesem Thema gibt es dann aber unter Garantie Bücher (ich kenn jetzt aber keins).
Generell muss man natürlich iummer an die Dokumentation denken (in erster Linie die Doku für den Programmierer; z.B.
PasDoc) und dass man Schnittstellen schafft, mithilfe denen man das Programmm nachher möglichst leicht erweitern kann (auf jeden Fall eine klare Objektstruktur (Vererbung!) und evtl. externe Schnittstellen zum Anbinden von z.B. DLLs).
Außerdem sollte natürlich immer, wenn irgendwo irgendwas gespeichert wird (z.B. in XML-Dtaeien oder in ner DB) diese auch dokumentiert und sorgfältig aufgebaut sein (ergibt dann auch sowas ähmliches wie ein Klassendigramm, nur eben mit "Datensatztypen" in der DB o.Ä.).
Das ist momentan alles was mir so einfällt...
MrSaint
EDIT: was ich noch vergessen habe: Vor der Entwicklungsphase sollte man sich einen Coding-Styleguide zusammenschreiben und sich auch immer daran halten. Weil nunmal jeder anders programmiert, müsste sich ein anderer nur den Styleguide neben hin legen und dann sollte er das Programm einigermaßen lesen können. In so einen Styleguide gehört zum Beispiel die ungarische Notation rein und dass alle Variablen aussagekräftige Namen haben müssen etc.
Andrew S. Tanenbaum - Modern Operating Systems