ソフトウェア設計
ソフトウェア設計文書により、プログラミングを開始する前に制約条件、要求仕様などが明らかとなり、検討される。シミュレーションやプロトタイプの構築によって設計変更となる場合もある。要求分析や計画立案せずに、プログラミングしながら設計することも可能だが、複雑な大規模プロジェクトではそのような工程の省略は選択肢として考慮されないのが普通である。プログラミングの前に設計工程を置くことで、ソフトウェアの対象領域の専門家と設計者がプログラマと共同で作業し、ソフトウェアの利便性と技術的正当性を高めることができる。