เป็นการแตกปัญหาที่ซับซ้อนออกเป็นปัญหาย่อยที่มีความซับซ้อนน้อยลง เพื่อช่วยในการวิเคราะห์ปัญหา และออกแบบขั้นตอนการแก้ปัญหาย่อยแต่ละปัญหาให้ง่ายขึ้น
เป็นการหารูปแบบที่เหมือนหรือคล้ายคลึงกันระหว่างปัญหาย่อยที่แตกออกมา หรือความคล้ายคลึงกับปัญหาอื่น ๆ เพื่อนำวิธีการแก้ปัญหาไปประยุกต์ใช้กับการแก้ปัญหาย่อยอื่น ๆ เป็นการช่วยลดขั้นตอนในการออกแบบวิธีการแก้ปัญหาได้
o การคัดแยกรายละเอียดที่จำเป็นต่อการแก้ปัญหา ออกจากรายละเอียดที่ไม่จำเป็น ทำให้ออกแบบวิธีการแก้ปัญหาในภาพรวมทำได้ง่ายขึ้น
o การแทนกลุ่มของปัญหา ขั้นตอน และกระบวนการที่มีรายละเอียดปลีกย่อยหลายขั้นตอนให้เป็นขั้นตอนเดียว
รายการคำสั่งที่อธิบายขั้นตอนการแก้ปัญหา โดยคำสั่งที่ใช้จะต้องไม่กำกวมผู้อื่นสามารถนำไปปฏิบัติตามได้ ซึ่งคำสั่งมักอยู่ในรูปของรหัสลำลอง (pseudo code) หรือผังงาน (flowchart)
“ชีวิตมันดูเหมือนจะเป็นไปไม่ได้จนกระทั่งมันจะสำเร็จ👍”