アジャイル開発プロセス 森口朋広
ウォーターフォール 問題点 要求 分析 設計 テスト 運用 ・ 実際は頻繁に起きる手戻りについて 考慮されていない ・ 最終工程にならないと 考慮されていない ・ 最終工程にならないと ユーザーが実際に動作するシステムを 確認できない 要求 仕様を初期に固める 分析 設計 各工程ごとにレビュー コーディ ング 手戻りは御法度 テスト ユーザーが確認できるのはこの辺り 運用
基本的に変更のないソフトウェア開発はない -> 変更を前提とした開発手法をとれば良い アジャイル開発プロセス
アジャイル開発プロセス 短いサイクルを ・・・ 繰り返す イテレーション 計画 設計・テスト 実装 リファクタリング 受け入れテスト リリース 回顧
アジャイル開発プロセス アジャイル宣言 ・ 包括的なドキュメントよりも、動作するソフトウェア ・ 契約交渉よりも、顧客との協調 ・ プロセスやツールよりも、個人と相互作用 ・ 包括的なドキュメントよりも、動作するソフトウェア ・ 契約交渉よりも、顧客との協調 ・ 計画に従うよりも、変化への対応
アジャイル開発プロセス 問題点 従来の一括請負形式では契約が難しい 解決策 契約にスコープを可変にすることを明記
アジャイル開発プロセス 種類 - eXtreme Programming (XP) - Scrum - Crystal - Feature Driven Development (FDD) - Adaptive Software Development Ecosystem (ASDE) - Dynamic Systems Development Method (DSDM) - Lean Software Development (LSD) - Executable and Translatable UML (xtUML)
XP XP (eXtreme Programming) 開発チームが共有すべき4つの価値 ・コミュニケーション(communication) ・シンプル(simplicity) ・フィードバック(feedback) ・勇気(courage)
XP プラクティス 共通の語彙(Common vocabulary) オープンな作業空間(Open workspace) 回顧(Retrospectives) ペア・プログラミング(Pair programming) リファクタリング(Refactoring) テスト駆動開発(TDD: Test Driven Development) 集団的な所有権(Collective ownership) 継続的なインテグレーション(Continuous integration) YAGNI(You Aren't Going to Need It!) 責任の受入れ(Accepted responsibility) 援護(Air cover) 四半期ごとのレビュー(Quarterly review) ミラー(Mirror) 最適ペース(Sustainable pace) ストーリー伝達(Story telling) リリース計画(Release planning) 受入れテスト(Acceptance testing)
今すぐにでも導入可能なプラクティス テスト駆動開発 利点 テストプログラム作成 テストに成功するように 単体プログラム作成 リファクタリング ・ 自分がどんなプログラムを作るべきかがよく分かる ・ 早期にバグが見つかる ・ 後工程からの手戻りが減る ・ リファクタリングできる ・ 品質に対する安心感とテストをパスする達成感が得られる ※頻繁に行う為、テストは自動化する テストプログラム作成 テストに成功するように 単体プログラム作成 リファクタリング
今すぐにでも導入可能なプラクティス リファクタリング 外部から見た振る舞いを保ったまま、内部の処理コードを改善していく手法 外部から見た振る舞いを保ったまま、内部の処理コードを改善していく手法 ・ 複雑なコードをシンプルに ・ 重複コードをまとめる ・ 分かりにくいメソッド名などを分かりやすく 利点 ・ コードの管理、修正が容易になる
結論 アジャイル開発プロセスはソフトウェア開発事情に合った開発手法である。 プラクティスの中には今部分的に取り入れても効果的なものがある。アジャイル開発プロセスの習得を見据え、徐々に取り入れてみてはどうか。