システムの開発ではクライアントとの話し合いで全体像を掴み、外部設計においてシステムの実現方法を具体的にまとめた後に細かい設計を行います。この段階はシステム設計と言われており、規模によっては数ヶ月かかることも少なくないようです。設計においてはハードウエアからソフトウエアの実現方法まで幅広く決めていきます。ハードウエアについてはクライアント、サーバ側それぞれにおいてどの程度のハードウエアを利用するのか、また、調達方式はどうするのかなどが話し合われます。
クライアント企業から人が派遣されてくることはなく、開発会社のみで決めていくことが多いようです。ハードウエアとソフトウエアが決まれば実際の流れを設計していきます。この段階では内部設計と呼ばれ、機能別に詳細な設計が行われていきます。例えばデータの入力があり、処理をして出力する全体像があった場合はデータ入力部分について設計をし、処理工程に対してどのようにデータを渡すのか、また、処理工程ではどの処理をどの手順で行うのかをまとめ、出力についてもデータをどう受け取り、何で出力をするのかを決めていく作業となります。
コンポーネントとして設計することが多く、人の割り当ても考慮にいれながら設計してくことが多いようです。内部設計が終わればソフトウエアを作るための設計が行われます。プログラム設計とも言われ、コンポーネントに分けられた内容をソフトウエアにするために細かく設計していきます