Agile開発は先行改善をソフトウェア開発で実現している。
先週、トヨタ自動車の生産調査室(トヨタのDNAを継承・推進している部署)出身で、現在、豊田マネジメント研究所の副社長である熊倉氏とWebイベントで会話したなかで、この事が確信となりました。
先行改善:もの作りの上流で品質を作り込む行為である。
過去・・・現在でも、システム開発において『品質は設計で担保しろ』というような事が言われて、『正しく要求を把握する事』と上流工程での品質を上げる行動が良いとされている風潮があります。
私の経験からすると、要求を正しく出すことは全く困難です。先が分からない中で、正しい要求は出せません。
私が30年前にある基幹系刷新プロジェクトでDOA(データ中心設計)にパターン志向を取り入れたコードジェネレータツールを使用して、受注~製造~出荷までのシステムを5名のチームで3ヶ月で構築し、それをユーザー部門へデモンストレーションを行い、要求仕様を整理しました。従来の紙ベースのヒアリングよりも10倍の要望整理ができ、紙ベースでの使用調整ではユーザーの真の要求を掘り起こせないと感じました。この時期、画面のイメージや画面遷移を端末画面で確認して進めるプロトタイプ・アプローチがありましたが、我々が実践したのは全く違います。生の業務データを扱えるシステムであり、ユーザー部門が承認すれば即リリースできる品質です。
このデモンストレーションに対するユーザー部門の真剣度・自分事度はとても高かったのです。
もう一つ、これも30年間に大手非鉄金属のシステム開発プロセスの棚卸を行いました。
この棚卸は、CASEツール(Computer Aided Software Engineering)を適応するために実施しました。その際に、最終成果物となる各種コードの為に必要なドキュメントは全体の3割程度しかなかったのです。これは正味作業が3割しかないと言えます。
他のドキュメントは組織や関係者の意見調整や誤解・齟齬を軽減するための用途でした。ムダとは言えないでしょうが、付帯作業が圧倒的の多いのです。現在、PCベースでCloud環境で使用できる様々なツールが登場しているので、この付帯作業に代わるものがツール化され、正味を上げる環境が整っています。
前置きが長くなりましたが、要約すると、ユーザーは実際に働くソフトウェアを前にしないと、自分の要求に気づかない、要求を出せない事です。もう一つ、従来手法では圧倒的に正味が少ないです。
私は、アジャイル開発のイテレーション(スプリント)の行為は、従来手法の製造工程とマッピングするのではなく、要求精査&設計工程であると言えます。従来手法に馴染んでいるので、どうしてもソフトウエアを作る(コーディング)は製造に入れたがるし、下流工程に位置付けたがります。
このイテレーション(スプリント)には次の行為と等価なのです。
1.現時点での要求を具現する為の詳細化(スプリント・ミーティング)
2.現時点での要求の具現化(タスク作業)
3.具現化したものでのユーザーとの確認・仕様調整(ユーザー・レビュー)
4.作業・振舞・等 全ての改善(レトロスペクティブ)
上場企業の基幹系刷新プロジェクトをAgile開発で実施した結果、417件の仕様変更が発生しました。
そして、元々のRFPとは全く違ったモノになりました。このプロジェクトで発注元のシステム部長にアジャイル開発を理解していただくために、イテレーション(スプリント)は仕様設計と等価です。
開発チームの技量が優れていれば品質(バグフリー)が担保されています。ですから、必要があればスプリント後にユーザー部門へ提供して新システムの教育にも使用できます。と解説しました。
これまでの内容からアジャイル開発は先行改善であると宣言した意図は分かると思います。
熊倉氏との講演は下記をご覧ください。
https://www.youtube.com/watch?v=RIMsK-DvFoM