시스템 분석 및 설계 다이어그램 상세 가이드
목차
시스템 다이어그램
개념
정의
시스템 다이어그램은 시스템의 전체 구조와 구성 요소를 표현하는 다이어그램입니다. 시스템의 경계, 서브시스템, 인터페이스를 시각화하여 시스템을 이해하고 설계합니다.
핵심 특징
- 시스템 중심: 시스템 전체 구조 표현
- 경계 정의: 시스템의 범위와 경계 명시
- 서브시스템: 시스템을 서브시스템으로 분해
- 인터페이스: 서브시스템 간 인터페이스 표현
- 계층 구조: 계층적 시스템 구조 표현
주요 구성 요소
시스템
- 정의: 전체 시스템
- 표기: 외부 박스
- 예시: 전체 애플리케이션, 전체 시스템
서브시스템
- 정의: 시스템의 주요 구성 요소
- 표기: 내부 박스
- 예시: 인증 서브시스템, 데이터 처리 서브시스템
인터페이스
- 정의: 서브시스템 간 통신 경로
- 표기: 연결선
- 예시: API, 메시지 버스, 이벤트
경계
- 정의: 시스템의 범위
- 표기: 시스템 박스 경계
- 예시: 시스템 경계, 외부 시스템과의 경계
외부 시스템
- 정의: 시스템과 상호작용하는 외부 시스템
- 표기: 시스템 외부 박스
- 예시: 외부 API, 서드파티 서비스
사용하는 곳
1. 시스템 설계
- 전체 시스템 구조 설계
- 서브시스템 분해
- 시스템 경계 정의
- 인터페이스 설계
2. 시스템 문서화
- 기존 시스템 구조 문서화
- 시스템 아키텍처 문서화
- 시스템 개요 문서화
3. 시스템 통합
- 여러 시스템 통합 계획
- 시스템 간 인터페이스 설계
- 통합 아키텍처 설계
4. 시스템 분해
- 대규모 시스템을 서브시스템으로 분해
- 모놀리식을 마이크로서비스로 분해
- 시스템 구조 개선
5. 아키텍처 설계
- 시스템 아키텍처 설계
- 아키텍처 패턴 적용
- 아키텍처 문서화
어디에 사용하면 유리한지
1. 대규모 시스템
- 상황: 여러 서브시스템으로 구성된 시스템
- 예시:
- 엔터프라이즈 애플리케이션
- 복잡한 소프트웨어 시스템
- 분산 시스템
- 유리한 점:
- 전체 시스템 구조 파악
- 서브시스템 관계 명확화
- 시스템 경계 정의
- 복잡도 관리
2. 시스템 통합
- 상황: 여러 시스템을 통합하는 경우
- 예시:
- 레거시 시스템 통합
- 시스템 통합 프로젝트
- 마이그레이션 프로젝트
- 유리한 점:
- 통합 구조 시각화
- 시스템 간 관계 명확화
- 통합 계획 수립
3. 레거시 시스템
- 상황: 기존 시스템 구조 파악
- 예시:
- 레거시 시스템 분석
- 시스템 문서화
- 리팩토링 계획
- 유리한 점:
- 시스템 구조 파악
- 서브시스템 식별
- 개선 계획 수립
4. 시스템 분해
- 상황: 대규모 시스템을 분해해야 하는 경우
- 예시:
- 모놀리식을 마이크로서비스로 분해
- 시스템 구조 개선
- 아키텍처 개선
- 유리한 점:
- 분해 전략 수립
- 서브시스템 경계 정의
- 마이그레이션 계획
5. 아키텍처 설계
- 상황: 시스템 아키텍처를 설계해야 하는 경우
- 예시:
- 신규 시스템 설계
- 아키텍처 재설계
- 유리한 점:
- 아키텍처 구조 시각화
- 아키텍처 패턴 적용
- 아키텍처 문서화
어떤 경우에는 과한 경우인지
1. 단일 애플리케이션
- 상황: 하나의 애플리케이션만 있는 경우
- 예시:
- 단순한 웹 애플리케이션
- 개인 프로젝트
- 과한 이유:
- 구조가 단순하여 문서화 불필요
- 코드로 충분히 이해 가능
2. 간단한 시스템
- 상황: 구조가 단순한 시스템
- 예시:
- 간단한 스크립트
- 단순한 유틸리티
- 과한 이유:
- 서브시스템 개념이 없음
- 문서화 불필요
3. 프로토타입
- 상황: 빠르게 변경되는 초기 프로토타입
- 예시:
- MVP 개발
- 개념 검증
- 과한 이유:
- 구조가 자주 변경됨
- 문서 업데이트 비용 높음
개발 문서에 포함될 경우
1. 시스템 설계서 (System Design Document)
포함 내용
-
시스템 다이어그램
- 전체 시스템 구조
- 서브시스템 분해
- 시스템 경계
- 인터페이스 정의
-
시스템 상세
- 각 서브시스템 상세
- 인터페이스 명세
- 시스템 사양
포함 이유
- 시스템 구조 시각화
- 서브시스템 분해
- 인터페이스 설계
- 아키텍처 문서화
작성 시점
- 시스템 설계 단계
- 아키텍처 설계 단계
포함 위치
- 시스템 설계서의 “시스템 구조” 섹션
- “아키텍처 설계” 섹션
2. 아키텍처 문서 (Architecture Document)
포함 내용
-
시스템 다이어그램
- 시스템 아키텍처
- 서브시스템 구조
- 아키텍처 패턴
-
아키텍처 상세
- 아키텍처 결정
- 패턴 적용
- 설계 원칙
포함 이유
- 아키텍처 시각화
- 아키텍처 문서화
- 아키텍처 의사결정 기록
작성 시점
- 아키텍처 설계 단계
- 아키텍처 리뷰 전
포함 위치
- 아키텍처 문서의 “시스템 아키텍처” 섹션
- “아키텍처 구조” 섹션
3. 시스템 통합 문서 (System Integration Document)
포함 내용
-
시스템 다이어그램
- 통합 시스템 구조
- 시스템 간 관계
- 통합 인터페이스
-
통합 상세
- 통합 계획
- 인터페이스 설계
- 마이그레이션 계획
포함 이유
- 통합 구조 시각화
- 통합 계획 수립
- 인터페이스 설계
작성 시점
- 시스템 통합 설계 단계
- 통합 계획 수립 단계
포함 위치
- 시스템 통합 문서의 “통합 구조” 섹션
- “시스템 통합” 섹션
논리 다이어그램
개념
정의
논리 다이어그램은 시스템의 논리적 구조를 표현하는 다이어그램입니다. 물리적 구현과 독립적으로 시스템의 논리적 구성 요소와 관계를 표현합니다.
핵심 특징
- 논리적 관점: 물리적 구현과 독립적
- 추상화: 구현 세부사항 제거
- 개념적 설계: 개념적 시스템 구조
- 플랫폼 독립: 플랫폼에 독립적
- 아키텍처 중심: 아키텍처 관점에서 표현
주요 구성 요소
논리 컴포넌트
- 정의: 기능적 구성 요소
- 표기: 박스
- 예시: 비즈니스 로직, 데이터 접근 계층, 프레젠테이션 계층
논리 관계
- 정의: 컴포넌트 간 논리적 관계
- 표기: 연결선
- 예시: 의존성, 호출 관계, 데이터 흐름
데이터 흐름
- 정의: 논리적 데이터 흐름
- 표기: 화살표
- 예시: 데이터 전송, 데이터 변환
계층
- 정의: 논리적 계층 구조
- 표기: 수직 배치
- 예시: 3계층 아키텍처, N계층 아키텍처
인터페이스
- 정의: 논리적 인터페이스
- 표기: 원 또는 릴레이
- 예시: API 인터페이스, 서비스 인터페이스
사용하는 곳
1. 논리적 설계
- 물리적 구현 전 논리적 구조 설계
- 개념적 시스템 설계
- 아키텍처 설계
2. 아키텍처 설계
- 논리적 아키텍처 설계
- 아키텍처 패턴 적용
- 아키텍처 문서화
3. 요구사항 분석
- 논리적 요구사항 분석
- 기능 요구사항 분석
- 시스템 범위 정의
4. 시스템 분석
- 논리적 시스템 구조 분석
- 시스템 이해도 향상
- 시스템 문서화
5. 플랫폼 독립적 설계
- 여러 플랫폼에 배포해야 하는 경우
- 플랫폼 독립적 아키텍처
- 이식 가능한 설계
어디에 사용하면 유리한지
1. 아키텍처 설계
- 상황: 논리적 아키텍처가 중요한 경우
- 예시:
- 엔터프라이즈 아키텍처
- 시스템 아키텍처 설계
- 아키텍처 패턴 적용
- 유리한 점:
- 논리적 구조 시각화
- 아키텍처 패턴 적용
- 구현 독립적 설계
2. 플랫폼 독립적 설계
- 상황: 여러 플랫폼에 배포해야 하는 경우
- 예시:
- 멀티 플랫폼 애플리케이션
- 클라우드 네이티브 아키텍처
- 유리한 점:
- 플랫폼 독립적 설계
- 이식 가능한 아키텍처
- 재사용 가능한 설계
3. 개념적 설계
- 상황: 구현 전 개념적 설계
- 예시:
- 시스템 개념 설계
- 아키텍처 개념 설계
- 유리한 점:
- 개념적 구조 시각화
- 구현 세부사항 제거
- 핵심 구조 파악
4. 시스템 분석
- 상황: 논리적 구조 분석
- 예시:
- 레거시 시스템 분석
- 시스템 구조 분석
- 유리한 점:
- 논리적 구조 파악
- 구현 세부사항 제거
- 핵심 구조 이해
어떤 경우에는 과한 경우인지
1. 물리적 설계만 필요한 경우
- 상황: 논리적 설계가 불필요한 경우
- 예시:
- 단일 플랫폼 애플리케이션
- 물리적 구조만 중요한 경우
- 과한 이유:
- 논리적 설계 불필요
- 물리 다이어그램으로 충분
2. 단순한 시스템
- 상황: 논리적 구조가 단순한 경우
- 예시:
- 간단한 애플리케이션
- 단순한 구조
- 과한 이유:
- 논리적 구조가 명확함
- 문서화 불필요
개발 문서에 포함될 경우
1. 시스템 설계서 (System Design Document)
포함 내용
-
논리 다이어그램
- 논리적 시스템 구조
- 논리적 컴포넌트
- 논리적 관계
-
논리 설계 상세
- 각 컴포넌트 상세
- 논리적 인터페이스
- 데이터 흐름
포함 이유
- 논리적 설계 문서화
- 아키텍처 설계
- 구현 가이드
작성 시점
- 논리적 설계 단계
- 아키텍처 설계 단계
포함 위치
- 시스템 설계서의 “논리적 설계” 섹션
- “아키텍처 설계” 섹션
2. 아키텍처 문서 (Architecture Document)
포함 내용
-
논리 다이어그램
- 논리적 아키텍처
- 아키텍처 패턴
- 논리적 계층
-
아키텍처 상세
- 아키텍처 결정
- 패턴 적용
- 설계 원칙
포함 이유
- 논리적 아키텍처 문서화
- 아키텍처 패턴 시각화
- 아키텍처 의사결정 기록
작성 시점
- 아키텍처 설계 단계
- 아키텍처 리뷰 전
포함 위치
- 아키텍처 문서의 “논리적 아키텍처” 섹션
- “아키텍처 구조” 섹션
물리 다이어그램
개념
정의
물리 다이어그램은 시스템의 물리적 배치와 인프라를 표현하는 다이어그램입니다. 실제 서버, 네트워크, 스토리지 등 물리적 구성 요소를 표현합니다.
핵심 특징
- 물리적 관점: 실제 하드웨어와 인프라 표현
- 배치 정보: 물리적 배치 위치 정보
- 하드웨어: 실제 하드웨어 장비 표현
- 인프라: 네트워크, 스토리지 등 인프라 표현
- 운영 중심: 운영 환경 중심 표현
주요 구성 요소
서버
- 정의: 물리적/가상 서버
- 표기: 박스
- 예시: 웹 서버, 애플리케이션 서버, 데이터베이스 서버
네트워크
- 정의: 물리적 네트워크 연결
- 표기: 연결선
- 예시: LAN, WAN, 인터넷 연결
스토리지
- 정의: 물리적 스토리지
- 표기: 원통
- 예시: SAN, NAS, 로컬 스토리지
위치
- 정의: 물리적 배치 위치
- 표기: 그룹핑 또는 라벨
- 예시: 데이터센터, 클라우드 리전, 오피스
하드웨어
- 정의: 실제 하드웨어 장비
- 표기: 장비 아이콘
- 예시: 라우터, 스위치, 방화벽, 로드 밸런서
사용하는 곳
1. 인프라 설계
- 물리적 인프라 설계
- 하드웨어 요구사항 정의
- 인프라 배치 계획
2. 배포 계획
- 물리적 배치 계획
- 서버 배치 계획
- 네트워크 구성 계획
3. 용량 계획
- 물리적 리소스 계획
- 하드웨어 용량 계획
- 확장 계획
4. 하드웨어 요구사항
- 필요한 하드웨어 정의
- 하드웨어 스펙 정의
- 하드웨어 구매 계획
5. 운영 문서화
- 운영 환경 문서화
- 인프라 구조 문서화
- 배치 구조 문서화
어디에 사용하면 유리한지
1. 온프레미스 인프라
- 상황: 물리적 서버가 있는 경우
- 예시:
- 온프레미스 데이터센터
- 자체 인프라 운영
- 유리한 점:
- 물리적 배치 시각화
- 하드웨어 계획
- 인프라 관리
2. 하이브리드 클라우드
- 상황: 물리적과 가상 인프라 혼합
- 예시:
- 온프레미스 + 클라우드
- 하이브리드 아키텍처
- 유리한 점:
- 하이브리드 구조 시각화
- 배치 계획
- 리소스 관리
3. 하드웨어 계획
- 상황: 하드웨어 구매 계획
- 예시:
- 서버 구매 계획
- 네트워크 장비 계획
- 유리한 점:
- 하드웨어 요구사항 정의
- 구매 계획
- 예산 계획
4. 용량 계획
- 상황: 물리적 리소스 계획
- 예시:
- 서버 용량 계획
- 스토리지 용량 계획
- 유리한 점:
- 리소스 계획
- 확장 계획
- 비용 계획
5. 재해 복구
- 상황: 물리적 인프라 복구 계획
- 예시:
- 백업 인프라
- 재해 복구 계획
- 유리한 점:
- 복구 인프라 시각화
- 복구 계획
- 비즈니스 연속성
어떤 경우에는 과한 경우인지
1. 완전 클라우드
- 상황: 물리적 인프라가 없는 경우
- 예시:
- 완전 관리형 클라우드 서비스
- 서버리스 아키텍처
- 과한 이유:
- 물리적 인프라 개념이 없음
- 논리 다이어그램이 더 적합
2. 서버리스
- 상황: 물리적 서버 개념이 없는 경우
- 예시:
- AWS Lambda
- Azure Functions
- 과한 이유:
- 물리적 서버 개념이 없음
- 논리 다이어그램이 더 적합
3. 개발 환경
- 상황: 개발자 로컬 환경
- 예시:
- 로컬 개발 환경
- Docker Compose 환경
- 과한 이유:
- 임시 환경
- 문서화 불필요
개발 문서에 포함될 경우
1. 인프라 설계서 (Infrastructure Design Document)
포함 내용
-
물리 다이어그램
- 물리적 인프라 구조
- 서버 배치
- 네트워크 구조
- 스토리지 구조
-
인프라 상세
- 하드웨어 스펙
- 배치 계획
- 용량 계획
포함 이유
- 물리적 인프라 설계
- 하드웨어 요구사항 정의
- 배치 계획
작성 시점
- 인프라 설계 단계
- 하드웨어 계획 단계
포함 위치
- 인프라 설계서의 “물리적 인프라” 섹션
- “하드웨어 요구사항” 섹션
2. 배포 문서 (Deployment Document)
포함 내용
-
물리 다이어그램
- 배포 구조
- 서버 배치
- 네트워크 구성
-
배포 상세
- 배포 절차
- 서버 구성
- 네트워크 설정
포함 이유
- 배포 구조 시각화
- 배포 계획
- 운영 가이드
작성 시점
- 배포 계획 단계
- 배포 문서화 단계
포함 위치
- 배포 문서의 “배포 구조” 섹션
- “인프라 구성” 섹션
아키텍처 다이어그램
개념
정의
아키텍처 다이어그램은 시스템 아키텍처를 다양한 관점에서 표현하는 다이어그램입니다. 시스템의 구조, 구성 요소, 관계를 시각화하여 아키텍처를 이해하고 설계합니다.
핵심 특징
- 다양한 관점: 여러 관점에서 아키텍처 표현
- 구조 중심: 시스템 구조에 초점
- 패턴 적용: 아키텍처 패턴 시각화
- 의사결정 기록: 아키텍처 의사결정 기록
- 문서화: 아키텍처 문서화
주요 관점
논리적 아키텍처
- 목적: 논리적 구조 표현
- 포함: 논리적 컴포넌트, 논리적 관계
- 용도: 개념적 설계, 아키텍처 설계
물리적 아키텍처
- 목적: 물리적 구조 표현
- 포함: 서버, 네트워크, 스토리지
- 용도: 인프라 설계, 배포 계획
배포 아키텍처
- 목적: 배포 구조 표현
- 포함: 배포 단위, 배치 구조
- 용도: 배포 계획, 운영 계획
통합 아키텍처
- 목적: 시스템 통합 구조 표현
- 포함: 시스템 간 통합, 인터페이스
- 용도: 시스템 통합, 통합 계획
사용하는 곳
1. 아키텍처 설계
- 시스템 아키텍처 설계
- 아키텍처 패턴 적용
- 아키텍처 의사결정
2. 아키텍처 문서화
- 아키텍처 문서화
- 아키텍처 의사결정 기록
- 아키텍처 리뷰
3. 아키텍처 통신
- 이해관계자와 아키텍처 소통
- 아키텍처 프레젠테이션
- 아키텍처 교육
4. 아키텍처 개선
- 아키텍처 개선 계획
- 아키텍처 리팩토링
- 아키텍처 최적화
어디에 사용하면 유리한지
1. 복잡한 시스템
- 상황: 복잡한 아키텍처를 가진 시스템
- 유리한 점:
- 아키텍처 시각화
- 구조 이해
- 패턴 적용
2. 아키텍처 의사결정
- 상황: 아키텍처 결정을 기록해야 하는 경우
- 유리한 점:
- 의사결정 기록
- 대안 비교
- 향후 참고
어떤 경우에는 과한 경우인지
1. 간단한 시스템
- 상황: 아키텍처가 단순한 시스템
- 과한 이유:
- 아키텍처 문서화 불필요
개발 문서에 포함될 경우
1. 아키텍처 문서 (Architecture Document)
포함 내용
-
아키텍처 다이어그램
- 논리적 아키텍처
- 물리적 아키텍처
- 배포 아키텍처
-
아키텍처 상세
- 아키텍처 결정
- 패턴 적용
- 설계 원칙
포함 이유
- 아키텍처 시각화
- 아키텍처 문서화
- 아키텍처 의사결정 기록
작성 시점
- 아키텍처 설계 단계
- 아키텍처 리뷰 전
포함 위치
- 아키텍처 문서의 “아키텍처 구조” 섹션
- “아키텍처 설계” 섹션
배포 다이어그램
개념
정의
배포 다이어그램은 인프라스트럭처와 배포 구조를 표현하는 다이어그램입니다. 애플리케이션과 서비스의 배포 구조, 인프라 구성, 네트워크 구조를 시각화합니다.
핵심 특징
- 배포 중심: 배포 구조에 초점
- 인프라 표현: 인프라 구성 요소 표현
- 배치 정보: 배치 구조 정보
- 운영 중심: 운영 환경 중심
주요 구성 요소
서버
- 정의: 배포 대상 서버
- 표기: 박스
- 예시: 웹 서버, 애플리케이션 서버
네트워크
- 정의: 네트워크 구조
- 표기: 클라우드 모양
- 예시: 서브넷, VPC, 네트워크 세그먼트
데이터베이스
- 정의: 데이터베이스 서버
- 표기: 원통
- 예시: MySQL, PostgreSQL, MongoDB
로드 밸런서
- 정의: 트래픽 분산 장비
- 표기: 다이아몬드
- 예시: ALB, NLB, 로드 밸런서
배포 단위
- 정의: 배포되는 애플리케이션/서비스
- 표기: 박스 내부
- 예시: 컨테이너, VM, 서비스
사용하는 곳
1. 인프라 설계
- 배포 인프라 설계
- 서버 구성 계획
- 네트워크 구성 계획
2. 배포 계획
- 배포 구조 계획
- 배포 전략 수립
- 배포 절차 정의
3. 운영 계획
- 운영 환경 계획
- 모니터링 계획
- 확장 계획
어디에 사용하면 유리한지
1. 복잡한 배포 구조
- 상황: 여러 서버와 서비스가 있는 경우
- 유리한 점:
- 배포 구조 시각화
- 배포 계획
- 운영 가이드
2. 마이크로서비스
- 상황: 여러 마이크로서비스 배포
- 유리한 점:
- 서비스 배치 시각화
- 서비스 간 관계
- 배포 전략
어떤 경우에는 과한 경우인지
1. 단순한 배포
- 상황: 단일 서버 배포
- 과한 이유:
- 구조가 단순하여 문서화 불필요
개발 문서에 포함될 경우
1. 배포 문서 (Deployment Document)
포함 내용
-
배포 다이어그램
- 배포 구조
- 서버 구성
- 네트워크 구조
-
배포 상세
- 배포 절차
- 서버 구성
- 네트워크 설정
포함 이유
- 배포 구조 시각화
- 배포 계획
- 운영 가이드
작성 시점
- 배포 계획 단계
- 배포 문서화 단계
포함 위치
- 배포 문서의 “배포 구조” 섹션
- “인프라 구성” 섹션
통합 다이어그램
개념
정의
통합 다이어그램은 여러 시스템을 통합하는 구조를 표현하는 다이어그램입니다. 시스템 간 통합, 인터페이스, 데이터 흐름을 시각화합니다.
핵심 특징
- 통합 중심: 시스템 통합에 초점
- 인터페이스: 시스템 간 인터페이스 표현
- 데이터 흐름: 통합 데이터 흐름
- 통합 패턴: 통합 패턴 시각화
사용하는 곳
1. 시스템 통합
- 여러 시스템 통합 계획
- 통합 구조 설계
- 통합 인터페이스 설계
2. 통합 문서화
- 통합 구조 문서화
- 통합 인터페이스 문서화
- 통합 가이드
어디에 사용하면 유리한지
1. 시스템 통합 프로젝트
- 상황: 여러 시스템을 통합하는 경우
- 유리한 점:
- 통합 구조 시각화
- 통합 계획
- 인터페이스 설계
어떤 경우에는 과한 경우인지
1. 단일 시스템
- 상황: 통합이 불필요한 경우
- 과한 이유:
- 통합 개념이 없음
개발 문서에 포함될 경우
1. 시스템 통합 문서 (System Integration Document)
포함 내용
-
통합 다이어그램
- 통합 구조
- 시스템 간 관계
- 통합 인터페이스
-
통합 상세
- 통합 계획
- 인터페이스 설계
- 마이그레이션 계획
포함 이유
- 통합 구조 시각화
- 통합 계획
- 인터페이스 설계
작성 시점
- 시스템 통합 설계 단계
- 통합 계획 수립 단계
포함 위치
- 시스템 통합 문서의 “통합 구조” 섹션
- “시스템 통합” 섹션
인터페이스 다이어그램
개념
정의
인터페이스 다이어그램은 시스템 간 인터페이스를 표현하는 다이어그램입니다. 인터페이스 구조, 프로토콜, 데이터 형식을 시각화합니다.
핵심 특징
- 인터페이스 중심: 인터페이스에 초점
- 프로토콜: 통신 프로토콜 표현
- 데이터 형식: 데이터 형식 표현
- 통신 방식: 통신 방식 표현
사용하는 곳
1. 인터페이스 설계
- 시스템 간 인터페이스 설계
- API 설계
- 프로토콜 설계
2. 인터페이스 문서화
- 인터페이스 문서화
- API 문서화
- 통합 가이드
어디에 사용하면 유리한지
1. 복잡한 인터페이스
- 상황: 여러 인터페이스가 있는 경우
- 유리한 점:
- 인터페이스 시각화
- 인터페이스 설계
- 문서화
어떤 경우에는 과한 경우인지
1. 단순한 인터페이스
- 상황: 인터페이스가 단순한 경우
- 과한 이유:
- 문서화 불필요
개발 문서에 포함될 경우
1. 인터페이스 설계서 (Interface Design Document)
포함 내용
-
인터페이스 다이어그램
- 인터페이스 구조
- 프로토콜
- 데이터 형식
-
인터페이스 상세
- 각 인터페이스 명세
- 프로토콜 정의
- 데이터 정의
포함 이유
- 인터페이스 시각화
- 인터페이스 설계
- 문서화
작성 시점
- 인터페이스 설계 단계
- API 설계 단계
포함 위치
- 인터페이스 설계서의 “인터페이스 구조” 섹션
- “인터페이스 명세” 섹션
시스템 컨텍스트 다이어그램
개념
정의
시스템 컨텍스트 다이어그램은 시스템과 외부 액터의 관계를 표현하는 다이어그램입니다. 시스템의 경계, 외부 의존성, 액터와의 관계를 시각화합니다.
핵심 특징
- 시스템 중심: 시스템을 중심으로 표현
- 경계 정의: 시스템 경계 명확히 정의
- 외부 의존성: 외부 시스템과의 의존성 표현
- 액터 관계: 사용자 및 액터와의 관계
사용하는 곳
1. 시스템 경계 정의
- 시스템 범위 정의
- 시스템 경계 명확화
- 외부 의존성 식별
2. 아키텍처 개요
- 시스템 아키텍처 개요
- 이해관계자 소통
- 시스템 이해도 향상
3. 요구사항 분석
- 시스템 요구사항 분석
- 외부 요구사항 식별
- 시스템 범위 결정
어디에 사용하면 유리한지
1. 시스템 설계 초기
- 상황: 시스템 설계 초기 단계
- 유리한 점:
- 시스템 경계 정의
- 외부 의존성 식별
- 이해관계자 소통
2. 복잡한 시스템
- 상황: 많은 외부 의존성이 있는 시스템
- 유리한 점:
- 외부 의존성 시각화
- 시스템 경계 명확화
어떤 경우에는 과한 경우인지
1. 단순한 시스템
- 상황: 외부 의존성이 없는 단순한 시스템
- 과한 이유:
- 구조가 단순하여 문서화 불필요
개발 문서에 포함될 경우
1. 시스템 설계서 (System Design Document)
포함 내용
-
시스템 컨텍스트 다이어그램
- 시스템 경계
- 외부 액터
- 외부 시스템
-
시스템 상세
- 시스템 범위
- 외부 의존성
- 액터 정의
포함 이유
- 시스템 경계 정의
- 외부 의존성 식별
- 시스템 이해도 향상
작성 시점
- 시스템 설계 초기 단계
- 요구사항 분석 단계
포함 위치
- 시스템 설계서의 “시스템 개요” 섹션
- “시스템 경계” 섹션
도구
시스템 다이어그램 도구
- Draw.io: 다양한 시스템 다이어그램 지원
- Lucidchart: 시스템 다이어그램 템플릿
- Visio: 기업 표준 도구
- Structurizr: C4 모델 기반 시스템 다이어그램
아키텍처 도구
- ArchiMate: 엔터프라이즈 아키텍처 모델링
- C4 Model: 소프트웨어 아키텍처 문서화
- PlantUML: 텍스트 기반 아키텍처 다이어그램
모범 사례
시스템 다이어그램
- 시스템 경계 명확히 정의
- 서브시스템 적절히 분해
- 인터페이스 명확히 표현
- 계층 구조 유지
논리/물리 다이어그램
- 논리와 물리 구분 명확히
- 적절한 추상화 수준 유지
- 일관된 표기법 사용
- 정기적 업데이트
결론
시스템 분석 및 설계 다이어그램은 시스템을 다양한 관점에서 분석하고 설계하는 강력한 도구입니다. 시스템 다이어그램은 전체 구조를, 논리 다이어그램은 논리적 구조를, 물리 다이어그램은 물리적 구조를 각각 표현합니다.
각 다이어그램은 고유한 목적과 사용 사례를 가지고 있으며, 시스템의 특성과 분석/설계 단계에 맞는 적절한 다이어그램을 선택하는 것이 중요합니다. 적절한 상황에서 사용하면 시스템 이해도와 설계 품질을 크게 향상시킬 수 있습니다.