Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ロバストネス分析を用いた設計と工数見積もり / rakus-meetup-20210217

Hikaru Sakata
February 17, 2021
1.6k

ロバストネス分析を用いた設計と工数見積もり / rakus-meetup-20210217

Hikaru Sakata

February 17, 2021
Tweet

Transcript

  1. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 自己紹介 • 坂田 光 •

    2013年4月 中小SIer入社 • 電子マネーサービスのWebアプリケーション開発現場に7年 • 2020年7月 ラクス入社 • 楽楽精算開発チーム • 開発チーム内のサブリーダとして、機能開発に従事
  2. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 楽楽精算について • 開発チームの体制 • 3~4名の小規模チーム×3

    • 各チームで並行して機能開発を実施 • ウォーターフォール
  3. #RAKUSMeetup ©2020 RAKUS Co., Ltd. ロバストネス分析とは • ユースケースを設計に落とし込むための作業 • ユースケースを三つの要素で視覚的に表現する(ロバストネス図)

    • ロバスト=堅牢、頑強の意 • ユースケースが十分に堅牢であることを検証する • この図をインプットとして、さらに詳細な分析(詳細設計やクラス図の作成 等)を行う
  4. #RAKUSMeetup ©2020 RAKUS Co., Ltd. ロバストネス分析とは • ロバストネス図を構成する三つの要素 • バウンダリ

    • システムと外部とのインタフェース • 主に画面 • エンティティ • システム内で保持するデータ • 主にデータベース • コントロール • システムが実行する処理 • 主にアクション バウンダリ コントロール エンティティ
  5. #RAKUSMeetup ©2020 RAKUS Co., Ltd. ロバストネス分析とは • 例えば以下のようなユースケースの場合 • ログイン画面でログインを実行

    • サーバ側でユーザ情報テーブルから情報を取得し、ログイン処理を実行 • TOP画面に遷移 ログイン画面 ログイン処理 ユーザ情報テーブル TOP画面
  6. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • 楽楽精算開発チームでは、ロバストネス分析の結果を実装からテストまでの工 数見積もりに活用している •

    作成したロバストネス図に含まれる要素の数を種類ごとに数え上げ、あらかじ め定義しておいた係数をかけて、各工程の工数を算出する • 見積もり用のエクセルテンプレートがあるので、そこに数字を入れるだけで 算出されるようになっている
  7. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • 例えば、以下のようなロバストネス図を作成した場合 ログイン画面 ログイン処理

    ユーザ情報テーブル TOP画面 ユーザ情報更新画面 ユーザ情報更新画面表示 ユーザ情報更新処理 更新完了画面
  8. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • まず三つの要素それぞれを数え上げる ログイン画面 ログイン処理

    ユーザ情報テーブル TOP画面 ユーザ情報更新画面 ユーザ情報更新画面表示 ユーザ情報更新処理 更新完了画面 バウンダリ コントロール エンティティ 4 3 1
  9. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • 数え上げた要素数をテンプレートに入力する バウンダリ コントロール

    エンティティ 4 3 1 すると・・・ 実装 テストコード作成 コードレビュー 2 1 1 (人日) ↑のように工程ごとの工数が算出される
  10. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • 元々用意された計算式に則って算出されるので、改修内容によっては工数が過 少になったり過大になったりする場合もある •

    要素数は少ないが、個々の改修難易度が高い • 要素数は多いが、いくつかの共通処理の改修だけで全ての画面に横展開できる • etc… • そのような場合は、改修難易度や横展開可否などの定性的要因に応じた係数を かけることで、算出される工数を調節可能
  11. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 分析結果から工数を定量的に見積もる • 例えば改修機能の難易度が高く、算出された工数よりも多くかかりそうな場合 バウンダリ コントロール

    エンティティ 難易度 4 3 1 高 すると・・・ 実装 テストコード作成 コードレビュー 4 2 2 (人日) ↑あらかじめ定められた係数をかけて、工 数が上方修正される ←難易度を指定
  12. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 取り組みの実績 見積もり工数 実績工数 相対誤差 (実績-見積もり)/見積もり

    61 53 -0.13 88 102 0.16 42 46 0.10 57 55 -0.04 135 197 0.46 42 62 0.48 • 一部振れ幅の大きい場合も見られるが、概ね±0.2程度の誤差 (過去一年間の主要な機能開発)
  13. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 取り組みの課題 • 難易度や横展開といった定性的要素で補正をかけていく必要があり、この辺り は経験則になる •

    ある程度ベテランの意見が必要になる場合もある • ものによっては補正をかけても明らかに実情とかけ離れた数字が出てくる場合 もある • 改修対象の画面が多い割に、修正自体はサーバサイドの共通処理一か所で済 んでしまう場合等 • このあたりは実情も踏まえて、計算方法や補正の方法を改善していきたい
  14. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 取り組みの効果 • ある程度の課題はあるものの、ロバストネス図を適切に作成できてさえいれば、 誰でも一定の精度で工数見積もりが可能 •

    一定の計算式を元に算出されているので、数字に信頼感があり、チーム内で の合意形成も早い • 「ここの数字の根拠は?」、「ここ盛り過ぎじゃない?」といったやり取り がほとんどなくて済む • 影響範囲が視覚的に把握しやすい • 文章で羅列するよりもわかりやすく、抜け漏れが起こりにくい