소프트웨어 아키텍처의 설계
-
정의 : 아키텍처는 비즈니스 요구사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서로써 시스템으르 구성하는 구성요소와 그 구성요소간의 관계, 그리고 구성요소가 다루는 정보를 정의 즉 아키텍처는 비즈니스 요구사항을 기술로 해석해 놓은 것이다. 아키텍처는 개발의 방향을 알려주는 지도이고 의사소통의 매개체가 된다. 이는 아키텍처를 보는 사람들이 이해할 수 있는 정도여야 하며 모든 내용을 담아야 한다. 소프트웨어 아키첵처는 소프트웨어 구조들의 집합이며 시스템의 구조를 정의하며 표현해야 하며 상위레벨의 추상화(추상화의 상위개념)를 통해 시스템 전반적인 모습을 보여줘야한다. 아키텍처의 구조를 3가지로 분류 시 1. 시스템을 구현단위로 분리(정적 구조, 구현과 관련된 모듈의 집합으로 시스템을 표현), 2. 시스템이 기능 시 요소들간의 상호 작용 중점(동적 구조, 런타임 행위와 상호작용을 갖는 요소의 집합으로 시스템을 표현), 3. 소프트웨어 요소와 외부환경과의 관계를 나타내는 구조(할당구조)로 나눌 수 있다.
-
소프트웨어 아키텍처의 등장배경 및 목적 주요 이해관계자들간의 관점 조율 및 계획을 통한 시스템 최적화를 위해 요구사항간의 개념상의 충돌조정, 우선순위 결정과 요구사항들간의 상반성 분석을 위하 작업이 필요했기에 전반적인 모습을 보여줄 필요가 있었다. 시스템을 개발할 때 성능, 가용성, 사용성, 편의성, 운영성, 확장성등을 고려하지않고 원칙, 정책, 지침, 표준을 지키지않으면 좋은 시스템이 될 수 없다. 아키텍처는 이러한 시스템의 비기능적인 요소에 집중해서 만들어지고 기능적인 요소도 고려하여 보기 편하게 작성해야 한다.
-
절차
- 서비스 모델의 정의 누가, 어떤 기능을 사용하는지 정의 비지니스적으로 어떤 특징(시장 차별화 및 수익모델)이 들어가면 좋고 1~2페이지정도로 간략하게 작성한다.
- 시장 현황 분석(요구자의 요구사항 분석) 시장의 크기, 경쟁사 분석, 요구사항의 분석 이를 통해서 전체 시스템 크기,성능 용량등 기본적인 기준점 마련
- 비지니스 전략 어떻게 가치를 창출할 것인가, 차별화전략은 무엇인가 분석
- 주요기능 정의
시스템에 대한 핵심 기능을 10~20개정도 간략하게 정의
누구나 이해할 수 있을 정도로 알아보기 쉽게 정의
Ex)사용자가 파일을 업로드한다, 사용자가 파일을 다운로드 한다, 게시판에
글쓰기를 할 수 있다, sns에 id와 파일업로드 연동기능 등 처럼 알아보기 쉽게 - 전체 아키텍처를 정의 서비스를 제공하기 위해 전체 시스템 아키텍처를 정의 (주요 시스템 구성요소, 시스템간의 연계, 시스템 사용자가 표기되야 한다)
- 비지니스 도메인 모델 시스템 사용자와 사용자간의 관계 정의(사용자 권한) 시스템에 정의 된 글,정보 간의 관계정의 주요 업무 프로세스 정의(간략하게 요약하는 것이 좋다)