เรียกย่อๆว่า SDLC หรือ วงจรพัฒนาระบบ
มาทำความเข้าใจเกี่ยวกับ Algorithm ว่ามันคืออะไร
ในทุกๆสายงานั้นเรียกได้ว่ามีกระบวนการหรือวิธีการเฉพาะตัวของตัวเองอยู่และเรียกได้ว่าในสายงานวิศวกรรมซอฟต์แวร์ บางครั้งกลับถูกมองว่าง่ายน้อยนิดเขียน Source code เพียงไม่เท่าไรก็ได้งานออกมาแล้วซึ่งมันเป็นเรื่องที่เข้าใจผิดอย่างร้ายแรงมากๆ กระบวนการทางวิศวกรรมซอฟต์แวร์นี้แหละที่เรียกกันว่า SDLC มันคืออะไรมีความสำคัญอย่างไรเราจะทำความเข้าใจไปพร้อมกันนะครับ
Software Development Life Cycle คืออะไร ?
Software Development Life Cycle หรือ SDLC คือขั้นตอนกระบวนการทำงานระดับพื้นฐานที่ใช้ในการวางแผนงานการพัฒนาซอฟต์แวร์ตั้งแต่เริ่มต้นจนจบในโปรเจคของทีมนั่นเอง ไม่ว่าจะเป็น Front end, Back end, Database, QA Tester, Network Engineer, System Engineer, DevOps และทีมอื่น ๆ รวมไปถึงทีม Business และทีม Product ให้ทุกฝ่ายที่มีส่วนร่วมในโปรเจคเห็นภาพแผนงานไปในทิศทางเดียวกัน และเพื่อช่วยในการพัฒนาและจัดการกับโปรแกรมคอมพิวเตอร์และระบบซอฟต์แวร์ต่าง ๆ อย่างมีระเบียบและมีวิธีการที่สามารถควบคุมและดูแลรักษาโครงการได้อย่างมีประสิทธิภาพ
SDLC แบ่งออกเป็น 7 Phrase ดังนี
โดยขั้นตอนหรือกระบวนการ SDLC ก็จะประกอบไปด้วย 7 เฟสหลักๆ ด้วยกันดังต่อไปนี้
Phrase 1 Planning
ขั้นตอนการวางแผน
กระบวนการแรกเริ่มเลยของเรานั้นก็คือต้องมีการเริ่มวางแผนการทำงานขึ้นมาก่อนตั้งแต่วิธีการพัฒนาซอฟต์แวร์, กำหนดระยะเวลา, ประเมินราคา Cost, จัดสรรทรัพยากรบุคคล และเครื่องมือต่างๆ ที่ต้องนำมาใช้ในการทำงาน เรียกได้เลยว่าจะต้องเป็นบุคคลที่มีประสบการณ์ในการพัฒนาซอฟต์แวร์ระดับสูงเลยก็ว่าได้เพราะจะต้องใช้ความนึกคิดประสบการณ์ที่ผ่านมาในการวางแผนด้านต่างๆ
Phrase 2 Requirement & Analysis
เก็บความต้องการของลูกค้าและวิเคราะห์
กระบวนการในส่วนนี้ก็เรียกได้ว่าต้องมีความเข้าใจที่ชัดเจนต้องเคลียความต้องการของผู้ใช้ให้ได้เก็บข้อมูลให้ตรงประเด็น ไม่ว่าจะเป็นการเก็บความต้องการของผู้ใช้งาน ไม่ว่าจะเป็นด้านการใช้งานหน้าบ้าน หรือ รวบรวมรายการทรัพยากรหลังบ้านที่ต้องเตรียมให้พร้อมเพื่อรองรับการใช้งานของระบบที่จะพัฒนาต้องมีอะไรบ้าง? และนำมาประชุมวิเคราะห์ออกมาเป็นความต้องการจริงของระบบ รวมไปถึงประเมินความเสี่ยงและข้อจำกัดของระบบที่อาจจะเกิดขึ้นเมื่อเริ่มต้นพัฒนา
Phrase 3 Design
ขั้นตอนการออกแบบ
ขั้นตอนต่อมาเรียกได้ว่าช่วงเวลาแห่งการประสานความคิดก็ว่าได้ คือ การเริ่มออกแบบระบบทั้งฝั่งระบบหน้าบ้าน (User interface Design) และ ระบบหลังบ้าน (System Design และ Software Architecture Design) จากแผนหรือข้อมูลที่ได้เก็บจาก Requirement ที่ผ่านการวิเคราะห์ในขั้นตอนก่อนหน้านี้มาแล้ว เพื่อให้เห็นภาพใหญ่ให้ผู้เชี่ยวชาญในแต่ละส่วนสามารถรีวิวร่วมกันและให้คำแนะนำกันได้ ลดการเกิดปัญหาก่อนที่เริ่มพัฒนาระบบ
Phrase 4 Development
ขั้นตอนการพัฒนาซอฟต์แวร์
เริ่มต้นพัฒนาระบบ เขียนโปรแกรมจากแผนที่ได้จากขั้นตอน Design โดยระหว่างการพัฒนาระบบในขั้นตอนนี้ของทีม Software Developer หรือ Programmer จะมีการใช้เครื่องมือต่าง ๆ เข้ามาช่วยให้ทำพัฒนาระบบซอฟต์แวร์ ไม่ว่าจะเป็น Version control หรือการทำ Code Review ที่มีส่วนช่วยให้ทีม Software Developer ทำงานร่วมกันมีประสิทธิภาพมากขึ้น การพัฒนาซอฟต์แวร์เป็นขั้นตอนที่กำลังสำคัญใน SDLC เนื่องจากมันเป็นกระบวนการสร้างซอฟต์แวร์จริง ๆ ที่ตอบสนองต่อความต้องการและการออกแบบของโครงการ การพัฒนาซอฟต์แวร์ที่มีคุณภาพและมีประสิทธิภาพมีบทบาทสำคัญในการสร้างผลลัพธ์ที่เป็นที่พึงพอใจของผู้ใช้งาน
Phrase 5 QA Testing
ขั้นตอน QA Testing
เมื่อพัฒนาเสร็จก๊จะทำการทดสอบระบบ เพื่อตรวจสอบความผิดพลาด หรือ ความเสียงที่สามารถเกิดขึ้นได้ รวมไปถึงทดสอบว่าระบบที่พัฒนานั้นสามารถทำได้ตาม Requirements ที่ตั้งไว้หรือไม่ โดยจะมีการตั้ง Test Case เพื่อทำการทดสอบการทำงานของระบบตามรายการที่ลิสไว้ หากเจอปัญหาจะต้องวิเคราะห์ว่าควรไปแก้ไขที่ส่วนไหน ในปัจจุบันนิยมการทำ Automated Testing มาช่วยในการ Run test ต่าง ๆ ให้มีประสิทธิภาพและมีความรวดเร็วมากยิ่งขึ้น หากพบเขอปัญหาเช่น Bug Error ต่าง จะได้ส่งกลับให้ทีมพัฒนาอีกรอบเสียก่อนจะนำไปให้กับผู้ใช้งาน
Phrase 6 Deployment
ขั้นตอน Deployment
หลังจากที่ได้ทดสอบระบบเรียบร้อยแล้วขั้นตอนถัดไปคือการนำโค้ด หรือ โปรแกรมทั้งหมดที่ได้พัฒนา อัพเข้าสู่ระบบ Production โดยปกติแล้วในขั้นตอนนี้ก็จะมีการ Deploy ไปทดลองใช้งานบนระบบ Test หรือ UAT (User Acceptance Testing) ที่จะมีทรัพยากรเทียบเท่ากับระบบ Production ก่อน เพื่อตรวจสอบความพร้อมสุดท้ายว่าระบบสามารถทำงานได้ไม่มีปัญหาแน่นอนหรือไม่ แต่บางทีมอาจจะทดสอบ Deploy ขั้นตอนนี้ใน Phrase Testing อยู่แล้ว เมื่อระบบสามารถทำงานได้ตามคาดหวังไม่มีปัญหาก็สามารถเปิดระบบให้ user ได้ใช้งานบน Production ได้เลยโดยส่วนมากขั้นตอนนี้ทางทีมก็จะมีการติดตามคอยดูแลลูกค้าแนะนำการใช้งาน จัดทำสื่อ VDO หรือ คู่มือ เพื่อให้ผู้ใช้งานสามารถใช้งานได้หลังจากการอัพเดทอีกด้วย
Phrase 7 Maintenance
ขั้นตอน Maintenance โปรแกรม
แน่นอนว่าทุกระบบย่อมมีข้อจำกัด การวางแผนในการบำรุงรักษาระบบก็มีความสำคัญมาก เมื่อผู้ใช้งานพบปัญหาหลังจากที่เริ่มใช้งานจริง ควรเตรียมแผนงานในการแก้ปัญหา และติดตามผล รวมไปถึงการปรับปุรงและพัฒนาต่อยอดให้ระบบทำงานได้ดีมากขึ้น เพื่อรักษาความพึ่งพอใจของผู้ใช้งาน ก็จะวนกลับไปเริ่มที่ขั้นตอน Planning วางแผนพัฒนา Feature ต่อ ๆ ไปนั่นเอง
ดังนั้น SDLC ช่วยให้ทีมทำงานร่วมกันอย่างมีประสิทธิภาพ และช่วยให้โปรเจคการพัฒนาซอฟต์แวร์เป็นไปอย่างระเบียบและมีคุณภาพสูงสุด การสร้างแผนและการออกแบบที่ดีทำให้ลดการแก้ไขในภายหลังและเพิ่มความพึ่งพอใจของผู้ใช้งานต่อระบบที่สร้างขึ้นได้ ดังนั้น SDLC เป็นสิ่งจำเป็นสำหรับผู้ที่สนใจสายงาน Software Developer และโปรแกรมเมอร์ในการจัดการโปรเจคการพัฒนาซอฟต์แวร์อย่างมืออาชีพ และท่านที่สนใจสามารถอ่านข้อมูลหลักการบริหารจัดการโปรเจค พัฒนาซอฟต์แวร์ เพิ่มเติมได้และท่านใดสนใจเรียนรู้การเขียนโปรแกรมสามารถเริ่มได้ที่บทเรียน Python