見出し画像

システムアーキテクチャ超概論②

前回はシステムアーキテクチャの超基本を書いてみましたが、今回はその続きとして、少し具体例を示しつつ、アーキテクチャにとって超重要な「ビューポイント」について説明したいと思います。

「システム」とは(復習の前に)

前回の記事では、システムアーキテクチャの基本要素としてシステムの「目的」、その目的を達成するためにシステムが「やること」、やることを実現する「実現手段」その関係性が大事ということを書きました。

しかし超概論として色々すっ飛ばしたので、そもそも「システム」とは何かの説明が漏れていました。ざっくり言うと、おおよそ全ての人工物はシステムである、と言えると思います。

もう少しちゃんと説明します。システムについて、INCOSEというシステムエンジニアリングの世界的な団体では「定義された目的を成し遂げるための、相互に作用する要素(element)を組み合わせたもの。これにはハードウェア、ソフトウェア、ファームウェア、人、情報、技術、設備、サービスおよび他の支援要素を含む」と定義していました。(INCOSE※. 2015. “INCOSE Systems Engineering Handbook: A Guide for System Life Cycle Processes and Activities Ver. 4.0.” John Wiley & Sons.)
つまり目的を達成するために複数の要素を組み合わせたものがシステムになるので、人が作るものでこれに当てはまらないものは、なかなか思いつきません。
例えばシンプルな人工物として焼き鳥の「串」というものが考えられますが、今回はこれを使って具体的にアーキテクチャについて考えてみたいと思います。

具体例をもとにシステムアーキテクチャを復習

システムアーキテクチャの「目的」「やること」「実現手段」とは、例えばどういったものであるのか?前回は抽象的な説明に終始したので、ここでは以下の様な「串」システムを例に説明してみます。この串システムの目的は「片手で熱いものを食べる」だとします。

画像1


前述したようにシステムには「複数の要素を組合わせた」という定義があります。この1本の竹を削ったものは複数の要素を組み合わせたものなのか?という疑問を持つ方もいらっしゃるかもしれません。が、やはり串も複数要素の組み合わせで出来上がっています。

画像4

上図のように、串システムは目的である「片手で熱いものを食べる」を果たすために「食べ物を出し入れする」「食べ物を保持する」「片手で摘まれる」「熱く感じさせない」というやることが設定されています。このうち「食べ物を出し入れする」は「先の尖り」に、「食べ物を保持する」は「適度な摩擦力の胴体」に、「片手で摘まれる」「熱く感じさせない」は「持ち手」にと、それぞれのやることは実現手段に割り当てられることで実現されています。
つまり串は一見すると1本の竹を削ったものですが、目的を達成するために複数の要素を組み合わせているので、これもシステムになります。そして串システムのコンセプトは目的を実現する4つのやること、3つの実現手段で示されています。

画像6

アーキテクチャを示す基本の要素、「目的」「やること」「実現手段」のイメージは湧きましたでしょうか?

ビューポイントとビュー

さて、先程の図の中には(機能ビュー)と(物理ビュー)という未だ説明をしていない単語が紛れていました。システムアーキテクチャをもう一段回だけ深く理解するために、非常に大事な概念としてビューポイントとビューというものを紹介します。

お気づきの方も多いと思いますが、先程の串システムのコンセプトは4つの「やるべきこと」と3つの「実現手段」で表現しているとありました。しかし、あそこに記載した要素だけであれば、串ではなく楊枝やフォークでも良いことになります。楊枝やフォークでもシステムの目的を果たされば、あのアーキテクチャでOKになりますが、ここではもう少し条件を絞ってみたいと思います。

例えば、お祭りの屋台で食べ歩き様のメニューを販売することにします。メニューは熱々に焼いた鳥です。お祭りに来ているお客さんは食べ歩きがしたいので、少量安価な価格設定にしようと思います。少量といえど1口では寂しいので、5口分くらいでしょうか(楊枝やフォークでは無理そうです)。さて、提供方法はどうするかと言うと、お客さんは食べながら移動するので、使用したカトラリーは回収できません(使い捨てられる安いもが必要です)。そして素早く沢山のお客さんに提供して売上を確保するためには、カトラリーと調理器具は一緒にできると良さそうです(耐燃性が必要そうです)。

この例の様なシステムを求めると、先程定義したアーキテクチャではシステムのコンセプトの表現として充分ではありませんよね。まず「食べ物を保持する」では5口分の食べ物を保持する必要がありそうです。しかし、お祭りの人混みで食べ歩くことを考慮すると、人と当たりにくい「長さ」である必要があります。そして使い捨てられるように「価格」が低く、「耐燃性」もある必要があります。
つまり、先程まで「やること」と一括にして説明していたものも、実はシステムが目的達成に向けて果たさなくてはいけない「機能」の他に、満たさなくてはいけない「長さ」や「価格」の条件など、他の複数の観点で分離して考えられることが分かります。

この様にシステムを考える場合には、いくつもの関心事がでてきます。この関心事を捉える枠組みが「ビューポイント」です。ビューポイントとは、様々なステークホルダの関心事を分類して考えるための枠組みと言えると思います。

画像4

お祭りで焼き鳥を食べるカトラリーのコンセプトを示すビューポイントとしては、「機能」と「実現手段」だけでなく「長さ」や「価格」「耐熱性」もあったほうが良さそうです。このビューポイントが関心事を捉えるための枠組みだとすると、それを表現した結果がビューになります。
こうして色々な条件を考慮し、その考慮したビューを総合したアーキテクチャを実現するものとして、今回の屋台で売る焼き鳥のカトラリーは「竹串Φ3×180」に決まることになります。
(ちなみに上図では「機能」「長さ」「価格」「耐熱性」「実現手段」の5つを同時に書こうとしていますが、実際にビュー間の関係性の定義を書こうとすると非常に複雑になるので、理解の容易性を考えると同時に2つ、頑張っても3つのビューの組み合わせを表現するのがせいぜいかと思います。それぞれのビューはその関係性を別々に定義して、最終的には整合性の取れた1つのアーキテクチャとして記述します)

システムには様々なステークホルダがいて、それぞれが違う関心事を持っています。今回は串なのでそこまで複雑な関心事ではありませんが、システムが複雑になるほど、これらの関心事を同時に考慮・設計することは難しくなります。そこで、それぞれの関心事を分離して検討し、検討した結果の組み合わせを検討することで、アーキテクチャとして成立させることになります。

なぜ関心事を分離して検討した後で組み合わせる必要があるのか?についての詳細は、また改めてアーキテクチャ超概論③で説明していきたいと思います。

まとめ

今回はそもそもシステムとはなにか?そしてアーキテクチャを検討する上で非常に大事なビューポイント、ビューとは何かを説明してみました。

システムとは、目的を達成するために複数の要素を組み合わせたものであり、おおよそ全ての人工物はシステムとして扱える
ビューポイントとは、ステークホルダの関心事を捉える枠組みであり、各ビューポイントからアーキテクチャを表現した結果がビュー。
アーキテクチャとはステークホルダの関心事を様々ビューポイントに分類して検討した結果のビューを組み合わせて、ビュー同士の関係を定義したもので表現できる。

以上です。
次回はこの大事なビューポイントとビューについてもう少し詳しく説明するためにアーキテクチャ超概要③に行きたいところですが、一旦その前に、「アーキテクチャってどう設計するの?」のはじめの一歩について、説明を挟もうかと思います。


この記事が気に入ったらサポートをしてみませんか?