คู่มือฉบับสมบูรณ์ของคุณสำหรับการพัฒนาซอฟต์แวร์ทุกอย่าง
เผยแพร่แล้ว: 2020-08-13โรงงานผลิตและสำนักงานของนักพัฒนาซอฟต์แวร์มีความคล้ายคลึงกันอย่างไร?
ลองนึกภาพห้องที่เต็มไปด้วยโปรแกรมเมอร์พิมพ์โค้ดลงในคอมพิวเตอร์ของตน จะเกิดอะไรขึ้นถ้าคุณปฏิบัติต่อผลลัพธ์ของพวกเขาเหมือนวิดเจ็ตที่ประกอบขึ้นจากสายการประกอบของโรงงาน สิ่งที่เพิ่มการผลิตสูงสุดจะทำงานที่นี่ด้วยหรือไม่ หรือกระบวนการพัฒนาเหมือนกับสาขาวิชาวิศวกรรมอื่นๆ หรือไม่?
ผู้จัดการโครงการพยายามแก้ปัญหานี้ตั้งแต่เริ่มพัฒนาซอฟต์แวร์ จากคำถามเหล่านี้ คำจำกัดความของวงจรชีวิตการพัฒนาซอฟต์แวร์ได้เกิดขึ้นแล้ว
การพัฒนาซอฟต์แวร์คืออะไร?
เป็นกระบวนการสร้างซอฟต์แวร์ตั้งแต่เริ่มต้น แม้ว่าการเขียนโค้ดจะเป็นกิจกรรมหลัก แต่ก็เป็นมากกว่านั้น
กระบวนการพัฒนาประกอบด้วยแนวคิดและการออกแบบก่อนเขียนโค้ดใดๆ การวางแผนเป็นเรื่องง่ายที่มองข้าม มันไม่รู้สึกเหมือนการพัฒนาวิธีการเขียนโค้ด ทว่าการตอบคำถามสำคัญๆ จะช่วยเสริมความแข็งแกร่งให้กับผลิตภัณฑ์สำเร็จรูปก่อน โครงการนี้คุ้มค่าแก่การใฝ่หาหรือไม่? ถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดในการดำเนินการคืออะไร? คุณสมบัติใดบ้างที่จำเป็นและคุณสมบัติใดบ้างที่ควรมี คำตอบทำให้โครงการมีโอกาสประสบความสำเร็จมากขึ้น
แม้ว่าขั้นตอนจะคงที่ แต่การใช้งานจะแตกต่างกันไป เหตุผลคือการพัฒนาซอฟต์แวร์เป็นวินัยใหม่ สาขาวิชาวิศวกรรมมีวุฒิภาวะที่มีประวัติศาสตร์ยาวนานหลายร้อยปี การพัฒนาซอฟต์แวร์ย้อนกลับไปในช่วงปลายทศวรรษที่ 1940 เท่านั้น ยังคงเป็นวินัยใหม่ วิธีการแบบเปรียวมีอายุเพียง 20 ปีเท่านั้น ทว่าเป็นหนึ่งในสิ่งที่มีอิทธิพลมากที่สุดในทฤษฎีการสร้างซอฟต์แวร์ วงจรชีวิตการพัฒนาซอฟต์แวร์ทั้ง 6 เฟสนั้นเป็นเรื่องปกติของทุกระบบ
6 ขั้นตอนของวงจรชีวิตการพัฒนาซอฟต์แวร์ (SDLC)
ทีมพัฒนาสามารถใช้วงจรชีวิตการพัฒนาซอฟต์แวร์กับทั้งโปรเจ็กต์หรือฟีเจอร์เดียวได้ วิวัฒนาการของการใช้ SDLC นั้นเกี่ยวกับการลดความเสี่ยงโดยการลดระยะเวลาของแต่ละขั้นตอน ในอีกสักครู่ เราจะดูวิธีการต่างๆ มากขึ้น ขั้นแรก มาตรวจสอบขั้นตอนกันก่อน
นอกจากนี้ เป็นที่น่าสังเกตว่าคุณจะเห็นรูปแบบต่างๆ ในแง่ของจำนวนขั้นตอนหรือชื่อ บางครั้งมีการผสานขั้นตอนต่างๆ เช่น การพัฒนาและการทดสอบ ในบางครั้ง คุณจะเห็นขั้นตอนหนึ่งแบ่งออกเป็นสองขั้นตอน เช่น การวางแผนกลายเป็นการวางแผนและการวิเคราะห์ ในกรณีของเรา เราจะใช้ทั้ง 6 ข้อนี้เนื่องจากกำหนดขั้นตอนไว้อย่างชัดเจน

1. การวางแผน
ขั้นตอนการวางแผนเป็นขั้นตอนที่สำคัญที่สุด ผู้มีส่วนได้ส่วนเสียต้องพิจารณาทุกอย่างรวมถึงความเป็นไปได้ของโครงการด้วย ไม่เป็นไรที่จะฆ่าโครงการทั้งหมดที่นี่ องค์กรที่มีสุขภาพดีจะช่วยให้ผู้มีส่วนได้ส่วนเสียทำเช่นนั้นได้หากจำเป็น โปรแกรมเมอร์จะมีส่วนร่วมน้อยลงในช่วงนี้ในการตั้งค่าองค์กร เจ้าของผลิตภัณฑ์ นักวิเคราะห์ธุรกิจ และผู้มีส่วนได้ส่วนเสียอื่นๆ แสดงความต้องการของพวกเขาในขั้นตอนนี้
2. การออกแบบ
ขั้นตอนการวางแผนเป็นขั้นตอนที่สำคัญที่สุด ผู้มีส่วนได้ส่วนเสียต้องพิจารณาทุกอย่างรวมถึงความเป็นไปได้ของโครงการด้วย ไม่เป็นไรที่จะฆ่าโครงการทั้งหมดที่นี่ องค์กรที่มีสุขภาพดีจะช่วยให้ผู้มีส่วนได้ส่วนเสียทำเช่นนั้นได้หากจำเป็น โปรแกรมเมอร์จะมีส่วนร่วมน้อยลงในช่วงนี้ในการตั้งค่าองค์กร เจ้าของผลิตภัณฑ์ นักวิเคราะห์ธุรกิจ และผู้มีส่วนได้ส่วนเสียอื่นๆ แสดงความต้องการของพวกเขาในขั้นตอนนี้
3. การพัฒนา
ขั้นตอนการออกแบบยังรวมถึงการออกแบบประสบการณ์ผู้ใช้ (UX) หากแอปพลิเคชันมีส่วนประกอบที่หันเข้าหาผู้ใช้ การออกแบบ UX ก็เป็นสิ่งจำเป็น ซึ่งรวมถึงการวิจัยผู้ใช้โดยการดูผู้คนจริงโต้ตอบกับแบบจำลองผลิตภัณฑ์ สาเหตุที่สิ่งนี้เกิดขึ้นในขั้นตอนการออกแบบแทนที่จะเป็นขั้นตอนการพัฒนาคือเวลา เซสชันผู้ใช้ต้องใช้เวลา บ่อยครั้ง การสนทนากลับไปกลับมากับผู้มีส่วนได้ส่วนเสียทางธุรกิจก็เกิดขึ้นจากข้อมูลที่รวบรวมเช่นกัน
4. การทดสอบ
ต่อไป ทีมพัฒนาจะทดสอบโค้ด ผู้เขียนโค้ดและผู้ทดสอบควรเป็นคนละคนกัน ยิ่งไปกว่านั้นคือผู้ทดสอบการประกันคุณภาพที่ไม่ใช่นักพัฒนา นักพัฒนามักจะนึกถึงสถานการณ์ที่มีความสุขเท่านั้น ผู้เชี่ยวชาญด้านการทดสอบ QA โดยเฉพาะมักจะคิดได้ดีขึ้นว่าพวกเขาสามารถทำลายซอฟต์แวร์ได้อย่างไร พวกเขามักจะพบจุดบกพร่องก่อนที่จะปรับใช้ด้วยวิธีนี้ ผลลัพธ์ที่ได้คือซอฟต์แวร์ที่เสถียรยิ่งขึ้นเมื่อเปิดตัว
การทดสอบอัตโนมัติกับการทดสอบด้วยตนเอง
การทดสอบหน่วยและการทดสอบการรวมมักเป็นแบบอัตโนมัติ บ่อยครั้งที่แพลตฟอร์ม DevOps เรียกใช้การทดสอบเหล่านี้กับโค้ดใหม่ก่อนที่จะรวมเข้ากับมาสเตอร์แบรนช์
การทดสอบด้วยตนเองไม่ได้ล้าสมัย การทดสอบอัตโนมัติทำสิ่งเดียวกันซ้ำแล้วซ้ำอีก ทว่าผู้ที่ทำการทดสอบด้วยตนเองสามารถพบข้อบกพร่องโดยบังเอิญระหว่างการทดสอบ ความแปรปรวนในการทดสอบด้วยตนเองคือจุดแข็ง
การทดสอบหน่วย
การทดสอบหน่วยจะตรวจสอบวิธีการเท่านั้น ไม่มีอะไรเพิ่มเติม ฟังก์ชันที่ทดสอบคือขอบเขต นักพัฒนาซอฟต์แวร์เขียนการทดสอบหน่วย และกรอบงาน SDLC บางกรอบมอบหมายให้ Extreme Programming ต้องการพวกเขา นอกจากนี้ยังกำหนดการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ นี่คือการฝึกเขียนแบบทดสอบหน่วยก่อน แล้วเขียนโค้ดโปรแกรมจริง
การทดสอบบูรณาการ
การทดสอบการรวมตรวจสอบส่วนหรือคุณสมบัติของ codebase โดยปกติแล้วจะเป็นแบบอัตโนมัติและดำเนินการโดยแพลตฟอร์ม DevOps สิ่งที่พวกเขาตรวจสอบนั้นครอบคลุมมากกว่าวิธีเดียว ตัวอย่างคือการตรวจสอบว่าการเรียก API ยังคงมีบันทึกใหม่ในฐานข้อมูล เปรียบเทียบสิ่งนี้ด้วยการทดสอบหน่วยที่ตรวจสอบวิธี API ด้วย การทดสอบหน่วยจะสามารถตรวจสอบได้เฉพาะการเรียกไปยังฐานข้อมูลเท่านั้นที่ควรเกิดขึ้น การทดสอบการรวมสามารถพิสูจน์ได้ว่าข้อมูลไหลผ่านแอปพลิเคชันตามที่คาดไว้
การทดสอบระบบ
รูปแบบสุดท้ายของการทดสอบคือการทดสอบระบบเต็มรูปแบบ สรุป การทดสอบหน่วยจะตรวจสอบฟังก์ชันเท่านั้น การทดสอบการรวมจะตรวจสอบคุณสมบัติ แต่การทดสอบระบบจะถือว่าแอปพลิเคชันทั้งหมดเป็นหน่วยเดียว การทดสอบควันเป็นการทดสอบระบบแบบเบา ในนั้น ผู้ทดสอบจะโต้ตอบกับระบบเหมือนที่ผู้ใช้ทั่วไปทำ และตรวจสอบว่าระบบทำงานตามที่คาดไว้ ตรงกันข้ามกับการทดสอบระบบแบบ end-to-end เต็มรูปแบบซึ่งเข้มงวดกว่า การทดสอบระบบแบบเต็มจะตรวจสอบทุกส่วนของระบบเป็นเอนทิตีเดียว นอกจากนี้ ชุดการทดสอบการรวมอาจทำหน้าที่เป็นการทดสอบระบบเต็มรูปแบบ
5. การปรับใช้
ขั้นตอนการปรับใช้กำลังผลักดันโค้ดที่ทดสอบเข้าสู่การใช้งานจริง การปรับใช้อัตโนมัติทำให้มีความน่าเชื่อถือมากขึ้น นอกจากนี้ การฝึกฝนการใช้งานจริงยังเพิ่มโอกาสของการปรับใช้ที่ราบรื่นอีกด้วย ทีมพัฒนาฝึกฝนด้วยสภาพแวดล้อมการทดสอบที่เรียกว่าสภาพแวดล้อมการแสดงละคร มันควรจะเหมือนกับการผลิตหนึ่ง ยิ่งสภาพแวดล้อมทั้งสองมีความคล้ายคลึงกันมากเท่าใด การปรับใช้แนวปฏิบัติก็จะยิ่งมีคุณค่ามากขึ้นเท่านั้น
6. การบำรุงรักษา
ทุกอย่างจนถึงจุดนี้ใน SDLC จะเป็นเพียงประมาณหนึ่งในสี่ของต้นทุนการเป็นเจ้าของทั้งหมด ต้นทุนการพัฒนา เริ่มต้น ของซอฟต์แวร์ คือ 25% ของค่าใช้จ่ายของธุรกิจ ขั้นตอนการบำรุงรักษาจะทำให้ธุรกิจเสียค่าใช้จ่ายประมาณ 75% ของต้นทุนการเป็นเจ้าของทั้งหมด การป้องกันค่าใช้จ่ายในการบำรุงรักษาบอลลูนนั้นให้ความสำคัญกับขั้นตอนก่อนหน้านี้มากขึ้น ซึ่งหมายถึงการออกแบบทางเทคนิค การพัฒนา และการทดสอบที่ละเอียดยิ่งขึ้น ทางเลือกคือหนี้ทางเทคนิค เช่นเดียวกับหนี้จริง ราคาแพงขึ้นเมื่อเวลาผ่านไป
5 วิธีการพัฒนาซอฟต์แวร์หลัก
แม้ว่าขั้นตอนของ SDLC จะไม่เปลี่ยนแปลง ลำดับการใช้งานและการดำเนินการจะแตกต่างกันไป มาดูวิธีที่องค์กรนิยมใช้ในกระบวนการพัฒนาซอฟต์แวร์กัน
1. เปรียว
สิ่งที่ทำให้ Agile ไม่เหมือนใครคือการให้ความสำคัญกับผู้คน วิธีการแบบ Agile ได้เน้นย้ำความสนใจของอุตสาหกรรม ก่อนหน้านี้ โฟกัสอยู่ที่ผลิตภัณฑ์ ซอฟต์แวร์ เปรียวท้าทายและมุ่งเน้นไปที่บุคคลที่ทำกระบวนการ นอกจากนี้ ก่อนการประกาศ Agile นั้น Extreme Programming (XP) และ Scrum ไม่มีการเชื่อมต่อใดๆ ทว่าหลังจากนั้น ผู้ฝึกหัดของพวกเขาก็รวมตัวกันภายใต้ธงเปรียว
Agile ไม่ใช่เฟรมเวิร์ก มันเป็นกรอบสำหรับกรอบงาน หัวใจสำคัญของมันคือการมุ่งเน้นที่ผู้คนและการทำซ้ำอย่างรวดเร็ว ตรงตามชื่อเลย ปราดเปรียว ทำได้ดีมีความยืดหยุ่นในการบรรลุผล กระบวนการไม่เคยทำโดยเสียเปล่าของคนที่ได้รับคุณค่าจากกระบวนการเหล่านั้นแทน

ผู้เช่ารายสำคัญอีกรายหนึ่งของ Agile คือการทำซ้ำ แนวคิดคือการทำกลุ่มงานในเวลาอันสั้น ด้วยวิธีนี้ธุรกิจจะสามารถปรับตัวให้เข้ากับการเปลี่ยนแปลงในตลาดได้เร็วขึ้น ความสามารถในการเปลี่ยนทิศทางการพัฒนาอย่างรวดเร็วคือสิ่งที่ทำให้มันคล่องตัว ในขณะเดียวกัน ทีมพัฒนาสามารถเรียนรู้จากสิ่งที่ได้ทำในการทำซ้ำแต่ละครั้งและปรับปรุง ทีม Agile ทำเช่นนี้ในการประชุมย้อนหลังหลังจากการทำซ้ำแต่ละครั้ง
2. การเขียนโปรแกรมสุดขีด
การเขียนโปรแกรมขั้นสูง (มักใช้ชื่อย่อว่า XP) เริ่มต้นขึ้นในช่วงต้นทศวรรษ 1990 Martin Fowler เป็นหนึ่งในผู้ลงนามดั้งเดิมของ Agile Manifesto เขาคิดว่า Agile ได้รับความนิยมเนื่องจากเฟรมเวิร์ก XP นอกจากนี้ เขายังยืนยันว่านี่เป็นวิธีที่ดีที่สุดในการเริ่มพัฒนาซอฟต์แวร์แบบ Agile
XP ได้ชื่อมาจากแนวทางของมัน ต้องใช้แนวทางปฏิบัติที่ดีของซอฟต์แวร์ทั่วไปและจำเป็นต้องมี นั่นคือสิ่งที่ทำให้มัน "สุดขีด" XP ต้องการสิ่งต่างๆ เช่น การทดสอบหน่วย การเขียนโปรแกรมคู่ การเปิดตัวบ่อยขึ้น
สิ่งที่ทำให้ XP เป็นวิธีที่ไม่เหมือนใครคือ:
- รอบการทำซ้ำสั้น ๆ (ปกติ 1 ถึง 2 สัปดาห์)
- การเปิดรับการแทนที่รายการงานในการทำซ้ำปัจจุบัน (สิ่งที่ Scrum ไม่อนุญาต)
- เน้นการทดสอบอัตโนมัติและการเขียนโปรแกรมคู่
3. ยัน
ในทางเทคนิคแล้ว Lean ไม่ใช่ Agile แต่ให้สัมผัสที่คล้ายคลึงกันในทางปฏิบัติ ตอนนี้ส่วนใหญ่ยอมรับเป็นส่วนหนึ่งของ Agile แล้ว จุดเน้นแตกต่างจาก Agile แบบดั้งเดิม ตามแถลงการณ์ Agile "บุคคลและการโต้ตอบในกระบวนการและเครื่องมือ" Lean ให้ความสำคัญกับซอฟต์แวร์มากกว่าผู้ผลิต
รากฐานของมันคือหลักการผลิตแบบ Lean จากโตโยต้า นี่คือเจ็ดส่วนที่กำหนดมัน หากคุณคุ้นเคยกับการผลิตแบบ Lean สิ่งเหล่านี้จะฟังดูคล้ายกัน พวกเขาคือ:
- กำจัดของเสีย
- ขยายการเรียนรู้
- ตัดสินใจช้าที่สุด
- จัดส่งให้เร็วที่สุด
- เติมพลังให้ทีม
- สร้างความสมบูรณ์ใน
- เพิ่มประสิทธิภาพทั้งหมด
4. การต่อสู้
Scrum เป็นวิธีการ Agile ที่ได้รับความนิยมมากที่สุด จากรายงาน State of Agile ฉบับที่ 14 บริษัทซอฟต์แวร์ 58% ใช้ Scrum หากคุณรวมลูกผสมแบบฝาด เปอร์เซ็นต์จะเพิ่มขึ้นเป็น 84% ซึ่งทำให้เกิดคำถามว่าทำไมมันถึงได้รับความนิยมมากที่สุด?
คำตอบคือ Scrum คือการทำงานให้เสร็จลุล่วงโดยใช้เวลาน้อยลง ที่ดึงดูดใจธุรกิจ การวนซ้ำแต่ละครั้งใน Scrum คือ "การวิ่ง" ชื่อนี้ตอกย้ำแนวคิดเรื่องความเร็ว โดยปกติการวิ่งจะมีความยาว 2 ถึง 3 สัปดาห์ เมื่อทีม Scrum วางแผนการวิ่งแล้ว จะไม่มีใครเปลี่ยนแปลงมัน งานใหม่ต้องรอจนกว่าจะเริ่มวิ่งครั้งต่อไป สิ่งนี้ต้องใช้วินัยในส่วนของผู้มีส่วนได้ส่วนเสียทางธุรกิจ ในทางปฏิบัติ กฎ Scrum นี้มักถูกละเมิด นั่นเป็นเหตุผลที่ทีมรายงานการทำ Scrum hybrid บ่อยครั้ง
คุณสมบัติอีกอย่างของ Scrum คือ Scrum Master นี่คือสมาชิกในทีมคนหนึ่งที่ได้รับการเสนอชื่อให้รับผิดชอบในการวิ่งตามเป้าหมาย บ่อยครั้ง Scrum Master เป็นผู้พัฒนาจากทีมผู้พัฒนา
ตัวแปรที่พบบ่อยที่สุดของ Scrum คือ ScrumBan ซึ่งเป็นการผสมผสานระหว่าง Scrum และ Kanban Kanban มีรากฐานมาจากกระบวนการผลิตของ Toyota ของญี่ปุ่นอย่าง Lean เป็นระบบการทำงานแบบทันท่วงที
งานแต่ละชิ้นก็เหมือนการทำซ้ำทั้งหมดของตัวเอง นักพัฒนาซอฟต์แวร์ทำงานครั้งละหนึ่งสิ่งเท่านั้น กฎคือหนึ่งรายการ "อยู่ระหว่างดำเนินการ" ต่อนักพัฒนาซอฟต์แวร์ ขีดจำกัดของงานระหว่างทำที่เข้มงวดนี้ช่วยชี้ให้เห็นถึงปัญหาคอขวด นักพัฒนาติดตามรายการงานที่กำลังดำเนินการผ่านบอร์ด Kanban นั่นเป็นที่มาของชื่อ ในภาษาญี่ปุ่น Kanban หมายถึง "ป้าย"
5. น้ำตก
วิธีน้ำตกเป็นวิธีการพัฒนาซอฟต์แวร์ที่เก่าแก่ที่สุด มันถือกำเนิด Agile อย่างน้อยหลายทศวรรษ วิธีนี้เก่ากว่าชื่อด้วย
เป็นเรื่องปกติที่บริษัทต่างๆ มักจะทำงาน เป็นกระบวนการเชิงเส้น และคุณเริ่มต้นที่จุดเริ่มต้น ขั้นแรก ผู้มีส่วนได้ส่วนเสียรวบรวมข้อกำหนด พวกเขาไม่ได้ทำสิ่งนี้สำหรับคุณสมบัติหนึ่งหรือสองอย่าง ไม่ ผู้มีส่วนได้ส่วนเสียทางธุรกิจจะกำหนดขอบเขตทั้งโครงการในคราวเดียว หลังจากนั้นงานก็เริ่มขึ้น นักพัฒนาทำงานทั้งหมดโดยไม่ต้องทำซ้ำจนกว่าจะเสร็จสิ้น
ทางน้ำตกเป็นวิธีที่ง่ายที่สุดในการทำความเข้าใจแนวคิด ผู้คนทำสิ่งเดียวในแต่ละครั้ง ที่กล่าวว่ามีความเสี่ยงต่อความสำเร็จทางธุรกิจมากที่สุด หากมีบางสิ่งที่ไม่ตรงเป้าหมาย ผู้มีส่วนได้ส่วนเสียจะไม่สามารถแก้ไขได้จนกว่าโครงการจะเสร็จสิ้น เหตุผลก็คือจะไม่มีคนสังเกตจนกว่าโครงการจะแล้วเสร็จ
3 ประเภทย่อยหลักของซอฟต์แวร์
ซอฟต์แวร์สำเร็จรูปเป็นหนึ่งในสามประเภท ประเภทเหล่านี้ได้แก่ ระบบ การเขียนโปรแกรม และซอฟต์แวร์แอปพลิเคชัน เพื่อแสดงให้เห็น นี่คือการเปรียบเทียบการอบเค้ก เครื่องผสมหรือไม้พายเป็นซอฟต์แวร์การเขียนโปรแกรม ช่วยให้คุณสามารถทำเค้กหรือแอพพลิเคชั่นซอฟต์แวร์ได้มากขึ้นในการเปรียบเทียบนี้ เมื่อประกอบเค้ก ชั้นล่างสุดคือซอฟต์แวร์ระบบ มันคือรากฐาน หากไม่มีคุณจะไม่มีเค้กเป็นชั้น ชั้นบนสุดจะเป็นซอฟต์แวร์ประยุกต์ เป็นสิ่งที่ผู้สังเกตการณ์ทั่วไปส่วนใหญ่มองเห็นได้
ซอฟต์แวร์ระบบ
ระบบปฏิบัติการของคอมพิวเตอร์คือซอฟต์แวร์ระบบ มันมีความสำคัญต่อประโยชน์ของมัน ลองนึกภาพคอมพิวเตอร์ที่ไม่มีระบบปฏิบัติการ คุณจะสามารถโต้ตอบกับมันผ่านภาษาเครื่องเท่านั้น นั่นคือเลขฐานสองล้วน -- แค่เลขสองตัวกับศูนย์ คุณจะพบว่ามันเป็นไปไม่ได้ที่จะทำงานร่วมกับทุกระดับ ซอฟต์แวร์ระบบช่วยเปิดประโยชน์ของคอมพิวเตอร์
Windows, macOS และ Linux คือตัวอย่างซอฟต์แวร์ระบบที่ได้รับความนิยมมากที่สุด ไดรเวอร์อุปกรณ์ก็เป็นซอฟต์แวร์ระบบเช่นกัน พวกเขาขยายการทำงานพื้นฐานของระบบปฏิบัติการ อุปกรณ์อัจฉริยะที่ไม่มีระบบปฏิบัติการใช้เฟิร์มแวร์เพื่อเปิดใช้งานฟังก์ชันการทำงาน เป็นซอฟต์แวร์ระบบด้วย
ซอฟต์แวร์การเขียนโปรแกรม
ซอฟต์แวร์การเขียนโปรแกรมเป็นส่วนย่อยของซอฟต์แวร์ประยุกต์ โปรแกรมใด ๆ ที่นักพัฒนาใช้ในการสร้างโปรแกรมใหม่จะจัดประเภท มีตั้งแต่โปรแกรมแก้ไขข้อความธรรมดาไปจนถึงสภาพแวดล้อมการพัฒนาแบบรวมที่ซับซ้อน (IDE) นักพัฒนาส่วนใหญ่ชอบเครื่องมือซอฟต์แวร์การเขียนโปรแกรมที่ซับซ้อนมากขึ้น โปรแกรมอย่าง Visual Studio ของ Microsoft ช่วยเร่งความเร็วในการพัฒนา

ซอฟต์แวร์ประยุกต์
ซอฟต์แวร์แอปพลิเคชันเป็นประเภทที่พบบ่อยที่สุด เป็นซอฟต์แวร์ที่ช่วยให้คุณทำสิ่งต่างๆ ด้วยคอมพิวเตอร์ได้ ทำให้คอมพิวเตอร์มีประโยชน์ ตัวอย่างยอดนิยม ได้แก่ โปรแกรมเช่น Microsoft Word และ Excel
ซอฟต์แวร์คลาวด์ยังจัดอยู่ในหมวดหมู่นี้ด้วย Google Docs, Dropbox และแม้แต่ Instagram เป็นซอฟต์แวร์แอปพลิเคชัน หากคุณเคยรู้สึกสับสนว่าบางอย่างเป็นซอฟต์แวร์แอปพลิเคชันหรือไม่ นี่คือการทดสอบง่ายๆ โปรแกรมต้องการอย่างอื่นเพื่อรันหรือไม่? Windows หรือ Android ทำไม่ได้ เป็นซอฟต์แวร์ระบบ PowerPoint หรือแม้แต่เกมอย่าง Call of Duty ต้องการสิ่งอื่นที่ทำงานอยู่ ซึ่งหมายความว่าเป็นซอฟต์แวร์แอปพลิเคชัน หากไม่มีไดรเวอร์อุปกรณ์และระบบปฏิบัติการ จะไม่สามารถดำเนินการได้
บทสรุป
วิธีการพัฒนาซอฟต์แวร์ยังคงเติบโตเต็มที่ แม้จะใช้วิธีไหน ขั้นตอนก็ยังเหมือนเดิม ทีมที่ว่องไวอาจวนซ้ำเร็วกว่านั้น และผู้ปฏิบัติงานของ Waterfall จะค่อยๆ เคลื่อนจากที่หนึ่งไปอีกที่หนึ่งอย่างช้าๆ ในการสร้างซอฟต์แวร์ที่ดีขึ้น คุณต้องเสริมความแข็งแกร่งให้กับกระบวนการในแต่ละขั้นตอน พวกเขาสร้างซึ่งกันและกัน วัฏจักรการพัฒนาซอฟต์แวร์ไม่ใช่สิ่งที่ไม่มีขั้นตอนใดขั้นตอนหนึ่ง ชิ้นส่วนทำให้ทั้งหมด
ลองคิดดูว่าจะเกิดอะไรขึ้นหากคุณไม่ก้าวออกไป ไม่ได้วางแผนว่ากำลังทำอะไรอยู่? หากไม่มีการออกแบบ กระบวนการพัฒนาจะไม่เกิดขึ้น การออกจากขั้นตอนการพัฒนานั้นเป็นไปไม่ได้ การขาดการทดสอบทำให้มั่นใจได้ว่าผลิตภัณฑ์จะไม่ทำงานตามที่คาดไว้ หากไม่มีการปรับใช้ จะไม่มีใครสามารถเข้าถึงผลิตภัณฑ์ได้ แอปพลิเคชันที่ไม่ได้รับการดูแลจะถูกยกเลิกการใช้งาน แต่ละขั้นตอนมีความสำคัญต่อความสำเร็จของผลิตภัณฑ์ซอฟต์แวร์