본문 바로가기

Dev.../소프트웨어 아키텍처

[SA강좌] Part 2-1 소프트웨어 아키텍처 설계

소프트웨어 아키텍처 설계

본 장에서는 소프트웨어 아키텍처를 설계하는 절차와 기법을 제시한다.

소프트웨어 아키텍처 설계 개요

소프트웨어 아키텍처 설계 절차는 그림 Ⅲ-1과 같다.

그림 Ⅲ-1. 소프트웨어 아키텍처 설계 절차

소프트웨어 아키텍처 중 논리적 아키텍처를 구성하기 위하여 업무도메인을 분할하고, 업무도메인의 서브도메인을 파악하여 이들간의 관련성(interface)를 정의하는 데서 시작한다. 정의된 어플리케이션 아키텍처에 맞게 전 도메인 또는 서브도메인에 대한 아키텍처 구조에 맞게 상세설계 및 구현을 실시한다.


그리고, 소프트웨어 아키텍처 설계는 고객의 요구사항에서부터 출발한다. 고객의 요구사항은 요구사항정의단계에서는 인터뷰를 통한 회의록, 인터뷰시트로 파악되며, 분석설계단계에서는 유즈케이스 설계서를 통하여 구체적으로 파악되게 된다. 이러한 고객의 요구사항을 통하여 소프트웨어 아키텍처에 고려해야 할 요소를 파악하는 기술이 필요하다. 이때 요구사항의 우선수위 결정을 위하여 본 어플리케이션 시스템의 중요한 품질요소를 결정하는 게 좋다. 우선순위를 가지는 품질요소를 통하여 요구사항에 대한 작업우선순위를 결정하게 되며, 전체 어플리케이션 아키텍처에 해당 요구사항의 변경이 얼마만큼 영향을 미치는지도 결정하게 된다.


따라서, 기본적인 소프트웨어 아키텍처 설계 방법은 세가지 단계로 구성된다. 간단히 설명하면, 기능기반아키텍처 설계, 아키텍처 평가와 아키텍처 전이로 구성된다.


품질요소기반 소프트웨어 아키텍처 설계 방법은 두 개의 반복적인 설계 프로세스로 구성된다. 내부 반복 프로세스는 소프트웨어 아키텍처의 품질 요구사항의 설계, 평가, 전이로 크게 나눠볼 수 있다. 외부 반복 프로세스는 고객의 요구사항을 품질요소에 따른 선택하는 방법에 대한 활동으로 이루어진다.


반복적 소프트웨어 아키텍처 개발 사이클의 외부 소프트웨어 설계는 요구사항 중 가중 높은 고려대상이 되는 제품에 대한 품질요구사항으로 시작된다. 이는 또한 요구사항들의 내부 반복 프로세스를 진행하게 된다. 외부 반복 프로세스는 모든 요구사항이 어플리케이션 아키텍처에 고려될 때까지 나머지 요구사항을 반복하게 된다. 선택된 요구사항은 그림 4과 같이 소프트웨어 아키텍처 분석/설계 및 개발을 위한 핵심 소프트웨어 아키텍처 개발을 통하여 수행된다. 이 과정을 통하여 소프트웨어 아키텍처의 반복적인 수정의 기본 단위 작업들이 수행된다. 여러 개 요구사항은 반복적 소프트웨어 아키텍처 개발 사이클을 통하여 품질요소의 우선순위 또는 작업의 우선순위에 따라 핵심 소프트웨어 아키텍처 개발을 수행하게 된다.


내부 반복 프로세스는 소프트웨어 아키텍처가 구현되는 기본이 되는 요구사항들로 이루어진다. 내부 반복 프로세스의 초점은 품질요소의 평가와 전이이다. 어플리케이션 아키텍처 설계 방법은 목표, 관계상 설계 과정, 균형과 최적화를 지원하도록 제공된다. 반복적인 방법은 모든 품질요구사항이 만족될 때까지 각각의 품질요구사항을 지원하고, 전이로 사용되는 아키텍처로 반영된다.


완성된 어플리케이션 아키텍처는 업무 서브 도메인별 유즈케이스로 상세설계 또는 구현이 되며, 각 요구사항에 대한 단위 테스팅 수행 전체 시스템의 제품을 완성시키기 위한 반복적인 분석/설계 과정으로 대량생산체계를 수립한다. 이때 수정되는 비 기능적인 요구사항은 품질요소에 따라서 평가되어 어플리케이션 아키텍처를 재 수정과정을 통하여 변경된 어플리케이션 아키텍처에 대한 제품적용을 한다. 따라서, 소프트웨어 아키텍처 설계 방법은 소프트웨어 아키텍처 설계와 관련한 프로세스정의뿐만 아니라, 이러한 아키텍처를 설계하기 위한 소프트웨어 아키텍처 문서(SAD : Software Architecture Document)와 설계적 의사결정물 들로 구성된다.

소프트웨어 아키텍처 설계 방법인 그림 5를 살펴보면, 기본적으로 요구사항 정의를 분류한 기능적 요구사항을 기반으로 해서 출발한다. 비록 소프트웨어 엔지니어가 품질요구사항을 명확하게 정의하지 않으면 시스템은 안정적 또는 재사용될 수 없도록 설계되는 게 일반적이다. 이러한 소프트웨어 아키텍처 설계는 품질 요구사항 측면에서 많이 평가된다. 각각의 품질요소는 소프트웨어 아키텍처가 지녀야 할 정량적 또는 정성적 예상 값으로 평가된다. 아키텍처 전이 단계 동안에는, 아키텍처는 적절한 품질요소를 최적화하는 전이 방법을 선택함으로써 더욱 명확하게 된다. 전이단계는 새로운 버전의 아키텍처 설계 버전을 탄생케 한다. 이러한 요구사항 수집, 평가, 전이하는 반복적인 단계는 아키텍처 설계 또는 제품 릴리스 동안 지속적으로 발생하게 된다.