สารบัญ
ตอน 25 จบที่ waterfall methodology ที่มีโครงสวย เอกสารครบ ตรวจง่าย แต่ช้าและไม่ยืดหยุ่น
📚 ยังงง Scrum / Kanban / Agile? ลองอ่าน PM 101 EP.05 Methodologies (Scrum, Kanban, Lean, XP — ภาษาคน) แล้วบทนี้จะเข้าใจง่ายขึ้นมาก
ในความเป็นจริง บริษัทที่ใช้ waterfall อย่างเดียวมีน้อยมาก โดยเฉพาะตั้งแต่ปี 2010 เป็นต้นมา methodology ใหม่ๆ เกิดขึ้นเพื่อแก้ pain ของ waterfall แต่ละแบบเปิดประตูใหม่ และเปิด risk gap ใหม่ตามมาด้วย
หน้าที่ของ IS auditor ไม่ใช่ “ห้ามใช้ Agile” แต่คือ เข้าใจว่า methodology ที่ใช้คืออะไร แล้ว control gap ของแบบนั้นอยู่ตรงไหน
กับดักใหญ่ของบทนี้: auditor ที่รู้แต่ waterfall เข้าไป audit Agile แบบ waterfall จะพลาด gap สำคัญทั้งหมด
จะเล่าทีละแบบครับ พร้อมความตึงเครียดที่ auditor ต้องระวัง
Prototyping — สร้างต้นแบบให้ user เห็น
หลักการ
Prototyping = สร้าง “ต้นแบบ” ของระบบที่ทำงานได้บางส่วน ให้ user ลองใช้แล้วให้ feedback แล้วปรับ ทำซ้ำจน user พอใจ
มี 2 แบบ:
- Iterative prototype — สร้าง prototype ใช้เป็น blueprint ของ requirement แล้วทิ้ง สร้างระบบจริงตาม blueprint นั้น
- Evolutionary prototype — prototype ค่อยๆ พัฒนาเป็นระบบจริงทีละรอบ จนกลายเป็น production system
Risk profile
ฟังดูดีนะ แต่มี risk pattern ที่ออกข้อสอบบ่อยมาก
กับดัก ⚠️: Prototype ที่ user “อนุมัติ” แล้ว = ระบบ production ที่พร้อมใช้
ผิดครับ Prototype มักถูกสร้างโดย skip:
- Backup / recovery
- Security controls
- Audit trails
- Performance optimization
- Error handling สำหรับ edge cases
- Data validation ระดับ enterprise
User ที่บอก “โอเค ใช้ตัวนี้แหละ” กำลังอนุมัติ functionality ไม่ใช่ production readiness
มุม IS Auditor
ต้องตรวจว่า prototype ที่ผ่าน user approval ไป ผ่าน full SDLC review ก่อนขึ้น production หรือไม่ ถ้า prototype = production โดยตรง = major control gap
ถ้า evolutionary prototype ต้องมี checkpoint ที่บอกว่า prototype พร้อม “graduate” เป็น production เมื่อใด และ checkpoint นั้นใครเป็นคน sign-off
RAD — Rapid Application Development
หลักการ
RAD = methodology ที่ใช้ prototyping เป็นเครื่องมือหลัก แต่มีโครงสร้างเป็น 4 stages:
- Concept / requirements planning — ตกลง scope แบบกว้าง
- User design — workshop กับ user, สร้าง prototype, refine
- Development / construction — สร้าง production version จาก prototype
- Cutover / deployment — testing, training, go-live
RAD มี timeboxing เข้มงวด แต่ละ phase มี deadline ที่ห้ามเลื่อน ถ้าทำไม่เสร็จ → ลด scope ไม่ใช่ขยายเวลา
Risk profile
กับดัก: RAD = waterfall ที่เร็วกว่า
ไม่ใช่ครับ RAD เป็น methodology แยก มี 4 stages ที่ใช้ prototyping เป็น tool หลัก ไม่ใช่ waterfall ที่กดทุก phase ให้สั้นเฉยๆ
Risk หลักของ RAD:
- Documentation อาจบาง เพราะ timeboxing บีบให้ deliver functionality ก่อน docs
- Control design อาจ skip เพราะ control ไม่ใช่ “feature” ที่ user ขอ จึงมักถูก deprioritize
- Scope creep ที่ disguised เพราะ user เห็น prototype แล้วขอเพิ่ม “นิดเดียว”
มุม IS Auditor
ตรวจว่า:
- มี documented control requirement ที่ฝังใน user design phase ตั้งแต่แรก ไม่ได้รอจนจบ
- Audit trail ของ scope changes — เปลี่ยนอะไรเพิ่มอะไรเมื่อไหร่
Agile + Scrum — สิ่งที่ทุกคนพูดถึงแต่หลายคนทำผิด
หลักการ
Agile = ปรัชญาในการพัฒนา ไม่ใช่ methodology เป๊ะๆ เน้น:
- ส่ง working software บ่อยๆ ใน iteration สั้น (1-4 สัปดาห์)
- ทำงานใกล้ชิดกับ business / user ตลอด
- ตอบสนองต่อการเปลี่ยนแปลงดีกว่าทำตามแผน
- เอกสารที่จำเป็น ไม่ใช่เอกสารทั้งหมด
Scrum = framework ที่ implement Agile มี:
- Sprint — iteration 1-4 สัปดาห์ ที่จบด้วย shippable increment
- Product backlog — list of features ที่ priority แล้ว
- Sprint backlog — features ที่เลือกมาทำใน sprint นี้
- Daily standup — meeting สั้น 15 นาที ทุกวัน
- Sprint review + retrospective — ตอนจบ sprint review work + ปรับปรุง process
- Roles — Product Owner, Scrum Master, Development Team
Risk profile
นี่คือจุดที่ misconception เยอะที่สุด
กับดัก ⚠️: Agile = ไม่ต้องมีเอกสาร
ผิดครับ Agile บอกว่า “working software OVER comprehensive documentation” คำว่า “over” หมายถึง value มากกว่า ไม่ได้แปลว่า “ไม่ต้องมี”
Agile ลด documentation ที่ ไม่จำเป็น เช่น 200-page requirement spec ที่ outdated ก่อน sprint แรกจะจบ แต่ documentation ที่จำเป็นยังต้องมี:
- User stories ที่ชัดเจนพอจะทดสอบ
- Acceptance criteria ต่อ story
- Architecture decisions
- Security / compliance requirements
- Audit trails ของ decision
กับดัก: Agile ไม่มี control เพราะมัน “ยืดหยุ่น”
ผิดครับ Agile แค่ implement control คนละแบบ:
- Code review (peer review หรือ automated) ในทุก commit
- Continuous integration ทดสอบ automated
- Definition of Done ที่รวม security checks, code quality, regression test
- Sprint review = formal sign-off ของ feature
มุม IS Auditor
Audit Agile ต่างจาก audit waterfall มาก ถ้าใช้ checklist ของ waterfall จะพลาดทันที
ใน waterfall: ขอดู phase documentation ครบทุก phase
ใน Agile / Scrum: ตรวจ:
- Sprint review records — feature นี้ approved แล้วโดยใคร เมื่อไหร่
- Definition of Done ที่ครอบคลุม security + control review หรือไม่
- Sprint retrospective — เห็น lessons learned + improvements ไหม
- Burn-down chart, velocity — โปรเจ็คอยู่ที่ไหนของแผน
- Backlog grooming — ทุก feature มี business justification ไหม
- Code review evidence ใน version control system
มุมที่ผู้บริหารควรเข้าใจ: Agile ไม่ได้ทำให้ control “หายไป” แค่ control ถูกฝังใน process แทนที่จะเป็น phase แยก auditor ที่ดีต้องรู้จักหา control ในที่ใหม่
DevOps + DevSecOps — รวม dev + ops + security
หลักการ
DevOps = ทำลายกำแพงระหว่างทีม Development กับทีม Operations รวม pipeline ตั้งแต่เขียนโค้ดถึง deploy ให้เป็นกระบวนการเดียวที่ automated มากที่สุด
หลักการสำคัญ:
- CI/CD — Continuous Integration / Continuous Deployment โค้ดที่ commit ถูก build, test, deploy automated
- Infrastructure as Code — server/network config เป็นโค้ดที่ version control
- Automated testing — unit test, integration test รัน automated ในทุก commit
- Monitoring + observability — ดู production แบบ real-time
DevSecOps = DevOps ที่ฝัง security เข้าไปใน pipeline security ไม่ใช่ “ด่านสุดท้ายก่อน prod” แต่เป็นทุกขั้นตอน:
- Static application security testing (SAST) ใน CI pipeline — scan source code หา vulnerability ก่อน compile (white-box)
- Dynamic application security testing (DAST) ใน staging — ยิง request เข้า running app เพื่อหา runtime vulnerability (black-box)
- Dependency scanning — library ที่ใช้มี vulnerability ไหม
- Secrets scanning — code ที่ commit มี API key, password หลุดไหม
- Container security scanning ก่อน deploy
Risk profile
กับดัก: DevOps = ไม่ต้องมี change control เพราะ deploy automated
ผิดมาก DevOps ไม่ได้ ทำให้ change control หาย แค่ เปลี่ยนรูปแบบของ change control
ใน traditional environment: change request → CAB approval → manual deploy
ใน DevOps environment: change request เป็น Pull Request → automated tests + peer review = approval → automated deploy
control ทั้งคู่ต้องมี audit trail — ใน DevOps audit trail อยู่ใน Git history + CI/CD logs
กับดัก: Automated test = ทดสอบครบทุกอย่าง
ผิด automated test ทดสอบเฉพาะสิ่งที่คน design test สำหรับ edge case ที่ไม่ได้คิดถึงตอนเขียน test → ทดสอบไม่ได้
มุม IS Auditor
DevOps environment ตรวจ:
- CI/CD pipeline configuration — เหมือน config ของ system อื่น ต้อง version control + change control
- Pipeline gates — มี mandatory check ก่อน deploy production ไหม (security scan, code review approval, test pass)
- SoD ใน pipeline — developer commit ได้ แต่ approve PR ไม่ได้เอง deploy production ไม่ได้เองโดยตรง
- Audit trail completeness — ทุก deploy มี traceability กลับไปยัง commit + PR + approver
- Secrets management — production credentials ไม่อยู่ใน code, ใช้ secrets manager
- Rollback automation — deploy fail → rollback automated หรือต้อง manual
เรื่อง change management ในบริบท operations ลึกๆ เดี๋ยว Domain 4 จะลง change/release management ในมุมการ run system
OOSD — Object-Oriented Systems Development
หลักการ
OOSD = วิธีการ design + program ที่มอง entity ในระบบเป็น object มี attribute (data) และ method (behavior)
แนวคิดหลัก:
- Class + Object — class คือ template, object คือ instance ของ class
- Inheritance — class ใหม่สืบทอด attribute + method จาก class แม่
- Polymorphism — object ต่าง class ตอบ method เดียวกันคนละแบบ
- Encapsulation — ซ่อนรายละเอียดภายใน เปิดให้ใช้ผ่าน interface เท่านั้น
- UML (Unified Modeling Language) — ภาษากลางในการ document object design
Risk profile
กับดักสำคัญ: OOSD = methodology ของโปรเจ็ค
ไม่ใช่ครับ OOSD เป็น programming paradigm ใช้กับ methodology ไหนก็ได้:
- Build ระบบด้วย waterfall + เขียนโค้ดเป็น OOSD = ได้
- Build ระบบด้วย Agile + เขียนโค้ดเป็น OOSD = ได้
- Build ระบบด้วย RAD + เขียนโค้ดเป็น OOSD = ได้
OOSD ตอบคำถามว่า “เขียนโค้ดยังไง” ไม่ใช่ “บริหารโปรเจ็คยังไง”
Risk ของ OOSD:
- Complexity ของ inheritance chain — class ที่สืบทอดลึกหลายชั้น = bug ที่หา root cause ยาก
- Hidden dependencies ผ่าน polymorphism — debug ลำบาก
- Reusable component ที่ reuse ผิดบริบท = bug ที่กระจายไปหลายระบบ
มุม IS Auditor
ในระบบที่ใช้ OOSD ตรวจ:
- Code documentation ของ class hierarchy + UML diagrams
- Test coverage ที่รวม inherited behaviors
- Component reuse policy — มีการ review ก่อน reuse component ระบบอื่นไหม
Component-Based Development
ระบบที่ประกอบจาก components ที่อาจสร้างเองหรือซื้อ เช่น authentication library, payment gateway component, reporting engine
Risk profile
- Supply chain risk — component ที่ซื้อมามี vulnerability ที่ผู้สร้างไม่รู้ → ระบบเรามี vulnerability ตามมา
- Version compatibility — component หนึ่ง update อาจทำให้ component อื่นพัง
- License compliance — บาง open source library มี license เงื่อนไขที่ business ต้อง comply
มุม IS Auditor
- มี inventory ของ components ที่ใช้ในระบบไหม (Software Bill of Materials — SBOM)
- มี vulnerability scanning ของ components เป็นระยะไหม
- มี process update component เมื่อมี security patch ออก
Web-Based Development + BPR — เกี่ยวกับ control ที่หายไป
CRM พูดเรื่อง web-based development (SOAP, WSDL, UDDI) สั้นๆ ขอเน้น BPR ซึ่งเป็นเรื่องที่ออกข้อสอบบ่อยกว่า
BPR — Business Process Reengineering
หลักการของ BPR คือ “ออกแบบ process ใหม่จาก scratch” ไม่ใช่ปรับปรุง process เดิม เพื่อ optimize เต็มที่ตามเทคโนโลยีปัจจุบัน
ผลลัพธ์มักได้ process ที่:
- ขั้นตอนน้อยลง
- ลายเซ็นอนุมัติน้อยลง
- ใช้ระบบ automate แทนคน
- เร็วและถูกกว่าเดิม
ฟังดูดีมากนะ แต่มี risk pattern สำคัญที่ออกข้อสอบบ่อย
กับดัก ⚠️: BPR = ลด risk เพราะ process ใหม่ดีกว่าเก่า
ผิดครับ BPR อาจจะ ลบ control เดิมออกโดยไม่รู้ตัว
ตัวอย่างที่เห็นบ่อย:
- ลายเซ็นอนุมัติ 2 ชั้นถูกตัดเพราะ “ช้า” แต่ลายเซ็นนั้นเคยเป็น preventive control ของ fraud
- Step การ verify วงเงินถูก automate แต่ logic ใน automation ไม่ครอบคลุมเงื่อนไขทั้งหมดที่คนเคย verify
- Step การ reconcile ระหว่างระบบถูกข้าม เพราะ “ระบบ integrate กันแล้ว” แต่จริงๆ integration ไม่ได้ครอบคลุมทุก case
มุมที่ผู้บริหารต้องเข้าใจ: BPR ที่ดีต้องทำ control assessment ก่อน reengineer ระบุ control เดิมที่อยู่ใน process, ตัดสินว่าอันไหนยังจำเป็น, design control ใหม่ทดแทนถ้าจะตัดของเดิม การ reengineer ที่เน้นแค่ “ลด step” โดยไม่ดู control = recipe for disaster
ในมุม IS auditor เวลาบริษัททำ BPR auditor ต้องถาม:
- Process เดิมมี control อะไรบ้าง และมี control assessment เป็นทางการก่อน reengineer ไหม
- Process ใหม่ implement control อะไรทดแทน
- Risk ที่เคยถูก mitigate ด้วย control เดิม ถูก re-evaluated ในบริบทใหม่ไหม
CASE / 4GL / Code Generators
เครื่องมือที่ช่วยให้ developer เขียนโค้ดเร็วขึ้น แต่ละแบบทำงานคนละ phase ของ SDLC
CASE — แยก 3 ระดับตาม phase ที่ใช้
CASE (Computer-Aided Software Engineering) ไม่ใช่เครื่องมือเดียว ISACA แยก 3 categories ที่ทำงานคนละ phase:
| ระดับ | ใช้ใน phase | ตัวอย่างงาน |
|---|---|---|
| Upper CASE | Requirements + Analysis | document business requirement, data object definition, process definition |
| Middle CASE | Detailed Analysis + Design | data + process decomposition, transition จาก analysis → design |
| Lower CASE | Code production + DB definition | generate program code, data file format, application skeleton |
ระบบที่รวมทุกระดับเรียกว่า I-CASE (Integrated CASE) — edit code + manage database schema + update documentation พร้อมกันใน environment เดียว
กับดักของ exam: “CASE = code generator” ผิดครับ code generator เป็นแค่ Lower CASE ส่วน CASE ทั้งหมดครอบคลุมตั้งแต่ requirements ถึง code
4GL — ภาษาที่ “ใกล้คน” มากกว่า “ใกล้เครื่อง”
4GL (Fourth-Generation Language) = ภาษาระดับสูงที่ใกล้เคียงภาษาธรรมชาติ เช่น SQL หรือ low-code platform
ลักษณะสำคัญของ 4GL:
- Nonprocedural — บอก “อะไรที่ต้องการ” ไม่ใช่ “ทำยังไง” (เช่น SQL บอก SELECT … WHERE … ไม่ต้อง loop เอง)
- Environmental independence — รันได้ข้าม OS / hardware
- Operational prototype capability — ใช้สร้าง prototype ที่ทำงานได้จริง
- Simple syntax — user ที่ไม่ใช่ programmer ก็ใช้บางส่วนได้
ใช้บ่อยใน:
- Query + report generators (ดึงข้อมูล, ออกรายงาน)
- Embedded database 4GLs (ภาษาที่ผูกกับ DBMS)
- Application generators (สร้าง code 3GL เช่น COBOL, C จาก specification)
Code Generators
สร้างโค้ดอัตโนมัติจาก specification เช่น API code จาก OpenAPI spec, CRUD code จาก database schema
มักมาเป็น component ของ Lower CASE หรือ I-CASE
Risk profile (ทุก tool รวมกัน)
- โค้ดที่ generate ยังต้อง review ไม่ใช่เชื่อ tool 100%
- Methodology / tool obsolescence tool ที่ใช้กันเมื่อ 10 ปีที่แล้วอาจไม่มี support แล้ว → migration risk
- Vendor lock-in โค้ดที่ generate ใช้กับ tool นั้นเท่านั้น
- Application controls ต้อง design เอง generated code ไม่ฝัง business control ให้
- Database integrity ระหว่าง CASE products หรือระหว่าง CASE กับ manual code ต้องประสานกัน
มุม IS Auditor
- โค้ดที่ generate ผ่าน code review เหมือนโค้ดที่เขียนมือไหม
- Tool ที่ใช้มี vendor support ปัจจุบันไหม
- Skill ของทีมในการ maintain เมื่อ tool obsolete
- การ approve specification (input ของ CASE/code generator) ผ่าน formal process ไหม
- Repository ที่เก็บ output ของ CASE มี access control แบบ need-to-know ไหม
ตารางเปรียบเทียบ Risk Profile ของแต่ละ Methodology (ในมุม auditor)
| Methodology | สิ่งที่ auditor ตรวจ | กับดักหลัก |
|---|---|---|
| Waterfall | Phase documentation ครบทุก phase | Inflexibility ทำให้ business case outdated ก่อนระบบเสร็จ |
| Prototyping | Prototype ผ่าน full SDLC review ก่อน production | Prototype = production after user approval |
| RAD | Documented control requirements ฝังใน user design phase | RAD = waterfall ที่เร็วกว่า |
| Agile / Scrum | Sprint review records, Definition of Done, Backlog grooming | Agile = no documentation |
| DevOps / DevSecOps | Pipeline gates, SoD ใน pipeline, audit trail completeness | DevOps = no change control |
| OOSD | Class hierarchy documentation, test coverage of inherited behaviors | OOSD = methodology ของโปรเจ็ค |
| Component-Based | SBOM, vulnerability scanning, license compliance | ใช้ component แล้วไม่ track |
| BPR | Control assessment ก่อน reengineer, control replacement | BPR = ลด risk เพราะ process ใหม่ดีกว่า |
ข้อสรุปของบทนี้
Methodology ไม่ใช่เรื่องของ “อันไหนดีที่สุด” แต่เป็นเรื่องของ trade-off ระหว่าง speed, flexibility, documentation, control coverage
หน้าที่ของ IS auditor:
- เข้าใจ methodology ที่ใช้ ก่อนเริ่ม audit
- ปรับ audit approach ให้เข้ากับ methodology ไม่ใช่บังคับให้ project ทำเหมือน waterfall เพื่อให้ audit ง่าย
- หา control ในที่ใหม่ ใน Agile control อยู่ใน Definition of Done ไม่ใช่ phase document
- Flag ทันที เมื่อเห็น misconception เช่น “Agile = no documentation” หรือ “BPR ลด risk โดยอัตโนมัติ”
ถึงตรงนี้เรามี picture ครบแล้วว่าระบบถูกสร้างยังไง Waterfall, Agile, RAD, DevOps แต่ละแบบ และ acquisition + configuration
แต่ระบบที่ “build เสร็จ” ยังไม่ใช่ระบบที่ “เชื่อถือได้” ข้อมูลที่ไหลผ่านระบบต้องผ่าน 3 ด่านควบคุม ทุกครั้ง ตั้งแต่เข้า → process → ออก
ตอนหน้าจะลง application controls เรื่องที่ทดสอบบ่อยที่สุดของ Domain 3
อ้างอิง CRM (CISA Review Manual 28th Edition): Domain 3: Section 3.3.5 Alternative Development Methodologies