• 소프트웨어 아키텍쳐 정의

    • 소프트웨어 아키텍처는 소프트웨어 요소와 이들 요소의 외부속성, 그리고 이들 사이의 관계를 구성하는 시스템의 구조이다.
    • 소프트웨어 아키텍처는 시스템의 전반적인 구조이다.
    • 소프트웨어 아키텍처는 시스템의 컴포넌트와 이들 사이의 관계 그리고, 이들의 설계 및 변경에 대한 원리와 가이드라인을 정의한 구조이다.

    → 소프트웨어 아키텍처는 상위 레벨의 추상화를 통해서 시스템의 전반적인 모습을 보여주는 것이다.

  • 컴포넌트 기반 설계(CBD)

    • 소프트웨어 시스템은 여러 소프트웨어 요소로 구성되고, 소프트웨어 요소는 컴포넌트가 된다.
    • 컴포넌트는 외부로 드러나는 속성(인터페이스)을 갖는다 → 컴포넌트는 인터페이스를 통해서 서로 커뮤니케이션을 한다.
    • 컴포넌트는 기능 독립적이며, 컴포넌트 간 의존성이 낮아야 한다.
    • 컴포넌트는 명확한 인터페이스를 가지고 있어야 하며, 인터페이스를 이용하여 조합이 가능해야 한다.
  • 소프트웨어 시스템의 구조는 컴포넌트들과 컴포넌트 사이의 인터페이스 관계를 보여주며, 이것을 소프트웨어 아키텍처라고 부른다

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

    • 요구사항과 품질 속성, 하드웨어 아키텍처 입력을 받아 소프트웨어 아키텍처를 정의한다.

    Untitled

  • 소프트웨어 아키텍처 중요성

    • 이해당사자 사이의 의사소통
    • 초기 설계 결정사항 표현 → 제약 사항, 시스템 구조 정의
    • 재사용할 수 있는 시스템의 추상화 → 아키텍처 단계에서의 재사용은 유사한 요구사항을 갖는 시스템에 대하여 많은 이점을 제공한다.
  • CBD 프로세스

    • 요구정의 단계(문제정의, 기초조사)
      • 요구사항 도출 및 정의
      • 비즈니스 도메인에 대한 이해
    • 분석 단계(요구사항 분석, 기능 분석)
      • 기능을 고객 관점에서 정의
      • 기능을 구현할 내부 객체 식별 및 정의
      • 시스템 내부 객체와 사용자와 시스템 간의 상호작용 체계를 정의
    • 설계 단계
      • 컴포넌트 식별 및 컴포넌트 간 상호작용 관계를 정의
      • 컴포넌트 내부 클래스 및 시퀀스 다이어그램 작성을 통한 객체간 메시지 전달 흐름 설계
    • 구현 단계
      • 개발 및 테스트