ในการออกแบบซอฟต์แวร์ที่ดี นักพัฒนาควรออกแบบโมดูลให้มีลักษณะใดเพื่อให้ระบบมีความยืดหยุ่นและบำรุงรักษาได้ง่าย
กแต่ละโมดูลทำหน้าที่สัมพันธ์กันชัดเจนและพึ่งพาโมดูลอื่นให้น้อย
ขแต่ละโมดูลรวมหลายหน้าที่และเรียกใช้รายละเอียดภายในของโมดูลอื่นมาก
คแต่ละโมดูลทำหน้าที่ชัดเจนแต่เชื่อมโยงกับรายละเอียดภายในของโมดูลอื่นมาก
งแต่ละโมดูลรวมหลายหน้าที่แม้จะลดการเชื่อมโยงระหว่างโมดูล
เฉลยอธิบาย
การออกแบบซอฟต์แวร์ที่ดีควรให้แต่ละโมดูลมี Cohesion สูง (ภายในโมดูลเดียวกันทำงานที่เกี่ยวข้องกันอย่างใกล้ชิด) และ Coupling ต่ำ (โมดูลต่างๆ มีการพึ่งพากันน้อยที่สุด) เพื่อให้แก้ไข ทดสอบ และบำรุงรักษาได้ง่าย โดยการเปลี่ยนแปลงในโมดูลหนึ่งจะส่งผลกระทบต่อโมดูลอื่นน้อยที่สุด