본문 바로가기

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

[SA강좌] Part 1-7 소프트웨어 아키텍처의 특징과 역활

소프트웨어 아키텍처의 특징

소프트웨어 아키텍처의 특징은 다음과 같다.

첫째, 소프트웨어 아키텍처는 시스템에 대한 추상화이다. 따라서 지엽적인 정보는 포함하지 않는다. 큰 그림만을 가지고 있는다.

둘째, 소프트웨어 아키텍처는 한가지 다이어그램으로는 결정되지 않으며 여러 관점의 다이어그램으로 이루어진다.

각각의 세부적인 것이 아니라, 건축물의 투시도와 같으며, 옷 디자이너의 스케치와 유사한 성격을 가진다.

소프트웨어 아키텍처의 역할

소프트웨어 아키텍처가 시스템 개발에서 담당하는 역할은 다음과 같다고 볼 수 있다.

첫째, 관련 당사자들 사이의 의사 소통의 수단이다.

둘째, 개발 프로젝트 초기 단계에서 의사결정 도구이다. 아키텍처는 품질 요소를 결정하며 프로젝트 조직에 영향을 끼친다.

셋째, 시스템의 전체 구조를 결정한다.

넷째, 개발 프로젝트의 조직을 결정하는데 참고할 수 있다.

다섯째, 시스템이 가져야 할 품질 요소를 결정한다. 따라서 아키텍처를 통해 시스템이 어떤 품질을 가질 것인지 예측할 수 있다.

여섯째, 아키텍처를 통해 시스템 개발자들에게 어떤 교육을 시킬 것이지 결정할 수 있다.

일곱째, 소프트웨어의 변경 사항을 어떻게 관리할 것인지를 알려준다.

상당한 역할이지 않은가? 이를 도식화 하면 다음과 같은 그림이 만들어진다.

그림 Ⅱ-2. 소프트웨어 아키텍처가 시스템 구축 시 하는 역할

그림 Ⅱ-2는 소프트웨어 아키텍처가 시스템 구축 시 담당하는 역할을 보여준다.

기능적, 비기능적 요구사항은 소프트웨어 아키텍처를 설계하는데 입력 산출물로 작용한다. 소프트웨어 아키텍처가 결정되면 설계패턴과, 설계 가이드라인을 사용하여 소프트웨어를 설계할 수 있다. 또한 소프트웨어 아키텍처가 결정되면 코드 작성시 코드 표준, 코드 가이드라인을 제공할 수 있다. 또한 소프트웨어 아키텍처는 소프트웨어를 시스템에 배포 시에 가이드라인을 제공한다.

이를 반복에 의해서 구조적으로 안정적인 소프트웨어 아키텍쳐를 구성할 수 있다.