2025년 5월 21일 작성

Flowchart - 흐름과 순서를 시각화하기

flowchart를 그려서 process나 algorithm을 시각적으로 표현할 수 있습니다.

Flowchart : 순서도, 흐름도

flowchart LR
    A[Start] --> B{Decision}
    B -->|Yes| C[Continue]
    B -->|No| D[Stop]
  • flowchart는 process나 algorithm의 단계를 시각적으로 표현하는 diagram입니다.

  • 다양한 모양의 symbol을 사용하여 각 단계의 특성과 역할을 구분합니다.
    • 각 symbol은 특정 action이나 decision을 나타냅니다.
    • symbol 간의 연결은 arrow나 line을 통해 흐름의 방향을 표시합니다.
  • 복잡한 process를 단순화하여 이해하기 쉽게 만드는 도구입니다.
    • 논리적 구조와 흐름을 한눈에 파악할 수 있습니다.
    • 문제 해결 과정을 step-by-step으로 설계하는 데 도움이 됩니다.

Flowchart의 기본 구성 요소

  • flowchart는 symbol(도형)과 flow line(연결선)으로 구성됩니다.

Symbol : 기본 도형

  • flowchart에서 사용되는 기본적인 도형으로, 시작/종료, 처리, 결정, 입출력, 연결 등의 symbol이 있습니다.

Terminal Symbol : 시작/종료

  • 타원형이나 둥근 직사각형으로 표현합니다.
flowchart TD
    start([시작])
    finish([종료])
  • process의 시작과 끝을 나타냅니다.
  • 일반적으로 “시작”, “종료”, “Start”, “End” 등의 text를 포함합니다.

Process Symbol : 처리

  • 직사각형으로 표현합니다.
flowchart LR
    process[처리]
  • 계산, data 처리, 변수 할당 등의 작업을 나타냅니다.
  • 하나의 step이나 action을 의미합니다.

Decision Symbol : 결정

  • 마름모꼴로 표현합니다.
flowchart LR
    decision{결정}
  • 조건에 따른 분기점을 나타냅니다.
  • “예/아니오” 또는 다중 조건에 따른 다양한 경로를 표시합니다.

Input/Output Symbol : 입출력

  • 평행사변형으로 표현합니다.
flowchart LR
    input_output[/입출력/]
  • data 입력이나 결과 출력을 나타냅니다.
  • 사용자 입력, 파일 읽기/쓰기, 화면 출력 등의 작업을 표시합니다.

Connector Symbol : 연결

  • 원형으로 표현합니다.
flowchart LR
    connector((연결))
  • diagram 내의 다른 부분과 연결됨을 나타냅니다.
  • 복잡한 flowchart에서 line 교차를 줄이기 위해 사용합니다.

Flow Line : 연결선

  • 화살표와 선으로 표현합니다.
flowchart LR
    start([시작])
    finish([종료])
    process[처리]

    start --> process
    process --> finish
  • 화살표는 process의 순서와 방향을 나타냅니다.
    • 단일 방향 화살표가 일반적으로 사용됩니다.
    • 조건부 분기에서는 각 화살표에 조건을 표기합니다.
  • 실선은 일반적인 흐름을, 점선은 선택적 또는 부가적 흐름을 나타내기도 합니다.
    • 주요 흐름과 예외 처리 흐름을 구분할 수 있습니다.

Flowchart 작성 기법

  • flowchart를 작성할 때는 기본적인 규칙을 따라야 합니다.

기본적인 작성 단계

  • 시작과 종료 지점을 명확히 정의합니다.
    • 모든 flowchart는 명확한 시작점과 종료점을 가져야 합니다.
    • 여러 종료점이 있을 수 있지만, 시작점은 일반적으로 하나입니다.
  • 주요 단계를 식별하고 적절한 symbol로 표현합니다.
    • 각 단계의 특성에 맞는 symbol을 선택합니다.
    • 단계별 설명은 간결하고 명확하게 작성합니다.
  • 단계 간의 논리적 흐름과 연결 관계를 화살표로 표시합니다.
    • 모든 경로가 연결되도록 주의합니다.
    • 분기점에서 나온 모든 경로가 어딘가로 연결되어야 합니다.
  • 조건부 분기에서는 각 경로에 조건을 명확히 표기합니다.
    • “Yes/No”, “True/False” 등으로 조건을 명시합니다.
    • 복잡한 조건은 추가 설명을 통해 명확히 합니다.

추가적인 작성 규칙

  • 왼쪽에서 오른쪽, 위에서 아래로의 흐름을 유지합니다.
    • 대부분의 사람들이 정보를 읽는 방식과 일치합니다.
    • 일관된 흐름 방향은 diagram 이해도를 높입니다.
  • symbol 크기와 형태를 일관되게 유지합니다.
    • 같은 종류의 단계는 동일한 크기와 모양의 symbol을 사용합니다.
    • 시각적 일관성은 diagram의 가독성을 향상시킵니다.
  • line 교차를 최소화하고, 불가피한 경우 jump 표시를 사용합니다.
    • jump 표시란, line이 다른 line을 지나갈 때, 해당 line이 다른 line 위를 뛰어 넘어가는 듯이 표시하는 것을 의미합니다.
      • 교차하는 지점에서, 두 개 중 하나의 line을 반원으로 이어서 그립니다.
    • 교차가 더 복잡한 경우 connector symbol을 활용합니다.
  • 복잡한 process는 하위 flowchart로 분리합니다.
    • 세부 단계가 많은 process는 별도의 diagram으로 표현할 수 있습니다.
    • 주요 flowchart에는 참조 symbol을 사용하여 연결합니다.

Flowchart 예시

  • flowchart는 다양한 분야에서 사용됩니다.

Simple Login Process Flowchart

flowchart TD
    start([시작]) --> input[사용자 이름과 비밀번호 입력]
    input --> validate{유효한 자격 증명?}
    validate -->|Yes| success[로그인 성공]
    validate -->|No| failure[로그인 실패]
    failure --> retry{다시 시도?}
    retry -->|Yes| input
    retry -->|No| finish
    success --> finish([종료])

Online Order Processing Flowchart

flowchart TD
    start([시작]) --> cart[장바구니에 상품 추가]
    cart --> checkout[결제 페이지로 이동]
    checkout --> address[배송 주소 입력]
    address --> payment[결제 정보 입력]
    payment --> validate{결제 정보 유효?}
    validate -->|Yes| process[주문 처리]
    validate -->|No| payment_error[결제 오류 표시]
    payment_error --> retry{다시 시도?}
    retry -->|Yes| payment
    retry -->|No| cart_return[장바구니로 돌아가기]
    cart_return --> finish
    process --> confirm[주문 확인 이메일 전송]
    confirm --> finish([종료])

Data Processing Algorithm Flowchart

flowchart TD
    start([시작]) --> input[/data 파일 로드/]
    input --> validate{data 유효성 검사}
    validate -->|유효함| process[data 정규화]
    validate -->|유효하지 않음| error[오류 로그 기록]
    error --> finish
    process --> transform[특성 변환]
    transform --> split[학습/test 세트 분할]
    split --> train[모델 학습]
    train --> evaluate{성능 평가}
    evaluate -->|만족| save[/모델 저장/]
    evaluate -->|불만족| tune[하이퍼파라미터 조정]
    tune --> train
    save --> deploy[모델 배포]
    deploy --> finish([종료])

Flowchart 작성 시 주의 사항

  • flowchart를 읽는 사람의 관점을 고려하여 작성합니다.
    • 일관되고 명확하게 도형과 연결선을 사용해야 합니다.

일반적인 작성 오류와 해결 방법

  • 너무 복잡한 flowchart.
    • 한 diagram에 과도한 정보를 포함하지 않습니다.
    • 필요한 경우 여러 개의 연결된 diagram으로 분리합니다.
  • 일관성 없는 symbol 사용.
    • 같은 유형의 작업에는 동일한 symbol을 사용합니다.
    • 표준 convention을 따라 symbol을 선택합니다.
  • 불명확한 조건 및 분기점.
    • decision symbol에서 나오는 모든 경로에 명확한 조건을 표기합니다.
    • 모호한 조건은 추가 설명을 제공합니다.
  • 연결되지 않은 흐름이나 dead end.
    • 모든 경로가 종료점이나 다른 유효한 단계로 연결되는지 확인합니다.
    • 고립된 단계나 연결되지 않은 부분이 없는지 검토합니다.

Flowchart 검증 방법

  • 모든 경로 추적 및 검증하기.
    • 시작점에서 시작하여 모든 가능한 경로를 따라가며 검증합니다.
    • 각 조건부 분기에서 모든 조건이 처리되는지 확인합니다.
  • 실제 사례를 통한 검증하기.
    • 실제 data나 scenario를 사용하여 flowchart를 test합니다.
    • 예상치 못한 상황이나 예외 case를 검토합니다.
  • peer review 및 stakeholder 검토하기.
    • 다른 team 구성원이나 stakeholder와 함께 검토합니다.
    • 다양한 관점에서 diagram의 정확성과 완전성을 평가합니다.

Reference


목차