# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
การพัฒนาซอฟต์แวร์ (อังกฤษ: software development) เป็นกระบวนการก่อร่าง กำหนด ออกแบบ เขียนโปรแกรม จัดทำคู่มือ ทดสอบ และแก้ไขบั๊กที่เกี่ยวข้องกับการสร้างและการปรับปรุงแอปพลิเคชัน เฟรมเวิร์ก หรือส่วนประกอบซอฟต์แวร์อื่น ๆ อีกทั้งการพัฒนาซอฟต์แวร์ยังเป็นกระบวนการเขียนและปรับปรุง ซอร์ซโค้ด แต่ในแง่มุมที่กว้างขึ้นนั้นการพัฒนาซอฟต์แวร์รวมทุกอย่างที่เกี่ยวข้องระหว่างแนวคิดของซอฟต์แวร์ที่ต้องการตลอดไปจนถึงการเสร็จสมบูรณ์ของซอฟต์แวร์ โดยในบางครั้งอาจอยู่ในกระบวนการวางแผนและวางโครงร่าง ดังนั้นการพัฒนาซอฟต์แวร์จึงเกี่ยวข้องกับการค้นคว้า การพัฒนาใหม่ การสร้างต้นแบบ การแก้ไข การใช้ซ้ำ การออกแบบและสร้างอีกครั้ง การปรับปรุง หรือการกระทำใด ๆ ก็ตามที่ก่อให้เกิดผลิตภัณฑ์ซอฟต์แวร์
นาย ธนกฤต สุวรรณโชติ เลขที่3

# data[].attributes.attachment_link.readable_text
การพัฒนาซอฟต์แวร์ ( อังกฤษ: software development) เป็นกระบวนการก่อร่าง กำหนด ออกแบบ เขียนโปรแกรม จัดทำคู่มือ ทดสอบ และ แก้ไขบั๊กที่เกี่ยวข้องกับการสร้างและการปรับปรุง แอปพลิเคชัน เฟรมเวิร์ก หรือส่วนประกอบซอฟต์แวร์อื่น ๆ อีกทั้งการพัฒนาซอฟต์แวร์ยังเป็นกระบวนการเขียนและ ปรับปรุง ซอร์ซโค้ด แต่ในแง่มุมที่กว้างขึ้นนั้นการพัฒนาซอฟต์แวร์รวมทุกอย่างที่เกี่ยวข้องระหว่างแนวคิดของซอฟต์แวร์ที่ต้องการตลอดไปจนถึงการเสร็จสมบูรณ์ของซอฟต์แวร์ โดยในบางครั้งอาจอยู่ในกระบวนการวางแผนและ วางโครงร่าง ดังนั้นการพัฒนาซอฟต์แวร์จึงเกี่ยวข้องกับการค้นคว้า การพัฒนาใหม่ การสร้างต้นแบบ การแก้ไข การใช้ซ้ำ การออกแบบและสร้างอีกครั้ง การปรับปรุง หรือการกระทำใด ๆ ก็ตามที่ก่อให้เกิดผลิตภัณฑ์ซอฟต์แวร์

# data[].attributes.attachment_link.title
การพัฒนาซอฟต์แวร์

# data[].attributes.attachment_link.description
การพัฒนาซอฟต์แวร์ ( อังกฤษ: software development) เป็นกระบวนการก่อร่าง กำหนด ออกแบบ เขียนโปรแกรม จัดทำคู่มือ ทดสอบ และ แก้ไขบั๊กที่เกี่ยวข้องกับการสร้างและการปรับปรุง แอปพลิเคชัน เฟรมเวิร์ก หรือส่วนประกอบซอฟต์แวร์อื่น ๆ อีกทั้งการพัฒนาซอฟต์แวร์ยังเป็นกระบวนการเขียนและ ปรับปรุง ซอร์ซโค้ด แต่ในแง่มุมที่กว้างขึ้นนั้นการพัฒนาซอฟต์แวร์รวมทุกอย่างที่เกี่ยวข้องระหว่างแนวคิดของซอฟต์แวร์ที่ต้องการตลอดไปจนถึงการเสร็จสมบูรณ์ของซอฟต์แวร์ โดยในบางครั้งอาจอยู่ในกระบวนการวางแผนและ วางโครงร่าง ดังนั้นการพัฒนาซอฟต์แวร์จึงเกี่ยวข้องกับการค้นคว้า การพัฒนาใหม่ การสร้างต้นแบบ การแก้ไข การใช้ซ้ำ การออกแบบและสร้างอีกครั้ง การปรับปรุง หรือการกระทำใด ๆ ก็ตามที่ก่อให้เกิดผลิตภัณฑ์ซอฟต์แวร์

# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
เมื่อเราอยากเล่นจรวดกระดาษและมีความสามารถในการพับจรวด เพื่อนของเราอยากเล่นบ้างแต่เขาพับไม่เป็นเราก็ต้องบอกวิธีพับตามขั้นตอนให้แก่เขา เมื่อเขาฟังขั้นตอนที่เราบอกเสร็จแล้วก็ ไม่ใช่ว่าเขาจะมีจรวดให้เล่นได้ทันทีแต่เขาต้องหากระดาษมาพับตามขั้นตอนที่เราบอกก่อน เขาจึงจะได้จรวดมาปาเล่นอย่างเราบ้าง
คอมพิวเตอร์ที่เราเห็นว่าสามารถทำอะไรได้สารพัดและมีเกมมากมายให้เราเล่นนั้น  อันที่จริงแล้วเวลาเริ่มต้นคอมพิวเตอร์ไม่สามารถทำอะไรได้เลยสาเหตุที่ทำได้ก็เพราะมีการสั่งวิธีทำสิ่งต่าง ๆ เป็นขั้นตอนไว้ให้เราเรียกคำสั่งต่าง ๆ สำหรับคอมพิวเตอร์ที่รวมกันเป็นชุดว่า "ซอฟต์แวร์" หรือ "โปรแกรม" เกมที่เราเล่นในคอมพิวเตอร์ก็เป็นซอฟต์แวร์อย่างหนึ่ง คอมพิวเตอร์ต้องทำตามคำสั่งที่อยู่ในซอฟต์แวร์ก่อนเราจึงจะเริ่มเล่นเกมได้
นายณัฐภัทร ทะลือ เลขที่5

# data[].attributes.attachment_link.readable_text
เมื่อเราอยากเล่นจรวดกระดาษและมีความสามารถในการพับจรวด เพื่อนของเราอยากเล่นบ้างแต่เขาพับไม่เป็นเราก็ต้องบอกวิธีพับตามขั้นตอนให้แก่เขา เมื่อเขาฟังขั้นตอนที่เราบอกเสร็จแล้วก็ ไม่ใช่ว่าเขาจะมีจรวดให้เล่นได้ทันทีแต่เขาต้องหากระดาษมาพับตามขั้นตอนที่เราบอกก่อน เขาจึงจะได้จรวดมาปาเล่นอย่างเราบ้าง
คอมพิวเตอร์ที่เราเห็นว่าสามารถทำอะไรได้สารพัดและมีเกมมากมายให้เราเล่นนั้น อันที่จริงแล้วเวลาเริ่มต้นคอมพิวเตอร์ไม่สามารถทำอะไรได้เลยสาเหตุที่ทำได้ก็เพราะมีการสั่งวิธีทำสิ่งต่าง ๆ เป็นขั้นตอนไว้ให้เราเรียกคำสั่งต่าง ๆ สำหรับคอมพิวเตอร์ที่รวมกันเป็นชุดว่า"ซอฟต์แวร์" หรือ "โปรแกรม" เกมที่เราเล่นในคอมพิวเตอร์ก็เป็นซอฟต์แวร์อย่างหนึ่ง คอมพิวเตอร์ต้องทำตามคำสั่งที่อยู่ในซอฟต์แวร์ก่อนเราจึงจะเริ่มเล่นเกมได้

ปัญหาคือคอมพิวเตอร์เป็นเครื่องที่เข้าใจภาษาเครื่องเท่านั้นถ้าให้คนเขียนคำสั่งในภาษานี้ก็จะยาวและยุ่งยากสับสนมากเพราะมีแต่เลข 0 กับ 1 คนจึงได้คิดภาษาเขียนโปรแกรมที่คนสามารถอ่านออกขึ้นมาเพื่อเขียนคำสั่งแล้วให้ซอฟต์แวร์ที่ทำหน้าที่เป็นล่ามแปลเป็นภาษาเครื่องอีกครั้งก่อนที่จะสั่งให้คอมพิวเตอร์ทำงานได้ ถ้าเราเปรียบเทียบการบอกวิธีพับจรวดกระดาษที่มีเพียง ๓-๔ ขั้นตอนกับการบอกวิธีสร้างจรวดของจริงที่มีหลายแสนขั้นตอน เราก็จะทราบว่าการสร้างจรวดของจริงมีกระบวนการที่ยุ่งยากกว่ามากและเช่นเดียวกันถ้าเราจะสั่งให้คอมพิวเตอร์ทำงานบ่อย ๆ อย่างบวก ๑ ถึง ๑๐ เราอาจจะเขียนคำสั่ง หรือ "เขียนโปรแกรม" สั้น ๆ ขึ้นมาได้เลยแต่ถ้าเราจะให้คอมพิวเตอร์ทำงานที่ยาก เช่น จำลองสภาพให้เสมือนเราขับเครื่องบินรบได้เราจะต้องมีกระบวนการอีกมากมาย การเขียนโปรแกรมจะเป็นเพียงส่วนปลีกย่อยเท่านั้นเราเรียกกระบวนการนี้ว่า "การพัฒนาซอฟต์แวร์"
กระบวนการสร้างจรวดของจริงต้องใช้คนหลายสาขาอาชีพและมีขั้นตอนหลายอย่าง เช่น จะต้องมีนักวิทยาศาสตร์ที่รู้เรื่องอวกาศมาวิเคราะห์ก่อนว่าจะทำอย่างไรให้คนที่ขับจรวดสามารถหายใจได้ขณะที่จรวดอยู่ในอาวกาศ จะต้องมีวิศวกรออกแบบรูปร่างจรวดมีช่างออกแบบเครื่องยนต์และสร้างจรวดจำลองลำเล็ก ๆ ขึ้นมาทดลองบินก่อนหากมีข้อผิดพลาดจรวดจำลองลำเล็กตกสู่พื้นดินก็ยังไม่มีใครได้รับบาดเจ็บ เมื่อแก้ไขข้อผิดพลาดเรียบร้อยแล้วจึงจะสร้างจรวดของจริงในขั้นตอนนี้ก็ยังต้องมีคนเข้าไปทดสอบหรือทดลองใช้ส่วนต่าง ๆ ว่าทำงานไม่ผิดพลาดแน่นอนจึงจะสามารถขับจรวดไปนอกโลกได้

กระบวนการการพัฒนาซอฟต์แวร์ก็ต้องใช้คนที่มีความชำนาญหลายด้านเช่นเดียวกัน ซอฟต์แวร์สำหรับงานบางอย่างมีผู้สร้างไว้จำหน่ายแล้วแต่ถ้าซอฟต์แวร์ที่จะสั่งให้คอมพิวเตอร์ทำงานตามที่เราต้องการไม่มีจำหน่ายเราก็ต้องจ้างคนมาพัฒนาซอฟต์แวร์ให้แก่เรา แต่ไม่ใช่จ้างเฉพาะคนเขียนโปรแกรมเท่านั้นเราต้องจ้างผู้ชำนาญในการวิเคราะห์ ออกแบบ และทดสอบมาร่วมมือกัน อีกทั้งต้องเลือกกระบวนการการพัฒนาที่เหมาะสมกับลักษณะของซอฟต์แวร์ด้วยเราจึงจะได้ซอฟต์แวร์ที่ดีเสร็จเร็วและราคาไม่แพงเกินไป การพัฒนาซอฟต์แวร์ขนาดเล็ก ๆ โดยคน ๆ เดียวนั้นต้องใช้คนที่สามารถเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ได้หรือที่เรียกว่า"โปรแกรมเมอร์" โปรแกรมเมอร์มักได้รับการมอบหมายตั้งแต่เริ่มต้นว่าจะต้องสั่งให้คอมพิวเตอร์ทำอะไรบ้างเขาจึงจะเริ่มดำเนินการ สมมติว่าโจทย์ คือ ให้คอมพิวเตอร์ตรวจสอบว่าปี พ.ศ.ที่ระบุเป็นอธิกสุรทินหรือไม่ขั้นตอนที่โปรแกรมเมอร์จะดำเนินการมีดังต่อไปนี้
ขั้นที่ ๑ วิเคราะห์โจทย์
โปรแกรมเมอร์ต้องหานิยามว่าปีอธิกสุรทินคืออะไร โดยอาจหาจากสารานุกรมหรือพจนานุกรมก็จะพบว่าปีอธิกสุรทิน (leap year) คือ ปีที่มี ๓๖๖ วัน ในปีนั้นเดือนกุมภาพันธ์จะมี ๒๙ วัน ในเชิงการคำนวณ ปีอธิกสุรทินเป็นปีที่หารด้วย ๔ ได้ลงตัวแต่หารด้วย ๑๐๐ ไม่ลงตัวหรือปีที่หารด้วย ๔๐๐ ได้ลงตัว
ขั้นที่ ๒ ออกแบบขั้นตอนการแก้ปัญหา
การระบุขั้นตอนในการแก้ปัญหาสำหรับคอมพิวเตอร์มีศัพท์เรียกว่า"อัลกอริทึม (Algorithm)" อธิบายให้ทราบถึงวิธีจัดการกับข้อมูลขาเข้าหรือ "อินพุต" เพื่อแปลงให้เป็นข้อมูลขาออกหรือ "เอาต์พุต" ในกรณีนี้ข้อมูลขาเข้า คือ ปี พ.ศ. ซึ่งเป็นเลข ๔ หลัก ข้อมูลขาออก คือ พิมพ์ว่า ใช่หรือไม่ใช่ปีอธิกสุรทิน โปรแกรมเมอร์อาจเริ่มร่างขั้นตอนหลักดังนี้
(๑) อ่านปี
(๒) ถ้าหารปีด้วย ๔ ลงตัวและหารปีด้วย ๑๐๐ ไม่ลงตัว ตอบว่าใช่ปีอธิกสุรทิน
(๓) มิฉะนั้นถ้าหารปีด้วย ๔๐๐ ลงตัว ตอบว่าใช่ปีอธิกสุรทิน
(๔) อัลกอริทึมสำหรับตรวจสอบปีว่าเป็นปีอธิกสุรทินหรือไม่ มิฉะนั้นตอบว่าใช่ปีอธิกสุรทิน
ขั้นที่ ๓ การเขียนโปรแกรม
โปรแกรมในภาษาวิชวลเบสิก (Visual Basic) ที่ตรวจสอบปีอธิกสุรทินที่เขียนตามอัลกอริทึมจากขั้นที่ ๒ แสดงได้ดังนี้
Private Sub LeapYear-Click()

Dim Year As Integer
Year = InputYear.Text
if (Year Mod 4 = 0 And Year Mod 100 <> 0) Then
MsgBox "ปี" & Year & "เป็นปีอธิกสุรทิน" , vboKOnly. "ผลการคำนวณ"
Elself (Year Mod 400 = 0) Then
MsgBox "ปี" & Year & "เป็นปีอธิกสุรทิน", vbOKOnly, "ผลการคำนวณ"
Else
MsgBox "ปี" & Year & "ไม่เป็นปีอธิกสุรทิน" , vbOKOnly, "ผลการคำนวณ"
End If

End Sub

: โปรแกรมที่เขียนด้วยภาษาวิชวลเบสิกเพื่อตรวจสอบปี พ.ศ. ว่าเป็นปีอธิกสุรทินแต่โปรแกรมนี้ยังมีข้อผิดพลาดอยู่บ้าง

ชุดคำสั่งที่เป็นภาษาที่คนสามารถอ่านออกดังแสดงในรูปที่ ๑ เรียกกันว่า "ซอร์สโคด (Source Code)" ซึ่งก่อนที่โปรแกรมจะสั่งให้คอมพิวเตอร์ทำงานได้ โปรแกรมเมอร์ต้องเรียกซอฟต์แวร์ที่ทำหน้าที่เป็นล่าม เรียกว่า "คอมไพเลอร์ (Compiler)" เพื่อแปลคำสั่งในซอร์สโคดให้เป็นภาษาเครื่อง (machine language) ก่อนชุดคำสั่งที่แปลเป็นภาษาเครื่องแล้ว เรียกว่า "อ็อบเจ็กต์โคด (Object Code)" โปรแกรมที่ถูกแปลงเป็นอ็อบเจ็กต์โคด เรียกว่า "โปรแกรมพร้อมปฏิบัติ (executable file)" เมื่อใดที่ถูกเรียกใช้คอมพิวเตอร์ก็จะทำงานตามคำสั่งได้
ขั้นที่ ๔ ทดสอบโปรแกรม
โปรแกรมเมอร์ต้องคิดกรณีที่จะทดสอบระบบ โปรแกรมนี้มี ๒ กรณีหลัก คือ กรณีแรกเลือกปีที่รู้แล้วว่าเดือนกุมภาพันธ์มี ๒๘ วัน เช่น ปี พ.ศ. ๒๕๔๑ กรณีที่ ๒ เลือกปีที่รู้แล้วว่าเดือนกุมภาพันธ์มี ๒๙ วัน เช่น ปี พ.ศ. ๒๕๔๓ เมื่อเริ่มทำงานโปรแกรมเมอร์จะเรียกโปรแกรมพร้อมปฏิบัติของโปรแกรมนี้มาใช้เพื่อทดสอบระบบโดยคอมพิวเตอร์จะแสดงหน้าจอเพื่อเรียกข้อมูลขาเข้า ดังนี้

เมื่อป้อนปี พ.ศ. ๒๕๔๑ เข้าโปรแกรมนี้ คอมพิวเตอร์แสดงผลว่า "ปี ๒๕๔๑ ไม่เป็นปีอธิกสุรทิน" ซึ่งถูกต้องแต่เมื่อป้อนปี พ.ศ. ๒๕๔๓ คอมพิวเตอร์แสดงผลว่า "ปี ๒๕๔๓ ไม่เป็นปีอธิกสุรทิน" ซึ่งผิดเมื่อเห็นผลในกรณีที่ ๒ แล้วโปรแกรมเมอร์จะทราบทันทีว่าโปรแกรมมีปัญหาหรือมี "บัก" ที่ต้องเข้าไปแก้ไข

ขั้นที่ ๕ แก้ไขโปรแกรม
วิธีการที่ดีสำหรับการแก้ไขโปรแกรม คือ ควรย้อนไปพิจารณาการวิเคราะห์โจทย์และการออกแบบขั้นตอนการแก้ปัญหาด้วย เมื่ออ่านอย่างรอบคอบจะพบว่าวิธีคำนวณตรวจสอบปีนั้นใช้ได้เฉพาะปี ค.ศ. ไม่ใช่ปี พ.ศ. ดังนั้นการแก้ไขต้องแก้ที่อัลกอริทึมซึ่งย้อนกลับไปเรื่องการออกแบบวิธีแปลงปี พ.ศ. ให้เป็นปี ค.ศ. ก่อน เราสามารถคำนวณได้โดยการลบปี พ.ศ. ๕๔๓ ขั้นตอนของอัลกอริทึมจากขั้นที่ ๒ จะถูกแก้ไขแล้วจึงไปแก้ไขโปรแกรมดังแสดงนี้

จากอัลกอริทึมเดิม อัลกอริทึมที่ถูกแก้ไข
(๑) อ่านปี (๑) อ่านปี พ.ศ. (๒) ถ้าหารปีด้วย ๔ ได้ลงตัวและปีด้วย๑๐๐ ไม่ลงตัว ตอบว่าใช่ปีอธิกสุรทิน (๑.๑) ปี = ปี พ.ศ. - ๕๔๓ (๒) ถ้าหารปีด้วย ๔ ได้ลงตัวและหารปีด้วย ๑๐๐ ไม่ลงตัว ตอบว่าใช่ปีอธิกสุรทิน
โปรแกรมเพื่อตรวจสอบปีพ.ศ. ว่าเป็นปีอธิกสุรทิน หลังการแก้ไขให้แปลงปี พ.ศ. เป็นปี ค.ศ. ก่อนการประมวลผล

Private Sub LeapYear-Click()

Dim Year, ThaiYear As Integer
ThaiYear = InputYear.Text
Year = ThaiYear - 543
if (Year Mod 4 = 0 And Year Mod 100 <> 0 Then
MsgBox "ปี" & Year + 543 & "เป็นปีอธิกสุรทิน" , vbOKOnly, "ผลการคำนวณ"
Elself (Year Mod 400=0) Then
MsgBox "ปี" & Year+543 & "เป็นปีอธิกสุรทิน" , vbOKOnly, "ผลการคำนวณ"
Else
MsgBox "ปี" & Year-543 "ไม่เป็นอธิกสุรทิน" , vbOKOnly, "ผลการคำนวณ"
End if

End Sub

เมื่อเอากรณีปี พ.ศ. ๒๕๔๑ มาทดสอบอีกครั้งคอมพิวเตอร์แสดงผลว่า "ปี ๒๕๔๑ ไม่เป็นปีอธิกสุรทิน" อย่างถูกต้องและเมื่อเอากรณีปี พ.ศ. ๒๕๔๓ มาทดสอบอีกครั้งคอมพิวเตอร์แสดงผลว่า "ปี ๒๕๔๓ เป็นปีอธิกสุรทิน" อย่างถูกต้องซึ่งถือว่าสามารถแก้ปัญหาได้สำเร็จ
ขั้นที่ ๖ การปรับปรุงโปรแกรม
การพัฒนาซอฟต์แวร์ต้องคำนึงถึงคุณภาพด้วย ซอฟต์แวร์ที่ทำงานถูกต้องแล้วไม่ได้หมายความว่าดีพร้อมแล้วในกรณีนี้ยังสามารถเพิ่มคุณภาพได้อีกหลายประการ การปรับปรุงโปรแกรมที่ง่ายที่สุด คือ การเพิ่มคำอธิบายภาพ (comment) ซึ่งแสดงผลได้ดังนี้

การปรับปรุงโปรแกรมโดยการเพิ่มคำอธิบาย (Comment)
สำหรับภาษาวิชวลเบสิกนั้น บรรทัดที่ขึ้นต้นด้วย ' ถือเป็นคำอธิบาย ไม่ใช่คำสั่ง

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

# data[].attributes.attachment_link.title
การพัฒนาซอฟต์แวร์

# data[].attributes.attachment_link.description
เมื่อเราอยากเล่นจรวดกระดาษและมีความสามารถในการพับจรวด เพื่อนของเราอยากเล่นบ้างแต่เขาพับไม่เป็นเราก็ต้องบอกวิธีพับตามขั้นตอนให้แก่เขา เมื่อเขาฟังขั้นตอนที่เราบอกเสร็จแล้วก็ ...

# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
การพัฒนาซอฟต์แวร์
การผลิตผลิตภัณฑ์ที่จะต้องใช้วิธีการพัฒนาทางวิศวกรรมไม่ว่าจะเป็นรถยนต์ซี่งเป็นวิศวกรรมเครื่องกล เครื่องโทรทัศน์ซึ่งเป็นวิศวกรรมไฟฟ้า ตลอดไปจนถึงงานการก่อสร้างสะพานหรืออาคารสูงซึ่งเป็นวิศวกรรมโยธา ล้วนต้องมีกระบวนการหรือขั้นตอนพัฒนาและบำรุงรักษาที่ประกอบด้วย
วิธีการต่าง ๆ มากมาย ในงานพัฒนาระบบซอฟต์แวร์ขนาดใหญ่ก็เช่นเดียวกัน จำเป็นต้องมีกระบวนการเชิงวิศวกรรมที่เรียกว่า วิศวกรรมซอฟต์แวร์ ในการพัฒนาและบำรุงรักษาซอฟต์แวร์อย่างเป็นขั้นตอน เพื่อให้งานสำเร็จลุล่วงตามเวลาและบรรลุเป้าหมายที่ต้องการ
การพัฒนาระบบซอฟต์แวร์ขนาดใหญ่ ๆ เช่น ระบบสินค้าคงคลังในงานธุรกิจ ระบบการลงทะเบียนเรียนในมหาวิทยาลัย
ขั้นตอนการพัฒนาซอฟต์แวร์
มี 4 ขั้นตอน
ของนายภานุพงศ์ คุ้มหอม เลขที่ 4

# data[].attributes.attachment_link.readable_text
การพัฒนาซอฟต์แวร์
การผลิตผลิตภัณฑ์ที่จะต้องใช้วิธีการพัฒนาทางวิศวกรรมไม่ว่าจะเป็นรถยนต์ซี่งเป็นวิศวกรรมเครื่องกล เครื่องโทรทัศน์ซึ่งเป็นวิศวกรรมไฟฟ้า ตลอดไปจนถึงงานการก่อสร้างสะพานหรืออาคารสูงซึ่งเป็นวิศวกรรมโยธา ล้วนต้องมีกระบวนการหรือขั้นตอนพัฒนาและบำรุงรักษาที่ประกอบด้วย
วิธีการต่าง ๆ มากมาย ในงานพัฒนาระบบซอฟต์แวร์ขนาดใหญ่ก็เช่นเดียวกัน จำเป็นต้องมีกระบวนการเชิงวิศวกรรมที่เรียกว่า วิศวกรรมซอฟต์แวร์ ในการพัฒนาและบำรุงรักษาซอฟต์แวร์อย่างเป็นขั้นตอน เพื่อให้งานสำเร็จลุล่วงตามเวลาและบรรลุเป้าหมายที่ต้องการ
การพัฒนาระบบซอฟต์แวร์ขนาดใหญ่ ๆ เช่น ระบบสินค้าคงคลังในงานธุรกิจ ระบบการลงทะเบียนเรียนในมหาวิทยาลัย
หรือระบบบัญชีลูกหนี้เจ้าหนี้ของบริษัทร้านค้า นับเป็นงานที่ค่อนข้างซับซ้อน มีขอบเขตเกิดกว่าที่สมองของมนุษย์จะจดจำได้อย่างครบถ้วน
ไม่ใช่งานเล็ก ๆ หรือโปรแกรมเล็กๆ สำหรับผู้พัฒนาเพียงคนเดียว จำเป็นต้องอาศัยผู้ร่วมพัฒนาหลายคนทำงานร่วมกันในช่วงเวลาที่ยาวพอสมควร เพราะในระหว่างการพัฒนาอาจมีปัญหาอุปสรรคเกิดขึ้นได้เสมอ เช่น เป้าหมายของระบบอาจมีการปรับเปลี่ยนให้เหมาะสมขึ้น หรือ ปัญหาด้านบุคลากรที่ร่วมโครงการอาจมีการสับเปลี่ยนเนื่องจากการเปลี่ยนตำแหน่ง หรือ ย้ายงานใหม่ เป็นต้น
วิศวกรรมซอฟต์แวร์ ไม่ใช่เป็นเรื่องที่เกี่ยวข้องเฉพาะกับปัญหาเทคนิคของกระบวนการพัฒนาเท่านั้น
ยังจะรวมไปถึงปัญหาด้านบุคลากรและการควบคุมติดตามโครงการซึ่งในที่นี้จะกล่าวเฉพาะกระบวนการพัฒนาซอฟต์แวร์์
และระบบซอฟต์แวร์ที่มีการหมุนเวียนใช้งานเป็นวัฎจักรซอฟต์แวร์ ดังรูป

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

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

# data[].attributes.attachment_link.title
การพัฒนาซอฟต์แวร์ - M2Computor

# data[].attributes.attachment_link.description
การพัฒนาซอฟต์แวร์ การผลิตผลิตภัณฑ์ที่จะต้องใช้วิธีการพัฒนาทางวิศวกรรมไม่ว่าจะเป็นรถยนต์ซี่งเป็นวิศวกรรมเครื่องกล เครื่องโทรทัศน์ซึ่งเป็นวิศวกรรมไฟฟ้า ...

# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
การพัฒนาระบบงานใด ๆ ก็ตามก็จะประกอบไปด้วยขั้นตอนต่างๆ มาประกอบกัน

การกำหนดปัญหา(Problem Definition) หรือ การเลือกสิ่งที่จะนำมาพัฒนาระบบงาน(Project Identification and Selection) นับว่าเป็นขั้นตอนแรกในวงจรของการพัฒนา ขั้นตอนนี้มักจะเกิดขึ้นอย่างเป็นทางการ จากการประชุมของฝ่ายบริหาร เพื่อที่จะค้นหาวิธีการทำงานที่มีประสิทธิภาพ
การวิเคราะห์ปัญหา(Analysis) เมื่อ ผ่านขั้นตอนการการกำหนด หรือ เลือกโครงการที่จะทำการพัฒนาแล้ว ขั้นตอนต่อไปก็จะต้องนำเอาสิ่งที่ได้จากขั้นตอนแรกมาทำการวิเคระห์ โดยนักวิเคราะห์ระบบจะต้องทำการ วิเคราะห์ระบบ ในขั้นตอนนี้เป็นขั้นตอนที่มีความสำคัญมาก และไม่ควรทำอย่างรีบเร่ง เนื่องจากโครงการพัฒนาจำนวนมากที่ประสปความล้มเหลวเพราะการวิเคราะห์ และออกแบบที่ไม่ถูกต้อง

นายนนณภัทร สุวรรณโชติ

# data[].attributes.attachment_link.readable_text
การพัฒนาระบบงานใด ๆ ก็ตามก็จะประกอบไปด้วยขั้นตอนต่างๆ มาประกอบกัน

การกำหนดปัญหา(Problem Definition) หรือ การเลือกสิ่งที่จะนำมาพัฒนาระบบงาน(Project Identification and Selection) นับว่าเป็นขั้นตอนแรกในวงจรของการพัฒนา ขั้นตอนนี้มักจะเกิดขึ้นอย่างเป็นทางการ จากการประชุมของฝ่ายบริหาร เพื่อที่จะค้นหาวิธีการทำงานที่มีประสิทธิภาพ

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

การออกแบบ(Design) จะเป็นการนำเอาสิ่งที่ได้จากการวิเคราะห์ มาออกแบบเป็นระบบงาน สำหรับการพัฒนาในขั้นตอนถัดไป เช่น การออกแบบ Form , Report, Dialoques, Interface, Files & Database, Program & Process design เป็นต้น

การพัฒนาระบบงาน(Development) หรือ การสร้างระบบงานจริง ขั้นตอนนี้จะเป็นขั้นตอนที่นำเอาสิ่งที่ได้จากการออกแบบระบบมาทำการ Coding หรือ สร้างตัวระบบงานขึ้นมาใช้งานจริง ผู้ที่มีบทบาทสูงในขั้นตอนนี้คือ Programmer

การทดสอบ(Testing) การทดสอบระบบจะเป็นการตรวจสอบความถูกต้องของระบบงานที่ถูกสร้างขึ้นมาว่าตรง ตามกับความต้องการจริงๆ หรือไม่ การ Test จะมีด้วยกัน หลายระดับ กล่าวคือ

1. การทดสอบในระดับ Module หรือ Unit test เป็นการทดสอบการทำงานโดยแยกเป็นส่วนย่อยๆ ในแต่ละ module

2. การทดสอบ Integrate test จะนำเอา module ย่อยๆ มาทำการทดสอบการทำงานเป็นกระบวนการร่วมกัน

3. System test การทดสอบโดยนำเอาโปรแกรมย่อยมาทดสอบการทำงานร่วมกันทั้งระบบ

4. Acceptance test เป็นการทดสอบขั้นสุดท้าย โดย user (มี 2 ระดับ Alfa testing using simulated data, Beta testing using real data)

การติดตั้ง(Deployment) Direct installation, Pararell Installation, Single location installation, Phased installation

การบำรุงรักษา(Maintenance) Obtain Maintenance Request, Transforming Request into Change, Designing Change, Implementing Change

# data[].attributes.attachment_link.title
กระบวนการพัฒนาซอฟต์แวร์

# data[].attributes.attachment_link.description
การพัฒนาระบบงานใด ๆ ก็ตามก็จะประกอบไปด้วยขั้นตอนต่างๆ มาประกอบกัน การกำหนดปัญหา(Problem Definition) หรือ การเลือกสิ่งที่จะนำมาพัฒนาระบบงาน(Project Identification and Selection) นับว่าเป็นขั้นตอนแรกในวงจรของการพัฒนา ขั้นตอนนี้มักจะเกิดขึ้นอย่างเป็นทางการ จากการประชุมของฝ่ายบริหาร เพื่อที่จะค้นหาวิธีการทำงานที่มีประสิทธิภาพ การวิเคราะห์ปัญหา(Analysis) เมื่อ ผ่านขั้นตอนการการกำหนด หรือ เลือกโครงการที่จะทำการพัฒนาแล้ว ขั้นตอนต่อไปก็จะต้องนำเอาสิ่งที่ได้จากขั้นตอนแรกมาทำการวิเคระห์ โดยนักวิเคราะห์ระบบจะต้องทำการ วิเคราะห์ระบบ ในขั้นตอนนี้เป็นขั้นตอนที่มีความสำคัญมาก และไม่ควรทำอย่างรีบเร่ง เนื่องจากโครงการพัฒนาจำนวนมากที่ประสปความล้มเหลวเพราะการวิเคราะห์ และออกแบบที่ไม่ถูกต้อง การออกแบบ(Design) จะเป็นการนำเอาสิ่งที่ได้จากการวิเคราะห์ มาออกแบบเป็นระบบงาน สำหรับการพัฒนาในขั้นตอนถัดไป เช่น การออกแบบ Form , Report, Dialoques, Interface, Files & Database, Program & Process design เป็นต้น การพัฒนาระบบงาน(Development) หรือ การสร้างระบบงานจริง ขั้นตอนนี้จะเป็นขั้นตอนที่นำเอาสิ่งที่ได้จากการออกแบบระบบมาทำการ

# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
เมื่อมีการว่าจ้างให้พัฒนาซอฟต์แวร์ ผู้ว่าจ้างมักจะเซ็นชื่อรับรองว่า นี่คือ ข้อกำหนดซึ่งตรงกับที่เขาต้องการแล้ว แต่ปรากฏว่า เมื่อผู้พัฒนาซอฟต์แวร์ทำงานเสร็จเรียบร้อยตรงตามข้อกำหนดของผู้ว่าจ้างอย่างเคร่งครัด แต่ความต้องการของผู้ว่าจ้างกลับเปลี่ยนไป ผลก็คือ ผู้ว่าจ้างไม่ยอมตรวจรับงาน และไม่ยอมจ่ายเงิน หรือขอให้แก้ไขซอฟต์แวร์ จนกว่าจะพอใจ และถึงแม้ว่าจะยอมจ่ายเงิน ผู้ว่าจ้างก็ไม่สามารถนำซอฟต์แวร์ไปใช้ประโยชน์ตามที่ต้องการได้ ปัญหานี้เคยทำให้โครงการซอฟต์แวร์ระดับพันล้านบาทของไทยต้องล้มเหลว เนื่องจากไม่มีใครกล้าเซ็นรับรองเอกสาร ที่ระบุข้อกำหนดความต้องการของผู้ใช้ และเอกสารที่ระบุคุณลักษณะซอฟต์แวร์
การพัฒนาซอฟต์แวร์ตามแม่แบบแบบขั้นน้ำตก เปรียบเทียบได้กับการวัดตัวเด็กเล็ก เพื่อใช้ตัดเสื้อหลายสิบตัว แต่รอส่งมอบพร้อมกันทุกตัว ซึ่งต้องใช้เวลานานหลายเดือน กว่าจะได้เสื้อ เด็กก็โตขึ้นแล้ว เสื้อจึงคับไป ทั้งที่ช่างได้ตัดเสื้อตามขนาดที่วัดไว้ทุกอย่าง หากไม่มีการว่าจ้างต่อเนื่อง เพื่อให้ช่างแก้เสื้อให้มีขนาดที่เด็กสามารถใส่ได้ ผู้ว่าจ้างก็จะเสียเงินโดยเปล่าประโยชน์

นายวัชรกร์ เพียรพิทักษ์ เลขที่17

# data[].attributes.attachment_link.readable_text
สารานุกรมไทย
สำหรับเยาวชน ﻿

เมนู 25

สารานุกรมไทยสำหรับเยาวชนฯ / เล่มที่ ๒๕ / เรื่องที่ ๔ การพัฒนาซอฟต์แวร์ / การพัฒนาซอฟต์แวร์อย่างยืดหยุ่น
﻿
การพัฒนาซอฟต์แวร์อย่างยืดหยุ่น

การพัฒนาซอฟต์แวร์อย่างยืดหยุ่น

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

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

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

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

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

๑. พัฒนาต้นแบบซอฟต์แวร์ก่อน

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

๒. พัฒนาซอฟต์แวร์แบบต่อเติม

การพัฒนาซอฟต์แวร์แบบต่อเติม (Incremental mode) เป็นวิธีที่จะทำให้ได้รับซอฟต์แวร์โดยเร็ว ถ้าผู้ใช้ต้องการซอฟต์แวร์ที่ทำงานได้ ๑๐ หน้าที่ ก็อาจเริ่มพัฒนาซอฟต์แวร์ที่ทำงานได้ ๑-๒ หน้าที่ก่อน แล้วจึงนำไปทดลองใช้ ถ้ายังไม่พอใจก็ค่อยๆ แก้ไข จนกว่าจะพอใจ แล้วจึงเพิ่มหน้าที่อื่นๆ สลับกับการทดลองใช้เป็นระยะๆ ซอฟต์แวร์ที่ได้มักได้รับการยอมรับจากผู้ใช้ แต่ไม่สามารถกำหนดเวลาที่จะเสร็จได้แน่นอน เพราะความต้องการของผู้ใช้เปลี่ยนแปลงไปได้ทุกระยะ

๓. พัฒนาซอฟต์แวร์แบบวนเวียน

วิธีการพัฒนาแบบ "วนเวียน" (spiral model) นี้ จะวนเวียนอยู่ระหว่าง

(๑) ตั้งเป้าหมาย ดูทางเลือก และข้อจำกัด
(๒) ทดลองทำ และวิเคราะห์แม่แบบแบบวนเวียนความเสี่ยง
(๓) ทำจริง และ
(๔) ประเมินผล และวางแผนช่วงต่อไป

วิธีนี้จะเน้นเรื่องการวิเคราะห์ความเสี่ยงในช่วงที่ ๒ ซึ่งการวิเคราะห์ความเสี่ยง (risk-analysis) เป็นการวิเคราะห์ว่า ในการพัฒนาซอฟต์แวร์มีปัญหาอะไรบ้าง แต่ละปัญหาอาจส่งผลกระทบรุนแรงในระดับใด และมีโอกาสเกิดขึ้นได้มากเพียงใด แล้วรีบจัดการกับปัญหาที่มีโอกาสเกิดขึ้น และมีผลกระทบสูงก่อน ปัญหาดังกล่าวไม่จำเป็นว่า จะต้องเป็นปัญหาทางด้านเทคนิค แต่อาจจะเป็นปัญหาในการบริหารงานโครงการ ปัญหาเรื่องคน ฯลฯ เพื่อให้โครงการประสบความสำเร็จได้มากขึ้น ตัวอย่างเช่น หัวหน้าโครงการกำลังคิดจะลาอออก ซึ่งถ้าลาออกจริง โครงการก็จะล้มเหลว การเจรจากับหัวหน้าโครงการจึงเป็นเรื่องเร่งด่วนกว่าเรื่องเทคนิคทั้งหมด

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

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

๔. เน้นพัฒนาข้อกำหนดซอฟต์แวร์

วิธีนี้จะเน้นการเขียนข้อกำหนดซอฟต์แวร์ไว้อย่างชัดเจนมาก จนกระทั่งในบางกรณี วิธีนี้ทำให้คอมพิวเตอร์สามารถเขียนชุดคำสั่ง ที่ต้องใช้แทนมนุษย์ได้เลย

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

อีกวิธีหนึ่งเป็นการใช้ซอฟต์แวร์ประเภทที่มีเครื่องมือช่วยสร้างโปรแกรมได้โดยอัตโนมัติ ส่วนใหญ่เป็นซอฟต์แวร์ที่ใช้งานในสำนักงานทั่วๆ ไป เช่น งานการเงินการบัญชี งานจัดซื้อจัดจ้าง ฯลฯ ซึ่งมีหลักการทำงานที่ชัดเจนอยู่แล้ว ในบางกรณี โปรแกรมที่ทำหน้าที่ (function) ในรายละเอียดมีอยู่ครบแล้ว แต่ละองค์กรสามารถเลือกได้ว่า จะเก็บโปรแกรมที่มีหน้าที่ใดเอาไว้ และต้องปรับในส่วนใด เพื่อให้ได้ซอฟต์แวร์ ที่เหมาะสมเฉพาะองค์กร (customized)

# data[].attributes.attachment_link.description
สารานุกรมไทย สำหรับเยาวชน ﻿ เมนู 25 สารานุกรมไทยสำหรับเยาวชนฯ / เล่มที่ ๒๕ / เรื่องที่ ๔ การพัฒนาซอฟต์แวร์ / การพัฒนาซอฟต์แวร์อย่างยืดหยุ่น﻿ การพัฒนาซอฟต์แวร์อย่างยืดหยุ่น ...

# data[].attributes.headline
การพัฒนาซอฟต์แวร์

# data[].attributes.subject
การพัฒนาซอฟต์แวร์

# data[].attributes.body
กระบวนการพัฒนาซอฟต์แวร์

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

ถ้าพบข้อผิดพลาดช่วงแรกๆ ก็จะช่วยลดระยะเวลา และค่าใช้จ่าย ในการพัฒนาซอฟต์แวร์ได้มาก การศึกษาเรื่องค่าใช้จ่ายด้านซอฟต์แวร์ของบริษัทไอบีเอ็ม (IBM) บริษัทจีทีอี (GTE) และบริษัททีอาร์ดับเบิลยู (TRW) โดยนายแบรี่ บีม (Barry Boehm) ในปี ค.ศ. ๑๙๓๖ พบว่า ถ้าแก้ไขข้อผิดพลาด เมื่อพัฒนาซอฟต์แวร์เสร็จแล้ว แทนที่จะแก้ไขตั้งแต่ตอนที่กำหนดคุณลักษณะของซอฟต์แวร์ ก็จะต้องเสียค่าใช้จ่ายเพิ่มขึ้นเป็นร้อยเท่า ตัวอย่างของปัญหานี้เห็นได้อย่างชัดเจน ในการแก้ปัญหาคอมพิวเตอร์ ปี ค.ศ. ๒๐๐๐ หรือที่เรียกว่า ปัญหาวายทูเค (Y2K) บริษัที่ออกแบบซอฟต์แวร์ให้ใช้กับปีที่มีเลขสี่หลักตั้งแต่ต้นแทบจะไม่เดือดร้อนในการแก้ไขเลย แต่ซอฟต์แวร์อื่นๆ ที่ทั้งผู้ผลิตและผู้ใช้ต่างละเลยปัญหานี้ โดยยังคงใช้ปีเป็นเลขสองหลักอยู่ บางรายใช้อยู่เป็นสิบๆ ปี เมื่อถึงเวลาแก้ไขข้อผิดพลาดของซอฟต์แวร์ ก็ปรากฏว่าต้องใช้เงินเป็นจำนวนมากถึงหลายสิบล้านบาท ร้อยล้านบาท หรือมากกว่านั้น
ของนายอายุธ จุนจริง เลขที่2

# data[].attributes.headline
สรุปการพัฒนาซอฟต์แวร์

# data[].attributes.subject
สรุปการพัฒนาซอฟต์แวร์

# data[].attributes.body
เป็นกระบวนการก่อร่าง กำหนด ออกแบบ เขียนโปรแกรม จัดทำคู่มือ ทดสอบ และ แก้ไขบั๊ก ที่เกี่ยวข้องกับการสร้างและการปรับปรุง แอปพลิเคชัน เฟรมเวิร์ก