กระบวนการพัฒนาซอฟต์แวร์ บทที่ 2 กระบวนการพัฒนาซอฟต์แวร์
วัตถุประสงค์ เพื่อทำความรู้จักกับกระบวนการพัฒนาซอฟต์แวร์ เพื่อให้เข้าใจแบบจำลองกระบวนการพัฒนาซอฟต์แวร์ในรูปแบบต่าง
กล่าวนำ กระบวนการทางวิศวกรรมซอฟต์แวร์ คือ การใช้ระเบียบวิธี เทคนิค เครื่องมือช่วย และกระบวนการพัฒนาซอฟต์แวร์ที่ชัดเจน ซึ่งสามารถตรวจสอบได้ เพื่อทำให้เกิดมาตรฐานเดียวกัน และให้ซอฟต์แวร์มีประสิทธิภาพสูงสุด ในทางปฏิบัติจริง
ภาพรวมของกระบวนการพัฒนาซอฟต์แวร์ Tools Methods Process A Quality Focus
กระบวนการพัฒนาซอฟต์แวร์ การจัดการข้อกำหนดซอฟต์แวร์ (Software Specification) การออกแบบและการผลิตซอฟต์แวร์ (Software Design and Implementation) การตรวจสอบซอฟต์แวร์ (Software Validation) การวิวัฒนาการของซอฟต์แวร์ (Software Evolution)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ (Software Process Model) คือ ขั้นตอนการทำงานประกอบด้วย ชุดของกิจกรรม ข้อจำกัด และทรัพยากรที่จะผลิตเป็นผลลัพธ์ให้ตรงตามความต้องการของลูกค้าหรือผู้ใช้
ลักษณะของกระบวนการพัฒนาซอฟต์แวร์ กระบวนการต้องระบุกิจกรรมทั้งหมดอย่างชัดเจน กระบวนการใช้ทรัพยากรภายใต้ข้อจำกัดต่าง ๆ เพื่อผลิตเป็นซอฟต์แวร์ กระบวนการหนึ่ง อาจเกิดจากกระบวนการย่อยอื่นที่มีความสัมพันธ์กัน ทุกกิจกรรมของกระบวนการมีเงื่อนไขในการเริ่มต้นและสิ้นสุดของกิจกรรม ทุกขั้นตอนและทุกกิจกรรมของกระบวนการต้องมีเป้าหมายที่ชัดเจน และมีหลักการหรือแนวทางในการปฏิบัติ เพื่อให้บรรลุเป้าหมาย ข้อจำกัดหรือเงื่อนไขสามารถนำมาใช้ควบคุมการดำเนินการของกิจกรรมหรือจัดสรรทรัพยากรให้เกิดประโยชน์สูงสุด
กรอบงานของกระบวนการวิศวกรรมซอฟต์แวร์
กิจกรรมกรอบงาน การสื่อสาร ( Communication) การวางแผน ( Planning) การสร้างแบบจำลอง (Modeling) การสร้างซอฟต์แวร์ ( Construction) การใช้งานซอฟต์แวร์ (Deployment)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ การไหลของกระบวนการเชิงเส้น (Linear Process Flow) Communication Planning Modeling Construction Deployment
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ การไหลของกระบวนการแบบวนซ้ำ (Interactive Process Flow)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ การไหลของกระบวนการแบบขนาน (Parallel Process Flow)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ การไหลของกระบวนการแบบวนซ้ำ (Interactive Process Flow)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ การไหลของกระบวนการแบบขนาน (Parallel Process Flow)
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ คือ การจำลองภาพของกระบวนการเพื่อให้เห็นถึงการจัดโครงสร้างลำดับขั้นตอนของกระบวนการในรูปแบบที่แตกต่างกันออกไป มี 2 ประเภท แบบไม่เป็นระบบ แบบเป็นระบบ
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ แบบไม่เป็นระบบ ไม่มีการวางแผน ไม่มีการจัดการที่ดี ไม่มีการจัดทำเอกสาร เหมาะกับโครงการขนาดเล็ก ทำใช้เอง
แบบจำลองกระบวนการพัฒนาซอฟต์แวร์ แบบเป็นระบบ กระบวนการที่ใช้ต้องอธิบายรูปแบบของแบบจำลองได้ เช่น แบบจำลองน้ำตก (Waterfall Model) หรือ Document-Driven Model แบบจำลองส่วนเพิ่ม (Incremental Model) แบบจำลองแบบเร่งรัด (Rapid Application Development: RAD Model) แบบจำลองเชิงวิวัฒนาการหรือต้นแบบ (Evolutionary Model/Prototyping) แบบจำลองเวียนก้นหอย (Spiral Model / Risk-Driven Model) แบบจำลอง Rational Unified Process
แบบจำลองน้ำตก (Waterfall Model) หรือ Document-Driven Model Communication Project initiation Requirements gathering Planning Estimating Scheduling Tracking Modeling Analysis Design Construction Code Test Deployment Delivery Support Feedback
แบบจำลองส่วนเพิ่ม (Incremental Model) Communication Communication Communication Planning Planning Planning Modeling Modeling Modeling Construction Construction Construction Integration Bucket System Test
แบบจำลองเร่งรัด (Rapid Application Development: RAD Model) Modeling Business modeling Data modeling Process modeling Communication Construction Component reuse Automatic code Generation Testing Modeling Business modeling Data modeling Process modeling Deployment Integration Delivery Feedback Planning Construction Component reuse Automatic code Generation Testing Modeling Business modeling Data modeling Process modeling Construction Component reuse Automatic code Generation Testing 60-90 days
แบบจำลองเชิงวิวัฒนาการหรือต้นแบบ (Evolutionary Model / Prototyping) Communication Quick Plan Modeling Quick Design Construction of Prototype Deployment Delivery & Feedback
แบบจำลองเวียนก้นหอย(Spiral Model) ที่มา http://www.onlineclassnotes.com/2013/01/describe-spiral-model.html
แบบจำลอง Rational Unified Process Elaboration Planning Modeling Construction Deployment Communication Inception Construction Release Software Increment Transition Production
คำถามท้ายบท กระบวนการพัฒนาซอฟต์แวร์คืออะไร และมีความสำคัญอย่างไร เทคโนโลยีแบบชั้นคืออะไร และมีความสำคัญอย่างไร กรอบงานของกระบวนการพัฒนาซอฟต์แวร์คืออะไร อธิบายแบบจำลองที่สนใจ จำนวน 3 แบบ