最近の言語では、通常、function あるいは procedure と呼ばれるような 機能単位があるので、最低限、その単位で機能、入出力、副作用などを説明する。
ひとつの function/procedure が非常に大きい場合には、 その内部をさらに説明する。 この場合、プログラムの各文を一行一行説明するのではなく、 まとまりとして何をやりたいのかを説明するのが大事である。
手法としては、チャート図、流れ図、疑似コード、 日本語などがあるが、それらの中から問題に適した記法で説明する。
使用や処理手順に即した各々の場合について、 プログラムが正しく動作していることが 他人にも確かめられるような入力データを選ぶこと。
仕様や処理手順によっては種々の場合分けがあるので、 境界条件(条件による場合分けの境目やループを回る回数の別れ目) に注意して、各々のケースについてテストすること。
もし誤りがあれば、プログラムのどの段階において誤ったものであるかを推定し、 その訂正方法を考える。 もしプログラムが正しいと確信するのなら、その根拠を示す。
結果的に見て、仕様/機能、アルゴリズム/解法、 プログラミング手法などについて、 それが適切であったか、改善すべき点はないか。 入力データに関するエラーやデータ構造に関するエラー (配列のあふれなど)のチェックに気を配ったか。
解法を自分で選択した場合は、 与えられた問題および使用した言語に対して、 それが適したものであったか。 またコーディング手法に関して反省すべき点がなかったか。