読者です 読者をやめる 読者になる 読者になる

IPO(Input Process Output)の発展系IRPSO(Input Reference Process Store Output)で仕様化する

行き着く所はIPO(Input Process Output)を時間が経ってから読み直してみると、自分で違和感を覚えました。

Inputとなるものは、画面(入力)、イベント(要求/通知)、ファイルなど、そして引数を持たないメソッドもあるため、Inputがないこともあります。
また、Processが状態を持つ場合、その状態もInputになり得ます。

Processが状態を持つ場合に、その状態もInputになり得る、と書いたものの、これは参照(Reference)しているのであって、Inputとは少し違わない?

Outputとなるものは、画面(出力)、イベント(応答/通知)、ファイルなど、そして戻り値を持たないメソッドもあるため、Outputがないこともあります。
また、メソッドを呼び出した側には何も返さないが、DBに保存する、ファイルを生成する、通信をする、などもOutputになり得ます。

Inputに対するOutputを直接返さないが、DBに保存する、ファイルを生成する、というのは保存(Store)しているのであって、Outputと少し違わない?(通信はOutputか、外部システムに問い合わせるのであればReference、外部システムにデータを渡すのであればStoreと考える)


上記の違和感を元に、無理にInput、Outputとして纏めないで、素直にReference、Storeとした方が分かり易いのではないでしょうか?
そこでIPO(Input Process Output)を発展させて、IRPSO(Input Reference Process Store Output)というものを考案しました。

IRPSO(Input Reference Process Store Output)マトリクス

IPO(Input Process Output)を表として書く場合、以下の様な表を使います。

I P O
Input Process Output

IRPSO(Input Reference Process Store Output)を表で書く場合は、以下のように3*3のマトリクスを使います。

I R-P-S O
Reference
Input Process Output
Store

この3*3のマトリクスはマンダラートと同じなので、アイデアプロセッサと考えると、空いているセルに関連する情報を追記してみたくなります。例えば、同期/非同期(sync/async)、排他(exclusive)、例外(exception)、要求(request)などを書くと以下の様になります。

I R-P-S O
Reference
Input Process Output
Store

どのセルに何を埋めるのかも意味や関連性を考えて配置すると、発想が広がってきそうです。

要求を仕様化する際に、A4一枚を使って、まずは3*3のマトリクスを作り、空いているセルをとにかく埋めて行くことで、足りない情報や条件、抜けに気づくことができます。
簡単でありながら、セルを埋めることで必要な検討ができるのは、かなり強力なツールになると思います。