จาก paper เรื่อง Towards an Ontology of Terms on Technical Debt
นั้นทำการสรุปชนิดของ technical debt ออกมาได้อย่างน่าสนใจ
รวมทั้งตัวชี้วัดของแต่ละชนิด
จึงทำการบันทึกไว้นิดหน่อย
น่าจะมีประโยชน์ สำหรับการการปรับปรุงคุณภาพของ software ให้ดีขึ้น
ชนิดของ Technical Debt ใน paper มีดังนี้
- Architecture Debt ว่าด้วยเรื่องของ architecture ของระบบ ที่ส่งผลต่อการพัฒนา ทดสอบ และ ส่งมอบที่ยากหรือนานขึ้น
- Build Debt ในการพัฒนานั้นจะมีขั้นตอนของการ build ทั้งการ compile code, download dependency ซึ่งช้าลงเรื่อย ๆ
- Code Debt เรื่องของ source code ที่ไม่ตรงตามหลักการเขียน หรือ code smell ต่าง ๆ
- Defect Debt เรื่องของ defect ที่มักจะแก้ช้า หรือ จัดลำดับความสำคัญไว้ทีหลัง
- Design Debt เรื่องของโครงสร้างของ code ที่วิเคราะห์ออกมาพบว่า ไม่เป็นไปตามแนวปฏิบัติที่ดี เช่น แต่ละ class ผูกมัดกันมากจนเกินไป
- Documentation Debt พบเจอบ่อย ๆ ที่เอกสารไม่สามารถอธิบายการทำงานของระบบปัจจุบันได้ ไม่ update หรือ ไม่เพียงพอต่อการใช้งาน
- Infrastructure Debt เช่นเรื่องความล่าช้าของการสร้าง หรือการ update/fix/patch ต่าง ๆ
- People Debt มีคอขวดที่คนบางคน ส่งผลให้เกิดปัญหา หรือ ส่งมอบล่าช้า
- Process Debt ขั้นตอนการทำงานที่เยอะ หรือ ไม่จำเป็น หรือ ต้องรอนานเกินไป
- Requirement Debt ต้องมีทั้งจาก business และ technical รวมทั้ง functional และ non-functional เสมอ
- Test Automation Debt เรื่องของ fast feedback ของ development life cycle รวมทั้งความเชื่อมั่นที่น้อยลงเรื่อย ๆ
- Test Debt เช่นการทดสอบไม่ครอบคลุม หรือ ไม่เสร็จจริง ๆ ตามที่วางแผนไว้
ในระบบของเราของ Technical Debt อะไรกันบ้างนะ ?