初PMで、プロジェクトの要件定義フェーズをEASYにまとめてみた


今回のモデルケース

  • 既存案件のリプレイス案件(API実装のみ) + コンテンツ管理システムの新規案件
  • 既存案件のリプレイスのフロント部分は、別チームが担当
  • コンテンツ管理システムの画面遷移図は、すでに作成済み
  • 体制
    • PM1(中堅), Member2(ベテラン, 若手)
    • 中堅(フルスタック寄, マネジメント初めて)
    • ベテランさん(設計等が強い)
    • 若手さん(プログラマー要員)
  • 初めてのフレームワークを試してみる(Laravel)
  • 初めてのVue.jsを試してみる(SPA→部分Vue)

要件定義フェーズ

大前提

ユーザが幸せになれることを考える!
だけど、提示された要望に対して、すべて鵜呑みにしない!
なぜ、それを実現させたいのか、こだわるのかの理由を聞き出す!

要件定義前に、テンプレート用意する

  • 何を目的としたシステムなのか
  • 何をするシステムなのか
  • そのシステムには、どんな機能があるのか
  • そのシステムは、どんな機器で動くのか
  • どうやって、そのシステムを作っていくのか

要件を聞く時に、意識すること

  • ユーザは、何がしたいのかをしっかり理解する。
  • システムで実現できるのかを考える(あいまいなら汲み取って聞き出す)
  • 聞きながら、プラン立てを考えておく(機能のやるやらないのようなもの)
  • 機能一覧を裏で作りながらやっておくと整理しやすい
  • 何をDB管理、何を定数管理、何をファイル管理などを想定しておくとDB設計時にスムーズ

要件定義のMTGが終わった後に整理/精査する時(MTGした分繰り返す)

  • その要望の可否を検討する。
    • システム的に実現できる?できない?
    • そもそも本当に必要かどうか?
    • (既存システムなら)既存の機能でまかなえないか?
  • その要望は誰が使用するのかを明確にする(工数的には省略したい)
    • アクターの整理をして、やり方(HOW)を決めていく
  • 要望のリアルタイム性を確認する
    • データの鮮度が低いならば、バッチ処理などを提案する

聞き出した要件を元に設計を行い、クライアントと都度MTGを行う

例)

  • メール設計
  • 処理概要設計
  • DB設計
  • プログラム構造設計 などなど

要件定義フェーズで失敗したこと

  • 知識の足りなさの部分で自分からの提案ができなかったこと。(上司から助けてもらった)
  • 設計すべきものが見通せなかった(設計漏れがあった)

大事だけど忘れがちなやつ

  • 新しく人が参画されたときに、最新資料の情報共有(必ずまとめておく)
    • 何がどこにあって、どれが使い捨てで、どっちが正で、、、など
  • 情報が、ゆるがないものは、mdファイルなどにまとめてしまう