소프트웨어 아키텍처의 설계

  1. 정의 : 아키텍처는 비즈니스 요구사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서로써 시스템으르 구성하는 구성요소와 그 구성요소간의 관계, 그리고 구성요소가 다루는 정보를 정의 즉 아키텍처는 비즈니스 요구사항을 기술로 해석해 놓은 것이다. 아키텍처는 개발의 방향을 알려주는 지도이고 의사소통의 매개체가 된다. 이는 아키텍처를 보는 사람들이 이해할 수 있는 정도여야 하며 모든 내용을 담아야 한다. 소프트웨어 아키첵처는 소프트웨어 구조들의 집합이며 시스템의 구조를 정의하며 표현해야 하며 상위레벨의 추상화(추상화의 상위개념)를 통해 시스템 전반적인 모습을 보여줘야한다. 아키텍처의 구조를 3가지로 분류 시 1. 시스템을 구현단위로 분리(정적 구조, 구현과 관련된 모듈의 집합으로 시스템을 표현), 2. 시스템이 기능 시 요소들간의 상호 작용 중점(동적 구조, 런타임 행위와 상호작용을 갖는 요소의 집합으로 시스템을 표현), 3. 소프트웨어 요소와 외부환경과의 관계를 나타내는 구조(할당구조)로 나눌 수 있다.

  2. 소프트웨어 아키텍처의 등장배경 및 목적 주요 이해관계자들간의 관점 조율 및 계획을 통한 시스템 최적화를 위해 요구사항간의 개념상의 충돌조정, 우선순위 결정과 요구사항들간의 상반성 분석을 위하 작업이 필요했기에 전반적인 모습을 보여줄 필요가 있었다. 시스템을 개발할 때 성능, 가용성, 사용성, 편의성, 운영성, 확장성등을 고려하지않고 원칙, 정책, 지침, 표준을 지키지않으면 좋은 시스템이 될 수 없다. 아키텍처는 이러한 시스템의 비기능적인 요소에 집중해서 만들어지고 기능적인 요소도 고려하여 보기 편하게 작성해야 한다.

  3. 절차

    1. 서비스 모델의 정의 누가, 어떤 기능을 사용하는지 정의 비지니스적으로 어떤 특징(시장 차별화 및 수익모델)이 들어가면 좋고 1~2페이지정도로 간략하게 작성한다.
    2. 시장 현황 분석(요구자의 요구사항 분석) 시장의 크기, 경쟁사 분석, 요구사항의 분석 이를 통해서 전체 시스템 크기,성능 용량등 기본적인 기준점 마련
    3. 비지니스 전략 어떻게 가치를 창출할 것인가, 차별화전략은 무엇인가 분석
    4. 주요기능 정의 시스템에 대한 핵심 기능을 10~20개정도 간략하게 정의 누구나 이해할 수 있을 정도로 알아보기 쉽게 정의 Ex)사용자가 파일을 업로드한다, 사용자가 파일을 다운로드 한다, 게시판에
      글쓰기를 할 수 있다, sns에 id와 파일업로드 연동기능 등 처럼 알아보기 쉽게
    5. 전체 아키텍처를 정의 서비스를 제공하기 위해 전체 시스템 아키텍처를 정의 (주요 시스템 구성요소, 시스템간의 연계, 시스템 사용자가 표기되야 한다)
    6. 비지니스 도메인 모델 시스템 사용자와 사용자간의 관계 정의(사용자 권한) 시스템에 정의 된 글,정보 간의 관계정의 주요 업무 프로세스 정의(간략하게 요약하는 것이 좋다)