前編はコチラ
オブジェクト指向設計の原則
次のセッションは小井土さんによる「設計とは」という問いを主題としたセッションでした。
このセッションでは参加者全員に以下の図の○×カードが渡され、セッション中のお題に対して回答、意見を述べて行く形式で進行しました。
*1
主なお題として、
- 要求を完全に理解した場合、設計の結果は常に同じになるか?
- 機能仕様を完全に理解した場合、設計の結果は常に同じになるか?
- ドキュメントを書く事だけが設計か?
- 設計の目的は?
- 良い設計、悪い設計とは?
といった質問がなされ、その中でも特に「設計の目的」については色々意見が分かれ、
- 再利用のため
- コミュニケーション
- 実装可能性
- 明確化
- 変更性
- コストの見積
- リスクヘッジ
といった意見が挙げられました。
自分は(仕様の)明確化、問題解決の手順といった見方でだけ設計をとらえていたので、コミュニケーションやリスクヘッジの為に設計をするというのは全然思いつかず、そういう考え方もあるなーとずっと議論に聞き入ってました。
しかし、この設計に関する議論で大分時間を使ってしまったため、最後はアーキテクチャと品質に関して、
- イベント駆動サービスとバッチ処理サービスでの品質の違い
- ソフトウェアアーキテクチャとは
- 品質特性(非機能要求とは言わない!)
- デザインパターン、パタン・ランゲージ
と行った内容を駆け足で説明してセッション終了という形になりました。
普段はあまり意識せず当たり前の様に使っている「設計」という言葉ですが、このセッションで個人個人が結構違う認識の仕方をしているんだなと気づかされました。
実際の業務でも認識を合わせる為、今回のセッションの様に設計の目的を議論するのは有用だと思います。
全体を通して
全体を通して、「設計とは」「アーキテクチャとは」という問いに対して参加者全員が意見を出し合い議論する事ができたのは初めての経験ですし、そうある事ではないと思うので非常に貴重な体験を出来たかなと感じています。
次回も是非参加したいと思います。
おまけ
実は今回一番印象に残った(インパクトがあった)のは、アーキテクトアカデミー終了後のVSUG Dayライトニングトークで見た、
「F#はメジャー(コード的に)」
「F#はC#に近い(コード的に)」
でした。大爆笑しましたw
*1:裏は赤字で×が描かれてます。なぜか画像がアップできない…