システムアーキテクチャ
システムアーキテクチャ(英: system architecture)は、システムの構成要素(コンポーネント)として何があるか、各構成要素がどのような機能・役割を与えられ、相互にどのように連絡をして全体としてひとつのシステムとして機能するか、に関する記述や取り決めのこと。
なお、システムアーキテクチャの「システム」が指しているのはコンピュータシステムに限らない。(後述)
概説
[編集]- 定義
いくつかの団体によるいくつかの定義の例を示す。
- システムの構成、動作原理を表している。(カーネギーメロン大学ソフトウェア工学研究所用語集[1])
- システム構成要素(部品)レベルの詳細さで設計や実装を可能とするレベルの記述がされている。(IEEE 1471やTOGAF)
- 構成要素間の関係やシステム外の環境との関係が記述されている。[2]
- 要求仕様やシステムのライフサイクル全体を考慮している。[3][4]
- 概要
システムアーキテクチャは、システムの構成要素として何があるか、構成要素は相互にどのように連絡し全体としてひとつのシステムとして機能しているか、に関する記述や決めごとである。
システムアーキテクチャはシステム全体の構造を示すものであり、いわば "システム全体の概略設計図" や "システムの骨格図"のようなものであり、システムの全体像を概観することを可能にするものである。[注釈 1]
システムアーキテクチャは、システム構築のプロジェクトを進める上で、いわば基礎や土台として機能する。 大きなシステムを構築するには多くの人が携わる必要があり、そのようなシステム構築にはシステムアーキテクチャをあらかじめ作成することが必要である。
システムアーキテクチャは決めごとであり一種のルールとしても機能し、詳細設計の担当者や実装担当者がシステム全体と整合性がとれず矛盾してしまう細部を作ってしまうことを抑制する効果も持つ。
- 「システム」の範囲
システムアーキテクチャで扱われる「システム」は、(コンピュータで構成されるシステムが多くはあるが、それに限らず)、人の組織や、知識体系すらも含まれることがある。
- システムアーキテクチャの分類
Mark Gautam Kumar と Eberhardt Rechtin[5]によれば、システムアーキテクチャは以下のように分類される:
- 製造システム
- 社会システム
- ソフトウェアおよび情報技術システム
- 統合的システム(インターネット、高度道路交通システム、防空システムなど)
- 情報システムのシステムアーキテクチャ
(現実問題としては、情報システムの改良プロジェクトの際にシステムアーキテクチャが関係者に意識されることは多いので) より実用的な定義として、何らかの具体的なコンピュータシステム(企業内の情報システムなど)の構成とその長期的な改善計画をシステムアーキテクチャと呼ぶ立場もある。[6]
「システムアーキテクチャ」という用語は、コンピュータ関連に限った概念ではないが、それが情報システムに関して使われている場合、(一部で「コンピュータ・アーキテクチャ」との線引きに悩む人がいるが)コンピュータ・アーキテクチャが通常はコンピュータ単体のアーキテクチャを指しているのに対し、システムアーキテクチャの「システム」はコンピュータ単体を指すことは稀で、近年では一般に複数のコンピュータのハードウェアやソフトウェア(さらにはネットワークインフラなど、さまざまな要素)で構成されるシステム全体を指している。
なお、システムの構成要素には、サブシステムが含まれうる。多くの場合、構成要素間の関係はインタフェースも記述し、環境(外界、特にユーザー)との関係・インタフェースも記述する。
情報システムのシステムアーキテクチャは、通常、ITとビジネスの双方に精通した人々が作成する。システムアーキテクチャを作成する人々をシステムアーキテクトと言う。彼らは組織の事業計画や事業目標を理解し、それを要素に分解しそれを実現するために、複数のIT技術を分析・比較した中から、適切な組み合わせ方を提案する。システムアーキテクチャを作成する人は、どのようなシステムがどの程度の負荷に耐えうるかについてもかなり詳細に知っていなければならない。[7]
背景
[編集]デジタルコンピュータの発明以前から、電子工学などの工学では「システム」という用語を普通に使っている。しかし、デジタルコンピュータが登場し、ソフトウェア工学が新たな分野として発展すると、ハードウェアとソフトウェア、およびそれら全体を区別する必要が生じてきた。プログラム可能なハードウェア、すなわちコンピュータのハードウェアはソフトウェアが無ければ何もできないし、ソフトウェアもハードウェアが無ければ何もできない。しかし、ハードウェアとソフトウェアが揃えば無数のタスクを実行できる。このため、コンピュータやソフトウェアを扱う工学分野(および通信などの工学)では、「システム」という用語が「有益な機能を実行するのに必要な全要素(つまりハードウェアとソフトウェア両方)を含むもの」と再定義された。
その結果、それらの工学分野ではシステムと言えばプログラム可能なハードウェアとその上のプログラムを一般に指すようになった。そして、システム技術者はソフトウェアとハードウェア両方を含む完全な機器を扱う者と定義され、より実用的に言えば、機器の(ソフトウェアとハードウェア間のインターフェイスを含む)全インターフェイスを扱う者と定義され、さらに言えば特に機器とそのユーザーとのインターフェイスを扱う者となった。ハードウェア技術者は程度の差はあってもほぼハードウェアだけを扱い、ソフトウェア技術者もソフトウェアだけを扱う。システム技術者はソフトウェアとハードウェアが整合するかどうかに気を配り、システムと外界(ユーザー)との相互作用に気を配る。
システムアーキテクチャは、ハードウェア要素とソフトウェア要素を組み合わせたシステムの設計を可能とする。よいアーキテクチャは一種の分割手法(あるいはアルゴリズム)であり、各部分はきれいに分割されて他の部分との境界や相互作用が明確化される。このような分割によって各部分の設計と実装をほぼ独立して並行に行うことが可能となる。また、よいアーキテクチャはユーザーの要求との対応も明確である。
参考文献
[編集]- ^ [1]
- ^ OPEN Process Framework (OPF) Repository
- ^ OSTJF 用語集
- ^ The Human Engineering Home Page's Glossary
- ^ The Art of Systems Architecture, 2nd ed 2002
- ^ The National Center for Education Statistics glossary
- ^ BMC, What Does a System Architect Do?
関連項目
[編集]- エンタープライズアーキテクチャ
- システム工学
- ソフトウェアアーキテクチャ
- ソフトウェア工学
- 要求分析
- ANSI/IEEE 1471-2000 (ISO/IEC DIS 25961)
- The Open Group Architecture Framework (TOGAF)
- システムアーキテクト試験