最近、アジャイル方式で開発されたシステムの改修で苦労することがあったので正しいアジャイル方式とはなんぞやという事を私なりの観点を入れて解説していこうと思います。
アジャイルソフトウェア開発とは
実際に動作するプログラムで顧客やプロジェクト関係者との意思疎通、要件定義、設計を行っていく方式。動作するプログラムを確認するため、顧客やプロジェクト管理者としてソフトウェアの運用イメージの共有が容易で、要望変更による手戻りを比較的少なくする。また、意思疎通を重視することから、ドキュメントの数を最小限で済ませることになる。
ドキュメントを書かないということではない
アジャイルでの開発でよくあるトラブルがドキュメントの欠如である。メンテナンス等を行おうにも、どのような設計で製造されたソフトウェアかがドキュメントに残されていないため、ソースコードよりリエンジニアリングするしかなくなる。
決してこれらのドキュメントを書かないというわけではなく、内部的な資料としてだけでもドキュメントは必須である。
大規模システムの開発には使用してはいけない
大規模基幹システムのリプレースを行う際に、業務の全容を把握していない為、アジャイルでの開発を行っているプロジェクトを過去何度か見たことがある。経験から言うとこれは最も愚かな行為に他ならない。各担当者の意思疎通がアジャイル開発での最も重要なファクターとなる。大規模システムとなるとその意思疎通がどうしても困難となる。
その開発自体が無事完了したとしても、将来性や各部署等の業務内容を補填できずに、次回リプレース時に多大な調査工数が必要となる。
好きなコードを書いていいわけではない
当然の事ではあるが、コーディング規約の確定やそれに基づくソースコードレビュー等は必ず行い、プログラマーの好き勝手なコーディング、いわゆるカウボーイコーディングを容認しないようにしておかなくてはいけない。
経験の浅い開発者は使用するべからず
経験の浅い開発者がアジャイルでの開発を行うと、システムに必要な全容が全く見えていないため、必ずと言ってよいほど失敗する。経験が浅い開発者が参画する場合はアジャイル開発は避けるべきである。
顧客、プロジェクトメンバーへの意思疎通には便利
前述の通り顧客がシステムの運用をイメージしやすいのは大きなメリットで、またプロジェクトのメンバー間での意思疎通には本当に便利な手法である。例えば、Webシステムの開発において、顧客がWebシステムの動作とクライアントシステムの動作との違いを認識できていない場合、実際のWebシステムの動作を見て違いを認識することが可能となる。
使い方次第では強力な開発手法
小規模開発で熟練したメンバーが開発を行う際は強力な開発手法となり得て、ドキュメントも少なく、開発工数を大幅に少なくする事も可能なので、悪い面ばかりクローズアップされがちではあるが、正しい方法でのアジャイルソフトウェア開発を行ってみるのも業務的には、顧客、開発会社がお互いWinWinな関係を築ける開発手法です。
機会があれば取り入れてみては如何だろうか?