วัฏจักรการพัฒนาซอฟต์แวร์ หรือ Software Development Life Cycle เป็นวัฏจักรพื้นฐานในการพัฒนาซอฟต์แวร์ หรือโปรแกรมคอมพิวเตอร์ ให้มีประสิทธิภาพมากยิ่งขึ้น นับตั้งแต่เริ่มเก็บความต้องการ (Get Requirement) ไปจนถึงการสำรวจความเห็นย้อนกลับ (Feedback) มาที่ผู้พัฒนา Show Software Development Life Cycle มีส่วนประกอบพื้นฐาน ดังต่อไปนี้1. Planning: วางแผนโครงการการวางแผนการพัฒนาซอฟต์แวร์ เริ่มต้นจาก การเก็บความต้องการ (Get Requirement) ทั้งจากลูกค้า (Customer) หรือผู้ใช้งาน (User) อาจจะเป็นการกำหนดจากขั้นตอนทางธุรกิจ หรือ Business Process ก็ได้ 2. Analysis: วิเคราะห์โครงการเมื่อเราได้ความต้องการจากลูกค้า หรือผู้ใช้งานแล้ว จะเข้าสู่ขั้นตอนการวิเคราะห์ระบบ ซึ่งจะต้องวิเคราะห์ความคุ้มค่าในการลงทุน (Return On Investment: ROI) ว่าคุ้มค่าในการดำเนินการต่อหรือไม่ เมื่อเราคำนวณความคุ้มค่าของโครงการแล้ว จึงจะนำมาจัดทำขอบเขตของโครงการ หรือ Project Scope Of Work เพื่อกำหนดขอบเขตการพัฒนาซอฟต์แวร์ว่าเราจะทำหรือไม่ทำอะไรบ้าง โดยขั้นตอนนี้จะต้องสรุปกับลูกค้า หรือผู้ใช้งาน ตามความต้องการ (Requirement) ที่ได้เก็บมาตั้งแต่ต้น จนได้ข้อสรุปที่ตกลงได้ทั้ง 2 ฝ่าย เมื่อเราสามารถสรุปขอบเขตของโครงการได้แล้ว ขั้นตอนต่อไปคือ การทำแผนการปฏิบัติการ หรือ Action Plan เพื่อกำหนดการทำงานภายใต้ระยะเวลาตามที่ได้สรุปกับลูกค้า หรือผู้ใช้งาน ในขอบเขตของโครงการ (Project Scope Of Work) 3. Design: ออกแบบระบบการออกแบบระบบนี้ นอกจากการออกแบบทางด้านซอฟต์แวร์ ทั้งหน้าจอตอบสนองผู้ใช้งาน (User Interface: UI) และการโค้ดซอฟต์แวร์ (Software Coding) ด้วยการทำรายละเอียดซอฟต์แวร์ หรือ Software Specification แต่จะรวมถึงการออกแบบฐานข้อมูล (Database Design) และเครือข่าย (Network Design) ด้วย เพื่อให้ซอฟต์แวร์สามารถทำงานได้ตามความต้องการของลูกค้า หรือผู้ใช้งาน 4. Implementation: พัฒนาซอฟต์แวร์และติดตั้งเมื่อทำการออกแบบระบบเรียบร้อยแล้ว จะเข้าสู่ขั้นตอนการพัฒนาซอฟต์แวร์ให้ใช้งานได้จริง โดยพัฒนาซอฟต์แวร์ตามที่ได้ออกแบบไว้แล้ว ให้กลายเป็นความจริง สามารถใช้งานได้อย่างมีประสิทธิภาพ ตรงตามความต้องการของลูกค้า หรือผู้ใช้งาน ตามที่ได้เก็บมา ขั้นตอนนี้จะทำอยู่ในสภาวะแวดล้อมทดสอบ หรือ Test Environment 5. Testing & Integration: ทดสอบและนำไปใช้งานหลังจากพัฒนาซอฟต์แวร์แล้ว ขั้นตอนต่อไปคือการทดสอบและการบูรณาการ จะต้องทำการทดสอบจนกว่า ความผิดพลาดของซอฟต์แวร์ หรือบั๊ก (Bug) จะลดน้อยมากที่สุด หรือไม่มีเลยก็ยิ่งดี การทดสอบซอฟต์แวร์จะมี 2 ขั้นตอน คือ – การทดสอบระบบย่อย หรือ Unit Test เป็นการทดสอบระบบย่อยๆทีละระบบว่า สามารถทำงานได้ตามที่ออกแบบไว้หรือไม่ – การทดสอบทั้งระบบ หรือ System Integrate Test (SIT) เป็นการเอาระบบย่อยๆ หลายๆระบบ มารวมกันให้ทำงานอย่างต่อเนื่อง เพื่อให้ตรงตามความต้องการที่เก็บมาจากลูกค้า หรือผู้ใช้งาน เมื่อทำการทดสอบเสร็จแล้ว จึงจะนำไปให้ลูกค้า หรือผู้ใช้งาน ทำการทดสอบครั้งสุดท้ายก่อนใช้งานจริง (User Acceptance Test: UAT) เมื่อลูกค้า หรือผู้ใช้งานทดสอบระบบและลงนามในเอกสาร UAT เป็นที่เรียบร้อยแล้ว จึงจะเริ่มใช้งานระบบจริง หรือ Go Live โดยการนำระบบที่อยู่ในสภาวะแวดล้อมทดสอบ (Test Environment) ขึ้นไปที่สภาวะแวดล้อมใช้งานจริง (Production Environment) 6. Maintenance: บำรุงรักษาซอฟต์แวร์เมื่อทำการ Go Live ระบบแล้ว ขั้นตอนต่อไปคือ การบำรุงรักษาซอฟต์แวร์ เมื่อใช้งานไปสักระยะ ลูกค้า หรือผู้ใช้งาน อาจจะพบข้อผิดพลาดของซอฟต์แวร์ (Bug) เพิ่มเติม หากสามารถแก้ไขได้ ก็ให้ทำการแก้ไข แต่ถ้าหากแก้ไขไม่ได้ จำเป็นต้องพัฒนาซอฟต์แวร์เพิ่มเติม ก็ให้ย้อนกลับไปทำตั้งแต่ข้อ 1 วางแผนและเก็บความต้องการจากลูกค้า หรือผู้ใช้งานใหม่อีกครั้ง เย๊อะม๊วกกก เช่น Waterfall, V-Shaped, Prototype, Spiral, Iterative Incremental, Big Bang, Agile แค่เห็นก็ปวดหัวละ ซึ่งแต่ละตัวก็มีรายละเอียดของมันอีกอื้อซ่าเลย ดังนั้นไปหาอ่านเอาเองละกัน แต่เรื่องที่เราควรจะต้องรู้คือ‘ไม่มีใครอยากทำงานผิดพลาด’ แต่บางครั้งปัญหาหรือข้อผิดพลาดก็มาทั้งในรูปแบบ เส้นผมบังภูเขา หรือ แบบเข็นครกขึ้นเขา จนยากที่จะรับมือ โดยเฉพาะเมื่อเกิดขึ้นระหว่างการพัฒนาซอฟต์แวร์ (Software Development) ทำให้กระบวนการทำงานสะดุดล่าช้า ส่งผลกระทบต่อผู้ที่เกี่ยวข้องจำนวนมาก และอาจทำให้งานที่ออกมาไม่ได้คุณภาพและส่งผลเชิงลบต่อองค์กรในที่สุด ด้วยเหตุนี้ บลูบิค จึงได้รวบรวม 6 ข้อผิดพลาดที่พบบ่อยในแต่ละขั้นตอนของการทำ Software Development Life Cycle (SDLC) ที่นักพัฒนาซอฟต์แวร์และโปรแกรมเมอร์ต้องรู้ เพื่อป้องกันไม่ให้เกิดข้อผิดพลาดและทำให้กระบวนการพัฒนาซอฟต์แวร์เป็นไปอย่างราบรื่น สามารถส่งมอบงานได้อย่างมีคุณภาพสมบูรณ์ตามเป้าหมายที่วางไว้ 1. การวางแผน (Planning)เป็นขั้นตอนที่ต้องมีการวางแผนและกำหนดว่า การพัฒนาซอฟต์แวร์ (Software: SW) นี้ ใครจะเป็นผู้ใช้งานและรูปแบบเป็นอย่างไร โดยมีการระบุอย่างชัดเจนถึง กรอบเวลา (timeline) ขอบเขตของงาน (Scope of Work) ความต้องการทางธุรกิจ (Business Requirement) ข้อมูลสำคัญ และผู้ที่เกี่ยวข้อง (Stakeholders) มีใครบ้าง ข้อผิดพลาดที่พบบ่อย
2. การวิเคราะห์ (Analysis)เป็นขั้นตอนวิเคราะห์ความต้องการ (Requirement) ทั้งในส่วนของกรอบเวลาของโครงการ และ Feature ที่ต้องการว่ามีอะไรบ้าง เพื่อจัดลำดับความสำคัญของงาน กำหนดรายละเอียดของความต้องการ และวางแผนการทดสอบต่างๆ ว่าต้องทำอะไรบ้าง ข้อผิดพลาดที่พบบ่อย
3. การออกแบบ (Design)เป็นขั้นตอนการดีไซน์ Functional Software ซึ่งแบ่งออกเป็น 2 ส่วน คือ 1) การออกแบบ UX/UI และ Workflow และ 2) Backend/Frontend ข้อผิดพลาดที่พบบ่อย
4. การติดตั้ง (Implementation)เป็นขั้นตอนการพัฒนาระบบตามแบบที่ได้กำหนดไว้ ข้อผิดพลาดที่พบบ่อย โดยทั่วไปจะมีการแบ่งงานออกเป็น System Analyst (SA) เป็นผู้ออกแบบ Function การทำงานจาก Requirement และ SW Spec หรือ SW Developer จะทำหน้าที่พัฒนาซอฟต์แวร์ตาม Spec ที่ได้รับจาก SA ดังนั้น ปัจจัยที่ทำให้เกิดความผิดพลาดในขั้นตอนนี้คือ คนออกแบบและคนพัฒนาซอฟต์แวร์เป็นคนละคนกัน จึงทำได้เกิดปัญหา ดังต่อไปนี้
5. การทดสอบและการเชื่อมต่อระบบ (Testing & Integration)ในขั้นตอนนี้จะมีการทำการทดสอบคุณภาพของซอฟต์แวร์สามารถใช้งานจริงซึ่งการทดสอบที่คุ้นเคยในกลุ่มนักพัฒนาซอฟต์แวร์ คือ UAT, SIT, และ การทำ Unit Test ที่เป็น Functional Test แต่อาจจะมีการทดสอบที่เป็น Non-functional Test ที่ไม่ได้ทำการทดสอบในส่วนนี้จนนำไปสู่ข้อผิดพลาดที่อาจเกิดขึ้นได้ เช่น การทำ Performance Test, Penetration Test และ Smoke Test เป็นต้น ข้อผิดพลาดที่พบบ่อย
6. การบำรุงรักษา (Maintenance)เป็นขั้นตอนที่นักพัฒนาซอฟต์แวร์จะทำการส่งมอบงานบำรุงรักษา (Maintenance) ให้กับแผนกไอที หรือผู้ที่มีส่วนเกี่ยวข้องเป็นผู้รับผิดชอบต่อ |