アジャイル型ソフトウェア開発
目次
アジャイル型ソフトウェア開発
ソフトウェア開発手法であるアジャイルや、アジャイルを実現するための手法である代表的な各プラクティス(手法)についてまとめます。
アジャイルの特徴
・ソフトウェアの開発、要件の対応に短期間で対応する
・顧客要求の変更や機能追加が頻繁に発生するケースなどに採用される
・比較的少人数の開発チームで行われる
・要件ごと、機能ごとの小さな単位で開発からリリースまでのサイクルを反復することで、最終的にシステム全体をつくり上げる
開発のサイクルを繰り返すこと、またはその単位をイテレーションと呼びます。
ウォーターフォールモデルとの比較
アジャイルと対照的な開発手法として、要件定義から開発、運用まで全ての工程を手戻りなく行うウォーターフォールモデルがありますが、こちらは大規模システムなどで従来から採用されている代表的な開発手法となります。
アジャイルの【プラクティス】
プラクティスとは
アジャイル型開発を実現するために用いるチーム運営や開発プロセス、プログラミングなどの手法を指します。
以降、代表的なプラクティスについて紹介します。
スクラム
スクラムとは、3つの役割、3つの作成物、5つのイベントが基本ルールとして定義されており、開発チームをスクラムチームと呼び、成果に向けたコミュニケーションを重視するアジャイル開発のためのフレームワークのことです。
スプリント
スプリントとはスクラムにおける作業期間の単位を表しており、スクラム開発では短い期間のスプリントを繰り返しながら開発が進められます。
3つの役割
プロダクトオーナ | 作成するプロダクトの責任者 スケジュールや予算の管理を行う |
スクラムマスター | スクラムを円滑に推進させるための責任者 スクラムを成功に導くための調整や支援を行う 開発メンバが自立的に協業できるように支援、マネジメントを行う |
開発チーム | 実際に開発を行うメンバ |
3つの作成物
プロダクトバックログ | システムの要求全体と実施すべきタスクとそれらの優先順位を管理するための作成物を一覧にしたもので現在のプロダクトの状況を把握するために利用する |
スプリントバックログ | プロダクトバックログから1つのスプリントごとに当面の作業タスク一覧を抽出されたもの |
インクリメント(増分) | 完成の定義を満たした具体的な成果物(スプリントごとのアウトプット) |
5つのイベント
スプリントプランニング | スプリントで実施するタスクの決定と工数を見積もり、タスクをメンバに割り当てる |
デイリースクラム | 毎朝5~15分程度、チームの状況をメンバ間で共有する(朝会) |
スプリントレビュー | スプリントの成果物をプロダクトオーナへレビューする |
スプリントレトロスペクティブ | スプリントの内容を振り返り、問題点や解決策を洗い出して、次回のスプリントで取り組む課題とする |
プロダクトバックログリファインメント | ※プロダクトバックログアイテムへ詳細、見積り、並び順などを加える |
※プロダクトバックログの1要素のこと
アジャイルコーチ
アジャイルコーチとよばれるポジションは上記の3つの役割では明確に定義されていませんがアジャイル開発導入のために開発メンバへ、アジャイルの概念や思想を根付かせるプロフェッショナルであり、スクラムマスターの役割として含まれる、もしくはスクラムマスターが兼任する場合もあります。
エクストリームプログラミング
エクストリームプログラミング(XP, Extreme Programming)は5つの価値と19のプラクティスでが定められた、アジャイル開発の代表的な手法のことで、
開発にはテスト駆動開発,ペアプログラミング,リファクタリング,コードの共同所有,継続的インテグレーション,YAGNIの手法が存在します。
テスト駆動開発 | 実現したい機能に対して最初にテストを作成し、そのテストが正しく動作するように実装を洗練していく手法 |
ペアプログラミング | 品質向上やメンバの知識の共有のため2人1組のペアでプログラミングを行うこと |
リファクタリング | 開発効率や保守生産性向上のためプログラムの外部から見た機能は変えずに、ソースコードの改善や内部構造の整理を行うこと |
コードの共同所有 | 開発コードに対してすべてのメンバが権限と責任を持ち、すべてのメンバがコードを変更できる(共有コード) |
継続的インテグレーション(CI) | 多人数の開発チームで頻度の高いプログラムの変更に対してソースコードのビルド、テスト、エラーの通知などを自動化し、ソフトウェア品質の向上、バグの早期発見を行う手法 |
YAGNI | 「You ain't gonna need it」の略で 機能は実際に必要になるまでは追加しない方がいい。という考え方のこと |
バーンダウンチャート
バーンダウンチャートはアジャイル開発において、タスクの進捗状況をひと目でわかるようにしたグラフです。
完了すべき残りの作業量を縦、時間の経過を横で表し、予定の線(破線)より実績(実線)が下にある状態だと作業が前倒しで進んでおり、その逆の場合は実際の進捗が予定よりも遅れていることを表します。
バーンダウンチャート 例
その他のプラクティス
タスクボード
壁やホワイトボードに各作業進捗状況を表示し、メンバ間で共有する
ニコニコカレンダー
開発メンバ一人ひとりがその日の気分やムードを表現したシールやスタンプ😃などを退社時に貼り付けて全体に共有しメンバの感情を可視化する
ワーキングアグリーメント
チーム内における価値観、ポリシー、具体的な業務のルールを決める取り組みのこと