1. 소프트웨어 설계란?
요구사항(What)을 새로 개발하는 시스템에서 어떻게 충족시킬 것인가의 해결 방안(How)을 찾고 이를 구체화하는 단계로 사용자 요구사항에 대한 분석 결과와 실제 프로그래밍 언어로 구현하는 단계를 연결해주는 역할을 담당한다.

2. 소프트웨어 설계의 프로세스
일반적인 설계 프로세스 모델을 그림으로 나타내면 다음과 같다.

설계 프로세스 모델 그림

Fig 1. 설계 프로세스와 산출물

그럼 각 단계를 자세히 살펴보자.

1) 아키텍쳐 설계
서브시스템을 식별하고 이들간의 상호의존성을 정의한다. 즉, 시스템을 구성하는 서브시스템을 규명하고 이들 서브시스템 간의 연결 방법을 정의하는 활동을 말한다.

2) 기본 명세
서브시스템 각각의 설계를 명세화한다. 즉, 아키텍처 완료 후, 서브시스템 별로 내부 만족해야 할 사항을 기술한다.

3) 인터페이스 설계
서브시스템 또는 컴포넌트 간의 인터페이스들을 명세화한다. 서브시스템 간에 연결 관계가 성립할 경우 어떤 방식으로 인터페이스할 것인지, 또 외부와의 인터페이스는 어떻게 할 것인지 등을 설계한다.

4) 컴포넌트 설계
서브시스템들을 단위 요소들로 분할한다. 서브시스템과 이들 간의인터페이스에 대한 설계를 완료했다면, 하나의 서브시스템을 어떻게 개발할 것인지를 고민해야 하는데, 서브시스템을 좀 더 작은 단위의 컴포넌트로 분할할 수 있는지를 살펴보고 세분화된 단위 요소로 분할하는 활동을 말한다.

5) 자료구조 설계
단위 요소가 사용하는 데이터를 관리하기 위해 필요한 자료 구조를 설계한다.

6) 알고리즘 설계
단위 요소가 해결해야 할 기능에 대한 알고리즘을 설계한다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kyounghan