ソフトウェア設計

ソフトウェア設計

変更しやすさのために構造を選ぶこと。層を増やすこと自体は価値ではない。

執筆済 ソフトウェア開発設計

変更しやすさのために構造を選ぶこと。

動くだけなら構造は要らない。 構造が必要になるのは

  • 人が読んで理解する必要がある
  • 後から変更する
  • 複数人で並行して作業する

からで、すべて規模の問題

通底する原則#

原則 内容
関心の分離 別々に変わるものを分ける
高凝集・低結合 中はまとまり、外との依存は少なく
依存の向きを制御する 安定したものに依存する
抽象に依存する 実装の詳細に縛られない

パラダイム#

対立するものではなく、 どちらも「変更の影響範囲を狭める」ための道具

構成#

注意#

設計の議論は目的を見失いやすい。 層を増やすこと自体が価値ではない。 「この変更をするとき、何箇所触るか」で評価する。

参考文献#

  • Robert C. Martin. Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, 2017.
  • Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.
  • David L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM 15(12), 1972. https://doi.org/10.1145/361598.361623
ノート一覧を閉じる