Home
Education
Classroom
Knowledge
Blog
TV
ธรรมะ
กิจกรรม
โครงการทรูปลูกปัญญา

การพัฒนาซอฟต์แวร์

Posted By Plookpedia | 21 เม.ย. 60
13,101 Views

  Favorite

การพัฒนาซอฟต์แวร์

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

 

ซอฟต์แวร์คอมพิวเตอร์

 

      ปัญหาคือคอมพิวเตอร์เป็นเครื่องที่เข้าใจภาษาเครื่องเท่านั้นถ้าให้คนเขียนคำสั่งในภาษานี้ก็จะยาวและยุ่งยากสับสนมากเพราะมีแต่เลข 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)
สำหรับภาษาวิชวลเบสิกนั้น บรรทัดที่ขึ้นต้นด้วย ' ถือเป็นคำอธิบาย ไม่ใช่คำสั่ง

 

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

เว็บไซต์ทรูปลูกปัญญาดอทคอมเป็นเพียงผู้ให้บริการพื้นที่เผยแพร่ความรู้เพื่อประโยชน์ของสังคม ข้อความและรูปภาพที่ปรากฏในบทความเป็นการเผยแพร่โดยผู้ใช้งาน หากพบเห็นข้อความและรูปภาพที่ไม่เหมาะสมหรือละเมิดลิขสิทธิ์ กรุณาแจ้งผู้ดูแลระบบเพื่อดำเนินการต่อไป
  • Posted By
  • Plookpedia
  • 15 Followers
  • Follow