« 「データモデリングライブ@渋谷(9/29)」のお知らせ | トップページ | 実装スキルと業務知識を統合するために »

2012.09.17

動くソフトウエアを作る前にアジャイルモデリングを

 アジャイル手法は「俊敏な業務システムを作る手法」なのだろうか。それとも「俊敏に業務システムを作る手法」なのだろうか。「データモデルなきアジャイルの危うさ」でも説明したように、的外れなDB構造の見直しを促す契機をもたらさないとすれば「俊敏な業務システムを作る手法」ではない。DB構造が硬直化した業務システムは、事業の変化・発展に俊敏に追随できないからだ。

 いっぽう、アジャイル手法は「俊敏に業務システムを作る手法」でもなさそうで、その過程は期待に反して鈍重である。アジャイル手法の大きな特徴が、開発対象を小さく切り出して、それ毎に短期のイテレーションを繰り返す点だ。これだけ聞けばいかにも俊敏にコトは運びそうだが、それのどこが鈍重なのか。

 説明しよう。アジャイル手法では「動くソフトウエア」が重要視され、仕様の確立はこれによって駆動されると考える。ところが多くの場合、「動くソフトウエア」は「持ち帰り」で作られる。ユーザとの打ち合わせの「その場」でガリッと作られるのではなく、いったん開発拠点に持ち帰ってプログラミングと自動テストが実施される。その場でやるにせよ、ユーザは半日くらいは待たされるだろう。

 この妙に牧歌的なノリはなんとかならないのだろうか。簡単だ。まず、「動くソフトウエア」に対するこだわりを捨てたらいい。

 どういうことか。「動くソフトウエア」を作るために、ユーザにヒアリングしながら仕様を描き出したはずだ。そこで性急にプログラミングに取り掛かるのではなく、ただちに次の部分のヒアリングに移ればよい。これを繰り返して、契約範囲全体をカバーするまで仕様を描き出す。もちろん「持ち帰り」ではなく、ユーザにヒアリングしている「その場」でホワイトボード上に描き広げる。これを「アジャイルモデリング」と呼ぼう。

 アジャイルモデリングには数々の利点がある。広い範囲を検討できるゆえに、DB構造の見直しの契機がもたらされやすい。また、広い範囲で課題が摺りあわされるために、絵(モデル)の段階でアプリの仕様や業務連係の整合性を確認しやすくなる。以前のモデルと矛盾するようなモデルが何度も描き出され、仕様がその場で見直され深められてゆくからだ(*1)。

 じっさい、狭い範囲を検討している限り、DB構造やアプリの仕様や業務連係について変にごまかしが効くし、漏れや矛盾にも気づきにくい。また始末の悪いことに、狭い範囲の仕様検討はたいしたスキルがなくてもやれてしまう。当人は「小さな部分の仕様を確実に押さえ積み重ねることで、石橋を叩くように慎重かつ無難に進めている」と手ごたえを感じていたりする。

 大事なことは、慎重さや無難さなどではない。「いかに早い段階で、いかに根本的な部分に関して、いかに多くの失敗を重ねられるか」である。なぜなら、その過程で「コレではない何か他のより良い答」を高速に探れるからだ。狭い範囲でいちいち「動くソフトウエア」など用意していたら、揺さぶりの速度と振幅が損なわれる。

 「動くソフトウエアに触れないと、ユーザは仕様を本当の意味で理解できない」という反論があるかもしれない。その意見はまったくもって正しい。ところが当然ながら、その元になった絵が的外れであれば、せっかく作った「動くソフトウエア」も的外れなのだ。だからこそ、「動くソフトウエア」よりも、「的外れであることがユーザにアカラサマにわかるような図」をその場で描き出すことにこだわったほうがいい。それで「そこはおかしい」と指摘されたならその場でどんどん描き直せばいい。「変化を抱擁する」だけでなく、誤解や失敗も両腕いっぱいに抱擁しよう。

 それが「アジャイル手法」なのか「ウォーターフォール」なのか他の何かなのかはどうでもいいが、俊敏に業務システムを作りたいのであれば、アジャイルモデリングから始めてほしい。1回の検討範囲を小さくとりながら、ユーザとの打ち合わせの「その場」でモデルを俊敏に描き広げる。何のためか。早い段階で全体の仕様を揺さぶって、起こり得る変化と誤解と失敗の山を築くためだ。その峨々たる山容を見とどけた後で、「動くソフトウエア」を作ろう。もちろん、「持ち帰り」ではなく「その場」でガリッとだ。

★アジャイルモデリングを体感しよう
データモデリングライブ@渋谷(9/29)


*1.私はここでは「業務モデル(業務フローや業務マニュアル)」、「データモデル」、「機能モデル(UI等の処理仕様)」を合わせて「モデル」と呼んでいる。これらを清書(ドキュメント化)するかどうかは瑣末な問題だが、図面の量が増えてくるとホワイトボード上の絵のままでは管理しきれなくなる。そうなったら、まとめてモデリングツールに登録すればよい。ただし、だからといって最初からモデリングツールを使うべきではない。同じ部分をあえて何度も手書きすることで矛盾が浮き彫りになってくれるし、ホワイトボードの前で身体を大きく使って描くことで創造的になれるからだ。

|

« 「データモデリングライブ@渋谷(9/29)」のお知らせ | トップページ | 実装スキルと業務知識を統合するために »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 動くソフトウエアを作る前にアジャイルモデリングを:

« 「データモデリングライブ@渋谷(9/29)」のお知らせ | トップページ | 実装スキルと業務知識を統合するために »