국민대학교에서 Software Architecture in Practice(3rd edition) 교재를 사용한
최은미 교수님의 강의를 듣고 정리한 글입니다
Software Architect’s Tasks
시스템의 정적 분할 및 하위 시스템으로의 분해 및 하위 시스템 간의 통신을 수행한다
→ 플랫폼의 시스템을 알림 시스템, 로그인 시스템과 같이 나누는 것을 정적 분할이라 하고, 하위 시스템이 어떤 역할을 맡고 어떤 데이터를 주고 받을지 설계한다
데이터 흐름, 제어 흐름, 또는 메시지 디스패치 측면에서 서로 다른 하위 시스템 간에 동적 제어 관계를 확립한다
→ 시스템이 실행 중일 때의 흐름을 다루는 것과 같다. 로그인 시스템 동작 시 인증 시스템 동작
아키텍쳐 스타일을 고를 때 비기능적 요구사항과 품질에 관한 트레이드오프 분석을 수행한다
→ 비기능적 요구사항(확장성, 보안 등)을 고려해서 무엇을 중요하게 볼지 판단하고 구조를 정하는 것
Architecture Styles
아키텍쳐 스타일이란 전체 시스템을 어떤 구조로 짤지에 대한 대표적인 설계 방식이다
유사한 구조나 설계 방식을 가진 시스템을 그룹으로 묶어 공통 속성으로 추상화한 설계 패턴 그룹이다
예를 들어, 여러 시스템이 다 계층 구조를 사용하고 있다면 Layered Style이라고 부른다
이때 시스템을 구성 요소들과 구성 요소들이 어떻게 연결될 지 구조화하는 것에 대한 규칙과 제약 사항, 패턴을 을 정해야 한다
그리고 구성 요소 유형의 전반적인 구조 설계 패턴과 흐름 제어 및 데이터 전송의 런타임 상호 작용을 관리한다
쉽게 말해 실행 중에 컴포넌트들이 어떻게 오가고, 제어 흐름을 어떻게 관리할지도 포함해야한다
Key components of an architecture style
- 시스템에서 요구되는 기능을 수행하는 요소들
- 요소들간에 협력, 통신, 조정을 가능하게 하는 커넥터들
- 시스템을 형성하기 위해 요소들이 어떻게 통합될 수 있는지 정의하는 제약 조건
- 선택한 구조의 장단점을 설명할 수 있는 속성들
Software Architecture Design Guidelines
- 어떻게 그것을 할지 생각하기전에 무엇을 할지 생각하기
- 아키텍쳐와 상세 설계를 수행하기전에 기능적 및 비기능적 요구사항을 식별하고 검증해야함
- 실제 디자인을 생각하기전에 추상적인 디자인을 생각하기
- 항상 추상적 설계를 시작해 구성요소의 인터페이스와 추상 데이터 유형을 정해야한다
- 설계 초기 단계에서 비기능적인 요구사항을 생각하기
- 기능적 요구사항을 아키텍쳐 설계에 매핑할 때 비기능적인 요구사항도 고려해야하기 때문
- 가능한 소프트웨어의 재사용성과 확장성을 생각하기
- 이미 존재하는 소프트웨어 구성 요소를 새로운 시스템의 신뢰성과 비용 효율성을 높이기 위해 어떻게 재사용할지 고려해야 함
- 각 요소들 사이의 높은 응집력과 낮은 결합을 추구하도록 하기
- 유지보수와 확장성을 위해 요소 내에서는 응집력을 높이고, 요소 간에는 결합을 느슨하게 유지해야 함
- 설계의 세부 조정을 허용하기
- 설계를 세밀하게 조정하기 위해 프로토타이핑과 반복 작업은 필요함
- 모호한 설계와 과도하게 상세한 설계를 피하기
- 모호하면 제약이 부족하고, 과도하게 상세하면 구현을 제한하게 됨
Models for Software Architecture
소프트웨어 아키텍처는 소프트웨어 시스템을 높은 수준에서 추상화하여 명세한다
이를 위해 분해, 조합, 아키텍쳐 스타일, 품질 속성 등을 활용한다
Software architecture
- 구성 요소들과 그 연결 관계를 설명한다 → 어떤 요소, 어떻게 연결
- 이 구성 요소들간의 상호작용을 정의한다 → 어떤 식으로 데이터를 주고받고, 제어 흐름이 이루어지는지
- 모든 구성 요소들과 연결의 배포 구성을 명시한다 → 각 컴포넌트가 서버나 노드에 어떻게 배치될 지
- 프로젝트의 기능적 / 비기능적 요구사항을 충족해야한다 → 프로젝트의 요구사항에 맞는 구조
Ways to describe Software Architecture
그러면 위에서 설명한 소프트웨어 아키텍처를 설명하는 방식에는 무엇이 있을까
- Box and line Diagram
- 박스로 비지니스 개념 다이어그램, 선으로 그 구성 요소들간의 관계
- UML
- 정적 다이어그램, 동적 다이어그램
- Architecture View Models
- 4 + 1 뷰 모델
- Architecture Description Language(ADL)
- 소프트웨어 아키텍처를 형식적이고 의미적으로 설명하는 방식
'CS > 소프트웨어아키텍처' 카테고리의 다른 글
| [소프트웨어아키텍처] Architecture Design (0) | 2025.11.12 |
|---|---|
| [소프트웨어아키텍처] Views in Software Architecture (0) | 2025.11.12 |
| [소프트웨어아키텍처] Structures in Software Architecture (0) | 2025.11.12 |
| [소프트웨어아키텍처] What is Software Architecture (0) | 2025.11.12 |
