12/11に行われたVSUGアーキテクトアカデミー Vol.02に行ってきましたので、拙い文章ですがレポートしたいと思います。
アーキテクチャ、ソフトウェア工学、そしてアジャイル
最初のセッションは平鍋さんによるソフトウェアの設計とアーキテクチャに関するお話でした。
セッションの最初に平鍋さんがDear Mr. Architect(弾さんによる翻訳)を朗読し、その内容からソフトウェアの設計が(建築と比べて)なぜ難しいのかを参加者全員で挙げてゆくワークショップを行いました。
こんな感じで「難しい」点を付箋に書いて、グループ分けして張りまくっていきました。
結果として概ね以下の、
-
- コストが分かりにくい
- 修正が容易
- 要求のあいまいさ
- ステースクホルダ(が多い)
- 技術的要因(最新技術と旧技術の同居)
グループに分けられ、一節のジョークからこれだけの要素がでることから、改めてソフトウェア開発の難しさを思い直させられました。
また、この難しさについて人月の神話を引用し*1、ソフトウェア開発の難しさは本質的なものであり、人月の神話が出た20年前から現在に至るまで変わっていないとも語られていました。
次にソフトウェアが本質的に複雑である点をふまえて、設計とは、アーキテクチャとは何かについて議論しました。
平鍋さんの俺俺アーキテクチャ論だそうですが、現実の問題は直接解を求めるには複雑すぎるため、
-
- 現実の問題
↓ 分析 - モデルの問題(分析モデル)
↓ 設計 - モデルの解(設計モデル)
↓ 実装 - 現実の解
- 現実の問題
というプロセスを経る事が分析、設計、実装であると定義されました。(詳細は平鍋さんのブログに分かりやい図が載っていますのでそちらをご覧ください。)
そして、このプロセスを全ての問題に対して一回で解決しようとするのがウォータフォールであり、重要度/リスクの高いものから小分けにして繰り返すのがアジャイルだと述べられ、アジャイルの利点として、
-
- 常に変化している問題に対応できる
- 繰り返す事による学習効果
- 全ての問題を解かなくてよい
- 問題を極小化できる
- 現実のステークスホルダーに早く解を見せれる
といった点が挙げられました。
アジャイルの不安として、小さなイテレーションの積み重ねが本当に全体の問題解決につながるのかという不安が残っているため、小さなイテレーションを回す前の大枠を作る部分がアーキテクチャであるとまとめられました。
最後にソフトウェア工学の複雑さについて、SEMATによるソフトウェア工学の復興に関する説明と*2、ソフトウェア工学をめぐるソシオロジーのモデル図を実際に読み解き、「複雑な問題に対してモデル化をすることは武器の一つになるよ」と、セッションが締められました。
学ぶことがたくさんあったセッションですが、平鍋さんの俺俺アーキテクチャ論の図は非常に分かりやすく、これだけで札幌から来た甲斐があったなと思いました。
後編に続きます