- กระบวนการพัฒนาซอฟต์แวร์ เป็นกระบวนการที่ทับซ้อนกันของการทำงานเทคนิคหลาย ๆ ด้าน ที่ต้องอาศัย ความร่วมมือ และ การจัดการที่ดี เพื่อเป้าหมายร่วมกันคือ ความสำเร็จของโครงการซอฟต์แวร์
- กระบวนการประกอบด้วย specifying, designing, implementing และ testing
- กิจกรรมทั้งหมดในกระบวนการพื้นฐานสี่อย่าง (ได้แก่ specification, development, validation และ evolution) ของแต่ละ process model ต่างก็มีรายละเอียดที่และขั้นตอนที่แตกต่างกัน
- เช่น ในแบบจำลองน้ำตกจะดำเนินการให้จบไปทีละขั้น แต่ในแบบจำลอง incremental นั้น จะทำสลับกันไป
- ความสำคัญคือ เราต้องจัดตารางทรัพยากรให้เหมาะกับกระบวนการพัฒนาแต่ละชนิด
เป็นกระบวนการกำหนดสิ่งที่ต้องการ รวมข้อจำกัดต่างๆ ในการดำเนินงานและพัฒนาระบบ
- Requirements engineering process
- Requirements elicitation and analysis
- สิ่งที่ผู้มีส่วนได้ส่วนเสียของระบบ (system stakeholders) ต้องการหรือมุ่งหวังจากระบบคืออะไร
- Requirements specification
- กำหนดรายละเอียดของ requirements
- Requirements validation
- ตรวจสอบความถูกต้องของ requirements (ตรวจสอบเอกสาร vs ความต้องการของ stakeholders)
- Requirements elicitation and analysis
เป็น process ที่เปลี่ยน system specification ให้เป็น executable system.
- Software design
- ออกแบบ software structure ที่ถูกต้องตรงตาม specification
- Implementation
- เปลี่ยน software structure ให้เป็น executable program; กิจกรรมในการ design และ implementation จะมีความเกี่ยวข้องใกล้ชิดกันมาก และอาจจะทำงานควบคู่กันไปได้
- Architectural design
- ใช้เมื่อต้องการออกแบบระบบในภาพรวม เพื่อให้ได้องค์ประกอบหลัก (principal components) ของระบบ (subsystems หรือ modules) เพื่อบอกความสัมพันธ์หรือการกระจัดกระจายขององค์ประกอบเหล่านั้น
- Database design
- ใช้เมื่อต้องการออกแบบโครงสร้างข้อมูลของระบบ และบอกว่ามันจะไปอยู่ในฐานข้อมูลในลักษณะใด
- Interface design
- ใช้เมื่อต้องการออกแบบการ interfaces ระหว่าง system components
- Component selection and design
- ใช้เมื่อต้องการออกแบบระบบที่ใช้ชิ้นส่วนแบบ reuse ที่หาเจอ แต่ถ้ายังไม่มีใครทำไว้ ให้บอกว่ามันควรเป็นชิ้นส่วนที่ทำงานอย่างไร
- โดยทั่วไป ซอฟต์แวร์ อาจจะเป็นได้ทั้งชนิดที่พัฒนาขึ้นใหม่ทั้งหมด หรือเป็นเพียงแค่การ configuring ซอฟต์แวร์ที่มีอยู่ ให้ตรงตามความต้องการของผู้ใช้
- การออกแบบ (design) และสร้าง (implementation) เป็นกิจกรรมที่ต้องทำสลับกัน และเป็นกิจกรรมที่ต้องทำมากที่สุดในโครงการซอฟต์แวร์
- Programming เป็นกิจกรรมส่วนบุคคล ไม่มี standard process
- Debugging เป็นกิจกรรมเกี่ยวกับการหาและแก้ไขข้อบกพร่อง
- Verification และ validation (V & V) ใช้เพื่อแสดงให้เห็นว่าระบบมีความสอดคล้องหรือเข้ากันได้กับ specification และตรงตาม requirements ของ system customer.
- V & V ประกอบด้วยกระบวนการ
- checking และ review
- system testing
- System testing ประกอบด้วยการรันระบบด้วย test cases ที่ได้มาจาก specification
- ทดสอบด้วยข้อมูลจริงเพื่อให้เห็นพฤติกรรมของระบบ
- ในกิจกรรม V & V จะใช้ testing เป็นหลัก
- Component testing
- แต่ละชิ้นส่วนถูก test โดยอิสระ
- ชิ้นส่วนอาจจะหมายถึง functions หรือ objects
- System testing
- เป็นการทดสอบระบบโดยรวมในคราวเดียว
- ควรเน้นที่การทดสอบในส่วนที่ critical
- Customer testing
- ทดสอบกับข้อมูลจริงของลูกค้า เพื่อตรวจสอบว่าระบบทำงานตรงตามความต้องการจริงของลูกค้าหรือไม่
- ในระบบใดๆ ส่วนที่เป็น software ย่อมมีความยืดหยุ่นและสามารถเปลี่ยนแปลงได้
- ความต้องการซอฟต์แวร์อาจจะมีการเปลี่ยนแปลง
- เช่น เกิดจากการเปลี่ยนแปลงพฤติการณ์ตามสภาพความเป็นจริงของธุรกิจ
- ซอฟต์แวร์ที่สนับสนุนธุรกิจเหล่านั้น ก็ต้องรองรับการพัฒนาและเปลี่ยนแปลงอยู่เสมอ
- ให้นักศึกษาอธิบายความแตกต่างระหว่าง
- การพัฒนา (development)
- วิวัฒนาการ (evolution) • การบำรุงรักษา (maintenance)