構造と振舞いとの境界線

ってどこにあるんだろうな、と何かの仕様書を見てふと思った。

あんたの言っていることはmodelなのか?それともbehaviorなのか?modelとはそれ自身のbehaviorを含めてmodelなのか?静的なスナップショットか、動的な…アレ*1なのか?ああ、これっぽいか。

大部分の時間を過ごす構造があって、たまに、瞬間的に起こる事件が振舞いなんだろうな。定常状態というか安定してるモノがあって、モノに対して何かのイベントが起こって解決して、モノが再び定常状態に戻る。このモノが構造で、イベントの起点から定常状態に戻るまでの動作が振舞いだと。

で、この2つを合わせたものがシステムだとすると、システム設計は構造と振舞いの定義と考えられる。古典的にはデータベース設計が構造設計、プログラム設計が振舞い設計なんだろうかな。詳細で寿命の短い部分と、大雑把で寿命が長い部分だと、過ごす「大部分の時間」の尺が変わる、とも考えられる。サブシステムの「大部分」は、大システムの「大部分」よりも短く、サブサブシステムの「大部分」よりも長い。

うんうん、しっくりきた。片方だけ渡されて実装しろ言われても、そりゃ困るわなw

*1:上手い言葉が思い付かないw