システムアーキテクチャ

システムアーキテクチャ（）とは、システムのアーキテクチャについての語で、コンピュータ・アーキテクチャに関連して使われることもあるが、より広くシステム一般に関して使われることもある。
定義.
いくつかの団体によるいくつかの定義の例を示す。
また、より実用的な定義として、何らかの具体的なコンピュータシステム（企業内の情報システムなど）の構成とその長期的な改善計画をシステムアーキテクチャと呼ぶ立場もある。
システムアーキテクチャは既存または新規のシステムを表現するものであり、その設計を効率的に実装するための原理や工程が記述される。場合によっては、組織をシステムと見立ててのシステムアーキテクチャや、知識体系をシステムと見立ててのシステムアーキテクチャも考えられる。従って、システムアーキテクチャはシステムを構成する要素の持つ情報を伝達する「表現」であり、要素間の関係の「表現」であり、その関係に適用すべき規則の「表現」である。また、システムアーキテクチャはシステムを生み出す（改良する）過程であり、システムの設計に対する制限である。さらに、実際に設計や実装を行う者に効率的な手法を伝える知識の伝達手段あるいは規範である。
システムアーキテクチャは第一にシステムを構成する部品やサブシステム間の（内部）インタフェースや外界（特にユーザー）との（外部）インタフェースを扱う。
背景.
デジタルコンピュータの発明以前から、電子工学などの工学では「システム」という用語を普通に使っている。しかし、デジタルコンピュータが登場し、ソフトウェア工学が新たな分野として発展すると、ハードウェアとソフトウェア、およびそれら全体を区別する必要が生じてきた。プログラム可能なハードウェア、すなわちコンピュータのハードウェアはソフトウェアが無ければ何もできないし、ソフトウェアもハードウェアが無ければ何もできない。しかし、ハードウェアとソフトウェアが揃えば無数のタスクを実行できる。このため、コンピュータやソフトウェアを扱う工学分野（および通信などの工学）では、「システム」という用語が「有益な機能を実行するのに必要な全要素（つまりハードウェアとソフトウェア両方）を含むもの」と再定義された。
その結果、それらの工学分野ではシステムと言えばプログラム可能なハードウェアとその上のプログラムを一般に指すようになった。そして、システム技術者はソフトウェアとハードウェア両方を含む完全な機器を扱う者と定義され、より実用的に言えば、機器の（ソフトウェアとハードウェア間のインターフェイスを含む）全インターフェイスを扱う者と定義され、さらに言えば特に機器とそのユーザーとのインターフェイスを扱う者となった。ハードウェア技術者は程度の差はあってもほぼハードウェアだけを扱い、ソフトウェア技術者もソフトウェアだけを扱う。システム技術者はソフトウェアとハードウェアが整合するかどうかに気を配り、システムと外界（ユーザー）との相互作用に気を配る。
システムアーキテクチャは、ハードウェア要素とソフトウェア要素を組み合わせたシステムの設計を可能とする。よいアーキテクチャは一種の分割手法（あるいはアルゴリズム）であり、各部分はきれいに分割されて他の部分との境界や相互作用が明確化される。このような分割によって各部分の設計と実装をほぼ独立して並行に行うことが可能となる。また、よいアーキテクチャはユーザーの要求との対応も明確である。
システムアーキテクチャの分類.
Mark Gautam Kumar と Eberhardt Rechtinによれば、システムアーキテクチャは以下のように分類される: