เนื้อหา
• รายละเอียดสำหรับการเขียนแผนภาพการไหลของข้อมูล
• ความสัมพันธ์ระหว่าง Parent และ Child
• การกำหนดหมายเลขโพรเซส
• กฏความสมดุล
• การแตกลูกหลานมากน้อยแค่ไหนที่จำเป็น
รายละเอียดสำหรับการเขียนแผนภาพการไหลของข้อมูล
หลังจากที่เราทราบเกี่ยวกับสัญลักษณ์ต่างๆ ของDFD เรียบร้อยแล้ว ก่อนที่จะลงมือเขียนจริงเราควรทรายรายละเอียด และกฏที่สำคัญสำหรับการเขียน DFD เพื่อที่จะทำให้การเขียนมีหลักเกณฑ์ที่ถูกต้อง
1. แผนภาพการไหลของข้อมูลระดับสูงสุด (Contexr Diagram)
การเขียนแผนภาพการไหลของข้อมูลเราจะเขียนเป็นระดับชั้น (Level) ซึ่งระดับแรกสุดจะเป็นภาพรวมของระบบงานทั้งหมด ยังไม่มีรายละเอียดของกิจกรรมการดำเนินงานต่างๆ
แผนภาพการไหลของข้อมูลระดับแรกและระดับสูงสุดนี้จะได้หมายเลขระดับชั้นเป็น 0 หรือเรียกว่า Data Flow Diagram Level 0 แต่ส่วนใหญ่จะนิยมเรียก DFD Level 0 นี้ว่า "Context Diagram "
ต่อไปนี้เป็นตัวอย่าง Context Diagram ระบบเงินเดือนและบุคลากรทำหน้าที่คำนวณเงินเดือนและเก็บข้อมูลพนักงาน สิ่งที่สำคัญของระบบก็คือ ข้อมูลเงินเดือน อาจจะมีสิ่งอื่น ๆ เกี่ยวกับพนักงานเพิ่มเติม หรือข้อมูลเกี่ยวกับตำแหน่งงาน จำนวนปีที่ทำงานด้วยก็ได้ และอื่นๆ
รูปที่ 7 Context Diagram ระบบเงินเดือนและบุคลากร
Context Diagram ของระบบงานใดๆ จะแสดงเฉพาะชื่อระบบงาน แหล่งข้อมูลภายนอกและเส้นทางการไหลของข้อมูลทั้งหมด โดยยังไม่มีการแสดงรายละเอียดในระบบงานและไม่มีการแสดงแหล่งเก็บข้อมูล (Data Store) แต่ไม่ได้หมายความว่าระบบนี้ไม่มีการเก็บข้อมูล แต่การเก็บข้อมูลจะอยู่ภายในระบบหรือในโพรเซส ดังนั้นจึงไม่ปรากฏการเก็บข้อมูล (Data Store) อยู่ใน DFD ระดับนี้ การเก็บข้อมูลจะปรากฏอยู่ใน DFD ระดับลึกลงไป หรืออยู่ในชั้นลูกหลาน ต่อ ๆ ไป
รูปที่ 8 แสดงแหล่งเก็บข้อมูลใน DFD ระดับลูก
2. ความสัมพันธ์ระหว่าง Parent และ Child
เนื่องจาก Context Diagram เป็นเพียงการแสดงภาพรวมของระบบงานและแหล่งข้อมูลภายนอกเท่านั้น ยังไม่มีการแสดงรายละเอียดของกระบวนการทำงานหรือโพรเซสต่าง ๆ ซึ่งเราต้องการมีการแตก Context Diagram ออกเป็นระดับย่อย หรือระดับลูก ต่อไปอีกเพื่ออธิบายรายละเอียดของงานต่าง ๆ ให้มากขิ่งขึ้น ซึ่งเราจะเรียกความสัมพันธ์แบบนี้ว่า Parent / Child หรือ ความสัมพันธ์แบบ แม่ / ลูก โดยละดับของ DFD ที่แตกต่างจาก Context Diagram จะเป็น DFD Level 1 และขณะเดียวกัน ถ้ามีการแตกโพรเซสย่อยของ DFD Leve1 1 ต่อไปอีก DFD ที่ย่อยลงไปจะเป็น DFD Leve1 2 ……ดังแสดงในรูปตัวอย่าง
รูปที่ 9 แสดงการแยกโพรเซสย่อย
3. การกำหนดหมายเลขโพรเซส
การที่แผนภาพการไหลของข้อมูล (DFD) ประกอบไปด้วยระดับของข้อมูลต่าง ๆ ทำให้เกิดกระบวนการย่อย ๆ มากมาย การกำหนดหมายเลขของโพรเซสแต่ละโพรเซส หรือ ระบบย่อยแต่ละระบบอย่างมีระเบียบแผนที่แน่นอนจะเป็นการป้องกันความสับสนในการเขียนได้ อธิบายได้ดังรูปตัวอย่าง
รูปที่ 10 แสดงการกำหนดหมายเลข DFD แต่ละระดับ
4. กฏความสมดุล
เมื่อมีการแตกโพรเซสออกตามความสัมพันธ์แบบ แม่กับลูก จะมีกฎอีกข้อที่ควรทราบนั่นคือ ความสมดุล DFD ในระดับแม่จะต้องสมดุลกับ DFD ในระดับลูก ซึ่งหมายความว่าข้อมูลขาเข้ากับผลลัพธ์ในระดับลูกจะต้องเหมือนกันในระดับแม่ จำนวนกระแสที่วิ่งเข้าและออกจากโพรเซสแม่ จะต้องเท่ากันกับกระแสข้อมูลที่วิ่งเข้าในระดับลูก ความสมดุลนี้ไม่รวมข้อมูลที่วิ่งอยู่ภายใน DFD ระดับลูก และไม่รวมข้อมูลที่วิ่งเข้าไฟล์ หรือออกจากไฟล์ด้วย ทั้งนี้เพราะข้อมูลที่วิ่งเข้าอยู่ภายใน DFD หนึ่งๆ จะเป็นข้อมูลภายในของแผนภาพนั้นๆ ไม่เกี่ยวกับ DFD ในระดับแม่
รูปที่ 11 แสดงกฎความสมดุลของ DFD ที่มีความสัมพันธ์แบบแม่กับลูก
5. การแตกลูกหลานมากน้อยแค่ไหนที่จำเป็น
เมื่อไรการแตกลูกหลานจะสิ้นสุด ปกติแล้วที่เกิดขึ้นเสมอ ๆ ในการแตกลูกหลานคือ แตกลูกหลานไม่เพียงพอ ถ้าพบว่าโพรเซสบางอย่างไม่สามารถตั้งชื่อที่เหมาะสมได้ อาจจะต้องแยกย่อยลงไปอีก ถ้าโพรเซสที่เขียนแล้วมีข้อมูลวิ่งเข้ามาและข้อมูลวิ่งออกไปมากมายแสดงว่า เราควรจะแตกโพรเซสนั้นย่อยลงไปอีก ถ้าโพรเซสทำหน้าที่มากกว่าหนึ่งแสดงว่าควรจะแยกย่อยลงไปอีก ถ้าโพรเซสทำหน้าที่มากกว่าหนึ่งแสดงว่าควรจะแยกย่อยลงอีก
ถ้าไม่แน่ใจว่าการแตกแยกย่อยนั้นเพียงพอหรือไม่ก็ลองเขียนคำอธิบายโพรเซสนั้นๆ เป็นซูโดโตด (Pseudocode) หรือเขียนเป็นประโยคโครงสร้างให้ได้ภายในครึ่งหน้ากระดาษ หรือเขียนโปรแกรมโคบอลให้ได้ภายในครึ่งหน้ากระดาษ แสดงว่าการแตกแยกย่อยควรจะเพียงพอแล้ว
โดยทั่วไป DFD มักจะมีโพรเซสทั้งหมด 2 -7 โพรเซส โดยมีเลขที่กำกับไว้ด้วย แต่ละโพรเซสทำงานของตัวเองแยกจากกัน ปัญหาของการเขียนโพรเซสคือ ทำอย่างไรจึงจะ "แบ่ง" งานออกจากกันได้ การแบ่งจำนวนงานนั้นไม่มีคำตอบว่า "ถูกหรือผิด" ที่แน่นอนตายตัว แต่คำตอบหนึ่งอาจจะดีกว่าอีกคำตอบหนึ่งก็ได้ เราอาจจะแบ่งการทำงานใหม่ซึ่งจะทำให้ระบบนั้นดีขึ้นหรือเลวลง
การแบ่งจำนวนโพรเซสใน DFD ไม่มีกฏเกณฑ์ตายตัว การแบ่งจำนวนนี้ขึ้นอยู่กับ "ความชำนาญหลังจากที่มีประสบการณ์มากพอสมควร" ถ้าเทียบกับการเขียนโปรแกรมก็เหมือนกับการแยกเขียนเป็นโปรแกรมย่อยนั่นเอง ซึ่งจะต้องอาศัยประสบการณ์ในการเขียนโปรแกรมมาช่วยมากทีเดียว ปัญหาของการแบ่งงานก็คือ ขอบเขตของงานนั่นเอง
ลองสังเกตดูทิศทางกระแสข้อมูลระหว่าง DFD สองระดับดังรูปที่ 5.11 จะเห็นว่าทิศทางของลูกศรจะไม่ตรงกันคือวิ่งไปคนละทิศคนละทาง แต่ถึงอย่างไรก็ตามความหมายของกระแสข้อมูลยังคงถูกต้องทุกประการ การเขียนทิศทางกระแสของข้อมูลมีกฎว่า เขียนอย่างตรงไปตรงมา ตราบใดที่กระแสข้อมูลยังถูกต้อง แต่ถ้าจะให้ดีก็ต้องพยายามให้อินพุตไหลเข้ามาทางซ้ายมือด้านบนและผลลัพธ์ไหลออกมาทางล่างสุดของหน้ากระดาษ และให้เขียนโยงไปให้ถึงริมกระดาษ เพื่อจะได้สังเกตความสมดุลได้ง่าย สำหรับข้อมูลที่วิ่งระหว่างโพรเซส หรือวิ่งเข้าออกจากไฟล์ที่สร้างขึ้นมาใหม่ใน DFD ระดับล่างนั้นจำเป็น เพราะว่าจะเป็นอินพุตของโพรเซสต่างๆ
การทำความเข้าใจ DFD ในระดับลูกแม่และลูกมีความสำคัญมากก่อนที่เราจะแตกลูกหลานต่อไปอีก ซึ่งก็จะให้หลักการอันเดียวกันกับที่กล่าวมาแล้วในตัวอย่างทั้งหมด ถ้าเข้าใจการแยกย่อยในระดับแม่ลงมาหาลูก และการทำความสมดุลกันก็จะสามารถเขียน DFD อันต่อไปได้ง่าย
|