소프트웨어 아키텍처 - 3(Views)

박승현·2023년 9월 11일
0

아키텍처

목록 보기
3/30
post-thumbnail

Views

오브젝트 -> 요소

C&C(Command and Control)

  • C&C 구성 요소
    • 공유 리포지토리(Database)
      • 데이터와 정보를 저장
      • 서버들과 관리 컴포넌트에 의해 접근
    • 서버
      • 공유 리포지토리에 접근, 데이터를 읽고 쓰는 역할
      • 클라이언트 텔러들과 상호 작용, 데이터 처리 및 관리
    • 관리 컴포넌트(Administrative)
      • 시스템의 관리와 모니터링
      • 서버 및 리포지토리의 동작을 감시, 관리
    • 클라이언트 텔러
      • 서버와 상호 작용, 공유 리포지토리의 데이터를 요청 or 업데이트
      • 클라이언트 텔러끼리 통신, 데이터나 이벤트를 공유("Publish-subscribe" 연결자 사용)

C&C 구조는 데이터 중심의 시스템에서 다양한 역할을 수행하며 효율적인 상호 작용을 가능하게 함


UML

  • Module Elements in UML(Unified Modeling Language)
    • 클래스 : 보통 3개의 구획으로 나누어 이름, 속성, 기능을 표시, 이름은 필수지만 다른 2가지는 생략이 가능
    • 소프트웨어 시스템을 모델링하고 설계하는 데 사용되는 방법
    • 시스템의 모듈화, 컴포넌트 분해, 시스템 아키텍처등의 표현에 도움을 줌

Module Relations in UML

  • is-part-of relation
    • 큰 개체가 하위 개체로 구성
    • ex) 자동차는 엔진, 바퀴, 창문으로 구성 자동차와 엔진, 바퀴, 창문 간의 관계가 is-part-of 관계
  • is-a-relation(상속)
    • 클래스 상속 : 하위 클래스가 상위 클래스의 모든 특성을 상속
      • 클래스 간의 계층 구조 형성 및 공통된 특성 재사용
    • 인터페이스 관계
      • 인터페이스가 메서드를 정의, 클래스가 해당 인터페이스의 메서드를 제공하는 방법
  • depends-on-relation
    • 상위 클래스가 하위 클래스의 메서드를 사용하는 경우

Structures and Views

  • View는 소프트웨어, 아키텍처의 일부분을 나타내는 것으로 시스템 관계자들이 읽고 작성할 수 있다
    • view는 아키텍처 요소들의 일관된 집합 : 시스템의 일부를 선택하고 그 부분을 나타내는 것이 view
    • 선택된 아키텍처적인 요소들의 표현, 요소들 간의 상호 작용을 나타낸다
  • Structure은 시스템 내에서 실제로 존재하는 요소들의 집합
    • 시스템의 실제 구성 요소들과 그들 간의 관계를 나타낸다, 뷰는 이 구조를 특정 관점에서 보여준다

'뷰'는 아키텍처 '구조'의 일부를 특정 관점에서 표현한 것


Example of Structures and Views

  • 모듈 구조
    • 시스템의 모듈구성과 그들간의 조직관계를 정의
    • 모듈은 소프트웨어 시스템을 기능적인 부분으로 분할한 요소들
  • 모듈 뷰
    • 모듈 구조의 특정 관점, 특정 관계자 그룹을 위해 선택된 구조적인 정보를 포함하는 표현
    • 뷰는 구조를 특정 템플릿과 표기법에 따라 문서화한 것, 이를 통해 관계자들이 읽고 이해함

소프트웨어 아키텍트는 시스템의 아키텍처를 설계하고 구조화, 아키텍트는 모듈 구조를 설계하고 그 구조를 뷰를 통해 문서화하여 공유

  • 같은 시스템의 다른 뷰

4+1 View Model


모델링 뷰


Logical Viewpoint(논리적 관점)

  • 소프트웨어 시스템이 최종 사용자에게 제공해야 하는 서비스와 기능적 요구사항을 지원
    • 기능적 요구사항 지원
      • 시스템이 수행해야 하는 기능과 서비스를 정의
      • 사용자, 다른 시스템과 상호작용간에 어떤 동작을 수행해야 하는지 나타낸다
    • 핵심 추상화 표시
      • 클래스, 객체, 모듈 이들 간의 상호작용 같은 개념적인 요소를 표시
      • 시스템의 기능과 동작을 논리적으로 나타내어 관계자들에게 시스템의 구조와 동작 방식을 제시

Process Viewpoint(프로세스 관점)

  • 런타임에서 발생하는 동시성 측면 과 비기능적 요구사항을 다룸
    • 동시성
      • 시스템이 실행 중일 때 task, thread, process와 그들 간의 상호작용
      • 여러 작업이 동시에 처리될때 발생, 효율성, 성능, 데이터 공유, 동기화등을 고려
    • 비기능적 요구사항
      • 성능 : 응답시간, 처리량
      • 시스템 가용성 : 사용 가능한 시간 및 가동 중지 시간
      • 동시성 및 분산 : 다중 사용자나 다중 시스템 간의 효과적인 상호작용과 분산 아키텍처를 고려
      • 시스템 무결성 : 오류가 없는 동작 보장 및 데이터의 무결성 유지
      • 내결함성 : 하드웨어, 소프트웨어 오류에 대해 견딜 수 있는 능력

Deployment Viewpoint(배포 관점)

  • 논리적, 프로세스, 구현 관점에서 식별된 다양한 요소가 다양한 노드에 어떻게 매핑되어야 하는지 저의 및 비기능적 요구사항 고려
    • 논리, 프로세스, 구현 관점의 요소 매핑
      • 다양한 관점에서 식별된 요소들이 물리적인 노드(하드웨어, 서버등)에 어떻게 배치하고 연결할지 정의
      • 논리적인 요소(클래스, 모듈), 프로세스(서비스, app 인스턴스), 구현 관점에서의 요소들에 적용
    • 비기능적 요구사항
      • 시스템의 가용성
      • 신뢰성(오류 허용 및 복구 능력)
      • 성능 및 확장성(부하 증가에 따른 확장 가능성)

    ex) 웹 애플리케이션의 배포 관점에서는 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등의 요소들이 어떻게 물리적인 서버 노드에 배치되고 연결되어야 하는지를 정의


Implementation Viewpoint(구현 관점)

  • 소프트웨어 모듈을 개발 환경에서 어떻게 구성하는지에 중점(실제로 개발하는 과정과 관련이 높다)
    • 소프트웨어 모듈의 구성
      • 소프트웨어 모듈 : 시스템의 구성 요소
      • 이 모듈들이 서로 연결되고 협력하여 시스템의 기능을 구현
    • 프로그램 라이브러리 or 서브시스템 패키징
      • 모듈은 프로그램 라이브러리나 서브 시스템으로 패키징 되기도 한다
      • 코드의 재사용성을 높이고 단순화, 유지보수에 유리

Use Case Viewpoint(시나리오 관점)

  • 아키텍처의 네 가지 관점(위의 4가지)에서의 요소들이 서로 원활하게 작동하는 방식을 보여주기 위해 사용 사례(use case)를 활용
    • 아키텍처 디자인 중요한 요소 발견
      • 아키텍처 디자인 과정에서 중요한 아키텍처 요소를 발견하는 데 도움을 줌, 사용 사례를 통해 시스템의 동작 과정을 이해 아키텍처 요소 식별 및 설계
    • 아키텍처 디자인의 유효성 확인 및 설명
      • 사용 사례를 통해 아키텍처가 사용자 또는 시스템과 어떻게 상호작용하는지를 시각화하고 이를 통해 아키텍처 디자인의 유효성을 검증, 설명
    • 프로토타입 테스트의 시작점
      • 아키텍처 프로토타입의 테스트를 시작하기 위한 출발점으로 사용
      • 사용 사례를 기반으로 아키텍처의 프로토타입을 개발하고 테스트, 시스템의 초기 버전을 검증하고 개선할때 중요한 역할을 한다

시나리오 관점은 아키텍처 디자인 과정에서 시스템의 동작과 상호작용을 구체화, 검증하는 데 도움을 주고 아키텍처의 유효성을 입증하는데 중요한 역할을 한다


4+1 View Model Summary

  • 논리적 관점 (Logical View)

    • 중점
      • 시스템의 기능적 요구사항.
    • 내용
      • 클래스 다이어그램, 시퀀스 다이어그램, 계층 다이어그램과 같은 다이어그램을 사용하여 시스템의 논리적 구조를 나타냄
  • 구현 관점 (Implementation View)

    • 중점
      • 소프트웨어를 개발 환경에서 정적으로 구성하는 것.
    • 내용
      • 컴포넌트 다이어그램, 패키지 다이어그램과 같은 다이어그램을 사용하여 소프트웨어 모듈의 구현과 조직을 표현
  • 프로세스 관점 (Process View)

    • 중점
      • 시스템의 런타임 동작, 프로세스, 통신, 동시성, 성능 및 확장성 등
    • 내용
      • 액티비티 다이어그램을 사용하여 시스템의 런타임 동작을 설명
  • 배포 관점 (Deployment View)

    • 중점
      • 시스템 엔지니어의 관점, 시스템의 위상, 배포 및 통신을 다룸.
    • 내용
      • 배포 다이어그램을 사용하여 논리적 요소가 물리적 노드에 배치되고 연결되는 방법을 표현
  • 시나리오 관점 (Scenarios View)

    • 중점
      • 아키텍처를 설명하고 검증하기 위한 사용 사례.
    • 내용
      • 사용 사례 다이어그램을 사용하여 아키텍처를 설명하고 검증하는 데 사용되는 시나리오를 나타냄
profile
KMU SW

0개의 댓글