WordPress開発なんかをしていると、本格的なシステムの開発の流れをわすれてしまいそうで、ここいらで復習してみる。

クライアントから提案依頼および RFP(提案依頼書 – システム構成などの要件や保証条件)をいただく。
※ クライアントのみなさまには、RFPがないクライアントは打ち合わせを行う機会が増えるため、その分コストがかかることを覚えておいてください

その後、提案書や御見積を提示し、問題ないようであれば契約書を取り交わし発注をいただく。
契約書には完了した仕事や成果物に対して報酬を支払う請負契約と、依頼した仕事に対しての労働時間に対して報酬を支払う準委任契約がある。

その後、開発に進む。
開発の段階としては下記になる。

  1. 要件定義(要求定義 – 実装範囲の定義)
  2. 基本設計(外部設計 – デザイン)
  3. 詳細設計(内部設計 – プログラミングにおける設計)
  4. プログラミング実装
  5. 単体テスト(モジュールごとのテスト)
  6. 結合テスト(単体テストを組み合わせたテスト)
  7. 総合テスト(結合テストをすべて含めたテストおよび人間操作でのテスト、耐久性・処理速度のテストなど)
  8. 運用テスト(実稼働環境でのテスト)
  9. 公開
  10. 運用・保守

開発方法はウォーターフォール型とアジャイル型がある。
ウォーターフォール型は上記の順番通りに計画的に進めていくため進捗の確認や品質保証が担保しやすいとされる反面、漏れがあった場合の手戻りのリスクやドキュメント管理の難しさ(膨大さ)、動くものを見るのに時間がかかるとされる。
アジャイル型は開発を進めながら1〜4週間程度の期間(イテレーション)で随時変更や修正を行なっていくため、要件が明確に定まっていない案件でも動くものをスピーディーに開発できるとされる反面、全体像を把握しにくいためスケジュール管理が難しいとされる。

WordPressで作る比率の高いWebサイトなんかは、ウォーターフォールが鉄板で1000万を超える大型の案件とかはアジャイルをたまに使うかなって感じ。
でもどちらも型に沿った明確な進め方ではなく、クライアントに合わせて柔軟に対応していくという感じになる。

ちなみにシステムという言葉の語源は、情報工学ではなく、生物学らしい。。