CI/CD คืออะไร จะช่วยเพิ่มประสิทธิภาพในการส่งมอบซอฟต์แวร์ได้จริงหรือไม่

     CI/CD นั้นย่อมาจาก Continuous Integration/Continuous Delivery เป็น Best practice ของการ Deployment ซอฟต์แวร์ เพื่อรองรับการเปลี่ยนแปลงของ Code ที่มีการเปลี่ยนแปลงบ่อยครั้งโดยทำให้แบบอัตโนมัติ ในกระบวนการ CI/CD จะประกอบไปด้วยกระบวนทดสอบอยู่ด้วยทำให้กระบวนการ deployment มีความน่าเชื่อถือมากขึ้น      โดยทั่วไปแล้ว Developer จะเขียน Code จากเครื่องของ Developer เอง (Local) เมื่อพัฒนาเสร็จแล้วก็จะส่ง Code ขึ้นไปยัง Repository โดยอาจใช้ Tool ต่างๆเช่น GitLab เป็นต้น เมื่อ Commit Code เสร็จแล้วปกติก็จะส่งให้ Tester เพื่อตรวจสอบว่า Source Code ที่นำขึ้นไปนั้นมีข้อผิดพลาดหรือไม่แต่หากใช้กระบวนการ CI/CD นั้นเราจะไม่ใช้ Tester ในการทดสอบระบบแต่เราจะใช้ Test script เพื่อทดสอบระบบแบบอัตโนมัติ ดังนั้น Test script นั้นจะตรวจสอบให้ว่า Source Code ที่นำขึ้นไปนั้นมีข้อผิดพลาดหรือไม่ถ้ามีข้อผิดพลาดก็จะมี Error แจ้งเตือนต่าง Tool ต่างๆที่ได้ Config ไว้ เช่น Slack หากไม่มีข้อผิดพลาดก็จะเข้าสู่กระบวนการ Deploy ต่อไป Continuous Integration คือกระบวนการรวบรวม Source Code ของ Developer เข้ามาเพื่อตรวจสอบ

Software Development Life Cycle (SDLC) คืออะไร ทำไมจำเป็นต่อการพัฒนาซอฟต์แวร์




     Software development life cycle (SDLC) เป็นกระบวนการที่ใช้ในการพัฒนาซอฟต์แวร์ โดยได้มีการกำหนดขั้นตอนต่างๆ เพื่อสามารถพัฒนาและส่งมอบซอฟต์แวร์ ได้อย่างมีคุณภาพและสมบูรณ์ โดยทั่วไปแล้ว SDLC จะประกอบไปด้วย 6 ขั้นตอนได้แก่ การวางแผน การเก็บรวบรวม Requirement การออกแบบซอฟต์แวร์ การพัฒนาซอฟต์แวร์ การทดสอบซอฟต์แวร์ การบำรุงรักษาซอฟต์แวร์

ขั้นตอนกระบวนการพัฒนาซอฟต์แวร์ - Software Development Life Cycle

1. การวางแผน (Planning) เป็นการวางแผนในการพัฒนาซอฟต์แวร์ ใน Phase นี้ Program manager, Project Manage จะวางแผนใน Project ว่าจะใช้ระยะเวลาในการพัฒนาซอฟต์แวร์เท่าไหร่ (Time) มี Feature อะไรบ้างที่จะพัฒนา (Scope) มีจำนวนคนที่จะใช้พัฒนาซอฟต์แวร์กี่คน (Resource) วางแผนว่าใครหรือองค์​กรไหนที่จะมีส่วนเกี่ยวข้องกับการพัฒนาซอฟต์แวร์ได้บ้างเช่น หากทำ Application เกี่ยวกับการซื้อขายหุ้นก็ต้องอาศัยกฏ ข้อบังคับต่างๆของ กลต เข้ามาเป็นปัจจัยการออกแบบซอฟต์แวร์ด้วย วางแผนเพื่อเก็บ Requirement, Design Software และการทดสอบซอฟต์แวร์ การมีข้อมูลที่ละเอียดจะช่วยให้การวางแผนงานได้อย่างแม่นยำจะช่วยลดความเสี่ยงของการพัฒนาซอฟต์แวร์และสามารถพัฒนาสำเร็จตามวัตถุประสงค์

2. การเก็บรวบรวมและวิเคราะห์ Requirement (Requirement gathering and analysis) ในขั้นตอนนี้ Requirement นั้น Project Manage, Product owner หรือ Business analysis จะเป็นผู้เก็บเก็บรวบรวม Requirement จากลูกค้าหรือผู้มีส่วนเกี่ยวข้อง เพื่อเข้าใจความต้องการจากผู้ใช้งานและการทำงานของระบบ โดยอาจจัดทำอยู่ในรูปแบบ Prototyping เพื่อให้ผู้ใช้งานสามารถเข้าใจการทำงานของระบบได้ง่ายขึ้น หลังจากการรวบรวม Requirement เสร็จแล้วทีมพัฒนาเช่น Developer, QA สามารถช่วยตรวจสอบ Requirement นั้นได้เพื่อใช้ในการ Design Software และประเมินความเสี่ยงและข้อจำกัดของซอฟต์แวร์ที่อาจเกิดขึ้นได้

3. การออกแบบซอฟต์แวร์ (Design Software) ขั้นตอนนี้หลักๆแล้ว Developer จะนำ Requirement ที่ได้มาออกแบบ เช่น Design สถาปัตยกรรมที่จะใช้ (Architects) ส่วนต่อประสานผู้ใช้งาน (User Interface) ภาษาที่จะใช้ในการพัฒนาซอฟต์แวร์ Design ฐานข้อมูล Security และ Network เป็นต้น ผลลัพธ์ที่ได้จากขั้นตอนนี้จะได้ System Design Specification ซึ่งสามารถให้ผู้มีส่วนเกี่ยวข้องหรือผู้เชี่ยวชาญได้ Review และสามารถให้คำแนะนำได้

4. การพัฒนาซอฟต์แวร์ (Software development) ขั้นตอนนี้เป็นการพัฒนาซอฟต์แวร์โดยทีม Developer โดยจะเริ่มนำ Design และ Requirement ต่างๆที่ได้ออกแบบในขั้นตอนที่ 2 และ 3 มาเริ่มเขียนโปรแกรม การพัฒนาซอฟต์แวร์นั้นจะนำเครื่องมือต่างๆมาช่วยพัฒนาซอฟต์แวร์ได้ เครื่องมือที่จะนำมาใช้นั้นก็ขึ้นอยู่กับลักษณะของซอฟต์แวร์ เมื่อการพัฒนาซอฟต์แวร์เริ่มขึ้นจะเริ่มแต่ละ Feature ย่อยจากนั้นค่อยๆรวมแต่ละ Feature ย่อยเข้าด้วยกันให้เป็นระบบ ในการพัฒนาซอฟต์แวร์นั้นจะพัฒนาได้อย่างรวดเร็วหาก Phase ช่วงการ Design นั้นละเอียดและมีเอกสารที่เข้าใจได้ง่าย

5. การทดสอบซอฟต์แวร์ (Software Testing) การทดสอบซอฟต์แวร์เป็นการประกันคุณภาพของซอฟต์แวร์ ค้นหาข้อผิดพลาด ป้องกันการเกิดข้อผิดพลาดของซอฟต์แวร์ รวมไปถึงตรวจสอบว่าซอฟต์แวร์ที่พัฒนานั้นเป็นไปตาม Requirement หรือไม่ ในการทดสอบนั้นจะมีการสร้าง Test case หรือเป็นกรณีที่ผู้ใช้งานจะใช้งานระบบและ Expected results คือผลที่คาดหวังจากการทดสอบโดยผลที่คาดหวังนี้จะอิงตาม Requirement ที่ได้จาก Phase ที่ 2 หากซอฟต์แวร์ทำงานถูกต้องเป็นไปตามสิ่งที่คาดหวังผลการทดสอบก็จะผ่านแต่หากไม่เป็นไปตามผลที่คาดหวังผลการทดสอบก็จะไม่ผ่าน ต้องสิ่งให้ Developer ต่อไป ปัจจุบันนั้นมีการทำ Automated test เข้าใจช่วยในการ Run test เพื่อการทำงานที่รวดเร็วมากขึ้น

6. การบำรุงรักษาซอฟต์แวร์ (Operations and Maintenance) เมื่อซอฟต์แวร์ผ่านการทดสอบแล้วก็จะมีการ Deployed เพื่อให้ผู้ใช้งานได้ใช้งานระบบจริง ในระหว่างที่ผู้ใช้งานซอฟต์แวร์อยู่นั้นก็อาจจะเกิดปัญหาต่างๆได้เช่น ต้องการ Feature เพิ่มเติม ซอฟต์แวร์ทำงานไม่เป็นไปตามความคาดหวัง ซอฟต์แวร์มี Bug อยู่ หรือการ Deployed ครั้งแรกอาจมีข้อจำกัดอะไรบางอย่าง เมื่อเกิดปัญหาเหล่านี้เกิดขึ้นก็ต้องมีการแก้ไข บำรุงรักษาซอฟต์แวร์เพื่อให้ผู้ใช้งานพึ่งพอใจมากที่สุด ซึ่งในการแก้ไขก็อาจจะกลับไปเริ่มในขั้นตอนที่ 1 ถึง 6 ใหม่ (New Development Cycle)

SDLC Models

     ปัจจุบันนี้มีการนำ Model มาประยุกต์ใช้ในกระบวนการพัฒนาซอฟต์แวร์ หรือเรียกว่า Process model เพื่อเป็นวิธีการหรือแนวทางในการพัฒนาซอฟต์แวร์ให้ประสบผลสำเร็จ เช่น
  • Agile Model เป็น Model ที่เน้นปฏิสัมพันธ์และตอบสนองความต้องการของลูกค้าอย่างรวดเร็ว กรอบการพัฒนาซอฟต์แวร์ในระยะเวลาสั้นๆ (Sprint) เพื่อรองรับการเปลี่ยนแปลงที่อาจเกิดขึ้นอย่างรวดเร็ว สามารถรับ Feedback จากผู้ใช้งานได้อย่างรวดเร็ว
  • Waterfall Model เป็นการพัฒนาซอฟต์แวร์ตามลำดับขั้นตอนโดยต้องพัฒนาแต่ละขั้นตอนให้สำเร็จถึงจะพัฒนาขั้นตอนถัดไปได้ การใช้ Waterfall Model นั้นมีข้อจำกัดอยู่ว่าหากมีการแก้ไขระหว่างที่กำลังพัฒนาซอฟต์แวร์อยู่นั้นทำได้ช้าเพราะหากต้องการแก้ไขจะต้องกลับไปเริ่มในขั้นตอนแรกใหม่
  • Iterative Model เป็นการส่งมอบซอฟต์แวร์ใน Version แรกๆอย่างรวดเร็วเพื่อให้ผู้ใช้งานประเมินว่าเป็นไปตามที่ต้องการหรือไม่ หลังจากนั้นจะซอฟต์แวร์ใน Version ต่อๆไปอย่างรวดเร็ว (Iterative) 
  • Spiral Model เป็นการทำ Waterfall Model มาพัฒนาต่อยอดโดยจะมีการประเมินในแต่ละ Phase เพื่อลดความเสี่ยงในการพัฒนาซอฟต์แวร์ 
  • V-Model เป็น Model ที่พัฒนาต่อยอดจาก Waterfall Model โดยในแต่ละ Phase ของการพัฒนาซอฟต์แวร์สามารถตรวจสอบ (Verification) คุณภาพควบคู่ไปกับการพัฒนาของแต่ละ Phase ได้ ในการตรวจสอบนั้นจะตรวจสอบตั้งแต่ Requirement, Design, Code, Unit Test และ Integration test ดังนั้นเมื่อซอฟต์แวร์มีการตรวจสอบมากขึ้นก็จะสามารถลดข้อผิดพลาดและเพิ่มความถูกต้องในการทำงานของซอฟต์แวร์ได้มากยิ่งขึ้น


ป้ายกำกับ

แสดงเพิ่มเติม

บทความยอดนิยม

Automation testing หรือ การทดสอบซอฟต์แวร์อัตโนมัติ คืออะไร ทำไมถึงสำคัญต่อการทดสอบซอฟต์แวร์

วิธีเก็บ วิเคราะห์ รวบรวม requirement อย่างไรให้มีประสิทธิภาพ

Performance Test คือ อะไร วัดประสิทธิภาพของระบบ ล่มไม่ล่ม จะรู้ได้อย่างไร

ถอดรหัสความลับเครื่อง Enigma จุดเริ่มต้นและจุดจบของสงครามโลกครั้งที่ 2

วิเคราะห์เทรน แนวโน้มของเทคโนโลยีด้วย Gartner Hype Cycle

Data Privacy คืออะไร ข้อมูลส่วนบุคคลนั้นสำคัญขนาดไหน

Formal verification การหาข้อผิดพลาด การทดสอบ การทวนสอบ ขั้นสูง

ม.ปลายอยากเข้าสายคอม วิทยาการคอม วิศวกรรมคอม เตรียมตัวอย่างไร ต้องมีพื้นฐานอะไรบ้าง

ขายของออนไลน์ ขายอะไรดี ปัญหาโลกแตกของการเริ่มขายของออนไลน์

8 สิ่งที่ AI จะมาเปลี่ยนโลกในอนาคต