業務と実装を分離できる?

業務に使用するシステムは業務に依存する。備えているが使用しない機能があれば部分的な依存だろうし、ゼロから構築したシステムはほぼ完全に依存していると考えてもいい。

逆に、その業務はシステムに部分的に依存する。例えば営業部門なら、顧客との折衝はシステム上で行わないとか、受注情報を在庫管理部門に伝達するのはシステム上で行ってるとすると、営業部門はその仕事の一部をシステムに依存していると考えられる。

つまり、「業務」と「システム」は相互依存している。

システムはプログラムに依存している。概念上のシステムではない実際に稼動するシステムは処理が記述されたプログラムが動くわけで、その意味で依存していると考えられる。Java界隈でよく語られる「実装の分離」は実装の置換性、つまり概念上のシステムが特定の実装に依存するかどうかの話で、別の概念なことに注意。実装の置換性だって、設計次第だし。既存の言語やフレームワークを使って、そのシステムのために記述されたプログラムを減らすことが出来たとしたら、プログラムへの依存は弱くなると考えてもいいかもしれない。

つまり、「業務」と「プログラムに依存したシステム」は相互依存している。

SI業界では、「WhatとHowを分離できるか」や「業務知識とプログラムを分担できるか」の話は尽きないけど、業務と実装の依存関係を考えると、現状ではちょっと難しいんじゃないかなーと思っています。逆に言うと、依存性を弱めることに成功したら、実現できる可能性も出てくると思います。

今業務知識を専門としてる人は、昔コボラーだったとかである程度プログラムの素養のある人が多いし、その場合は枯れ切った手法、枯れ切った設計に依存したシステムが出来上がるって、よくありますよね。

と、ここまで考えたけど、

業務モデル、システムモデルとそれらの運用っていう2つの観点で見ると、もう少し違った解釈が出来そうな気もする。
思考途中でもTBがんがん飛ばしちゃうけど、ご容赦ください><