ソフトウェア設計で層を分ける前に準備しておくこと

ソフトウェア設計についての纏まってない考えについての話です。

設計に関するパターンとかアーキテクチャは、システムのコードを層に分割して、配置することを推奨していますが、それを導入しても結果的に良い方向に進むばかりではないようで、面倒だけが増えてしまったという事もあるようです。

層を分けるということは依存関係を制御するための手段であったりするのですが、もっと本質的な意味では、重要な物を他の重要ではないものと混ざらないように分割して、大事に扱っていくためではないかと考えています。

要するに、層を分ける前に重要な物を高い解像度で認識していないと、何のために層を分割しているかわからなくなるということです。重要なものと重要ではないものに対する解像度を上げたうえで、抽象的な粒度で重要なものを語れるようにならないと、何を守るために層を分けるのかという目的がぼやけてしまうと思います。