Design Doc

これを書くほうがいいという情報を聞いて、どうゆうものかを調べてみた。 多くは、下記の項目を含むみたい。

  1. タイトル このソフトウェアの名称
  2. 著者名 このDocを書いた人
  3. プロジェクトメンバー 開発に参加するメンバー
  4. 目的 このソフトウェアの目的
  5. 要求仕様 要求仕様書、機能仕様書などへのリンク(要求仕様の要点を書く場合もある)SLI,SLO
  6. 背景 このソフトウェアを開発する背景・経緯など
  7. 既存のものとの相違点 既存品があるなら、それとの違いを書く
  8. 関連システム・仕様など 関連システムやその仕様書へのリンク
  9. ハイレベルアーキテクチャ(アーキテクチャ概要) システム全体を俯瞰した構成図など
  10. 各パート(モジュール・クラス)の概要 各パートの概要・責務・目的など
  11. 各パート(モジュール・クラス)の内部仕様・処理フローなど データ構造、アルゴリズムなど
  12. 各パート(モジュール・クラス)の実装場所 ソース・ファイル名、実行形式の名称など
  13. 使用例 モジュールの利用例が分かるサンプルコードなど
  14. セキュリティ仕様・考慮事項など 想定される問題と、その対処方法などについて
  15. 既知の問題 事前に判明している問題・課題などを書く
  16. テスト方案 どういう観点で何をテストすればよいか、どのようにテストすればよいか
  17. 運用方法 運用時のポイント、監視の方法など
  18. 参考文献 参考文献へのリンク
  19. このDocの格納場所 リポジトリのパス、ファイルサーバのパスなど
  20. メモ 設計のヒントや気付いた点、関連情報など何でも
  21. 変更履歴 このDocについて、いつ・誰が・どのような変更をしたのか履歴を記述

想定読者は基本的には他のプログラマであり、誰かに納品するようなものではない。

READMEとの共存

readmeではもう少し実装よりの情報を載せるほうが良いかもしれない。

  • 開発環境
  • デプロイ
  • モニタリング
  • design docへのリンク

amazonの場合

ちょっと古い情報ではあるんだけど、まずプレスリリースを作ってしまうらしい。

  1. 見出し 顧客が商品を理解できるタイトル
  2. 副題 ターゲット層と、彼らのメリットを1行で。
  3. 概要 商品の特徴と利点をまとめる。この段落で全てを理解できるように。
  4. 課題 このプロダクトが解決する課題を説明。
  5. 解決 プロダクトがどのように課題を解決するかを説明。
  6. コメント 自分による紹介コメント(社長のコメント的なもの)。
  7. 使い方 どれくらい使い方が簡単かを説明。
  8. ユーザーからの声 仮想ユーザーからのコメント。
  9. 締め 最後にしめ、次にユーザーがどうすればいいかを示す