アジャイル 開 発 事 例 紹 介 ~ 適 応 と 計 画 のバランス~ 株 式 会 社 オージス 総 研 ES4 部 第 3チーム 入 江 茂 喜 1
発 表 内 容 1.プロジェクトの 概 要 (5 分 ) 1.1 システム 化 の 背 景 および 目 的 1.2 プロジェクトの 特 徴 1.3 システム 全 体 概 要 2.プロジェクト 管 理 (10 分 ) 2.1 反 復 型 開 発 ~ 戦 略 と 計 画 ~ 2.2 品 質 管 理 2.3 進 捗 管 理 2.4 メトリクス 3.まとめ(15 分 ) 3.1 プロジェクト 実 績 まとめ 3.2 反 復 開 発 の 効 用 3.3 今 回 の 気 付 き 3.4 今 後 の 課 題 と 展 開 3.5 あれから2 年 2
1.1 システム 化 の 背 景 および 目 的 旧 システムの 老 朽 化 1997 年 に 構 築 し H/W S/W 共 に 老 朽 化 改 造 に 次 ぐ 改 造 で メンテナンスが 大 変 ビジネスニーズとのアンマッチ 業 務 に 合 わなくなってきた 連 携 先 他 システム 再 構 築 に 伴 い I/F 変 更 3
1.1.1 旧 システムの 概 要 PowerBuilder + COBOLで27 万 6 千 ステップのC/S 独 特 な 画 面 で 使 いづらい( 使 い 方 がよくわからない) ドキュメントはCOBOL 部 分 の 詳 細 設 計 書 だけ ラベル? ソートバー? いえ ボタンです 暗 号 のような チェックボックス 担 当 者 Mさんのコメント ボタンを 押 すと 何 が 起 こるか 分 からないので 怖 い い 4
1.3 プロジェクトの 特 徴 旧 システムと 同 等 機 能 を 備 え 業 務 が 滞 りなく 遂 行 可 能 なこと 連 携 他 システムとの 親 和 性 を 向 上 言 語 を 統 一 OSSを 活 用 しWebシステムに 使 い 勝 手 を 向 上 させ スリム 化 したい 連 携 他 システム 開 始 に 絶 対 間 に 合 うこと 一 括 請 負 が 希 望 ( 要 件 ほとんど 固 まってないけど ) 旧 システムは 規 模 から 算 出 すると200 人 月 以 上 スリム 化 するとは 言 え 工 期 は8ヶ は ヶ 月 しかない さらに 機 能 を 向 上 させる 要 件 を 盛 り 込 めるのか? 5
1.4 システム 全 体 概 要 全 面 的 にOSSを 採 用 したJ2EE 3 層 Webシステム フレームワークにOJF(Seasar2) DBMSはPostgreSQL バーコードリーダに 接 続 する 専 用 GUIアプリ クライアント APサーバ DBサーバ フ ラウサ : IE6~7 FireFox GUI: Swing アプリケーション F/W: OJF, JasperReport Web/AP: Apache, Tomcat OS:Red Hat Enterprise Linux DB: PostgreSQL プリンタ サーバ 他 システム 6
2.1 反 復 型 開 発 ~ 戦 略 と 計 画 ~ 使 い 勝 手 を 向 上 させ スリム 化 したい タイムボックスの 反 復 型 開 発 で 何 度 もリリースする 変 更 要 望 を 積 極 的 に 受 け 入 れ 改 良 する 連 携 他 システム 開 始 に 絶 対 間 に 合 うこと ドキュメンテーションは 出 来 る 限 り 減 らす OJFを 活 用 し アーキテクチャだけは 早 期 安 定 させる 一 括 請 負 が 希 望 ( 要 件 ほとんど 固 まってないけど ) 外 部 設 計 完 了 時 に 再 見 積 り 見 積 もったファンクションポイントは 固 定 し 死 守 する 反 復 型 でリスクを 徐 々に 討 ち 取 る 7
2.1.1 開 発 手 法 =UP+アジャイル? 実 際 の プロジェクト 計 画 書 に 書 いた 今 回 の 開 発 手 法 の 説 明 開 発 手 法 は 端 的 に 言 えば UP( 統 一 プロセス)+アジャイル である UPからは プロジェクトの 安 定 性 に 関 する 概 念 を 引 き 継 ぐ アーキテクチャ 中 心 リスク 駆 動 アジャイル 開 発 から プロジェクトの 適 応 性 に 関 する 概 念 を 引 き 継 ぐ プロセスやツールよりも 個 人 との 対 話 を 優 先 包 括 的 なドキュメントよりも 動 作 する 製 品 を 優 先 契 約 の 交 渉 よりも 顧 客 との 協 調 を 優 先 計 画 に 従 うよりも 変 化 への 対 応 を 優 先 そして 中 核 となる 反 復 型 開 発 は 両 者 の 概 念 を 引 き 継 ぐ UPからは インクリメンタルな 反 復 型 プロセス ユーザビリティが 重 要 で 複 雑 な 機 能 を 洗 練 する 反 復 アジャイルからは 反 復 型 でフィーチャ( 機 能 )ベースの 提 供 反 復 ごとに 実 際 に 稼 動 する 機 能 セットを 提 供 する 8
2.1.2 反 復 計 画 時 の 悩 み 要 件 定 義 開 始 から2ヶ 月 強 でリリースしないと いきなり 実 装?いくらアジャイルでも 設 計 が 足 りなすぎる ユースケース 駆 動 は 採 用 してない 何 から 開 発 しよう? UPのような 作 業 分 配 の 概 念 を 適 用 できるか? どうやって? 始 めにWBSで 全 てのタスクを 決 める? そんなお 堅 い 計 画 駆 動 をやってる 時 間 はない 有 名 なUPの 図 でも どうやっ たらこんな 作 業 分 配 を 計 画 で きるの?? 全 反 復 のWBS を 最 初 に 計 画 するの?それ はアジャイル じゃないはず 9
2.1.3 実 際 の 反 復 計 画 反 復 毎 に 完 了 すべきトランザクションファンクション ポイント(TFP)だけを 最 初 に 決 めた 反 復 毎 に ストーリー を 計 画 し 意 味 ある 機 能 のま とまりを 反 復 毎 にリリース( 機 能 毎 の 重 要 度 も 意 識 ) 計 画 した 反 復 毎 TFPに 収 まるのであれば 反 復 間 で 開 発 対 象 機 能 を 入 れ 変 えることも 可 とした 300TFP 292 258 200TFP 設 計 作 業 の 割 合 テスト 作 業 の 割 合 100TFP 70 30 反 復 1 反 復 2 反 復 3 反 復 4 10
2.2 品 質 管 理 単 体 テストは 自 動 テストコードと 機 能 テストを 併 用 OJF TestTool(S2Test)による 回 帰 テストコードを 作 成 単 体 と 言 いつつ 反 復 毎 リリースに 向 けて 結 合 的 なケースも 含 む 結 合 テストは 単 体 テストで 出 来 ないものだけを 実 施 機 能 間 連 携 他 システムI/F シナリオ 性 能 テスト 計 画 実 績 単 体 テストケース 数 530 1,600 UTカバレッジ(C0 基 準 ) 90% 以 上 80% 結 合 テストケース 数 320 400 不 具 合 件 数 ( 1) ( 予 測 せず) 63 障 害 件 数 ( 2) 5 6 前 倒 し さ れ た? 1 結 合 テスト 中 の 不 具 合 2 ST リリース 後 の 顧 客 起 票 障 害 11
2.3 進 捗 管 理 全 体 の 進 捗 管 理 はWBS( 途 中 で 放 置 したが ) 結 局 リリースが 完 了 した 機 能 数 (TPF)だけを 管 理 テスト 時 はテストケース 消 化 数 で 管 理 GDBプロジェクト 反 復 進 捗 700 反 復 1 完 了 (12/10) 70トランサ クションFP 消 化 600 500 400 300 反 復 2 完 了 (1/11) 292トランサ クションFP 消 化 ( 累 計 362 残 288) 反 復 3 予 定 (2/9) 258トランサ クションFP 消 化 残 FP 反 復 毎 計 画 FP 200 100 0 12 トランザクションFP 反 復 4 予 定 (2/29) 30トランサ クションFP 消 化 2007/11/5 2007/11/12 2007/11/19 2007/11/26 2007/12/3 2007/12/10 2007/12/17 2007/12/24 2007/12/31 2008/1/7 2008/1/14 2008/1/21 2008/1/28 2008/2/4 2008/2/11 2008/2/18 2008/2/25 日 付
2.3.1 各 反 復 中 の 進 捗 管 理 バーンダウンチャートで 時 間 単 位 の 予 実 管 理 毎 朝 スクラムミーティング 毎 昼 全 体 ミーティング 500 450 400 350 チームリソース 残 作 業 時 間 迅 速 なリカバリ 工 数 ( 人 時 ) 300 250 200 150 100 50 0 12/12 12/13 12/14 12/17 12/18 12/19 12/20 12/21 12/25 12/26 12/27 1/7 1/8 1/9 1/10 1/11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 日 付 / 日 数 13
2.4 メトリクス(1) OJFの 活 用 で コードは 反 復 1で 一 番 成 長 EntityGenによってDaoやEntityを 一 気 に 自 動 生 成 後 半 完 了 FPは 増 えても コード 生 産 量 は 伸 びない リファクタリングでコードが 減 る コンポーネントも 出 る SLOC 200,000 150,000 100,000 50,000 0 11/1 12/7 1/8 2/13 3/4 4/18 コード 生 産 量 とリリース 完 了 TFPの 成 長 800 700 600 500 400 300 200 100 0 FP コード 量 完 了 FP 14
2.4 メトリクス(2) 反 復 1で 設 計 に 注 力 している 影 響 でテストは 少 ない 後 半 本 体 コードよりテストコードが 成 長 する 最 終 的 にテストコードは 本 体 コードの2/3の 規 模 少 ないかも?OJF TestTool(S2Test)の 生 産 性 が 良 いのは 確 実 300,000 SLOC 250,000 200,000 150,000 100,000 50,000 全 てのコード テストコード 抜 き テストコード 0 11/1 12/7 1/8 2/13 3/4 4/18 テストコードの 成 長 15
3.1 プロジェクト 実 績 まとめ 途 中 で 再 見 積 りし 追 加 費 用 を 頂 く 生 産 性 は 計 画 をかなり 上 回 る JUAS 標 準 開 発 工 期 より30% 短 縮 計 画 JUAS: 日 本 情 報 システ ム ユーザー 協 会 標 準 工 期 : 投 入 人 月 の 立 方 根 の2.4 倍 実 績 売 上 ( 百 万 ) - 計 画 比 110% 利 益 率 (%) - 計 画 比 130% 納 期 (リリース 日 ) 2008 年 6 月 2008 年 6 月 投 入 要 員 ( 人 月 ) 78.5 95.8 CS 満 足 度 4 4 生 産 性 (FP/ 人 月 ) 12.8 15 規 模 ( 有 効 ステッフ 数 ) - 16 万 7 千 16
3.2 反 復 開 発 の 効 用 (1) 反 復 毎 に 小 さな 要 望 を 取 り 込 み 機 能 を 洗 練 する 最 終 的 には 外 部 設 計 時 から 大 幅 に 機 能 が 変 更 ウォーターフォール 型 だったら この 大 変 更 を 一 気 に 取 り 込 むのは 困 難 だっただろうし そもそも 変 更 を 受 け 入 れなかっただろう 小 さくホップステップジャンプ 命 がけの 大 ジャンプ 17
3.2 反 復 開 発 の 効 用 (2) 開 発 作 業 自 体 が 改 善 される ある 作 業 のやり 方 がまずければ 次 の 反 復 で 大 胆 に 見 直 す 顧 客 へリリースするため ビルド& 配 置 データ 移 行 も 改 善 設 計 が 最 適 化 される 最 初 はシンプルに 必 要 に 応 じて 再 設 計 やリファクタリング 前 回 の 反 復 で 捨 てた 設 計 上 のアイデアを 再 度 採 用 することも モチベーションが 向 上 する 1ヶ 月 ごとに 訪 れる ほど 良 い 緊 張 感 と 終 わったあとの 達 成 感 事 実 が 成 功 を 裏 付 けているという 安 心 感 18
3.3 今 回 の 気 付 き 成 功 要 因 を 一 つ 選 ぶとしたら 何 度 もリリース 要 件 設 計 実 装 テスト 移 行 の 全 ての 開 発 作 業 を 繰 り 返 す ただし 最 低 4 回 は 繰 り 返 さないと 効 果 は 薄 い 変 化 ( 適 応 )と 安 定 ( 規 律 )は 両 立 できる 今 回 のブレンド 手 法 が 理 論 的 に 正 しいか 否 かは 分 からないが QMS 外 部 審 査 にもパス 従 来 の 品 質 マネシ メントにも 適 合 は 可 能 反 復 型 では 保 守 性 が 生 産 性 を 左 右 する 開 発 者 が 保 守 性 を 切 実 な 問 題 と 受 け 止 めた 保 守 容 易 性 は 未 来 への 投 資 ではなく 今 の 推 進 力 に 必 須 になる 19
3.4 今 後 の 課 題 と 展 開 お 客 様 の 理 解 を 得 るためは? 反 復 やアジャイル 手 法 への 抵 抗 感 はまだ 強 い 効 果 的 にメリットを 説 明 する 提 案 へ( 保 守 性 向 上 など) CCPMの 適 用 通 常 とは 逆 にメンバーはギリギリの 工 数 見 積 りをしがち プロジェクト 全 体 での 効 果 的 なバッファ 管 理 が 必 要 さらに 大 規 模 さらに 短 納 期 に 応 える 手 法 へ どれだけ 独 立 化 したチームが 作 れるかが 鍵? 横 断 的 に 仕 様 を 調 整 する 専 任 チームが 必 要 か? 20
3.5 あれから2 年 ウォーターフォール 型 開 発 再 び ウォーターフォールは 怖 い 統 合 テストまで 見 つからない 仕 様 ミス 解 決 されないリスク 運 用 しないと 気 付 かないムダな 機 能 真 のユーザ 要 求 アジャイルからの 気 付 き 計 画 に 柔 軟 性 を 取 り 込 むことの 重 要 性 (CCPM) 密 なコミュニケーションの 重 要 性 ( 暗 黙 知 の 活 用 見 える 化 ) アジャイルの 今 大 規 模 開 発 への 適 用 契 約 のあり 方 は 未 だ 模 索 中 検 索 キーパーソンに 聞 くエンタープライズ アジャイルの 現 在 アジャイルへの 誤 解 ( 過 小 or 過 大 評 価 )は 少 なくなりつつある 計 画 駆 動 とアジャイルは 対 立 軸 でない PJごとにカスタマイズが 必 要 など 検 索 アジャイルは 単 に 廃 れつつある 流 行 語 なのか? 適 用 事 例 は 増 えつつあり 徐 々に 市 場 からの 要 請 も 増 えている 検 索 非 ウォーターフォール 型 開 発 に 関 する 調 査 結 果 公 開 RFPにアジャイル 適 用 を 盛 り 込 むユーザ 企 業 も 多 い 日 経 BP 池 上 氏 談 21
補 足 - マスタスケジュール 2007 2008 9 10 11 12 1 2 3 4 5 推 敲 要 件 定 義 外 部 設 計 アーキテクチャ 設 計 構 築 作 成 反 復 1 反 復 2 反 復 3 反 復 4 追 加 開 発 移 行 結 合 テスト システムテスト 移 行 リリース 一 括 契 約 SES 契 約 22