시스템 아키텍처

시스템 아키텍처(system Architecture)는 시스템의 구조, 행위, 더 많은 뷰를 정의하는 개념적 모형이다. 시스템 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용하는지, 정보가 어떻게 교환되는지를 설명한다.

정의
시스템 아키텍처에 대한 정의는 다양한데, 종합하면 다음과 같은 기본 요구 사항이 있다.
시스템 구성 및 동작 원리를 나타내고 있다.
시스템 구성 요소(부품)에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술된다. (IEEE 1471 또는 TOGAF 등)
구성 요소 간의 관계 및 시스템 외부 환경과의 관계가 묘사된다.
요구 사양 및 시스템의 전체 수명주기를 고려한다.
시스템 전체(하드웨어와 소프트웨어를 포괄한 것)에 대한 논리적인 기능 체계와 그것을 실현하기 위한 구성 방식. 시스템의 전체적인 최적화를 목표로 하고 있다. 

또한 실제적인 정의로, 어떤 구체적인 컴퓨터 시스템(기업 내 정보 시스템 등)의 조직과 장기적인 개선 계획을 시스템 아키텍처라고 하는 경우도 있다.
시스템 아키텍처는 기존 또는 새로운 시스템을 표현하는 것이며, 그 디자인을 효율적으로 구현하기 위한 기본 원리와 과정이 묘사된다. 시스템 아키텍처는 시스템 구성 요소들의 정보 전달을 나타내는 것이고, 요소 간의 관계를 나타내는 것이며, 그 관계에 적용해야 할 규칙을 나타내는 것이다. 또한, 시스템 아키텍처는 시스템을 창출(개혁)하는 과정에서 시스템 디자인에 대한 제약이다. 또한 실제로 설계 및 구현을 수행하는 사람에게 효율적인 기술을 전달하는 지식 전달 수단 또는 규범이다.

배경
디지털 컴퓨터의 발명 이전부터 전자 공학 등 공학에서는 시스템이라는 용어를 일반적으로 사용하였다. 그러나 디지털 컴퓨터가 등장하면서 소프트웨어 공학이 새로운 분야로 발전하였고 하드웨어와 소프트웨어를 구분하여 다루게 되었다. 프로그램 가능한 하드웨어, 즉 컴퓨터의 하드웨어는 소프트웨어가 없으면 아무것도 할 수 없고 소프트웨어를 하드웨어가 없으면 아무것도 할 수 없다. 하지만 하드웨어와 소프트웨어를 잘 조합하면 다양한 작업을 수행할 수 있다. 따라서 컴퓨터와 소프트웨어를 취급하는 공학 분야에서는 "시스템"이라는 용어가 "유용한 기능을 수행하는 데 필요한 모든 요소(즉 하드웨어와 소프트웨어 모두)을 포함하는 것"이라고 다시 정의되었다.

그 결과, 기술 설계 분야에서 시스템이라고 하면 프로그램 가능한 하드웨어 및 프로그램을 일반적으로 가리키게 되었다. 그리고, 시스템 엔지니어는 소프트웨어와 하드웨어 모두 포함하는 완전한 기기를 취급하는 사람으로 정의되었다. 실질적으로는 장비(소프트웨어와 하드웨어 간의 인터페이스를 포함)의 모든 인터페이스를 취급하는 사람으로서, 특히 장비와 사용자의 인터페이스를 취급하는 사람을 말한다. 시스템 기술자는 소프트웨어와 하드웨어가 잘 맞는지 여부와, 시스템과 외부(사용자 등)의 상호 작용에 신경을 쓴다.

각주 

시스템 공학
소프트웨어 구조