業務システム開発にアジャイルを取り入れる現実的な方法
「アジャイル開発したいんだけど、周り誰も知らなくて無理っぽい…」
「アジャイルって業務システム開発でも使えるの?」
「ウォータフォールは時代遅れ」と言われて久しいですが、多くの業務システム開発はウォータフォールモデルで開発されています。
SE・プログラマーの頑張りでなんとかリリースまで持っていけてるものの、「もっといいやり方があるんじゃないか?」と誰もが考えているかと思います。
私はアジャイル開発をしているベンチャー企業で仕事をしたことがあります。
アジャイルも万能なものではありませんでしたがいい所もたくさんあります!
そんな経験を踏まえて「業務システム開発にアジャイルを取り入れる的方法」を紹介します。
Contents
ウォーターフォールの問題点
ウォーターフォールモデルとは、
- 要件定義
- 基本設計
- 詳細設計
- 実装
- 単体テスト
- 結合テスト
- システムテスト
という順で開発を進める開発プロセスのことですが、これのどこに問題があるでしょうか?
とても合理的に見えますよね。システム開発に必要な工程を必要な順序で行っているわけですから。
問題は「実際の開発は、工程を一直線に進めていくことなどできず、行ったり来たりすること」です。
例えば、詳細設計まで進んだ段階で、新たな要件が見つかったりすることは往々にしてあります。
新たな要件が発見されたことでこれまでに設計が完了していた部分にも変更が必要になる場合があります。
このような手戻りがたくさん発生することが想定されていないことがウォーターフォールモデルの問題なのです。
アジャイル開発プロセスの利点
アジャイル開発プロセスは一言で言えば、ウォーターフォールモデルを進める範囲を小さくして何度も繰り返すというものです。
ウォーターフォールでは開発するシステムの全ての要件定義をして、その後、全ての基本設計をして…と、工程を進めていきますが、アジャイルでは開発するシステム全体の5分の1の要件定義をして、5分の1の基本設計をして…と、小さい範囲でシステムテストまで進めていきます。
こうすることで、詳細設計している段階で新たな要件が見つかったとしても、それが影響するのは5分の1の範囲で済むんです。
小さい範囲で開発を進めることで、手戻りの範囲も小さくするのがアジャイルの利点なのです。
アジャイルを業務システム開発に取り入れるポイント
自社のWebサービスを開発するのであれば、初期リリース時に必要な機能を絞り込んでアジャイル開発することが出来ますが、顧客企業から受注したシステムを開発する場合、まず、顧客がどんなシステムを必要としているか、システムの全体を知る必要があります。
そのため、業務システム開発の場合は、要件定義、基本設計はウォーターフォールモデルで行うのが良いと思います。つまり、開発するシステム全体の要件定義、基本設計をします。
その後の詳細設計以降は範囲を選択して(例えば全体の5分の1)、詳細設計から、システムテストまでを通しで進めていきます。それが終わったら残りの5分の4の中から開発範囲を選択して同じことをしていきます。これを繰り返していくことで徐々に完成したシステムが増えていき、最終的に100%のシステムが完成します。
「アジャイルでやりましょう!」と提案しても通らない場合は
アジャイル開発したからと言って、手戻りが発生しないわけでもないし、完璧な設計が出来るわけでもありませんが、一度に開発するスコープを小さくすることで、手戻り発生時の影響範囲を小さくすることが出来ます。これは大きな進歩です。
よって、業務システム開発にもアジャイルを取り入れるべきですが、なかなか合意が得られない場合があります。
多くの人は変化を嫌います。
多くの人が変化を嫌う理由
人間にはホメオスタシス(恒常性維持機能)があるというのは小学校の理科の授業で習ったかと思います。例えば、真冬の朝、気温が3度しかない中を歩いても、体温は3度にはならず35度から37度の間位になります。外部の環境が変化しても身体(この場合体温)を一定に保つ性質としてホメオスタシスが説明されていましたが、
実はこのホメオスタシスは情報空間(思考、思想、心の中)でも働くそうなのです。
そのため、「アジャイルでやりましょう!」とあなたが提案してもホメオスタシスによって「今のままの方が良い、変えたくない、現状を保ちたい」という力が働いて、「失敗したらどうするんだ?」等と反対をしてくるのです。
ですが、人には現状を保とういう力だけでなく、変えようとする力もあるのです。だから人類は進歩してきたのです。
現状維持を望むか、進歩を望むかは人それぞれです。これを読んでいるあなたは進歩を望む人なはずです。
ならば、あなたが仕事をする相手は進歩を望む人たちであるべきです。
アジャイル好きは進歩的!
アジャイルの利点をしっかりと説明しても受け入れてもられないようであれば、転職して、あなたと同じように進歩を望む人たちのいる会社へ行くべきだと思います。
幸いなことにITエンジニアの需要は高く、常に人手不足なのに加えて、ソフトウェア開発のスキルは汎用性が高く、他社に移っても、ほとんどそのまま使うことが出来ます。
私もそうやって何度も転職して自分に合った職場を見つけることができました。
探してみるといい会社ってホントたくさんあるので、ぜひ探してみてください!