สารบัญ
ตอนที่แล้ว จบที่ business case ผ่าน, feasibility study ผ่าน, governance structure พร้อม — โปรเจ็คได้ go ต่อแล้ว
คำถามถัดไปไม่ใช่ “เริ่มเขียนโค้ด” — แต่เป็น 2 คำถามใหญ่ที่ต้องตอบให้ได้ก่อน
- สร้างเองหรือซื้อสำเร็จรูป? (build vs buy)
- ถ้าสร้างเอง — ใช้วิธีอะไร? (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 |
|---|---|
| Feasibility | ROI methodology, alternatives evaluation, ผู้ที่ได้รับผลกระทบ representation |
| Requirements | traceability matrix, control requirements ฝังตั้งแต่แรกหรือไม่ |
| Design | design freeze + change control, security/privacy by design |
| Development | coding standards, code review, version control |
| Testing | test coverage, UAT independence, ผลทดสอบ formal documentation |
| Implementation | rollback 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:
- Vendor does acceptance testing for acquired software — ผิด buyer ต้องทดสอบเอง
- Right-to-audit ใน vendor contract เป็น optional — ผิด เป็น essential clause สำหรับ outsourced/acquired software
- Customization ของ COTS = development — กึ่งใช่ การ customize หนักของ COTS ทำให้ benefit ของ buy หาย และเพิ่ม upgrade pain ในอนาคต
- 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)