{{위키데이터 속성 추적}}
[[파일:LampFlowchart ko.svg|섬네일|제 기능을 하지 않는 [[조명기구|전구]]를 다루기 위한 단순 순서도]]
[[파일:For-loop-diagram.png|섬네일|right|[[C 언어]]의 for 루프 순서도]]
'''순서도'''({{llang|en|flowchart}})는 [[워크플로]] 혹은 [[프로세스]]를 보여주는 [[다이어그램]]의 한 종류다. 여러 종류의 상자와 이를 이어주는 화살표를 이용해 주어진 문제에 대한 솔루션 모델을 보여준다. 프로세스 작용은 이 같은 상자들과 작업의 흐름(workflow)을 나타내는 화살표 연결로 나타낸다.

[[데이터]] 흐름은 대체적으로 순서도가 쓰이진 않고 대신 [[데이터 흐름도]]가 쓰인다. 순서도는 여러 분야에서 프로세스나 문제의 분석, 디자인, 설계, 문서 작성이나 관리 등으로 활용되고 있다.<ref name="SSEV">[http://pascal.computer.org/sev_display/index.action SEVOCAB: Software and Systems Engineering Vocabulary]. Term: ''Flow chart''. Retrieved 31 July 2008.</ref>

== 기호 ==
순서도 작성 시 필요한 기호는 [[국제 표준화 기구]] 1965년 10월 SC7 총회에서 표준안으로 결의된 기호를 사용한다. 순서도의 기호 사용시에는 몇가지 사용 규칙이 있다.<ref name="jungik2023">{{서적 인용 |저자 = 조광문 외|제목 = 순서도 작성|출판사 = 정익사|쪽 = 20 ~ 23}}</ref>

# 기호의 내부에는 처리해야 할 내용이 들어가야 한다.
# 순서는 위에서 아래로, 왼쪽에서 오른쪽을 원칙으로 하며 그 외의 경우는 화살표를 사용해야 한다.
# 흐름선은 서로 교차해도 무관하며 서로 영향을 주지 않는다.
# 흐름선 여러 개가 모여 하나로 합칠 수 있다.
# 기호의 모형은 가로, 세로의 비율은 정하지 않으나 잘 구분할 수 있어야 한다.

순서도의 기호들은 총 30개이며 기본 기호, 프로그래밍 관련 기호, 시스템 관련 기호 3가지 종류로 나뉠 수 있다.

=== 일반적 기호 ===
{| class="wikitable"
|-
! ANSI/ISO 형태
! 명칭
! 설명
|-
| style="text-align: center;" | [[파일:Flowchart Line.svg|100px]]
| style="text-align: center;" | 흐름선<ref name="Myler1998">{{서적 인용|author=Harley R. Myler |title=Fundamentals of Engineering Programming with C and Fortran |chapter-url=https://books.google.com/books?id=IisfMsdBe2IC&pg=PA32 |date=1998 |publisher=Cambridge University Press |isbn=978-0-521-62950-8 |pages=32–36|chapter=2.3 Flowcharts}}</ref>
| 프로세스의 실행 순서를 나타낸다<ref name="ShellyVermaat2011" />
|-
| style="text-align: center;" | [[파일:Flowchart Terminal.svg|100px]]
| style="text-align: center;" | 터미널<ref name="ShellyVermaat2011">{{서적 인용|author1=Gary B. Shelly |author2=Misty E. Vermaat |title=Discovering Computers, Complete: Your Interactive Guide to the Digital World |url=https://archive.org/details/discoveringcompu00shel_187 |url-access=limited |date=2011 |publisher=Cengage Learning |isbn=978-1-111-53032-7 |pages=[https://archive.org/details/discoveringcompu00shel_187/page/n716 691]–693}}</ref>
| 하위 프로세스나 프로그램의 시작과 끝을 나타낸다.<ref name="ShellyVermaat2011" />
|-
| style="text-align: center;" | [[파일:Flowchart Process.svg|100px]]
| style="text-align: center;" | 처리<ref name="Myler1998" />
| 데이터의 값, 형태, 장소을 변경하는 한 세트의 실행을 표현한다.<ref name="Myler1998" />
|- 
| style="text-align: center;" | [[파일:Flowchart Decision.svg|100px]]
| style="text-align: center;" | 판단<ref name="Myler1998" />
| 프로그램이 실행되는 두 가지 경로 중에 하나를 결정하는 조건부 실행을 나타낸다.<ref name="ShellyVermaat2011" /> 일반적으로 예/아니오 질의이거나 참/거짓 검사이다.<ref name="Myler1998" />
|-
| style="text-align: center;" | [[파일:Flowchart IO.svg|100px]]
| style="text-align: center;" | 입력/출력<ref name="Myler1998" />
| 데이터를 입력하거나 결과를 출력하는 경우와 같이<ref name="ShellyVermaat2011" /> 데이터의 입력과 출력을 나타낸다.<ref name="Myler1998" />
|- 
| style="text-align: center;" | [[파일:Flowchart Annotation.svg|100px]]
| style="text-align: center;" | 주석<ref name="ShellyVermaat2011" /> (Comment)<ref name="Myler1998" />
| <!-- Indicating additional information about a step in the program. Represented as an open rectangle with a dashed or solid line connecting it to the corresponding symbol in the flowchart.<ref name="Myler1998" />-->
|-
| style="text-align: center;" | [[파일:Flowchart Predefined Process.svg|100px]]
| style="text-align: center;" | 서브루틴
| 다른 곳에 정의되어 명명된 프로세스를 나타낸다.<ref name="ShellyVermaat2011" />
|-
| style="text-align: center;" | [[파일:Flowchart Connector.svg|50px]]
| style="text-align: center;" | 페이지 내 연결자<ref name="ShellyVermaat2011" />
|정보가 기재된 연결자의 쌍은 순서도의 한 페이지에서 길거나 혼란스러운 선을 대체하며, 내부에 글자가 기재된 작은 원으로 표현된다.<ref name="ShellyVermaat2011" /><ref name=RFF>{{웹 인용|title=What do the different flowchart shapes mean? |url=https://www.rff.com/flowchart_shapes.php |publisher=RFF Electronics |access-date=23 July 2017}}</ref>
|-
| style="text-align: center;" | [[파일:Off page connector.png|50px]]
| style="text-align: center;" | 페이지 간 연결자<ref name="ShellyVermaat2011" />
|연결하려는 대상이 다른 페이지에 있을 때 사용하는 연결자로, 내부에 정보가 기재된다.<ref name="ShellyVermaat2011" /><ref name=RFF />
|}

=== 기타 기호 ===
{| class="wikitable"
!형태
!명칭
!설명
|-
| style="text-align: center;" |[[파일:Flowchart_database.svg|54x54px|Flowchart database]]
| style="text-align: center;" |데이터 파일 또는 데이터베이스
|실린더로 표현되는 데이터.
|-
| style="text-align: center;" |[[파일:Flowchart_Document.svg|64x64px|Flowchart Document]]
| rowspan="2" style="text-align: center;" |문서
| 단일한 문서
|-
| style="text-align: center;" |[[파일:Flowchart_Document_multiple.svg|64x64px|Flowchart Document multiple]]
| 다수의 문서
|-
| style="text-align: center;" |[[파일:Flowchar_Manual_input.svg|67x67px|Flowchar Manual input]]
| style="text-align: center;" |메뉴얼 실행
| 수동으로만 실행되는 경우
|-
|[[파일:Flowchart_manual_input.svg|66x66px|Flowchart manual input]]
| style="text-align: center;" | 메뉴얼 입력
|
|-
| style="text-align: center;" |[[파일:Flowchart_Preparation.svg|70x70px|Flowchart Preparation]]
| style="text-align: center;" |준비 또는 초기화
|
|}

== 종류 ==
순서도의 종류로는 시스템 순서도와 프로그램 순서도가 있으며 프로그램 순서도에는 개략 순서도와 상세 순서도로 나뉘어 진다.<ref name="jungik2427">{{서적 인용 |저자 = 조광문 외 |제목 = 순서도 작성 |출판사 = 정익사 |쪽 = 24~27}}</ref>

=== 시스템 순서도 ===
시스템 순서도는 어떤 작업을 하는지 알려주는 순서도로 자료가 정보로 변환되는 과정을 컴퓨터가 처리하는 과정, 데이터의 흐름을 중심으로 도식화 한 것이다. 데이터 흐름을 중심으로 작성하는 특징으로 인해 데이터가 처리되는 작업 단위로 나타내고 데이터가 변환되는 매체들을 표현하며 프로그램 논리는 작성하지 않는다. 작업 내용을 총괄적으로 검토하고 프로그래밍 작업과 연결시켜줄 때 사용하는 순서도이다.<ref name="jungik2427"/>

=== 프로그램 순서도 ===
프로그램 순서도는 작업을 어떤 식으로 하는지 표시해주는 순서도로 처리 단위 하나하나 단위로 작성하게 되며 순서도의 설명의 세밀도에 따라 개략 순서도와 상세 순서도로 나뉘어 진다. 프로그램을 작성할 때 일반적으로 쓰는 순서도이다.

개략 순서도는 하나의 업무를 전체적, 종합적으로 나타낸 순서도로 해당 작업의 진행 순서를 표시한다. 프로그램 작성시 개략 순서도를 작성하고 논리적으로 이상이 없는지 검토하게 되면 이어서 상세 순서도를 작성하게 된다.

상세 순서도는 프로그램 내부를 상세히 나타내는 순서도로 컴퓨터의 모든 조작과 자료의 이동 과정을 순서대로 나타내 그대로 코딩할 수 있도록 상세하게 작성한 순서도이다. 프로그램 작성 시 최종 검토 자료로 쓰게 된다.<ref name="jungik2427"/>

== 순서도 소프트웨어 ==
최근{{모호|날짜=2020.09.16}}에는 많은 순서도 소프트웨어가 있다. 아래는 가장 일반적으로 쓰는 프로그램이다.

=== 무료 프로그램 ===
* [https://web.archive.org/web/20200319125330/https://app.diagrams.net/ Draw.io]: 온라인 순서도 도구.
* [https://gitmind.com/kr/ GitMind]: 온라인 순서도 및 마인드 맵 도구, 무료 순서도 템플릿을 제공한다.

=== [[상용 소프트웨어]] ===
* [https://creately.com/ko/home/ Creately]: 실시간 협업 기능이있는 온라인 다이어그램 도구.
* [https://www.lucidchart.com/ Lucidchart]: 온라인 다이어그램 도구, 실시간 협업 가능하다.
* [https://web.archive.org/web/20200316130547/https://www.smartdraw.com/ SmartDraw]: 온라인 다이어그램 도구, 다양한 템플릿을 제공한다.
* [[XMind]]: [[마인드맵]], [[이시카와 다이어그램|피시본 다이어그램]], [[네트워크 토폴로지|트리 다이어그램]], [[조직도]], 스프레드시트 등을 지원한다.
* [[마이크로소프트 비지오|Microsoft Visio]]: 그림이나 도표를 그리는 [[컴퓨터 소프트웨어|소프트웨어]]다.

== 인용 ==
<references/>

== 같이 보기 ==
* [[활동 다이어그램]]
* [[제어 흐름 그래프]]
* [[나시슈나이더만도]]
* [[상태도 (오토마타 이론)]]
* [[데이터 시각화]]
* [[의사코드]]
* [[통합 모델링 언어]]
* [[워크플로]]

== 외부 링크 ==
* {{위키공용분류-줄}}
* {{언어링크|en}} [http://www.fh-jena.de/~kleine/history/software/IBM-FlowchartingTechniques-GC20-8152-1.pdf Flowcharting Techniques] {{웨이백|url=http://www.fh-jena.de/~kleine/history/software/IBM-FlowchartingTechniques-GC20-8152-1.pdf |date=20110515065926 }} An IBM manual from 1969 (5MB PDF format)
* {{언어링크|en}} [https://web.archive.org/web/20130118050756/http://www.tipskey.com/article/advanced_flowchart/ Advanced Flowchart] - Why and how to create advanced flowchart
* [https://miro.com/ko/flowchart/what-is-a-flowchart/ 흐름도]

{{전거 통제}}

[[분류:다이어그램]]
[[분류:기술 소통]]
[[분류:컴퓨터 프로그래밍]]
[[분류:코드 예시에 관한 문서]]
[[분류:미국의 발명품]]
[[분류:알고리즘 기술 언어]]
[[분류:모델링 언어]]