mjello 님의 개발 블로그

[소프트웨어 아키텍처 01] Structures/View/DesignGuideline in SA 본문

소프트웨어 아키텍처 🗃️

[소프트웨어 아키텍처 01] Structures/View/DesignGuideline in SA

mjello 2024. 11. 18. 11:19

*  최은미 교수님의 소프트웨어 아키텍처 수업을 듣고, 개발 시 참고하기위해 간단히 정리했습니다.

 

 

02 구조

모든 시스템은 소프트웨어 아키텍처를 가진다

 

- 아키텍처의 목적 : 최적화

    • measurable performance 측정가능 성능
    • hard, soft constraints 제약조건

- 개발 :

[ 문제 --모델링해서→ 모델 --구현해서→ 솔루션 ]

 

 

03 View

view : 다양한 측면에서 바라 보는 것

 

View : 시스템의 일부분 나타냄, 요소, 상호작용, Structure를 특정 관점에서 봄

Structure : 실제 구성 요소들과 관계들

모듈 구조 : 기능적 부분으로 분할

모듈 뷰 : 특정 관점으로 선택된 구조 정보만, 문서화

 

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

 

 

4+1 View Model
  • 논리적 관점 (Logical View)
    • 최종 사용자에게 제공하는 서비스와 기능적 요구사항
      • 클래스 다이어그램, 시퀀스 다이어그램, 계층 다이어그램과 같은 다이어그램을 사용하여 시스템의 논리적 구조를 나타냄
  • 프로세스 관점 (Process View)
    • 동시성 & 비기능적 요구사항: 런타임 동작, 시스템 가용성, 통신, 성능 및 확장성 등
      • 액티비티 다이어그램을 사용하여 시스템의 런타임 동작을 설명
  • 구현 관점 (Implementation View)
    • 소프트웨어를 개발 환경에서 정적으로 구성하는 것.
      • 컴포넌트 다이어그램, 패키지 다이어그램과 같은 다이어그램을 사용하여 소프트웨어 모듈의 구현과 조직을 표현
  • 배포 관점 (Deployment View)
    • 시스템 엔지니어의 관점, 시스템의 위상, 배포 및 통신, 비기능적 요구사항
      • 배포 다이어그램을 사용하여 논리적 요소가 물리적 노드에 배치되고 연결되는 방법을 표현
  • 시나리오 관점 (Scenarios View)
    • 아키텍처를 설명하고 검증하기 위한 사용 사례. (아키텍처 디자인의 유효성, 프로토타입)
      • 사용 사례 다이어그램을 사용하여 아키텍처를 설명하고 검증하는 데 사용되는 시나리오를 나타냄

 

 

04 Design

 

  • Architecture Design: What
    • 시스템의 주요 구조 요소와 상호작용 정의
    • 성능, 확장성, 보안에 영향 주는 아키텍처 스타일 선택, 제약 사항 결정
    • 기술적, 비용적, 시간적 제약 고려
    • 다이어그램 및 문서로 표현
  • Architecture Design: Who
    • 소프트웨어 아키텍트와 디자이너가 요구사항을 디자인으로 번역
    • 복잡성 해결을 위한 디자인 전략 적용
  • Architecture Design: Why
    • 요구사항 충족 및 재사용 가능성 확보
    • 시간과 비용 절약
    • 위험 감소 및 협업 촉진
  • Architecture Design: When
    • 소프트웨어 개발 수명 주기(SDLC)의 초기 단계에서 수행
    • 요구사항 분석 후 아키텍처 설계, 개발, 테스트, 유지보수로 이어짐
  • Architecture Design: Output
    • 시스템 구축 계획 및 설계 개요
    • 모듈 분해, 상호 의존성, UI 및 상세 디자인 설명

 

 

Software Requirement Specification (SRS) : 요구사항 분석하는 법
  • 요구사항 모델링
    • 정보 도메인 및 데이터 모델링 : DB 구조, 흐름 등
    • 기능 및 행위 모델링
    • 사용자 인터페이스 모델링
  • 요구사항 설명(설명하는 방법)
    • Use Case Specifications(UML)
      • UML을 사용하여 사용사례와 사용자 요구사랑을 설명
    • Data Flow Diagram(DFD)
      • 데이터 흐름과 처리 과정을 표현
      • 정보의 흐름을 시각화한다
    • State Transition Diagrams(STD)
      • 상태 전이 다이어그램, 상태와 상태 간의 전이 및 변화를 표현
  • 요구사항의 두 가지 측면
    • 기능적 요구사항
    • 비기능적 요구사항
      • 품질, 제약 사항, 성능, 보안, 유지 보수 등

 

 

05 Design Guideline

 

Software Architect's Tasks

  • 시스템 파티션, 하위 시스템 분해
  • 하위 시스템 간 통신 설정
  • 데이터 흐름, 제어 흐름 설계
  • 아키텍처 스타일 품질 및 비기능 요구사항 분석

Architecture Styles

  • 비슷한 디자인 그룹의 공통 속성 추상화
  • 구성 요소와 커넥터 구조화 규칙
  • 런타임 상호작용 제어

Key Components of an Architecture Style

  • Elements: 기능 수행
  • Connectors: 상호작용 지원
  • Constraints: 제약조건
  • Attributes: 구조 장단점 설명

Software Architecture Design Guidelines

  • 어떻게 보다 '무엇을' 먼저 고려
  • 추상적 디자인 우선
  • 비기능적 요구사항 초기 고려
  • 재사용성, 확장성 고려
  • 높은 응집도, 느슨한 결합도 유지
  • 설계 수정 허용
  • 모호하거나 과도한 설계 피하기

Models for Software Architecture

  • 고수준 추상화
  • 구성 요소, 상호작용 설명
  • 기능/비기능 요구사항 포함

Ways to Describe Software Architecture

  • Box and Line 다이어그램
  • UML (정적/동적) : 표준화된 다이어그램
  • 4+1뷰 모델
  • ADL (정확한 아키텍처 설명)