6.DFD to write

   
 


 

 

Home

Board-Forum-Diary

Administrator

ASP

Business Manage

Computer Basic

Computer Hardware

Computer Software

Computer Tip

Computer Virus

Contact

Database

Firefox

Gallery

Game

HI5 ME!

Link

Project Demo

System Analysis

=> 1.basic

=> 2.important

=> 3.Life Cycle

=> 4.Survey System

=> 5.DFD components

=> 6.DFD to write

=> 7.DFD create

=> 8.Data Dictionary

=> 9.Process Description

=> 10.Flowchart

=> 11.Design Output

=> 11.Selection Output

=> 12.Design Print Report

=> 13.Design Output Monitor

=> 14.Design Input

=> 15.Design Database

=> 16.Security System

=> 17.Repeat System

=> 18.Prototype

=> 19.Type Prototype

=> 20.Line Dev Prototype

=> 21.+ & - for Prototype

=> 22.Check Plan

Website

Food & Drink

SkyDrive

MS-word

MS-excel

Mobile

Drug

Clock

Car & Motorcycle

Download

 


     
 

รายละเอียดการเขียนแผนภาพการไหลข้อมูล

เนื้อหา
• รายละเอียดสำหรับการเขียนแผนภาพการไหลของข้อมูล
• ความสัมพันธ์ระหว่าง 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 อันต่อไปได้ง่าย

 
 

Total, there have been 124923 visitors (304840 hits) on this page!