DEV Community

Cover image for เส้นทางอาชีพการเป็น Software Developer กับ ChatGPT #3
devmountaintechfest
devmountaintechfest

Posted on

เส้นทางอาชีพการเป็น Software Developer กับ ChatGPT #3

หลักการพัฒนาซอฟท์แวร์ให้สำเร็จมีอะไรบ้าง

หลักการพัฒนาซอฟต์แวร์ให้สำเร็จจะต้องปฏิบัติตามหลักการพื้นฐานดังนี้:
การวางแผนและการจัดการโครงการ: หลักการนี้เน้นให้มีการวางแผนโครงการอย่างละเอียด รวมถึงการกำหนดเป้าหมายและวัตถุประสงค์ของโครงการ รวมทั้งการจัดการทรัพยากรและตารางการทำงานเพื่อให้โครงการสามารถดำเนินไปได้ตามแผนได้

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

Waterfall, Agile , V-model คืออะไร
Waterfall, Agile, และ V-model เป็นเทคนิคหรือแนวคิดในการจัดการโครงการพัฒนาซอฟต์แวร์ โดยแต่ละเทคนิคมีลักษณะและวิธีการทำงานที่แตกต่างกันไปดังนี้:

  • Waterfall: เป็นแนวคิดที่ใช้วิธีการพัฒนาซอฟต์แวร์แบบเชิงเส้น โดยมีลำดับขั้นตอนการทำงานที่ถูกต้องและตามลำดับ แต่ข้อเสียคือหากเกิดการเปลี่ยนแปลงในขั้นตอนใดๆ อาจส่งผลต่อการดำเนินการของขั้นตอนต่อไป
  • Agile: เป็นแนวคิดที่เน้นการพัฒนาซอฟต์แวร์ที่มีความยืดหยุ่น โดยการแบ่งงานเป็นรอบๆ (Sprint) และมีการประชุมระหว่างทีมพัฒนาเพื่อให้มีการปรับปรุงตามความต้องการของผู้ใช้งาน
  • V-model: เป็นการจัดโครงการพัฒนาซอฟต์แวร์โดยมีการทำงานแบบขนานกันในการจัดทำเอกสารและทดสอบ โดยเริ่มต้นด้วยการวิเคราะห์และออกแบบ จากนั้นจึงทำการทดสอบและตรวจสอบเพื่อให้ได้ซอฟต์แวร์ที่มีคุณภาพสูง

การเลือกใช้เทคนิคการจัดการโครงการพัฒนาซอฟต์แวร์นั้นขึ้นอยู่กับลักษณะและความต้องการของโครงการ แต่ละเทคนิคมีข้อดีและข้อเสียของตัวเอง

Waterfall มีขั้นตอนการนำไปใช้อย่างไรอย่างไร
Waterfall เป็นโมเดลการพัฒนาซอฟต์แวร์ที่มีขั้นตอนการทำงานแบบเชิงเส้น โดยมีขั้นตอนการทำงานดังนี้

  1. Requirements Analysis: การวิเคราะห์ความต้องการของระบบโดยละเอียด ซึ่งรวมถึงการกำหนดขอบเขตของระบบ รายละเอียดการทำงาน และฟังก์ชันการทำงานของระบบ
  2. System Design: การออกแบบระบบโดยใช้เทคโนโลยีที่เหมาะสมกับความต้องการของระบบ ซึ่งประกอบด้วยการออกแบบระบบเบื้องหลัง การออกแบบฐานข้อมูล และการออกแบบหน้าจอ
  3. Implementation: การเขียนโค้ด และทดสอบซอฟต์แวร์เพื่อให้มั่นใจว่าระบบทำงานได้ตามที่กำหนด
  4. Testing: การทดสอบความถูกต้องของระบบโดยละเอียด เพื่อให้มั่นใจว่าระบบทำงานได้ตามที่กำหนด โดยการทดสอบแบ่งเป็นสองประเภท คือการทดสอบชิ้นงานและการทดสอบระบบโดยรวม
  5. Deployment: การประยุกต์ใช้ระบบ โดยใช้เทคนิคการติดตั้งและการเข้ารหัส
  6. Maintenance: การบำรุงรักษาระบบ โดยการแก้ไขข้อผิดพลาด และอัพเดทระบบเพื่อให้รองรับความต้องการใหม่ ๆ

Image description

ref: https://www.actitime.com/wp-content/uploads/2021/02/The-Waterfall-Model.svg

Waterfall เป็นโมเดลในการพัฒนาซอฟต์แวร์ที่มีข้อดีและข้อเสียดังนี้
ข้อดี:

  1. การวางแผนอย่างละเอียดทำให้เป็นไปได้อย่างมีประสิทธิภาพและมีการควบคุมคุณภาพสูง
  2. เหมาะสำหรับโปรเจ็กต์ที่มีขอบเขตและข้อมูลเป็นที่แน่นอน
  3. ข้อมูลและเอกสารจะถูกสร้างขึ้นในขั้นตอนการวางแผนและออกแบบ
  4. เหมาะสำหรับโครงการที่มีความเชื่อมั่นสูงในการวางแผนและการตัดสินใจ

ข้อเสีย:

  1. การเปลี่ยนแปลงและการแก้ไขในขั้นตอนต่อไปจะยากและมีค่าใช้จ่ายสูง
  2. ไม่เหมาะสำหรับโครงการที่มีความซับซ้อนและความไม่แน่นอนในข้อมูล
  3. อาจเกิดความล่าช้าในการออกระบบใช้งานจริง เนื่องจากต้องรอจนกว่าขั้นตอนก่อนหน้าจะเสร็จสมบูรณ์
  4. ไม่สามารถปรับปรุงและปรับเปลี่ยนได้ง่าย

การเลือกใช้โมเดล Waterfall หรือไม่ขึ้นอยู่กับลักษณะและขอบเขตของโครงการ โดยโปรเจ็กต์ที่มีขอบเขตและข้อมูลที่แน่นอน และมีความเชื่อมั่นในการวางแผนและการตัดสินใจอาจเหมาะสมกับโมเดล Waterfall. ในทางกลับกัน โครงการที่มีความซับซ้อนและการเปลี่ยนแปลงของข้อมูลบ่อยควรใช้โมเดล Agile

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

  1. Requirements analysis (วิเคราะห์ความต้องการ): การรวบรวมความต้องการและเพื่อทำความเข้าใจกับลูกค้าว่าต้องการอะไรและจะมีประโยชน์อย่างไรจากซอฟต์แวร์ที่จะพัฒนา
  2. System design (ออกแบบระบบ): การออกแบบระบบและการวางแผนการพัฒนาซอฟต์แวร์ตามความต้องการที่ได้รับ
  3. Architectural design (ออกแบบสถาปัตยกรรม): การออกแบบสถาปัตยกรรมของซอฟต์แวร์เพื่อให้สามารถรองรับความต้องการและประสิทธิภาพ
  4. Module design (ออกแบบโมดูล): การออกแบบโมดูลของซอฟต์แวร์เพื่อทำให้มีความยืดหยุ่นและสามารถทำงานร่วมกันได้อย่างถูกต้อง
  5. Implementation (การสร้างระบบ): การสร้างระบบที่ตอบสนองตามความต้องการ
  6. Integration testing (การทดสอบการผสานระบบ): การทดสอบการทำงานร่วมกันของระบบ
  7. System testing (การทดสอบระบบ): การทดสอบซอฟต์แวร์ว่ามีประสิทธิภาพตามที่ต้องการหรือไม่
  8. Acceptance testing (การทดสอบการยอมรับ): การทดสอบการยอมรับซอฟต์แวร์จากลูกค้า

Image description

ref: https://en.wikipedia.org/wiki/V-model#/media/File:Systems_Engineering_Process_II.svg

V-Model มีข้อดีข้อเสียอย่างไร

ข้อดีของ V-Model ได้แก่

  1. ทำให้เกิดการวางแผนและควบคุมโครงการได้ดีกว่าวิธี Waterfall โดยมีการตรวจสอบและทดสอบสินค้าที่แตกต่างกันในแต่ละขั้นตอน
  2. ช่วยลดความเสี่ยงของการเกิดข้อผิดพลาดในระหว่างการพัฒนาซอฟต์แวร์ เนื่องจากมีการตรวจสอบและทดสอบเป็นระยะๆ
  3. ช่วยให้ทีมพัฒนามีความเข้าใจและรับรู้ถึงส่วนของการทำงานในแต่ละขั้นตอนอย่างชัดเจน

ข้อเสียของ V-Model ได้แก่

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

Agile มีหลักการอย่างไร

Agile เป็นวิธีการพัฒนาซอฟต์แวร์ที่ใช้วิธีการพัฒนาแบบ iterative และ incremental โดยที่การพัฒนาซอฟต์แวร์จะถูกแบ่งออกเป็น Sprint ซึ่งแต่ละ Sprint จะมีการวางแผน พัฒนา ทดสอบ และส่งมอบซอฟต์แวร์ให้กับผู้ใช้ โดยมีหลักการดังนี้

  1. ความสำคัญของความเชื่อมั่น (Individuals and interactions over processes and tools) - การสื่อสารและการทำงานร่วมกันของทีมพัฒนาซอฟต์แวร์จะมีความสำคัญกว่าการทำงานตามกระบวนการและใช้เครื่องมือ
  2. ความสำคัญของซอฟต์แวร์ที่ทำงานได้ (Working software over comprehensive documentation) - การสร้างซอฟต์แวร์ที่ทำงานได้จะมีความสำคัญกว่าการเขียนเอกสารอธิบายวิธีการทำงานของซอฟต์แวร์
  3. ความสำคัญของการทำงานร่วมกัน (Customer collaboration over contract negotiation) - การทำงานร่วมกับลูกค้าเพื่อพัฒนาซอฟต์แวร์ที่ตอบโจทย์ลูกค้าจะมีความสำคัญกว่าการต่อรองเกี่ยวกับเงื่อนไขในสัญญา
  4. ความสำคัญของการปรับปรุง (Responding to change over following a plan) - การตอบสนองต่อการเปลี่ยนแปลงและการปรับปรุงซอฟต์แวร์จะมีความสำคัญกว่าการทำตามแผนการพัฒนาเดิมๆ

Image description
ref: https://static.javatpoint.com/tutorial/software-engineering/images/software-engineering-agile-model.png

ข้อดีข้อเสียของ Agile

Agile เป็นวิธีการพัฒนาซอฟต์แวร์ที่เน้นการทำงานเป็นกลุ่มและการพัฒนาโดยไม่ต้องไปรองรับกับแผนกลวงๆ ที่ต้องเรียกคืนงบประมาณ โดยมีข้อดีและข้อเสียดังนี้

ข้อดีของ Agile:

  1. สามารถเปลี่ยนแปลงและปรับปรุงซอฟต์แวร์ได้ง่าย เพราะมีการพัฒนาแบบ iterative หรือเรียกได้ว่าเป็นการพัฒนาซอฟต์แวร์ในแบบ Incremental
  2. สามารถสร้างซอฟต์แวร์ที่ตอบโจทย์ลูกค้าได้มากขึ้น เพราะมีการส่งมอบผลงานอย่างสม่ำเสมอและเป็นระยะเวลาสั้นๆ ทำให้ลูกค้าสามารถตรวจสอบและให้ความคิดเห็นได้เร็วขึ้น
  3. ทีมพัฒนามีความรับผิดชอบสูงกว่า เนื่องจากทีมมีส่วนร่วมในการตัดสินใจและวางแผนการทำงาน
  4. มีความยืดหยุ่นในการทำงาน โดยไม่จำเป็นต้องทำซอฟต์แวร์ตามแผนที่เก็บไว้ตั้งแต่แรก แต่สามารถปรับเปลี่ยนแผนการทำงานได้ตลอดเวลา

ข้อเสีย Agile
ความยืดหยุ่นของ Agile ทำให้มีข้อเสียบ้างดังนี้

  1. การวางแผนที่ไม่ชัดเจน: เนื่องจากโครงการ Agile มีการเปลี่ยนแปลงบ่อยๆ อาจทำให้การวางแผนที่ไม่สมบูรณ์ โครงการนั้นจึงอาจเสียเวลาและเงินทุนเพิ่มขึ้นในการปรับปรุงแก้ไขโครงการ
  2. การบริหารโครงการ: การบริหารโครงการในวงการ Agile ต้องการความสามารถในการควบคุมงานที่ยืดหยุ่นและการควบคุมเวลาในการส่งมอบสินค้าหรือบริการให้กับลูกค้า
  3. การพัฒนาทีม: การพัฒนาทีมเป็นเรื่องสำคัญในวงการ Agile ซึ่งต้องการความสามารถในการทำงานร่วมกัน การเรียนรู้ร่วมกันและการแก้ไขปัญหาร่วมกัน
  4. การเปลี่ยนแปลง: การเปลี่ยนแปลงบ่อยๆ ทำให้สามารถปรับปรุงและปรับปรุงผลิตภัณฑ์ตามความต้องการของลูกค้าได้ แต่อาจทำให้การบริหารโครงการยากขึ้น

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

Top comments (0)