소프트웨어 아키텍처 - 5(Design Guidelines)

박승현·2023년 9월 13일
0

아키텍처

목록 보기
5/30
post-thumbnail

Design Guidelines

Overview

• Software Architect's Tasks
• Definition of Architecture Styles
• Consider Quality Attributes -> in the next lecture!
• Software Architecture Design Guidelines
• Models for Software Architecture


Software Architect`s Tasks

  • 시스템을 정적으로 파티션하고 하위 시스템으로 분해, 하위 시스템 간의 통신을 설정
    • 시스템을 관리하고 이해하기 쉬운 작은 부분으로 나누어 하위 시스템 간의 통신 방식을 정의하여 하위 시스템이 정보를 교환, 협력할 수 있도록 함
  • 다양한 하위 시스템 간의 동적 관계를 데이터 흐름, 제어 흐름 조작 또는 메시지 발송 등으로 확립
    • 각 하위 시스템 간의 상호 작용 방식 설계, 구현
  • 아키텍처 스타일 선택 시 품질 및 비기능 요구 사항에 대한 트레이드오프 분석을 수행
    • 다양한 아키텍처 옵션 간의 트레이드오프 분석을 수행하여 각 옵션의 장단점을 이해하고 최종 아키텍처를 선택

Architecture Styles

  • 비슷한 디자인 그룹의 공통 속성을 추상화
    • 유사한 그룹의 공통적인 특성, 속성을 추상화 요약하여 유사한 문제에 대하여 일관된 설계와 패턴을 사용 할 수 있음
  • 시스템을 구성 요소와 이를 연결하는 커넥터의 집합으로 구조화하는것에 대한 규칙과 제약 조건, 패턴을 포함
  • 구성 요소 유형의 전체적인 패턴과 흐름 제어 및 데이터 전송의 런타임 상호 작용을 지배
    • 구성요소들이 런타임 시에 어떻게 상호 작용하며 데이터 흐름과 제어 흐름을 조절하는지 관리

Key components of an architecture style

  • Elements : 시스템에서 필요한 기능을 수행
  • Connectors : element들의 상호작용 지원
  • Constraints : element가 시스템을 형성하는 방법을 정의하는 제약 조건
  • Attributes : 선택한 구조의 장단점을 설명

Software Architecture Design Guidelines

  • '어떻게' 보다 '무엇을'을 먼저 생각해라
    • 무엇을 달성해야 하는지 먼저 고려해라
    • 시스템의 기능적, 비기능적 요구 사항을 먼저 파악한 후에 세부 디자인 작업을 수행 하라는 의미
  • 구상 디자인을 생각하기 전에 추상적 디자인을 생각해라
    • 시스템 구성 요소의 인터페이스와 추상 데이터 유형을 먼저 수립해야함
    • 그 후에 시스템의 기본 구조와 상호 작용 방식을 정의
  • 디자인 초기에 비기능적 요구 사항을 고려해라
    • 기능적 요구사항을 아키텍처 디자인에 매핑할때 비기능적 요구사항을 함계 고려해야함
    • 따라서 성능, 보안 등의 비기능적 요구사항을 초기에 고려해야한다
  • 소프트웨어의 재사용성과 확장성을 고려해라
    • 새로운 시스템의 신뢰성과 비용의 효율을 위해
  • 각 요소 내에서는 높은 응집도를 유지하고 요소들 간에는 느슨한 결합도를 유지해라
    • 유지보수와 확장성을 위해 요소가 자체적으로 의미 있는 수행하고 다른 요소들과는 느슨하게 결합되도록
  • 설계의 수정을 허용하세요
    • 초기 설계가 완벽하지 않기 때문
  • 모호한 설계와 과도하게 상세한 설계를 피해라
    • 모호하면 제약이 부족하고 과도하게 상세하면 구현을 제한함

Models for Software Architecture

  • 아키텍처는 시스템의 고수준 추상화를 명시함
    • 이를 위해 분해, 조합, 아키텍처 스타일, 품질 속성을 활용
  • 아키텍처가 포함하는 내용
    • 구성 요소와 구성요소 간의 설명
    • 구성 요소들 간의 상호작용
    • 모든 구성 요소와 연결(커넥터)의 배치 구성
    • 프로젝트의 기능, 비기능적 요구사항

Ways to describe Software Architecture

  • Box and Line 다이어그램
    • 박스로 비즈니스 개념 선으로 구성 요소 간의 관계를 표현
  • UML
    • 소프트웨어 설계와 문서화를 위한 표준하ㅗ된 모델링 언어
    • 정적, 동적 다이어그램으로 나뉨
  • 아키텍처 뷰 모델(4+1뷰 모델)
    • 4+1뷰 모델
    • 논리, 프로세스, 개발, 구현, 사용사례 뷰로 구성
  • ADL(Architecture Description Language, ADL)
    • ADL은 소프트웨어 아키텍처를 형식적이고 의미론적으로 설명하는데 사용
    • 정확하고 포괄적인 문서화 및 이해를 도움

profile
KMU SW

0개의 댓글