実践的オブジェクト指向設計入門7
システムの状態を大別すると、初期化・終了・異常・安定の4つあります。安定状態は一番よく考えられているのですが、他の状態、特に障害におけるシステムについてよく考えなくてはなりません。障害を想定外の一言で済ませられません。これから、OMTで提唱されている事を解説します。
初期化状態は、システムに於いて不安定な状態です。初期化状態の間はサブシステムも動作しておらず、システムとしての機能が不完全なので、順番や並列性についてよく考えなくては、思わぬトラブルを生みます。ソフトウェアと違いサブシステムは、違うハードウェア上で動作している事が多いです。従って、並列的にサブシステムを立ち上げる可能性が高くなります。並列的な起動をサポートしない場合、どの様な手順でシステムを立ち上げるのかを熟慮し、それを説明書などの形でユーザーに知らせなくてはなりません。
終了状態は処理の大半がオブジェクトの破棄なので、初期化状態よりも簡単です。しかしながら、ログと終了を知らせる方法について熟慮する必要があります。大概のシステムは、サブシステムの連携で成り立っていますから、サブシステムが予告もなしに終了しては正常な処理を出来ません。また、異常時に備えてログをちゃんと取っておかないと、システムの復旧が出来なくなります。
異常時は特に熟慮しなくてはなりません。異常状態になる原因の多くは、システムの思わぬ扱い方や災害に起因します。従って、普通に設計をしていれば「想定外」になってしまいます。人災、自然災害、ヒューマンエラーなど、あらゆる可能性を視野に入れてシステムを設計しなくてはなりません。ですが現実的には、全ての災害に対処するのは不可能です。その想定外の状況も想定し、システム異常に対してどのように対処するのか、そしてどの様なデータが役に立つのかを考え、システム異常時の対策を考えます。
以上、オブジェクト指向方法論OMTに自分の考えを付け加えたものを簡潔に解説しました。簡潔に解説していますが、個々の状態は奥深いものです。この4つの状態に拘らず、システムのあらゆる状況を想定し、頑強で使いやすいシステムを設計を目指して下さい。ただし、設計中毒には十分に注意して下さい。設計に熱中し過ぎて、実装の時間が足りなくなる事例もあります。私の経験から言いますと、全てを設計できると思わず、現状でベストを尽くすという謙虚な姿勢で臨めば、設計中毒にならなくて済みます。