กว่าจะได้ software มาต้องผ่านกระบวนการอะไรบ้าง

กว่าจะได้ software มาต้องผ่านกระบวนการอะไรบ้าง image

ก่อนที่จะพัฒนาซอฟต์แวร์ (Software) เราต้องรู้กระบวนการพัฒนาซอฟต์แวร์ (Software) กันก่อน เรียกว่า Software Development Lifecycle (SDLC)  หรือ วงจรการพัฒนาซอฟต์แวร์ (software) คือ กระบวนการที่ออกแบบขั้นตอนการพัฒนาซอฟต์แวร์ (Software) ซึ่งอาจเป็นเรื่องที่ท้าทายในการจัดการเนื่องจากข้อกำหนดที่เปลี่ยนแปลง ไม่ว่าจะเป็น ความต้องการ (Requement) ที่เปลี่ยนไป การทำงานร่วมกันข้ามสายงาน สายบริษัท 

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

 

 

ที่มารูปภาพ : https://productcoalition.com/a-comprehensive-guide-to-the-software-development-life-cycle-sdlc-15b7892e1d44?gi=cd04a8b67f16

 

 

การวางแผน (Analysis):

ก่อนเริ่มโปรเจค ทีมจะต้องทำการศึกษาและทำความเข้าใจ ความต้องการ ขอบเขตงาน และสรุปแผนการทำงานในทุกขั้นตอนให้กับผู้ที่เกี่ยวข้องทุกคน ทั้งภายในทีม Dev และกับเจ้าของผลิตภัณฑ์ เจ้าของผลิตภัณฑ์สามารถเพิ่มเติม requirement ได้ แม้ในช่วงการพัฒนาหากจำเป็นต่อผลิตภัณฑ์ 

 Business Analysis (BA) ทำ Research ข้อมูลเพื่อวิเคราะห์ความต้องการของธุรกิจ กระบวนการทางธุรกิจ ตลอดจนปัญหาและพฤติกรรมของผู้ใช้งานกลุ่มเป้าหมาย จากนั้นจึงนำมาสร้างเป็นแผนจัดสรรระยะเวลาและงานตาม Scope Requirement ที่ต้องดําเนินการ และงานเอกสารที่เกี่ยวข้องกับผลิตภัณฑ์ เช่น

  • กำหนดวัตถุประสงค์ของโครงการ.
  • กำหนดขอบเขตและระยะเวลาของโครงการ.
  • สร้างแผนโครงการที่รวมถึงการจัดทำงาน, การจัดการทรัพยากร, และกำหนดกฎระเบียบ

 

 

การออกแบบ (Design):

ทีม UX/UI Designer สร้าง Prototyping จะช่วยให้ทั้งผู้ใช้งานและนักพัฒนาเห็นในสิ่งเดียวกัน  ซึ่งการออกแบบ Wireframe ที่ละเอียดครบทุก Flow นี้จะเป็นเสมือนพิมพ์เขียวให้ทีม Dev และช่วยลดปัญหาความคลาดเคลื่อนในการสื่อสารของทีม Dev กับเจ้าของโครงการ รวมถึงผู้ที่เกี่ยวข้อง จะต้องทำงานใกล้ชิดกับทีม Dev เพื่อช่วยอธิบายถึงรายละเอียดปลีกย่อยของการออกแบบ รวมถึงช่วยแก้ปัญหาและประสานกับเจ้าของโครงการ เพื่อนำข้อเสนอแนะต่างๆ ที่เกิดขึ้นระหว่างการทำงานของทีม Dev มาใช้ปรับปรุงแบบจำลองหรือ Wireframe ให้มีความเหมาะสมมากยิ่งขึ้น ในขณะเดียวกันทีมโปรแกรมเมอร์ก็ต้องยึดถือแบบจำลองนี้เป็นแนวทางในการเขียนโค้ด เพื่อให้ระบบสามารถใช้งานได้ตามที่ทีมตกลงไว้กับเจ้าของโครงการ 

 

 

 

การทำงาน (development): 

เริ่มจากการเขียน Code ตามที่ Design Wireframe เอาไว้ จะแบบออกเป็นสองส่วน ได้เเก่ Front-end ที่ต้องทำตาม Design, UX และ UI การจัดทำเนื้อหา รูปภาพประกอบ ข้อความ การแจ้งเตือน และคำอธิบายต่างๆ ทั้งหมดที่จะนำแสดงผลในหน้าจอของซอฟต์แวร์ ขั้นตอนนี้จะใช้เวลาตาม scope ของ Requirement และ Design ส่วนที่สองจะเป็น Logic ที่ต้องทำตาม Back-end Back-end หาก บางโปรแกรมอาจจะใช้ข้อมูลจากฐานข้อมูลเดียวบนระบบของตัวเอง แต่สำหรับโปรแกรมระบบที่มีความซับซ้อนมากๆ จะต้องทำการสร้าง API (Application Program Interface) ขึ้นใช้งานร่วมกับฐานข้อมูลที่มาจากโปรแกรมระบบอื่นๆ

 

 

การทดสอบ (Testing):

กระบวนการทดสอบซอฟต์แวร์ หรือ Software Testing Process เป็นการตรวจสอบทั้งความถูกต้องของฟังก์ชั่นการทำงาน ความถูกต้องของข้อมูล รวมถึงประสิทธิภาพของโปรแกรมระบบก่อนนำโปรแกรมระบบไปใช้งานจริง ขั้นตอนการทดสอบรวมถึงกระบวนการแก้ไขข้อบกพร่อง(Bug) หลังจากการ development จะต้องมีการตรวจข้อบกพร่องของ Code ทั้งหมดที่เกิดขึ้นระหว่างการพัฒนา การจัดทำเอกสารและ bug report จะถูกส่งกลับไปยัง Developer เพื่อแก้ไข

 

 

การปรับปรุง (Deployment):

เมื่อโปรแกรมระบบที่พัฒนาขึ้นผ่านกระบวนการทดสอบซอฟต์แวร์ – Software Testing Process แล้ว ทางทีม Dev จะดำเนินการติดตั้งบนเครื่อง Production เพื่อเปิดใช้งานจริงต่อไป

 

 

การดูแลรักษา (Maintenance):

หลังจากติดตั้งและส่งมอบโปรแกรมระบบให้แก่เจ้าของโครงการแล้ว ทีมจะต้องคอยมอนิเตอร์ Log file อยู่เสมอเพื่อป้องกันไม่ให้เกิดปัญหาจากการใช้งาน หรือหากพบว่าโปรแกรมระบบมีข้อผิดพลาดเกิดขึ้นก็จะสามารถเข้าไปช่วยสนับสนุนเจ้าของโครงการได้อย่างทันท่วงที

 

เป้าหมายของ SDLC คือ การลดความเสี่ยงของโปรเจกต์ด้วยการวางแผนล่วงหน้า เพื่อให้ซอฟต์แวร์ (software) ตอบสนองตามความต้องการ ความคาดหวัง ของลูกค้าในระหว่างการใช้งานจริงและหลังจากนั้น

 

ประโยชน์ของ SDLC 

  • เพิ่มการมองเห็นกระบวนการพัฒนาสำหรับผู้มีส่วนได้ส่วนเสียทั้งหมดที่เกี่ยวข้อง
  • การประมาณค่า การวางแผน และการตั้งเวลาอย่างมีประสิทธิภาพ
  • ปรับปรุงการบริหารความเสี่ยงและการประมาณการต้นทุน
  • การส่งมอบซอฟต์แวร์อย่างเป็นระบบและความพึงพอใจของลูกค้าที่ดีขึ้น

 

 

 

SDLC Models

การเลือกรูปแบบ SDLC (Software Development Life Cycle) Models ขึ้นอยู่กับลักษณะของโครงการ, ความต้องการของลูกค้า, และสภาพแวดล้อมโครงการ. นี้คือสรุปของบาง SDLC Models และความเหมาะสมของแต่ละ Model

 

Waterfall Model

 

 

ที่มารูปภาพ : https://medium.com/linkit-intecs/waterfall-model-vs-agile-model-c580e389feb 

 

 

เหมาะสำหรับโครงการที่มีความแน่นอนและความเสถียรในข้อกำหนด, และไม่มีการเปลี่ยนแปลงที่ค่อนข้างมั่นคง. แต่หากโครงการมีความซับซ้อนหรือมีความแปลกปลอม, การใช้ Waterfall Model อาจทำให้ยากต่อการบริหารโครงการและการปรับเปลี่ยน

 

ข้อดี Waterfall Model : 

  1. ขั้นตอนและการทำงานถูกกำหนดไว้ล่วงหน้า.
  2. การสร้างเอกสารเป็นขั้นตอนหนึ่ง ทำให้ เอกสารที่ครบถ้วน
  3. การทำงานตามลำดับทำให้เหมาะสำหรับโครงการที่มีความเสถียร

 

ข้อเสีย Waterfall Model :

  1.  ไม่ยืดหยุ่นและไม่เหมาะสำหรับโครงการที่มีการเปลี่ยนแปลงบ่อย
  2. ไม่สามารถทำการเปลี่ยนแปลงหรือปรับปรุงได้ง่าย.
  3. ไม่เหมาะสำหรับโครงการที่มีการเปลี่ยนแปลงบ่อยหรือไม่แน่นอน

 

Agile Model 

 

 

ที่มารูปภาพ : https://www.javatpoint.com/agile-sdlc

 

 

เหมาะสำหรับโครงการ ที่เน้นความยืดหยุ่นและการปรับตัวตามการเปลี่ยนแปลงที่เกิดขึ้นในขณะที่กำลังพัฒนาซอฟต์แวร์ โดยมีการแบ่งโครงการเป็นกลุ่มเล็ก ๆ ที่เรียกว่า "Sprints" หรือ "Iterations" ซึ่งแต่ละ Sprint มีระยะเวลาที่จำกัดและต้องผลิตซอฟต์แวร์ที่พร้อมใช้งานในระยะเวลานั้น ๆ ซึ่งทำให้มีการปรับปรุงและการทดสอบอย่างต่อเนื่อง

ข้อดี Agile Model : 

 

  1. สามารถปรับปรุงได้ตลอดเวลาตามความต้องการ.
  2. การทดสอบตลอดระบบช่วยให้ได้ซอฟต์แวร์ที่มีคุณภาพสูง.

ข้อเสีย Agile Model : 

  1. การทำงานแบบวนรอบอาจทำให้การติดตามความคืบหน้าเป็นไปได้ยาก
  2. การที่สามารถปรับเปลี่ยนได้ตลอดเวลาอาจทำให้ไม่มีความมั่นคงในการตัดสินใจ

 

Spiral Model

 

 

ที่มารูปภาพ  : https://www.intellectsoft.net/blog/spiral-model-sdlc/

 

 

เหมาะสำหรับโครงการที่ถูกออกแบบมาเพื่อการพัฒนาซอฟต์แวร์ที่มีความซับซ้อนและมีความเสี่ยงสูง. ขั้นตอนใน Spiral Model ถูกจัดเป็นวงรอบที่ผลิตซอฟต์แวร์ด้วยการทำงานต่อเนื่อง ๆ และมีการตรวจสอบความเสี่ยงและการวางแผนตลอดขั้นตอน.

ข้อดี Spiral Model : 

 

  1. ​​การทำงานแบบวนรอบช่วยจัดการความเสี่ยงในโครงการ.
  2. สามารถปรับปรุงแผนการทำงานและซอฟต์แวร์ตามความต้องการ.
  3. การทดสอบถูกนำทางตลอดระบบการพัฒนา

 

ข้อเสีย Spiral Model 

  1. การจัดการ Spiral Model ต้องการการวางแผนและการควบคุมที่ดี.
  2. การทดสอบในแต่ละรอบของ Spiral Model อาจเป็นไปได้ที่ซับซ้อนและมีความท้าทาย.

 

 

Iterative Model 

 

 

ที่มารูปภาพ : https://en.wikipedia.org/wiki/Iterative_and_incremental_development

 

 

การทำงานแบบวนรอบ (Iterative) และมีการทดสอบและปรับปรุงตลอดกระบวนการพัฒนา. ใน Iterative Model, การพัฒนาซอฟต์แวร์ถูกแบ่งเป็นรอบ ๆ โดยแต่ละรอบประกอบด้วยขั้นตอนต่าง ๆ เช่น การวางแผน, การออกแบบ, การทำงาน, การทดสอบ, และการปรับปรุง

 

ข้อดีของ Iterative Model  

  1. ทีมสามารถปรับปรุงตามความต้องการและการทดสอบ.
  2. สามารถปรับปรุงแผนการทำงานและตัวซอฟต์แวร์ตามความต้องการ

 

ข้อเสียของ Iterative Model 

  1. ต้องการการวางแผนและการควบคุมที่ดี
  2. การทดสอบในแต่ละรอบของ Iterative Model อาจเป็นไปได้ที่ซับซ้อนและมีความท้าทาย.

 

 

 

V-Model (Vee Model) 

 

 

ที่มารูปภาพ : https://www.consilia-brno.com/experience/comparison-of-v-model-and-agile-software-development-methodology 

 

 

เหมาะสำหรับโครงการที่มีข้อกำหนดที่ชัดเจนและไม่มีการเปลี่ยนแปลงบ่อย, โดยที่การทดสอบถูกใส่ใจตั้งแต่ต้นจนถึงสิ้นสุดขั้นตอนพัฒนา. แม้ V-Model จะไม่ยืดหยุ่นเท่ากับ Agile Model หรือ Iterative Model, แต่สามารถให้ความมั่นใจในคุณภาพของซอฟต์แวร์ที่ได้ผ่านการทดสอบที่รอบคอบ

 

ข้อดีของ V-Model :

  1. แต่ละขั้นตอนมีการทำงานและทดสอบที่ชัดเจน.
  2. การทดสอบถูกตรวจสอบตั้งแต่ขั้นตอนการออกแบบจนถึงการทดสอบระบบ

 

ข้อเสียของ V-Model :

  1. ไม่สามารถทำการเปลี่ยนแปลงหรือปรับปรุงได้ง่าย.
  2. ไม่เหมาะสำหรับโครงการที่มีการเปลี่ยนแปลงบ่อยหรือไม่แน่นอน.

 

 

ที่มา :

https://www.techterrotor.com/2021/05/software-development-life-cycle-sdlc.html

 

 

 

Tag