Douglas' Space
Software System 개발에 대해 본문
software는 hardware와 함께 system을 구성하는 하나의 구성품이지 않나요? 그런데 software system은 무엇이란 말인가요?
1. software system의 정의
일반 컴퓨터시스템의 구성요소인 software이지만, hardware는 단순한 Vehicle의 역할을 하고 모든 기능이 software에 의해 결정되는 system을 지칭합니다. 특히 많은 프로그램으로 구성된 다수의 컴포넌트들, 프로그램을 세팅하는 구성화일, 관련 기술문서 및 사용자 문서의 집합을 system으로 강조하여 지칭하는 용어입니다.
이와 대조되는 용어로는 하드웨어가 중심이되는 engineering system, physical system을 들 수 있습니다.
특히 이러한 software system은 engineering system과 다른 system engineering 기술을 필요로 합니다. system analysis단계에서 부터 분석의 방법이 매우 상이합니다.
2. Open system의 한 종류
software system은 open system의 특성의 하나입니다. open system은 아래 그림과 같이 외부 환경로 부터 자극을 받고 반응하는 system을 의미합니다.

software system은 위의 open system처럼 외부환경과의 상호작용으로 추상적인 경계(Boundary)가 결정됩니다. 그 경계는 system의 개발범위로도 이해될 수 있습니다.
3. software system을 개발한다는 의미
system을 개발한다는 것은 무엇을 의미할까요? 프로그래밍언어를 가지고 프로그램을 제작하는 것일 것입니다. 그런데 software system의 정의에서 언급했지만 software system을 구성하는 구성품중 기술문서, 사용자 문서 등이 존재합니다.
즉 software system을 설명해 주는 문서도 개발을 해야 완전한 system 개발이 이루어진다고 볼 수 있습니다. 기술문서란 크게 개발하고자 하는 system이 무엇인지를 설명하는 문서(system specification), system을 어떻게 구성할 것인지를 설계한 문서(system design document)로 그 종류를 크게 나누어 볼 수 있습니다.
그런데 software가 개발이 매우 쉽고 자명한 것은 구지 이러한 문서없이 프로그램만을 제작해도 개발이 가능할 수 있습니다. 그러나 기술문서는 꼭 개발 뿐만 아니라 유지보수 차원에서도 필요합니다. software sstem은 개발이 되고 사장이 될 때까지 끊임없이 변경이 이루어집니다. 따라서 이러한 변경을 위해서도 기술문서는 필요합니다. 물론 요즘 agile 방법론에서는 이러한 기술문서를 중요하게 여기기 않습니다만, 규모나 복잡도가 크거나 신뢰도 및 안정성을 요하는 system의 개발에서는 매우 중요합니다.
4. 기술문서에 대해
기술문서는 말이 문서이지 엄밀히 이야기해서 동작하는 프로그램을 잘 설명할 수 있고, 완전하고 정확하게 묘사하는 Model로 작성이 되어야 합니다.
Model이란 작동하는 실행 프로그램으로 구성된 software system을 표준화된 방법으로 묘사한 것으로 일반적으로 도형중심의 언어인 Modeling Language(예, Unified Modeling Language, Structured Method 등)를 사용하여 개발됩니다.
5. 결론
결론적으로 software system을 개발한다는 것은 사용자의 요구사항을 프로그램으로 변환하는 과정으로 이 과정에서 다양한 model로 변환하게 됩니다.
즉, software system 개발이란 사용자요구사항을 modeling language를 이용하여 system model로 변환하고, 이를 다시 programming language를 이용하여 program으로 최종 변환하는 것입니다.
이러한 system model은 개발단계에 따라 다양한 model로 표현됩니다.
일반적으로 system analysis단계에서는 system analysis model들이 만들어지고,system design단계에서는 system design model들이 만들어집니다.
software가 다수의 component로 구성이 되는 규모가 큰 경우는 system수준의 analysis 및 design을 통해 software system component를 설계해야 합니다. 그리고 각 component인 subsystem별로 다시 analysis와 design을 수행합니다.
개발단계
|
모델
|
문서
|
system analysis
|
system analysis model
|
system specification
|
system design
|
system design model
|
system design
description |
software compoenent
analysis |
{software component
analysis model} |
{software requirements
specification} |
software component
design |
{software component
design} |
{software design
description} |
implementation
|
{program and data}
|
{software product
specification} {user's manual} |