Oracle 101บทที่ 08B

CMMI & Compliance

บทที่ 08 อธิบาย Workflow UseCase จาก request ถึง done บทนี้ลงรายละเอียดเรื่องเอกสารกำกับ, QA gate และ traceability ที่เดินคู่กับ PR

CMMI คืออะไร

CMMI (Capability Maturity Model Integration) คือ framework สำหรับวัดความสมบูรณ์ของกระบวนการพัฒนา software — ยิ่ง level สูง กระบวนการยิ่งเป็นระบบ วัดผลได้ และปรับปรุงต่อเนื่อง แบ่งเป็น 5 ระดับ:

Levelชื่อความหมายแบบง่าย
1Initialทำได้แต่ไม่มีระบบ ขึ้นกับคน
2Managedมี process พื้นฐาน plan/track/review
3Definedprocess เป็นมาตรฐานทั้งองค์กร มีเอกสารกำกับ
4Quantitatively Managedวัดผลด้วยข้อมูล metrics
5Optimizingปรับปรุงต่อเนื่องจาก data

Oracle workflow ตั้งเป้า Level 3 — มี process มาตรฐาน มีเอกสาร SRS, SDD, UAT และ RTM กำกับทุก project

Compliance Standards ที่เป็นประโยชน์

ไม่ใช่แค่ CMMI — การพัฒนา software ที่ดีควรรู้จักมาตรฐานเหล่านี้:

Standardเกี่ยวกับใช้ตอนไหน
ISO/IEC/IEEE 29148Software Requirements (SRS)เขียน requirement ให้ชัด ตรวจสอบได้
IEEE 1016Software Design (SDD)ออกแบบ architecture, component, data flow
IEEE 829Software Testing (UAT)วางแผน test case ที่ human/QA อ่านได้
WCAG 2.1/2.2Web Accessibilityทำ web ให้คนพิการใช้ได้ contrast, keyboard, screen reader
OWASP Top 10Web Securityป้องกัน injection, XSS, broken auth, CSRF
PDPAPersonal Data Protectionปกป้องข้อมูลส่วนบุคคล (กฎหมายไทย)
SOC 2Security & Availabilityaudit ระบบ cloud/SaaS ด้าน security
ISO 25010Software Qualityวัดคุณภาพ: reliability, performance, usability, security

Oracle ใช้ CMMI เป็นโครง แต่ combine กับ standards เหล่านี้ตามความเหมาะสมของแต่ละ project เช่น project ที่มี web UI ต้องดู WCAG + OWASP ด้วย

8B.1 ทำไมเอกสารต้องอยู่ใน PR เดียวกัน

ถ้า code เปลี่ยน behavior แต่เอกสารไม่เปลี่ยน ระบบจะเริ่มมีความจริงสองชุด: ความจริงใน production กับความจริงใน docs. Oracle workflow จึงใช้กฎง่าย ๆ คือ user-facing change ต้อง update docs ใน PR เดียวกัน

เอกสารไม่ใช่พิธีกรรม แต่เป็นทางให้คน, QA และ Oracle รุ่นถัดไปตอบได้ว่า requirement นี้มาจากไหน ออกแบบอย่างไร ทดสอบด้วยอะไร และ merge ใน PR ใด

8B.2 Doc-Update Mandate

ประเภท PRต้อง update docs ไหมเหตุผล
เพิ่ม/แก้ user-facing functionalityต้องbehavior, UI, API หรือ workflow เปลี่ยน
แก้ bug ที่ผู้ใช้เห็นต้องต้องมี UAT หรือ regression note
เปลี่ยน data flow / integrationต้องSDD และ RTM ต้องตามให้ทัน
refactor ที่ behavior ไม่เปลี่ยนยกเว้นได้ถ้าไม่มีผลต่อผู้ใช้หรือ architecture contract
typo, dependency bump, tests-onlyยกเว้นได้ถ้าไม่มี behavior change จริง

ถ้าไม่แน่ใจว่าเข้าข่าย user-facing ไหม ให้ถือว่าเข้าข่ายก่อน แล้วใส่ note สั้น ๆ ใน PR ว่ามี doc impact หรือไม่มีเพราะอะไร

8B.3 Layout เอกสารต่อ project

Pathมาตรฐาน / หน้าที่อัปเดตเมื่อ
docs/SRS.mdISO 29148, requirement และ acceptance criteriaมี requirement ใหม่หรือ behavior เปลี่ยน
docs/SDD.mdIEEE 1016, design, API, component, data flowarchitecture หรือ implementation contract เปลี่ยน
docs/UAT.mdIEEE 829, test case ที่ human/QA อ่านได้มี scenario ใหม่, bug fix, regression หรือ release gate
docs/RTM.mdTraceability matrixทุก requirement ที่โยงกับ code/QA/PR
docs/README.mdแผนที่เอกสารของ projectเมื่อเพิ่มเอกสารใหม่หรือเปลี่ยน flow การอ่าน
build/docs/generated DOCX/PPTX/XLSXสร้างเมื่อ Wind สั่งเท่านั้น และควร gitignored
scripts/init-project-docs.sh <project-name>

bootstrap script ควรสร้าง markdown skeleton ให้ครบ แต่ไม่ควรเดาข้อมูล business แทนเจ้าของงาน

8B.4 QA + docs gate

flowchart LR Dev[Dev creates PR] --> Code[Code changes] Dev --> Docs[Docs update<br/>SRS / SDD / UAT / RTM] Code --> Kati[Kati QA] Docs --> Kati Kati --> Gate{PASS?} Gate -->|FAIL| Bug[BUG note<br/>same branch / same PR] Bug --> Dev Gate -->|PASS| Review[Gale architecture review] Review --> Decision[Wind / project owner<br/>merge decision]

เมื่อ Kati FAIL ให้กลับไป branch เดิม PR เดิม worktree เดิม ไม่เปิดงานใหม่โดยไม่จำเป็น เพราะ trace จะขาดและ RTM จะตามยาก

8B.5 RTM: เส้นด้ายที่โยงทุกอย่าง

RTM ไม่ต้องซับซ้อน แต่ต้องตอบได้ว่าหนึ่ง requirement ไปแตะส่วนไหนของระบบและถูกตรวจอย่างไร

Columnตัวอย่างคำอธิบาย
REQ-idREQ-WH-001รหัส requirement ที่อ่านซ้ำได้
SRS sectionSRS 2.1 requirement อยู่ตรงไหน
SDD sectionSDD 4.3 design ที่รองรับ requirement
Code filessrc/routes/...ไฟล์หลักที่ implement
UAT test IDUAT-014test case ที่พิสูจน์ behavior
PR SHAPR #18 / abc123หลักฐาน merge หรือ review
REQ-id → SRS section → SDD section → code files → UAT test ID → PR SHA

8B.6 Mermaid mandate

diagram ในเอกสาร project ควรอยู่เป็น Mermaid code block ใน markdown เพื่อให้ PR review เห็น diff ได้ ไม่แยกเป็นไฟล์ภาพที่ตรวจยาก เช่น .svg, .drawio หรือ .puml

flowchart TB Markdown[Markdown docs] --> Review[Readable PR diff] Markdown --> Render[Rendered docs site] Separate[Separate image files] --> HardDiff[Hard to review] HardDiff --> Risk[Design drift / stale diagrams]

8B.7 Doc conversion boundary

งานAutonomous?เหตุผล
สร้าง/แก้ markdown docs ใน PRได้diff ได้ ตรวจได้ และใช้ token คุ้ม
ตรวจว่ามี SRS/SDD/UAT/RTM ครบไหมได้เป็น checklist ที่ deterministic
แปลง md เป็น DOCX/PPTX/XLSXไม่ได้ ถ้า Wind ไม่สั่งเปลือง token/เวลา และ output binary ตรวจ diff ยาก
เดา business requirement เองไม่ได้ต้องให้มนุษย์หรือ source of truth ยืนยัน

หลักจำง่าย: markdown เป็น source of truth; DOCX/PPTX/XLSX เป็น export artifact เมื่อมีคำสั่งเฉพาะ

8B.8 Checklist ก่อน merge

  • PR ระบุว่าเป็น REQ, CR, BUG, QA, DOC หรือ deploy change
  • ถ้า user-facing มี SRS/SDD/UAT/RTM ที่เกี่ยวข้องใน PR เดียวกัน
  • UAT มี test case ที่ Kati หรือมนุษย์อ่านแล้วทำตามได้
  • RTM โยง requirement ไปถึง code, test และ PR ได้
  • diagram เป็น Mermaid ใน markdown ไม่ใช่ภาพแยก
  • ไม่มี generated docs ที่ควรอยู่ใน build/docs/ หลุดเข้า source tree
  • ถ้าแปลงเอกสารเป็น DOCX/PPTX/XLSX ต้องมีคำสั่งจาก Wind ชัดเจน

8B.9 จุดจบบท

CMMI ทำให้งานอธิบายย้อนหลังได้ว่า “ทำไมถึงทำแบบนี้” และ “พิสูจน์แล้วอย่างไร” เมื่อ workflow มีเอกสารและ traceability แล้ว บทต่อไปจะขยับไป Autonomous Ops: ระบบที่ช่วยติดตาม, แจ้งเตือน และดูแล loop เหล่านี้ได้บางส่วน