あらゆる「システム」の挙動は入力と出力だけで説明できる
どんな粒度、どんな用途の「システム」も、挙動は入力と出力だけで説明できます。
プログラムのサブルーチン(function, method, ...)
「引数」と「返り値」で挙動が説明できます。
public String greet (String name){ return "Hello " + name + "!"; }
でも、データ更新したりするでしょ? 入力と出力だけじゃ説明できないじゃない!
このようにシステムを見ると、「状態が更新される」ことも挙動の説明としてする必要があります。
ですが、ここだけをシステムとして見ると… DBへの更新は「出力」の一種と見ることができます。
このシステムは、APIのクライアントと、DB という2種類の外部システムに、出力をするシステムです。
プログラムのサブルーチンの場合も同様です。
class Person { String name; public setName(String name) { this.name = name; } }
このコードは、このようにも捉えられますが
nameはPersonから依存があるだけの別インスタンスなので、このようにも捉えられます。
逆にDBからデータを読むようなシステムは、「入力が2つある」と捉えることができます。