프로그램 아키텍쳐/소프트웨어공학

아키텍처, 프레임워크, 컴포넌트, 플랫폼

본클라쓰 2010. 7. 22. 13:05

 

아키텍쳐(Architecture): 소프트웨어어의 주요 설계 구조

 

아키텍처란 시스템의 기능면에서 본 구성 방식으로 컴퓨터의 구성, 기억장치의 주소 방식, 입출력 장치의 채널 구성 따위를 말합니다. 소프트웨어의 주요 특징을 결정짓는 설계 구조를 말하며 소프트웨어의 주요 구성 요소 및 구성 요소들 간의 주요 인터페이스등 작동 방식으로 규정한 것입니다.

 

아키텍처는 소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향이 매우 커서 소프트웨어 개발에 있어서 가장 중요한 부분이라고 할 수 있다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는 다는 점에서 프레임워크나 플랫폼과는 명확히 구분됩니다.

 

 

 

프레임워크(Framework): 소프트웨어의 뼈대

 

소프트웨어를 개발할 때 사용하는 뼈대 구조로 특정 영역의 소프트웨어 개발을 용이하게 하기 위해 '재사용 가능한 디자인'을 구성하는 클래스들의 집합입니다. 소프트웨어를 개발하는데 사용하는 기반 요소로 개발의 방향이나 사용 기술을 미리 정의한 뼈대로 재사용이 가능하고, 특정 문제의 해결을 위해 고안된 지원 프로그램으로 언어, 다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있습니다. 개발시 실정에 맞도록 응용할 수 있도록 설계되었으며 프레임워크는 재사용 범위가 크고 확장이 가능합니다.

 

따라서 플랫폼도 프레임워크의 일종이라고 볼 수 있으며, MS사의 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것은 아닙니다. 또한 UI 프로그램 개발을 위한 부분만을 떼어내서 프레임워크라고 할 수도 있습니다. UI 프로그램 개발을 위한 부분만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만 프레임워크로 볼 수 있습니다. 이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많습니다.

 

 

 

컴포넌트(Component)

 

컴포넌트는 효율적인 솔루션을 말합니다. 다양한 시스템을 지원하여야 하므로 복잡하며 배우는 기간이 필요하고 커스텀화가 필요합니다. 컴포넌트 기반 개발(CBD, Component Based Development)은 객체지향 기술을 바탕으로 작성한 단위 프로그램을 하나의 부품(Component)처럼 여기고, 이 부품을 조립하여 소프트웨어를 제작하는 기법이다. MSF(Microsoft Solution Framework)도 컴포넌트 기반의 C++ 제작기버의 하나입니다.

 

 

 

플랫폼(Platform)

 

플랫폼은 소프트웨어가 실행되는 하드웨어와 소프트웨어 환경을 뜻합니다. 플랫폼은 컴퓨터 시스템의 맨 하위층을 이루는 부분을 말하는데 응용 프로그램의 설계자들은 하드웨어와 소프트웨어를 모두 플랫폼이라고 합니다. 그 이유는 하드웨어와 소프트웨어가 응용에 대한 지원을 제공하기 때문입니다.

 

개발 언어나 개발 환경을 플랫폼에 포함시키기도 하지만 이는 부수적 개념 혹은 확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"입니다.

 

각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행됩니다. 일반적으로 O/S는 모두 플랫폼입니다. Windows는 윈도우즈 프로그래만 실행시킬 수 있는 플랫폼이고, 리눅스는 리눅스 프로그래만 실행시킬 수 있는 플랫폼입니다. 자바 런타임 환경도 플랫폼입니다. 자바 프로그램은 O/S에 대한 종속성은 거의 없고 자바 런타임 환경없이는 실행되지 않으므로 자바 런타임 환경을 주요 플랫폼으로서 필요로 합니다. 마찬가지로 닷넷은 닷넷 런타임 환경없이는 실행되지 않으므로 닷넷 런타임 환경이 플랫폼이 됩니다.

 

Ajax 기술을 사용하여 개발된 웹 컨텐츠 + 웹 클라이언트 스클비트는 웹 없이는 실행되지 않으므로 웹을 플랫폼으로 합니다. VBA(Visual Basic for Application) 프로그램과 MS 오피스 COM API를 사용하는 프로그램은 MS 오피스가 없으면 실행되지 않으므로 MS 오피스를 플랫폼으로 합니다.

 

플랫폼은 플랫폼위에 다른 플랫폼을 구축할 수 있는 계층적 구조를 가질 수 있습니다. 가령 자바 프로그램은 자바 런타임 환경이라는 플랫폼에서 실행되지만 그 플랫폼 자체는 O/S 플랫폼 계층위에서 실행되는 프로그램에 불과합니다. 웹 플랫폼에 해당하는 웹 브라우저 또한 O/S 플랫폼 계층 위에서 실행되는 프로그램에 불과합니다.

 

 

참고 )

- 사부 정서훈의 대학 강의 : http://cafe.daum.net/visualbasic6/