User Tools

Site Tools


comp:dev

การออกแบบโปรแกรม และ แนวคิดในการพัฒนาซอฟต์แวร์

ในการพัฒนาซอฟต์แวร์ขนาดใหญ่ ต้องอาศัยการวิเคราะห์ระบบ การออกแบบระบบ (System analysis and design) และ การบริหารจัดการการสร้างระบบที่เป็นระบบระเบียบ

มีการพัฒนาวิธีการบริหารจัดการการสร้างซอฟต์แวร์ที่หลากหลายและเป็นศาสตร์ในตัวของมันเองเรียกว่า วิศวกรรมซอฟต์แวร์ (Software Engineering)

ลำดับขั้นตอนในการพัฒนาซอฟต์แวร์

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

การออกแบบโปรแกรมโดยใช้ Flowcharts

Flowcharts เป็นภาพสัญลักษณ์เพื่อสื่อถึงลำดับขั้นการทำงาน การเขียนและทำความเข้าใจ Flowchart จึงมีความสำคัญในการพัฒนาซอฟต์แวร์

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

มาตรฐานISO 5807 Information Processing Documentation Symbols and Conventions; Program and System Flowcharts และ ANSI X3.6-1970, Flowchart Symbols and Their Usage in Information Processing ได้ระบุสัญลักษณ์ ความหมาย และวิธีการใช้สัญลักษณ์ของ flowchartsไว้มากมาย

สัญลักษณ์พื้นฐานที่ควรรู้มีดังนี้

สัญลักษณ์ ความหมาย
Terminator – การเริ่มต้นหรือสิ้นสุดการทำงานของโปรแกรม
Input/Output – กระบวนการรับข้อมูลเข้าหรือนำข้อมูลออก
Process – กระบวนการประมวลผล
Flow line – เส้นเชื่อมโยงกระบวนการ
Decision – กระบวนการตัดสินใจ
Connector – ตัวเชื่อมส่วนต่างๆ ของ Flowcharts

การวาดเส้นเชื่อมโยง ถ้าไม่มีลูกศรจะอ่านจากขวาไปซ้ายและบนลงล่าง หากวาดเส้นตัดกันโดยไม่มีลูกศรจะหมายถึงไม่มีการเชื่อมต่อกัน ถ้าต้องการรวมการทำงานให้ใช้ลูกศรประกอบ ตามตัวอย่าง

ไม่ต่อกัน รวมกัน

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

ตัวอย่างที่ 1 โปรแกรมแปลงหน่วยอุณหภูมิจากองศาฟาเรนไฮต์เป็นองศาเซลเซียส

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

1. เริ่มต้นโปรแกรม
2. กำหนดค่าเริ่มต้นให้กับตัวแปร F และ C ให้มีค่าเป็น 0
3. อ่านค่าจากแป้นพิมพ์ (Read) เก็บลงตัวแปร F
4. คำนวณอุณหภูมิในหน่วยองศาเซลเซียสจากหน่วยองศาฟาเรนไฮต์โดยใช้สมการ C = (F – 32) * 5/9
5. แสดงผล (Write) ค่าของตัวแปร C
6. สิ้นสุดการทำงานของโปรแกรม

ตัวอย่างที่ 2 โปรแกรมแปลงจำนวนวันเป็นจำนวนเดือนและเศษของเดือน

1. เริ่มต้นกระบวนการโปรแกรม
2. อ่านค่าจำนวนวันเก็บลงตัวแปร d
3. คำนวณหาจำนวนเดือนด้วยสมการ months = d / 30 และหาเศษของเดือนด้วยสมการ days = d % 30
4. จากนั้นแสดงผลลัพธ์ที่ได้

ตัวอย่างที่ 3 โปรแกรมตัดเกรด

กำหนดให้โปรแกรมรับค่าคะแนนดิบจาก 4 รายวิชา แต่ละรายวิชามีคะแนนเต็ม 250 หาผลรวมของคะแนน แล้วตัดเกรดตามเงื่อนไขต่อไปนี้

คะแนนรวม > 800 เกรด A
คะแนนรวม 601 – 800 เกรด B
คะแนนรวม 401 – 600 เกรด C
คะแนนรวม 201 – 400 เกรด D
ต่ำกว่า 201 เกรด F
  1. รับคะแนน 4 วิชาเก็บลงตัวแปร sub1 sub2 sub3 และ sub4 ตามลำดับ
  2. คำนวณหาผลรวม
  3. นำผลรวมมาเปรียบเทียบค่า
  4. กระบวนการเปรียบเทียบค่าใช้สัญลักษณ์ decision เพื่อเลือกเส้นทางในการประมวลผลลำดับถัดไป เช่น เงื่อนไข total > 800 กรณีที่ผลการเปรียบเทียบได้ค่าเป็นจริงจะประมวลผลตามเส้นเชื่อม true และกรณีผลเป็นเท็จจะประมวลผลตามเส้นเชื่อม false
  5. แสดงผลเป็นเกรดที่ได้ตามเกณฑ์คะแนน
  6. ในตัวอย่างนี้ใช้ connector เพื่อเป็นตัวเชื่อมซึ่งใช้ในกรณีที่ขนาดของ flowchart ใหญ่กว่าพื้นที่วาด การใช้ connector ต้องมีการระบุชื่อจุดเชื่อมต่อเพื่อใช้อ้างอิงเสมอ

ตัวอย่างที่ 4 โปรแกรมคำนวณแฟกทอเรียล

ค่า n! คำนวณได้จากการคูณตัวเลขตั้งแต่ 1 ถึง n ซึ่งเป็นการคำนวณผลคูณซ้ำหลายรอบ ในการเขียนโปรแกรมมีเทคนิคในการวนทำซ้ำ (Loops หรือ Iterations) เพื่อประมวลผลงานเดิมซ้ำหลายๆ รอบ กรณีของการหาค่าแฟกทอเรียลการทำซ้ำแต่ละรอบจะเพิ่มค่าตัวคูณตั้งแต่ 1, 2, 3, … ไปจนสิ้นสุดที่ n เมื่อเขียนอธิบายด้วยflowchart จะเห็นว่าสัญลักษณ์ decision มีเส้นเชื่อมไปยังกระบวนการคำนวณ fac = fac * i และ i = i + 1 แล้วเชื่อมกลับไปยังสัญลักษณ์ decision อีกครั้ง สัญลักษณ์ decision ในโครงสร้างทำหน้าที่เป็นเงื่อนไขของการวนทำซ้ำ ส่วนกระบวนการ fac = fac * i และ i = i + 1 เป็นกระบวนการที่วนทำซ้ำไปจนกว่าเงื่อนไขจะเป็นเท็จ

ตัวอย่างที่ 5 โปรแกรมตรวจสอบเลขจำนวนเฉพาะ

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

comp/dev.txt · Last modified: 2020/11/14 13:38 (external edit)

Page Tools