1. การพัฒนาซอฟต์แวร์ควรเป็นการพัฒนาแบบวนกลับ (Iterative Development)
กล่าวคือในแต่ละรอบการทำงาน (Iteration) หนึ่งๆ จะประกอบด้วยกิจกรรมเหล่านี้ คือ การกำหนด,การวิเคราะห์,การออกแบบ,การสร้างและสุดท้ายการทดสอบความต้องการของผู้ใช้นั้น ผลที่ได้คือ ซอฟต์แวร์ที่สามารถทำงานได้ (Executable product) ซึ่งแตกต่างจากกระบวนการพัฒนาแบบดั้งเดิม (Traditional Development) ที่กว่าจะได้ผลลัพธ์ในรูป Executable product นั้นจะต้องรอไปจนกว่า(delay) จะมีการทดสอบระบบทั้งหมดเรียบร้อย ซึ่งสิ่งนี้ส่งผลให้โครงการพัฒนาซอฟต์แวร์นั้นมีความเสี่ยงสูงในการล้มเหลวได้เมื่อเวลาผ่านไป