ในการพัฒนาซอฟต์แวร์ขนาดใหญ่ ต้องอาศัยการวิเคราะห์ระบบ การออกแบบระบบ (System analysis and design) และ การบริหารจัดการการสร้างระบบที่เป็นระบบระเบียบ
มีการพัฒนาวิธีการบริหารจัดการการสร้างซอฟต์แวร์ที่หลากหลายและเป็นศาสตร์ในตัวของมันเองเรียกว่า วิศวกรรมซอฟต์แวร์ (Software Engineering)
ลำดับขั้นตอนในการพัฒนาซอฟต์แวร์
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ไว้มากมาย
สัญลักษณ์พื้นฐานที่ควรรู้มีดังนี้
การวาดเส้นเชื่อมโยง ถ้าไม่มีลูกศรจะอ่านจากขวาไปซ้ายและบนลงล่าง หากวาดเส้นตัดกันโดยไม่มีลูกศรจะหมายถึงไม่มีการเชื่อมต่อกัน ถ้าต้องการรวมการทำงานให้ใช้ลูกศรประกอบ ตามตัวอย่าง
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 |
ตัวอย่างที่ 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 เป็นผังการทำงานที่ถูกต้องตั้งแต่แรกจึงถือเป็นขั้นตอนที่มีความสำคัญในการพัฒนาซอฟต์แวร์