PERT / CPM Network

PERT 차트란

PERT 차트(Program Evaluation and Review Technique)와 그 쌍둥이 CPM(Critical Path Method)은 현대 프로젝트 관리의 근간이 되는 프로젝트 일정 다이어그램입니다. 1959년에 탄생했으며(PERT는 미 해군 Polaris 프로그램, CPM은 DuPont에서), 두 방법은 PMI의 PMBOK 가이드에서 가르치는 Activity-on-Node / Precedence Diagramming Method로 수렴했습니다. 작업, 기간, 어떤 작업이 어떤 작업에 의존하는지를 작성하면 일정 — Early Start, Early Finish, Late Start, Late Finish, 여유 시간, 주경로 — 이 자동으로 계산됩니다.

바로 이 마지막 점이 Schematex의 pert 엔진을 모든 드래그 앤 드롭 "PERT 차트 메이커"와 다르게 만듭니다. 대부분의 도구는 도형 라이브러리를 제공하고 여섯 개 필드 박스를 직접 채우고 계산기로 주경로를 계산하게 합니다. Schematex는 전진 통과와 후진 통과를 스스로 실행하고 주경로를 빨간색으로 자동 강조합니다. flowchart(일정 없음), timeline(주경로 계산 없음), bpmn(일회성 프로젝트 일정이 아닌 조직 프로세스)과 구별됩니다.

pert·§
↘ preview
100%
PERT network — Q3 Product Launch 7 activities, project duration 37 days, critical path A → C → D → E → G. Q3 Product Launch ES 0 DUR 5 EF 5 0 LS 0 SLACK 5 LF Market research A ES 5 DUR 15 EF 20 5 LS 0 SLACK 20 LF Backend API C ES 5 DUR 8 EF 13 12 LS 7 SLACK 20 LF Design mockups B ES 20 DUR 10 EF 30 20 LS 0 SLACK 30 LF Frontend build D ES 13 DUR 7 EF 20 28 LS 15 SLACK 35 LF Marketing collateral F ES 30 DUR 5 EF 35 30 LS 0 SLACK 35 LF QA / testing E ES 35 DUR 2 EF 37 35 LS 0 SLACK 37 LF Launch event G Project duration 37 days · 7 tasks · 8 dependencies · 5 critical Critical path: A → C → D → E → G
UTF-8 · LF · 11 lines · 396 chars✓ parsed·3.1 ms·18.0 KB SVG

1. 첫 번째 다이어그램 만들기

모든 문서는 pert 키워드로 시작하고, 선택적 헤더, 그다음 활동당 하나의 task 줄이 옵니다:

pert
unit: days

task A "Market research" duration: 5
task B "Design mockups"  duration: 8 after: A
task C "Backend API"     duration: 15 after: A
task D "Frontend build"  duration: 10 after: B, C

각 작업은 <id>, 따옴표로 묶인 <레이블>, duration:, 선택적 after: 선행 작업 목록을 가집니다. 엔진은 보이지 않는 Start와 Finish를 추가하고, 일정을 실행하며, 모든 작업에 대해 여섯 개 필드 활동 박스를 그립니다. ES/EF/LS/LF는 직접 입력할 필요가 없습니다 — 자동으로 계산됩니다.

헤더에서 허용되는 항목:

  • title: "…" — 다이어그램 위에 그려지는 제목.
  • unit: days | weeks | hours | abstract — 시간 단위 (기본값 days; 순전히 레이블이며, 엔진은 달력과 무관).
  • direction: LR | TB — 왼쪽에서 오른쪽(기본) 또는 위에서 아래.
  • layout: network | timescaled — 계층화된 네트워크(기본) 또는 시간 비례 뷰 (§6).
  • critical-tolerance: <n> — 이 값 이하의 여유 시간이 주경로로 계산됨 (기본값 0; 삼점 프로젝트에는 0.001 설정).
  • show-sentinels: true — 합성 Start / Finish 노드 표시 (기본적으로 숨겨짐).

2. 여섯 개 필드 활동 박스

모든 작업은 표준 3×2 PERT/CPM 직사각형으로 렌더링됩니다:

┌──────────┬────────────┬──────────┐
│  ES      │  Duration  │   EF     │
├──────────┴────────────┴──────────┤
│         Task Name (ID)           │
├──────────┬────────────┬──────────┤
│  LS      │  Slack     │   LF     │
└──────────┴────────────┴──────────┘
  • ES / EF — Early Start / Early Finish, 전진 통과에서 계산.
  • LS / LF — Late Start / Late Finish, 후진 통과에서 계산.
  • Slack(총 여유) = LS − ES = LF − EF. 여유가 0이면 해당 활동은 주경로 위에 있습니다.

주경로 활동은 빨간 테두리와 굵은 0 여유를 가지며, 프로젝트의 주경로는 연속적인 빨간 선으로 읽힙니다. 모든 필드는 data-* 속성(data-es, data-slack, data-critical, …)에도 미러링되어 수학을 다시 실행하지 않고 SVG를 쿼리할 수 있습니다.

두 가지 색상 팔레트에 대하여. PERT 차트는 의도적으로 두 가지 색상만으로 그려집니다. 주경로에 빨간색을 사용하는 것은 실제 업계 관례입니다 — MS Project, Oracle Primavera P6, PMBOK 도형 모두 이를 사용합니다. 왜냐하면 "주경로 vs 비주경로"가 이 다이어그램이 표현하는 핵심 구별이기 때문입니다. 그 외에는 모두 중립적인 하우스 블루를 유지합니다. 더 많은 색상을 추가하면 PERT의 의미론이 없는 범주를 암시하게 됩니다; 팀이나 단계별로 그룹화가 필요하다면 색상 대신 수영 레인 (lane:)을 사용하세요.


3. 의존성 (FS / SS / FF / SF + 지연/선행)

after:는 쉼표로 구분된 선행 작업 참조 목록을 받습니다. 기본 관계는 Finish-to-Start (FS) — 선행 작업이 완료된 후 작업이 시작됩니다:

task D "Frontend build" duration: 10 after: B, C

현대 일정 관리에는 다른 세 가지 Precedence-Diagramming 관계와 지연(lag, 지연) 또는 선행(lead, 음의 지연)이 필요합니다:

task B "Stakeholder interviews" duration: 6 after: A SS+1   # A 시작 1일 후 시작
task I "Documentation"          duration: 4 after: D+3      # 3일 지연의 FS
task J "Translation"            duration: 3 after: I SS-1   # I 시작 1일 전 시작 (선행)
task K "Sign-off"               duration: 1 after: I FF     # I가 완료될 때 완료
task L "Press release"          duration: 2 after: G SF+1   # start-to-finish (드문 경우)
형식의미
after: AFinish-to-Start, 지연 없음 (일반적인 경우)
after: A+2 또는 after: A+2d2단위 지연의 FS
after: A SS / A FF / A SFStart-to-Start / Finish-to-Finish / Start-to-Finish
after: A SS+2d / A FF-1d지연(+) 또는 선행(-)이 있는 임의 유형

지연 단위 접미사(d / w / h)는 다이어그램의 unit:과 일치하거나 생략해야 합니다; 혼합 단위는 거부됩니다. 지연 없는 FS는 레이블 없음; SS/FF/SF는 항상 엣지에 유형을 표시합니다.


4. 삼점 (PERT) 추정

기간을 O/M/P (낙관적 / 가장 가능성 높음 / 비관적)로 작성하면 엔진이 베타 분포 기대 기간 te = (O + 4M + P) / 6과 분산 σ² = ((P − O)/6)²를 계산합니다:

pert
critical-tolerance: 0.01
task A "Spec"   duration: 2/3/5    # te = 3.17, σ² = 0.25
task B "Build"  duration: 5/8/14   after: A   # te = 8.50, σ² = 2.25
task C "Test"   duration: 3/4/6    after: B
task D "Deploy" duration: 1/2/3    after: C

Duration 필드에 te가 표시되고, 이름 아래에 작은 σ=… 주석이 나타나며, 프로젝트 수준의 표준 편차(주경로 분산의 합의 제곱근)가 하단에 보고됩니다. 부동 소수점 te 값이 가시적 주경로를 이동시키지 않도록 critical-tolerance: 0.01을 사용하세요.


5. 마일스톤

마일스톤은 다이아몬드로 그려지는 기간 0의 체크포인트입니다. milestone 플래그 또는 duration: 0을 사용합니다:

task P "Cutover weekend" milestone after: O
task Q "Go-live"         duration: 0 after: P

6. 시간 스케일 레이아웃

layout: timescaled는 계층화된 네트워크에서 네트워크-Gantt 혼합으로 전환합니다: 각 활동의 x 위치가 ES에 비례하고 너비가 기간에 비례하며, 하단에 단위 시간 축이 있습니다. 활동들은 겹치지 않도록 레인에 배치됩니다.

pert
layout: timescaled
unit: days

task A "Inventory"     duration: 5
task B "Interviews"    duration: 6  after: A SS+1
task C "Design"        duration: 10 after: A, B
task D "Build"         duration: 15 after: C
task E "Pilot"         duration: 7  after: D

이것은 네트워크 기반 시간 뷰입니다; 작업당 한 행의 달력 Gantt 차트는 layout: gantt를 사용하세요 (다음 절).

Gantt 차트 (gantt / layout: gantt)

달력 Gantt를 위해 gantt 헤더로 문서를 시작합니다(pert + layout: gantt의 약식). 이것은 동일한 스케줄러입니다 — 따라서 막대는 계산된 ES/EF로 배치되고, 주경로가 빨간색으로 표시됩니다. 이것이 직접 날짜를 입력하는 Gantt(Mermaid)가 할 수 없는 것입니다: Mermaid에서는 날짜를 직접 입력하지만, 여기서는 의존성을 입력하면 엔진이 일정을 계산합니다.

gantt "Website Relaunch"
start: 2026-07-01
calendar: 5day
task A "Discovery"      duration: 5  lane: "Plan"
task B "Wireframes"     duration: 8  after: A   lane: "Design"
task C "Visual design"  duration: 6  after: B   lane: "Design"  progress: 40%
task D "Frontend build" duration: 12 after: C   lane: "Build"
task E "Backend API"    duration: 10 after: A   lane: "Build"
task F "Integration"    duration: 5  after: D, E lane: "Build"
task LAUNCH "Go live"   milestone    after: F   lane: "Build"
today: 2026-07-20
  • **start: YYYY-MM-DD**는 축을 달력 날짜로 전환합니다 (생략하면 숫자 일 오프셋 축).
  • calendar: continuous (기본)는 주말을 포함; **calendar: 5day**는 토/일을 타임라인에서 제외합니다.
  • **lane: "…"**는 작업을 레이블된 섹션으로 그룹화; **progress: 60%**는 완료 오버레이를 그림; **milestone**은 다이아몬드; **today: YYYY-MM-DD**는 마커 선을 추가합니다.
  • 선언 순서대로 작업당 한 행. 주경로가 아닌 막대는 여유 시간이 주석으로 표시된 채 기본 파란색으로 그려지고; 주경로 막대는 빨간색입니다.

Activity-on-arrow (layout: aoa)

layout: aoa는 교재와 Investopedia에서 볼 수 있는 이전의 activity-on-arrow (ADM) 표기법을 렌더링합니다: 번호가 매겨진 이벤트 원, 활동은 레이블이 있는 화살표, 활동에 두 개 이상의 선행 작업이 있는 경우 자동으로 삽입되는 점선 더미 활동. 동일한 activity-on-node DSL을 작성하면 — Schematex가 이벤트 그래프를 구성하고 이벤트에 번호를 매깁니다.

pert
layout: aoa
unit: days

task A "create schedule" duration: 10
task B "buy hardware"    duration: 5
task C "programming"     duration: 20 after: A
task D "installation"    duration: 5  after: B
task E "conversion"      duration: 15 after: D
task F "test code"       duration: 20 after: C, E
task G "write manual"    duration: 15 after: E

AOA는 레거시 표기법(PMBOK 7은 삭제; AON이 현대 표준)이며, finish-to-start 로직만 표현할 수 있습니다 — SS/FF/SF와 지연/선행은 경고와 함께 FS로 평탄화됩니다. 교육, 시험 준비, 또는 기존 교재 도형과 일치할 때 사용하세요; 실제 일정 계획에는 기본 network (AON) 레이아웃을 사용하세요.


7. 수영 레인, 태그, 클래스, 주석

임의의 작업에 lane: "…"를 추가하면 네트워크가 수평 수영 레인으로 재그룹됩니다 — 담당 팀, 단계, 또는 담당자별 — 일정은 이전과 동일하게 계산됩니다:

task T1 "Support Account Deletion" duration: 3  lane: "Customer Account"
task T2 "Design a New Theme"        duration: 8  lane: "Shopping Site"
task T3 "Apply New Theme"           duration: 15 after: T2 lane: "Shopping Site"

레인은 처음 선언된 순서로 나타나며, 각각 왼쪽에 레이블 홈통이 있는 밴드 행으로 표시됩니다. 수영 레인은 동일한 AON 네트워크의 표현이며, 다른 레이아웃 모드가 아닙니다 — 어느 작업이든 레인을 선언하면 자동으로 활성화됩니다.

task X "External vendor work" duration: 10 after: A tags: vendor, external class: secondary
# 주석입니다

tags:는 노드 그룹에 data-tag="…"를 내보내고 class:는 다운스트림 테마를 위한 CSS 클래스를 추가합니다. #//는 줄 끝까지 주석을 시작합니다.


8. 문법 (EBNF)

document    = "pert" NEWLINE header* task+
header      = "title:" quoted
            | "unit:" ("days" | "weeks" | "hours" | "abstract")
            | "direction:" ("LR" | "TB")
            | "layout:" ("network" | "timescaled" | "aoa")
            | "critical-tolerance:" number
            | "show-sentinels:" boolean

task        = "task" IDENT quoted "duration:" duration ("after:" reflist)? "milestone"? attrs?
            | "task" IDENT quoted "milestone" ("after:" reflist)? attrs?
duration    = number | number "/" number "/" number          ; 결정론적 또는 O/M/P
reflist     = ref ("," ref)*
ref         = IDENT (WS deptype)? laglead?
            | IDENT "+" number unit?                          ; 첨부된 FS 지연 약식
deptype     = "FS" | "SS" | "FF" | "SF"
laglead     = ("+" | "-") number unit?
unit        = "d" | "w" | "h"
attrs       = ("tags:" idlist)? ("class:" IDENT)? ("lane:" quoted)?

9. 표준 준수

Schematex pertPMI PMBOK 7 및 Moder, Phillips & Davis (1983)에 따른 Activity-on-Node / Precedence Diagramming Method를 구현하며, Kerzner와 Oracle Primavera P6의 여섯 개 필드 박스 관례를 따릅니다. 전진/후진 통과, 총 여유, 주경로, 지연/선행이 있는 네 가지 PDM 의존성 유형, 삼점 추정(te + 분산)이 정확하게 계산됩니다. 이전의 Activity-on-Arrow 표기법은 교육 및 교재 동등성을 위한 옵트인 레거시 뷰(layout: aoa)로 제공됩니다. v0.1 범위 외: 자원 평준화 / RCPSP, Monte Carlo 일정 위험 시뮬레이션, 달력 인식 기간, MS Project / Primavera 가져오기-내보내기. 전체 사양은 docs/reference/32-PERT-STANDARD.md를 참고하세요.


관련 예시

예시 갤러리에서 바로 사용 가능한 시나리오:

pert·§ PMI PMBOK 7 + Moder 1983 (AON/PDM)
PERT network — Q3 Product Launch 7 activities, project duration 37 days, critical path A → C → D → E → G. Q3 Product Launch ES 0 DUR 5 EF 5 0 LS 0 SLACK 5 LF Market research A ES 5 DUR 15 EF 20 5 LS 0 SLACK 20 LF Backend API C ES 5 DUR 8 EF 13 12 LS 7 SLACK 20 LF Design mockups B ES 20 DUR 10 EF 30 20 LS 0 SLACK 30 LF Frontend build D ES 13 DUR 7 EF 20 28 LS 15 SLACK 35 LF Marketing collateral F ES 30 DUR 5 EF 35 30 LS 0 SLACK 35 LF QA / testing E ES 35 DUR 2 EF 37 35 LS 0 SLACK 37 LF Launch event G Project duration 37 days · 7 tasks · 8 dependencies · 5 critical Critical path: A → C → D → E → G
Q3 product launch PERT/CPM network
A seven-task product-launch schedule where the engine computes every Early/Late Start & Finish, total slack, and the critical path (A → C → D → E → G) automatically — the canonical activity-on-node network with the six-field box.
business & operations
pert·§ PMI PMBOK 7 + Moder 1983 — Activity-on-Arrow (ADM, legacy)
PERT network — Software project (AOA) 10 activities, project duration 70 days, critical path A → C → F → H → J. Software project (AOA) create schedule 10 buy hardware 5 programming 20 installation 5 conversion 15 test code 20 write manual 15 test system 10 training 5 user test 10 1 2 3 4 5 6 7 8 9 10 11 12 13 Project duration 70 days · 10 tasks · 10 dependencies · 5 critical Critical path: A → C → F → H → J
Activity-on-arrow (AOA) network
The classic textbook PERT notation — numbered event circles, activities as labelled arrows, and dotted dummy activities auto-inserted at multi-predecessor merges. Written in the same activity-on-node DSL; Schematex builds and numbers the event graph.
education
pert·§ PMI PMBOK 7 + Moder 1983 (AON/PDM)
PERT network — Online Shop Project 8 activities, project duration 40 days, critical path T2 → T3 → T4 → T7 → T8. Online Shop Project Customer Account Shopping Site Shopping Cart Testing ES 0 DUR 3 EF 3 27 LS 27 SLACK 30 LF Support Account Deletion T1 ES 0 DUR 8 EF 8 0 LS 0 SLACK 8 LF Design a New Theme T2 ES 8 DUR 15 EF 23 8 LS 0 SLACK 23 LF Apply New Theme to the Site T3 ES 23 DUR 7 EF 30 23 LS 0 SLACK 30 LF Improve Searching T4 ES 8 DUR 8 EF 16 16 LS 8 SLACK 24 LF Enhance Shopping Cart Functionality T5 ES 16 DUR 6 EF 22 24 LS 8 SLACK 30 LF Enhance Shopping Cart Checkout T6 ES 30 DUR 2 EF 32 30 LS 0 SLACK 32 LF Ready Testing Environment T7 ES 32 DUR 8 EF 40 32 LS 0 SLACK 40 LF Test Online Shop T8 Project duration 40 days · 8 tasks · 8 dependencies · 5 critical Critical path: T2 → T3 → T4 → T7 → T8
PERT swimlanes grouped by team
The same computed activity-on-node schedule, re-grouped into horizontal swimlanes by responsible team (Customer Account, Shopping Site, Shopping Cart, Testing) — the way Visual Paradigm and PMO templates present a project network.
business & operations
pert·§ PMI PMBOK 7 — three-point (beta-PERT) estimation
PERT network — Three-point project 4 activities, project duration 17.83 days, critical path A → B → C → D. Three-point project ES 0 DUR 3.17 EF 3.17 0 LS 0 SLACK 3.17 LF Spec A σ=0.5 ES 3.17 DUR 8.5 EF 11.67 3.17 LS 0 SLACK 11.67 LF Build B σ=1.5 ES 11.67 DUR 4.17 EF 15.83 11.67 LS 0 SLACK 15.83 LF Test C σ=0.5 ES 15.83 DUR 2 EF 17.83 15.83 LS 0 SLACK 17.83 LF Deploy D σ=0.33 Project duration 17.83 days · 4 tasks · 3 dependencies · 4 critical · σ ≈ 1.69 Critical path: A → B → C → D
Three-point (PERT) estimation with variance
Durations written as optimistic/most-likely/pessimistic (O/M/P). The engine computes the beta-distribution expected duration te = (O+4M+P)/6 per activity, the per-task variance, and the project-level standard deviation along the critical path.
business & operations
pert·§ PMI PMBOK 7 + Moder 1983 (AON/PDM)
PERT network — Data-centre migration 10 activities, project duration 52 days, critical path A → C → D → F → G → H → I → J. Data-centre migration 0 5 10 15 20 25 30 35 40 45 50 Inventory systems A ES 0 EF 5 slack 0 Stakeholder review B ES 1 EF 7 slack 0 Vendor selection C ES 7 EF 15 slack 0 Architecture D ES 15 EF 25 slack 0 Procurement E ES 17 EF 29 slack 6 Code refactor F ES 25 EF 40 slack 0 Pilot env G ES 35 EF 40 slack 0 Pilot run H ES 40 EF 47 slack 0 Cutover @ 47 Hypercare J ES 47 EF 52 slack 0 SS+1d FS+2d FF Project duration 52 days · 10 tasks · 11 dependencies · 9 critical Critical path: A → C → D → F → G → H → I → J
Time-scaled migration plan (network-Gantt)
A data-centre migration in the time-scaled layout — x-position proportional to Early Start, width proportional to duration, with a unit time axis. Exercises start-to-start and finish-to-finish dependencies, lag/lead, a milestone, and lane packing.
business & operations

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.