2014-04-08

システム」とは境界

なんか最近オブジェクト指向関係の記事や書籍紹介を目にするような気がするのは、新学期が始まったせいなのかな。

オブジェクト指向がよくわかんない、という人は、いったんオブジェクト指向を忘れて、「システム」とはなんぞやという基本の基本を確認することをおすすめする。

Wikipediaシステムの項(https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)の図(https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:System_boundary.svg)を見てほしい。

外部環境(Surroundings)において境界(Boundary)が定義されるその内部がシステム(System)なのである

境界こそがシステムを具現化するものであり、要するにシステムの内部はおいといて、境界を通じてシステムの内部と外部でどのような入出力(インターフェース)があるかのを定義するのがシステム定義なのである

これが決まってはじめて内部をどのように構築するのか、サブシステムコンポーネント)間の連携をどうするのか、という話になる。

英語版のページにはしっかりとこう記載されている。

We scope a system by defining its boundary; this means choosing which entities are inside the system and which are outside – part of the environment.

日本語版の項にはなぜか訳されてないが、これが本質的定義であり、システムときいたら即「境界」と思い浮かべるべきである

そんなの当たり前じゃんと思われるかもしれないが、たぶんシステム関係に携わっている多くの人が、「システムって何?」ときかれたら、

 「システムはいくつかの要素によって構成されるもので、その全ての要素は、他の要素に影響を与え・・」

と、いきなりシステム内部の機能的な説明を始めると思う。まず境界インターフェースの話から始める人はむしろ少数だろう。

そうでなければ、世の中に数多あるシステムの「要件定義」「システム設計」「機能仕様書」などトップレベルでの記述もっと明確かつトップダウンになってなければおかし・・・

話をオブジェクト指向に戻すと、

最近話題になっている記事などは、なるほどよく噛み砕いているなあ、とは思うんだけれども、言語・実装・モデルといったものにひきずられてしまって、本来は広い分野や局面における「システム構築の手段」の広い概念であるはずのオブジェクト指向、実装例や用語から再度説明するという堂々巡りをしているという感じがする。

システムの本来の意味が身についたら、オブジェクト指向で説明されているあれやこれやが、このシステムを実現するため手段にすぎず、効率的システムを構築し、サブシステム再利用を容易にするための仕組みや方法論をあるていどまとめて総称したものであることが自然理解できると思う。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん