記事一覧

有益なアジャイルモデリングとは【成功する アジャイル 開発#6】 システム開発 スクラム project management sec ipa agile coach kanban アジャイル

YouTube 動画
最近ではモデリングを用いているプロジェクトは少なくなりましたが、アジャイル開発においてアジャイルにモデリングを行うことで、システムとしての全体性を把握しながら、対象となるシステムの特性やリスクの性質などを抽象化した状態で表現し分かりやすくすることができます。 アジャイルモデリングでは作って完成、ではなく、常に更新をしながら何度も作成し直すというそのプロセスの中に価値がありますので、開発メンバーが主体となって積極的に行うべきです。 そうした有益なアジャイルモデリングについて説明をします。 アジャイル開発によってソフトウェア開発プロジェクトの成功確率が向上しました。 しかしその本質を理解
文字起こし

[音楽]成功する味ある開発第6回目はモデリングについて説明をしたいと思います早速ですけれども皆さんモデリングはされてますでしょうかモデリングというとまああまり

アジャイル開発スクラム開発では最近は言われなくなったと思います一時期はアジャイルモデリングという流れが少しあってモデリングはアジャイル開発におけるまっとても子有益なツールなどという流れが少しあったんですけれども最近はそれもあまり言われなくなりました

私はこのモデリングという手法はうまく使えば非常に役に多数有益なツールだと考えていますので今回はそのモデリングについて是非その価値をみなさんがあっ使えるようにしていただければと思います

ここでモデリングアジャイルモデリングというのはまず設計ではありません設計ではありませんなので詳細に鍵キロ表現し切ろうとはしてはいけませんそもそも何のためにモデリングをするのかモデリングのも電話何のやくにたたせるためにするのかと言いますとシステムは価値を出そうと思えば思うほど複雑になり巨大になりますすると

を人間が認識できるレベルをはるかに超えたものになってしまいいい挙動が私たちの予測する範囲を越えてしまって驚かされるということをよく起こりますですので複雑な真央本素敵なところに絞って適度に抽象化したものこれをモデリングとして表現することによって全体性を把握することにフォーカスし

ますですので設計だとやりすぎですで uml でもありませんこの uml というのはモデリングを統一言語としてどんな方法でも汎用的に使えるように統一をしていこうというかなりは野心的な取り組みだったわけですけれども

これらはオブジェクト指向などセットになって用いられることが前提になってますのでシステム全体をとを捉えるかについてはちょっとやりすぎな状態かなとは思います覚えることも多いですし適度に簡素化するというのは難しいですですので umlでもありません

私がいい考えるこのモデリングの中でも大きく分けて3つ3つの種類で構成することでこのモデリングの効果これを最大化することができると思っています

この3つ三角形のように組み合わせてますけれどもそれぞれの頂点をしてんだと思ってくださいその表現方法ですねどこにフォーカスするかどこに重きをおいて表現するのかによって3つに3種類に分類しています1つはユーザー視点からみた場合の要求ですねここには価値だとか損失だとかと言う

このシステムがもたらしたいもの結果ですねここにフォーカスしたものをこれがこの要求になりますここはアジャイル開発まぁ最近のスクラン開発ではユーザーストーリーという形でユーザーストーリーマッピングという

モデリングを行うことが多いと思いますユーザーストーリーマッピングはユーザーストーリー4個つなげて一つのシナリオにしてそして時間軸でどのように価値を提供していくのかユーザーは何を欲しているのか何がしたいのか何を求めているのかというのを

並べることによってそのユーザーが思い描いという世界観というのを開発者含め様々なステークホルダーで共有しましょうというアプローチですけれどもこの要求サイドからしか求めているものを見ないというのは抜け漏れがあった場合あるいは重複があった場合で

もなかなかチェックするというのは難しいですこれがユーザーストーリーマッピングのは弱点でもありそれを補うためにこのシステム支店というのを導入しますここではそのシステムを

構造と降る前に2つの視点二皿に分けて一つは効能という視点からこのユーザーストーリーで出た対象となるものを眺めるという形で表現してみますユーザーストーリーマッピングに出たユーザーストーリー等からですねこの構造となるべく

データなりあるいは処理なりというのを取り出してマッピングしていきます新しくモデルを作るわけですねそれによってそのモデルとこのユーザーマッピングユーザーストーリーマッピングこの2つを比較して矛盾が起こってないかというのを出すんですけれども実は構造上構造として正しくあるべきという形をとっていくと

要求に入っていないとかあれ要求から漏れている重複しているというものが発見できたりしますそうなった場合にこの要求サイドを修正するという形でこのユーザーストーリーマッピングもより良いもの

より正しいものですねにしていくことを目指しますここが構造は時間地区をその中に組み込まずに性的なもですねデータとかあるいは関係そういったものにフォーカスをしますなのでこの構造で中心と r はデータですね情報

それがをがどのように関係しているかどのように処理されるのかといったものを置いていきますので従来のモデルの形でいけばデータフローダイアグラムなのに比較的にたーーーー形になると思います

それに対して今度振る舞いは時間軸というのを導入しますあるいは条件というものを導入します動きを表現するわけですねでシステムというのは往々にして複雑になればあるほどあるいは価値をもたらすがもたらす報道私たち人間を驚かせるような共同をすることがあります

私たち人間では把握しきれないいい捉えきれない僚機デー意外な動きをしてしまう意外な結果をもたらしてしまうそれも大きな影響を与えてしまうというのがシステムのを持っている特性でもありますこれはシステムというのは時間的な遅れを伴う

言えない部分があるとそのそのような挙動を起こすを起こす傾向にあります私たち人間は時間的な遅れが小さければ小さいほど認識しやすいので驚かされることはあまりありません例えば車を運転している場合にハンドルを右に切るとそれに連動するかのように少し

遅れてタイヤが動きますねすると車体がすぐ右に行きますハンドルを切ってからほんの少しの遅れで車体が右に動くわけですねするとそれは認識できますので右に動いたの戻そうと思った場合もすぐに戻せます

ですので私たちは車を運転する際にほとんどへ左右にブレることなく直進できるわけですねこれでも本当に短い時間の中で小刻みにハンドルを左右に動かしている動かしながら調整しているわけですねそれは

一見車がまっすぐ知ってるように見えるんですけれども小さな修正を何度も何度も押しながらまっすぐ向かっているわけですただこれは私たちにとってみるとハンドルを動かしたことを車体が動くことによる時間的なズレがほとんどありませんからですから私たちは驚かないわけですね

しかしそれがもし時間的な遅れが大きかった場合私たちは驚かされることになります例えばもしですけれどもハンドルを切ってから5秒後に車が動くといったような特性があった場合

私たちはそのクルマをコントロールする事は非常に難しくなりますこれが5秒ではなく一日後とかになると尚更驚かされることになりますしかしシステムというのはそういった時間的遅れを伴う所が勝手にできてしまったりあるいは価値としては時間的遅れをわざわざと無理に作ったり

ということを行ったりします例えばへ業務システムならよくありますけど夜間バッチシステムや缶バッチ処理とかを行った場合にはそのバッチ処理がデータを出すのにまあ一番例えば8時間後に出るってなった場合8時間後に出たデータをどう使うのか

ですけれどもそれは逆算すれば8時間前にはその計算で使うためのデータを全部揃えて置かないといけないわけですからその8時間後にどんなデータが出るかを予測して作らなきゃいけないんですねそうで出たデータを見て修正するので遅いのでそうなるとそのシステムが起こす挙動というのは

人を驚かせる要素がそこにあるわけですね存在することになりますそういったものをこの振る舞いという観点からどこにデータを貯めたりあるいは処理をそこで一旦溜め込んだりあるいはある特定の条件下にだけこの上処理が走るとか複数のデータを1つの処理が取り扱う場合にそれは

順次別々で排他的に取り込むのかあるいは両方同時なのかあるいはランダムなのかそういった処理という観点を中心にしてどのような処理がそれぞれあるのかエヴァ動きですねその子っていうのが部分としてどのような動きがあって部分としての

動きを組み合わせるとシステムとしての動きとしてはどのような動きになる可能性があるのかといった時間軸であったりシャリがもたらす動きこの動的な部分を表現するのが振る舞いです

これらは表現しようとすることによってそういうところは何かなと発見しようと試みることになりますですからこの表現方法を要求と構造と振る舞いというそれぞれ違った視点を表現方法として持ちようとすることによって発見する箇所が変わってきます発見する角度が変わってきます

すると今までに単一の表現方法だけでは見つけられなかった本質的な特性というのを見つけやすくなりますしそれによって自分たちが作らないといけないシステムの

本当の勘所重要なポイントあるいは逆に言うと注意しないといけないところ危ないところそういったものも共有することができますですからもリングこれは出来上がった models が重要なのではなくて

このモデリングをしようとしているプロセスこれが重要ですですからメンバー全員が集まってここにあのユーザーが入ってもらってもいいですから今から作ろうとしているシステムにそれぞれの観点からですねエアーじゃないかこうじゃないかと言いながらモデリングテロを行っていくその中で自分たちがわからない知らない部分を質問をし

たりあるいは仮設で返してきたりそういったことをやりながらこのモデリングというのを行いますですからこのモデリングは一回作って終わり

一番初めに一つ作って終わりではなくてですねこのモデリングそらまるのプロセスが重要ですのでその都度更新をかけたり修正をしたりあるいはモデリングてプロセス自体はもう一度行ったりということをしながらこのメンバーカーの中のにある世界観が

そもそも一致しているのかどうかあるいは自分たちが作ろうとするシステムの特性より本質的なところそういったものは本当に大丈夫なのかどうか自分たちが作ろうとしている今の機能がこのあとどういう機能に対して影響を与える可能性があるのか

そういったものを考慮しながら最終的には2押して作るわけですからその部分として作ったものが最後結合された時にどういう振る舞いをする可能性があるのかまで少し頭の中に入れつつ部分を作るということをこのモデリングんを使うことによってそういった視点を広げることができるということスクラムですと特に小さく分割をして

スプリントの中でどんどんリリースしていきましょうということを教え進めていきますと全体性を損なう可能性があります部品としての機能は昨日しているんだけど正しく挙動しているんだけれどもそれらをどんどんインクリメンタルに結合していくと

当初予想予想していた期待していた共同と違う動きをします時にはそれが大きな挙動になって取り返しがつかなくなってしまうそういったことを起こすということも可能性としてはありますですのでモデリングをすることによる役に立つポイントというのは広い視界を持つ

そして多角的な視点を持ち持ち込むことができるそして本質的なところに絞っていっ抽象化ができるというところにありますですのでも電話あジェイドの中では必須ではありませんけれども私は非常に役に立つツール役に立つ

プロセスだと思ってますのでこのモデリングというのをどのタイミングでやるかこれはシステムの特性によりますけれどもできるだけモデリングはハエフェーズで行ってそして定期的に見直せるように

スケジュールんイベントの中に組み込んでおくといいと思います私はこれはレトロスペクティブかあるいはスプリントプランニングかあるいはこの両方館取ってそのスプリントの切ればにやるのもいいですしスプリントの期間中に

図1この中のどれか一つをちょっとやってみるなんていう方法もあると思いますけれども非常に汎用性が高いテクニックですんでこのモデリングというのをぜひ

皆さんの開発の現場でも取り入れてみとりでいられるといいと思います具体的な措置はモデリングのテクニックですねどうすればいいかというのはまた別の機会に説明したいと思いますちょっと具体例が必要になりますのでその具体例とも合わせて説明できればと思います

シェア
X LINE
← 記事一覧に戻る