1129 คำ
6 นาที
CISA Series ตอนที่ 25 : D3 - SDLC: Waterfall + Build vs Buy + Acquisition
สารบัญ

ตอนที่แล้ว จบที่ business case ผ่าน feasibility study ผ่าน governance structure พร้อม โปรเจ็คได้ go ต่อแล้วครับ

📚 อยากเข้าใจ Waterfall + SDLC จากศูนย์? ลองอ่าน PM 101 EP.01 ประวัติศาสตร์ PM (Royce 1970, ทำไม Waterfall เกิด) + EP.11 Waterfall vs Agile (เปรียบเทียบ + เมื่อไหร่ใช้อะไร)

คำถามถัดไปไม่ใช่ “เริ่มเขียนโค้ด” แต่เป็น 2 คำถามใหญ่ที่ต้องตอบให้ได้ก่อน

  1. สร้างเองหรือซื้อสำเร็จรูป? (build vs buy)
  2. ถ้าสร้างเอง — ใช้วิธีอะไร? (methodology)

บทนี้คุยเรื่องที่ 1 + วิธีคลาสสิกที่สุดของเรื่องที่ 2 คือ waterfall SDLC ส่วน methodology ทางเลือกอื่นๆ (Agile, Scrum, RAD, DevOps, OOSD) จะเป็นเรื่องของ ตอน 26

ทำไมแยกแบบนี้? เพราะ waterfall เป็น baseline ที่ทุก methodology อื่นเปรียบเทียบ ถ้าไม่เห็น waterfall ครบ phases ก่อน Agile กับ RAD จะดูเหมือนแค่ “เร็วกว่า” ทั้งที่จริงๆ มันเปลี่ยน risk profile ทั้งระบบ


SDLC แบบ Waterfall — 6 phases ที่ต้องผ่านตามลำดับ#

Waterfall คือ methodology ที่ทุก phase ส่งต่อ deliverable ที่ sign-off แล้วให้ phase ถัดไป เหมือนน้ำตกที่ไหลลงทางเดียว ไม่ย้อน

ผมจัด phase ตามที่ CRM อธิบาย แต่ลด overlap (phase 5 กับ 6 ใน CRM ทับซ้อนกัน เลยรวมเป็น phase เดียว):

Phase 1 — Feasibility Study#

ตอน 24 คุยไปแล้ว ตอบคำถาม “ระบบนี้ควรสร้างไหม” + “build vs buy”

เนื้อหาส่วนนี้ทับกับ Section 3.2 มาก ผมเลือกใช้ตอน 24 เป็น primary treatment ไม่อธิบายซ้ำ

Phase 2 — Requirements Definition#

ระบบจะทำอะไรได้บ้าง ละเอียดระดับที่ developer/vendor เอาไปสร้างได้

Requirements ที่ดีต้องมีคุณสมบัติ:

  • Testable — เขียนในรูปที่ทดสอบได้ ไม่ใช่ “ระบบต้องเร็ว” แต่เป็น “ระบบต้องตอบสนอง 95% ของ transaction ภายใน 2 วินาที”
  • Traceable — ทุก requirement ต้อง trace กลับไป business need ใน business case ได้ (requirement traceability matrix)
  • Complete — ครอบคลุม functional + non-functional (security, performance, usability, compliance) + control requirements

มุม IS auditor: ขอดู requirement traceability matrix ถ้าไม่มี = red flag ทันที เพราะแปลว่าอาจมี requirement ที่ใส่เข้ามาภายหลังโดยไม่มี business justification หรือมี business need ที่หายไประหว่างทาง

Phase 3a — Software Selection & Acquisition (ถ้าเลือก buy)#

ถ้า feasibility study ตอบว่า “ซื้อ” แทนที่จะ “สร้าง” เข้าสู่กระบวนการ acquisition ที่จะคุยลึกข้างล่างนี้

Phase 3b — Design#

ถ้าเลือก build เอง ออกแบบระบบในระดับ technical

Design phase เกิด artifact หลายอย่าง:

  • ERD (Entity Relationship Diagram) — โครงสร้างข้อมูล
  • DFD (Data Flow Diagram) — การไหลของข้อมูลในระบบ
  • System architecture — components ของระบบและ interface ระหว่างกัน
  • Software baseline — version ของ design ที่ approved แล้ว
  • Design freeze — จุดที่ design ถูก lock ทุกการเปลี่ยนแปลงหลังจุดนี้ต้องผ่าน change control

กับดัก: organization ที่ “ขอเปลี่ยน requirement” หลัง design freeze โดยไม่ผ่าน change control = control gap ใหญ่ developer มักยอมแก้ “เพราะแก้นิดเดียว” ไม่ใช่หน้าที่ของ developer ที่จะตัดสินอยู่แล้ว

Phase 4a — Configuration (ถ้าซื้อระบบสำเร็จรูป)#

ระบบ COTS / ERP ที่ซื้อมาต้อง configure ให้เข้ากับ process ของบริษัท ตั้งค่า workflow, master data, role permissions, reports

กับดัก: การ configure ไม่ใช่หน้าที่ของ vendor เพียงฝ่ายเดียว buyer ต้องอนุมัติ configuration ก่อน production และ configuration changes ทั้งหมดต้องผ่าน change control เหมือน custom code

Phase 4b — Development (ถ้า build เอง)#

เขียนโค้ดตาม design ใช้ programming standard, peer review, IDE, debugger

ขั้นตอนระดับโค้ดที่ auditor ต้องตรวจ:

  • Coding standard ถูก enforce ผ่าน automated tool หรือ peer review
  • Source code repository มี version control ครบและไม่อนุญาตให้ commit ตรงไปยัง production branch
  • Code review ก่อน merge ป้องกัน developer commit ไปแล้วไม่มีใครเห็น

Phase 5/6 — Testing + Implementation#

ทดสอบว่าระบบทำงานถูกตามที่ design ก่อน go-live เรื่องนี้ลึกพอที่จะเป็นบทแยกใน ตอน 28

ในบทนี้รู้แค่ว่า ก่อน go-live ต้องผ่าน UAT ที่ทำโดย end users (ไม่ใช่ vendor และไม่ใช่ IT) และต้องมี certification + accreditation อย่างเป็นทางการ


IS Auditor ใน SDLC ทำอะไรในแต่ละ phase#

ถ้าเข้าโปรเจ็คในบทบาท advisor auditor ตรวจคนละเรื่องในแต่ละ phase:

Phaseสิ่งที่ auditor focus
FeasibilityROI methodology, alternatives evaluation, ผู้ที่ได้รับผลกระทบ representation
Requirementstraceability matrix, control requirements ฝังตั้งแต่แรกหรือไม่
Designdesign freeze + change control, security/privacy by design
Developmentcoding standards, code review, version control
Testingtest coverage, UAT independence, ผลทดสอบ formal documentation
Implementationrollback plan, data conversion verification, training plan

จะเห็นว่า auditor ไม่ได้รอตรวจตอนจบ แต่เข้ามาตรวจ control ที่ฝังในแต่ละ phase

กับดัก: auditor ที่เข้าโปรเจ็คลึกในทุก phase = ความเป็นอิสระเสียถ้าจะมาทำ PIR หรือ post-go-live audit ของระบบเดียวกัน ตอน 30 จะคุยเรื่องนี้อีกครั้ง


Build vs Buy — ตัดสินใจที่ใหญ่ที่สุดของ Phase 1#

นี่คือคำถามที่ business ตัดสิน แต่ IS auditor ต้องเข้าใจ trade-off ทั้งสองด้านเพื่อ review ได้

ฝั่ง Build (สร้างเอง)#

ข้อดี

  • ระบบตรงกับ process ของบริษัท 100%
  • ควบคุม source code, IP, roadmap ได้เอง
  • เปลี่ยนแปลงในอนาคตทำได้ตามต้องการ

ข้อเสีย

  • เวลาและต้นทุนสูง
  • ต้องมีทีม dev ที่มีความสามารถจริง
  • ต้องบำรุงรักษาเอง
  • Time-to-market ช้า

ฝั่ง Buy (ซื้อสำเร็จรูป / COTS)#

ข้อดี

  • เร็วกว่า — vendor มี product ที่ใช้กับลูกค้าหลายเจ้าแล้ว
  • ราคาต่อ feature ถูกกว่า เพราะ vendor amortize cost
  • Best practice ฝังใน process ของระบบ
  • Vendor รับผิดชอบ patching, security update

ข้อเสีย

  • Process ของบริษัทอาจต้องปรับให้เข้ากับระบบ ไม่ใช่ระบบปรับให้เข้ากับ process
  • Customization มี limit
  • ขึ้นอยู่กับ vendor — vendor lock-in, vendor financial stability เป็น risk
  • Source code ไม่ได้
  • Right-to-audit ต้อง negotiate ในสัญญา

มุม IS auditor: การตัดสินใจ build vs buy ต้องอ้าง gap analysis ที่เปรียบเทียบ requirement ของบริษัทกับ feature ของ COTS option ที่พิจารณา ถ้า gap น้อย → buy ทำให้ ROI สูง ถ้า gap ใหญ่ + customization แพง → ใกล้เคียงกับ build อยู่ดี


ถ้าเลือก Buy — กระบวนการ Acquisition แบบเป็นทางการ#

นี่คือส่วนที่ Section 3.3.8-3.3.9 ของ CRM เน้น และเป็น fair-use sensitive ที่สุดของบท เพราะ CRM มี table vendor evaluation criteria ละเอียดมาก เลยขอเล่าเป็นเรื่องเล่าแทน

ขั้นที่ 1 — เขียน RFP / ITT#

RFP (Request for Proposal) หรือ ITT (Invitation to Tender) = เอกสารที่บริษัทส่งไปยัง vendor หลายราย ระบุ:

  • ระบบที่ต้องการ — functional + non-functional requirements
  • เกณฑ์การประเมิน — vendor จะถูกวัดด้วยอะไร
  • เงื่อนไขสัญญาที่ไม่ negotiate — เช่น right-to-audit, source code escrow, SLA
  • Timeline ของ procurement

กับดัก: “เลือก vendor ก่อนแล้วค่อยทำ RFP เพื่อให้กระบวนการดูถูกต้อง” นี่คือสิ่งที่ auditor จะ flag ทันที RFP ต้องส่งให้ vendor หลายราย และ vendor ที่ชนะต้องชนะตามเกณฑ์ที่ตั้งไว้ล่วงหน้า

ขั้นที่ 2 — ประเมิน Vendor#

เกณฑ์การประเมินที่ดี ตั้งไว้ก่อน เปิดซองและมี น้ำหนัก ที่ approve โดย steering committee แล้ว ครอบคลุม:

  • Functional fit — ระบบของ vendor ตอบ requirement ได้กี่เปอร์เซ็นต์
  • Vendor financial stability — vendor จะอยู่กับเราอีกกี่ปี ดู financial statement, customer references
  • Technical compatibility — เข้ากับ infrastructure ปัจจุบันได้ไหม
  • Support model — มี support ระดับไหน timezone ไหน SLA แบบใด
  • Total cost of ownership — ไม่ใช่แค่ license แต่รวม customization, training, maintenance, integration
  • Security posture — vendor มี SOC report ไหม certifications อะไร

กับดัก: vendor ที่ราคาถูกที่สุดไม่ใช่ vendor ที่ดีที่สุด และ vendor ที่ทำ presentation สวยที่สุดก็ไม่ใช่ vendor ที่ดีที่สุด การประเมินต้องตามเกณฑ์ที่ตั้งไว้ก่อน

ขั้นที่ 3 — Proof of Concept (PoC)#

ก่อนเซ็นสัญญา vendor หลักๆ ควรทำ PoC ลองให้ระบบทำ scenario สำคัญในสภาพแวดล้อมที่ใกล้เคียง production ให้ดู

PoC ตรวจ:

  • ระบบทำงานได้จริงตามที่ presentation บอกไหม
  • Performance พอไหม
  • Integration กับระบบเดิมเป็นอย่างไร
  • User experience จริง

ขั้นที่ 4 — สัญญา + Right-to-Audit Clause#

สัญญากับ vendor ต้องมี clause สำคัญหลายตัว และนี่คือเรื่องที่ผูกกลับไป ตอน 19 ของ Domain 2 (Vendor Management)

  • Right-to-audit — ลูกค้ามีสิทธิ์ตรวจ vendor หรือ require ให้ vendor ส่ง SOC report ที่ระดับเหมาะสม
  • SLA (Service Level Agreement) — ระบุ availability, response time, resolution time + ค่าปรับเมื่อไม่ถึง
  • Source code escrow — โค้ดถูกฝากไว้ที่บุคคลที่สาม (escrow agent) ถ้า vendor เจ๊ง / หยุด support → ลูกค้าได้โค้ดมา maintain ต่อ
  • Data ownership — ข้อมูลที่อยู่ในระบบเป็นของลูกค้า ไม่ใช่ vendor
  • Exit clause — ขั้นตอนการย้ายออกถ้าจะเลิกสัญญา ต้องส่งคืนข้อมูลในรูปแบบที่ใช้ต่อได้

มุม IS auditor: สัญญาที่ไม่มี right-to-audit = auditor ทำ assurance ไม่ได้ บริษัทที่เซ็นสัญญาแบบนี้กำลังโยน control assurance ออกไปให้ vendor เฉยๆ

ขั้นที่ 5 — Acceptance Testing#

นี่คือกับดักที่อันตรายที่สุดของกระบวนการ acquisition และเป็นเรื่องที่ทดสอบบ่อยที่สุดในข้อสอบ

กับดัก ⚠️: Vendor ทำ acceptance testing แทน buyer

หลายบริษัทให้ vendor “ทดสอบ” ระบบของตัวเอง แล้วส่ง test report มาให้ buyer อนุมัติ ผิดครับ

เหตุผลคือ vendor มี incentive ให้ test ผ่าน:

  • Vendor ได้เงินตอน acceptance
  • Vendor รู้จุดอ่อนของระบบดีที่สุด และมีเหตุผลที่จะไม่ทดสอบส่วนที่จะพัง
  • Vendor อาจจะเปลี่ยนเวอร์ชันของระบบหลังจากผ่าน test

หลักของ acceptance testing สำหรับ acquired software:

  • Buyer ทดสอบเอง ในสภาพแวดล้อมที่ buyer ควบคุม
  • ใช้ test cases ที่ buyer เขียน ไม่ใช่ test cases ที่ vendor ส่งมา
  • ทดสอบ edge cases + negative scenarios ที่ vendor มัก skip
  • Sign-off เป็นทางการก่อนเริ่มใช้งานจริง

นี่คือเหตุผลที่ trap pattern “vendor does the testing for acquired software” ถูกแอบมาใน CISA exam บ่อยมาก คนตอบผิดเพราะคิดว่า “vendor เป็นผู้เชี่ยวชาญน่าจะทดสอบดีกว่า”


Configuration Management สำหรับ Acquired Software#

ระบบที่ซื้อมาแล้ว configure แล้ว configurations พวกนั้นคือ asset ที่ต้องบริหาร ไม่ใช่แค่ “ตั้งค่าครั้งเดียวจบ”

  • ทุก configuration change ต้องผ่าน change control รวมถึงตอนที่ vendor ขอเข้ามา patch
  • Configuration ปัจจุบันต้อง document ถ้า vendor ส่ง patch มา ต้อง regression test กับ configuration ของบริษัท
  • ห้ามให้ vendor เข้ามาแก้ configuration ใน production โดยไม่ผ่าน change control

เรื่อง config management ลึกๆ จะคุยใน ตอน 29 ที่นี่รู้แค่ว่ามันคือ control ที่ต้องมีตั้งแต่ acquisition


ข้อสรุปของ build vs buy ในมุม auditor#

ทั้ง build และ buy มี control ที่ต่างกัน ที่ auditor ต้องตรวจ:

ถ้า build:

  • Coding standard, code review
  • Source code repository control
  • Internal SDLC governance
  • ทีม developer ที่มี SoD ระหว่าง dev/test/prod

ถ้า buy:

  • Vendor evaluation rigor
  • สัญญาและ right-to-audit
  • Acceptance testing โดย buyer (ไม่ใช่ vendor)
  • Source code escrow
  • Vendor performance monitoring (ผูกกลับไป D2 vendor management)

ทั้งสองเส้นทางจบที่จุดเดียวกัน — ระบบที่จะขึ้น production และมี control ที่ทดสอบได้


ทำไมเรื่องนี้สำคัญกับ exam#

ผมเห็น 4 trap pattern ที่ออกบ่อยใน Section 3.3:

  1. Vendor does acceptance testing for acquired software — ผิด buyer ต้องทดสอบเอง
  2. Right-to-audit ใน vendor contract เป็น optional — ผิด เป็น essential clause สำหรับ outsourced/acquired software
  3. Customization ของ COTS = development — กึ่งใช่ การ customize หนักของ COTS ทำให้ benefit ของ buy หาย และเพิ่ม upgrade pain ในอนาคต
  4. Source code escrow = nice to have — ผิด สำหรับระบบ critical = essential

จำ 4 ข้อนี้ได้ Section 3.3 phase ต้นๆ + acquisition ผ่านครึ่งทางแล้ว


ถึงตรงนี้ ถ้าเลือก buy เราคุยจบแล้ว ถ้าเลือก build เราคุย waterfall แล้ว แต่ใครบอกว่า build ต้องเป็น waterfall เสมอล่ะ?

ใน 20 ปีที่ผ่านมามี methodology ใหม่หลายแบบที่เกิดขึ้นเพื่อแก้ pain ของ waterfall — Agile, Scrum, Prototyping, RAD, DevOps, OOSD ทุกตัวมี risk profile คนละแบบ และ auditor ต้องตรวจคนละจุด

ตอนหน้าจะลงเรื่องนี้เต็มๆ


อ้างอิง CRM (CISA Review Manual 28th Edition): Domain 3: Section 3.3 System Development Methodologies (Phases 1-3, 3.3.7-3.3.9)