masayuki5160's diary

滋賀県大津市に住むソフトウェアエンジニアの日常

"正しい"設計って誰が決めるの? ━ ソフトウェア工学チャンネル

今回もChatGPTが出してきたお題の一つである設計に関して、現場でよくある話題として取り上げてみました。なかなかお話しすることが難しいなと思いながらまとめてみましたが、どなたかの参考になれば幸いです。

なお、本記事は以下Youtubeチャンネルの内容をもとに、Geminiに動画の内容をまとめてもらったことを記載しています。

www.youtube.com

現場でよくある議論

現場では、どの設計が良いか決まらない、あるいは要求が整理された段階で「この設計が良いだろう」という議論がよくあります [01:16]。 複数のパターンが考えられる中で、「これしかない」という結論に至ったり、特定の意見が「正しい」とされて他の考慮事項が無視されたりすることもあります [01:48]。

「正しい」設計という考え方

「正しい設計」という議論はよく起こります [02:40]。

しかし、設計は「正しい」「正しくない」という二元論で考えるべきではありません [03:02]。 以前の動画で紹介したアーキテクチャの教科書を参考に、アーキテクチャとは何か、設計のアクティビティ、システムアーキテクチャパターンなどを理解することが重要です [03:18]。

masaytan.com

ある程度の規模のソフトウェアでは、アーキテクチャが与える影響は大きいため、要求や要件、アーキテクチャドライバーを明確にした上で選択肢を検討するべきです [03:53]。

解説

背景として、チームでの議論の中で「この設計が正しい」と思い込んでしまう状況があります [05:20]。 しかし、設計は要件に依存しており、組織構造にも影響されます [05:58]。 そのため、要件を軽視したり、アーキテクチャドライバー(設計上重要な要求)を明確にしないまま設計を進めると問題が発生します [06:38]。 また、チーム内やステークホルダーとのコミュニケーションが不足していると、問題を早期に発見できません [07:21]。

問題点

「正しい」設計に固執すると、チームやステークホルダーとの関係が悪化する可能性があります [08:30]。 また、「あれが良い」「これが良い」という議論に終始して開発が進まないという問題も起こりえます [08:52]。

改善策

  1. 要件とアーキテクチャドライバーの特定: 設計が依存する要件やアーキテクチャドライバーを明確にし、関係者と合意を取ることが重要です [09:28]。
  2. 学習: アーキテクチャの教科書などを参考に、関係者全体でアーキテクチャに関する理解を深めるための勉強会を実施します [10:52]。
  3. 組織としての改善: 長期的には、組織全体でアーキテクチャに関する知識を共有し、プロセスを改善していく必要があります [12:10]。

今すぐ試せるヒント

  • 設計は要件に依存することを再認識する [12:20]。
  • アーキテクチャドライバーを再度見直し、ステークホルダーと議論する [12:47]。

まとめ

「正しい」設計という考え方にとらわれず、要件に基づいて柔軟に設計を検討することが重要です。 チーム全体でアーキテクチャに関する知識を深め、コミュニケーションを密にすることで、より良い設計が可能になります。

 

↓ソフトウェア工学を学ぶ際に参考になる書籍をまとめています

masaytan.com