S/W Architecture가 모습을 갖추려면 여러 가지 기능적, 품질적, 업무적 요구사항이 필요하다. 어런 요구사항을 Architecture drivers라고 부른다. Architectural drivers를 정하려면 먼저 최우선 업무 목표를 찾아내야 한다. 이 때는 업무 목표의 개수를 최소화하는 것이 중요하다. 그 다음 찾아낸 업무 목표를 Quality scenario나 Use case 목록으로 변환한다. 이 목록 중에서 아키텍처에 큰 영향을 끼칠 만한 것들을 고른다. 이렇게 골라낸 것이 바로 Architectural drivers라고 한다.

Architectural drivers의 개수는 10개를 넘지 않도록한다. 일단 Architectural drivers를 알아내고 나면 아키텍처 설계를 시작할 수 있다. 아키텍처 설계 도중 제기되는 의문점이 요구사항 분석 과정에 영향을 줄 수도 있다.

다시말해 소프트웨어 시스템은 소프트웨어 시스템에 대한 요구사항으로 부터 만들어 진다. 소프트웨어 아키텍처는 소프트웨어 시스템의 아키텍처이기 대문에 아키텍처가 시스템에 대한 요구사항으로부터 설계된다는 것은 당연한 사실이다. 그러나 시스템에 대한 모든 요구사항이 아키텍처 설계를 위하여 필요하지는 않다. 시스템에 대한 요구사항들은 아키텍처에 영향을 주는 요구사항들과 그렇지 않은 요구사항들로 나뉘어 진다. 전자의 종류의 요구사항을 아키텍처 드라이버라고 부른다. 따라서 아키텍처 설계에 더 잘 집중 할 수 있기 위해서는, 아키텍처 드라이버를 먼저 잘 가려낸 후 아키텍처 설계에 효과적으로 반영하여야 한다.

아키텍처 드라이버가 되기 위하여는, 시스템 전체의 구성 또는 성능/품질에 영향을 주어야 한다. 어떤 요구사항이 아키텍처 드라이버에 해당되는가를 판단하는 것은 어렵고, 보통 많은 경험이 필요하다. 그러나 간단한 판단방법(rule of thumb)으로, 요구사항이 (1) 품질요구사항이거나, (2) 시스템 전반에 관련된 제약사항인지 혹은 (3) 요구사항의 기능이 시스템의 다른 여러 기능 요소와 상호작용을 갖게 되는지 판단하여, 이 중 하나에 해당하면 아키텍처 드라이버라고 볼 수 있다.

한편 실제 아키텍처 설계를 위하여 아키텍트는 모든 아키텍처 드라이버를 사용할 필요가 없다. 서로 중복되지 않도록 대표적인 일부 아키텍처 드라이버를 선정하여 사용함으로써 효율적인 설계를 하게 되는데, 이를 선정된 아키텍처 드라이버(Selected architecture drivers)라고 부르기로 한다.

Rational Unified Process(RUP)는 가장 널리 알려진 소프트웨어 개발 프로세스 중의 하나이다. RUP에서는 아키텍처 적으로 중요한 적절한 20-30%의 시스템의 Use case에서 그리고 각 쓰임새 별로 1-2개의 사용 시나리오를 아키텍처 골격의 구현에 사용할 것을 권장한다고 한다.

[출처] KAIST 강성원 교수의 S/W 설계 강의내용.
by 아놀드박 2011. 6. 11. 13:16