DEV Community

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

Posted on

1

เส้นทางอาชีพการเป็น 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 ที่มีคุณค่ามากที่สุดก่อน เพราะการเปลี่ยนแปลงบ่อยไม่แน่นอน นำไปสู่โอกาสการพัฒนาที่ล้มเหลว เปลืืองงบประมาณ หาคนดูแลต่อได้ยากในอนาคต

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more