วันจันทร์ที่ 7 กรกฎาคม พ.ศ. 2551

สืบเนื่องจาก Context Diagram และ Data Flow Diagram

ครูขอทำความเข้าใจกับพวกเราเรื่องของ ลำดับขั้น หรือ การเรียกชื่อของ DFD และ Context Diagram นะคะ

ในชั้นเรียนนี้ให้เราเข้าใจตรงกันว่า Context Diagram คือ DFD level 0 แล้วจึงทำการแตก ออกเป็น DFD level 1 -> DFD level 2 -> DFD level 3 ต่อไป โดยที่ในชั้นเรียนของเราจะไม่ทำถึงขั้น level 4 นะจ้ะ แต่หากในการทำงานจริงจะต้องแตกออกไป ก็จะต้องทำจนกว่าจะเสร็จสิ้นกระบวนการนะคะ

------- ต่อไป เป็น Part ของ Lecture เรื่อง แผนภาพการไหลข้อมูล (Data Flow Diagram) ---------
1. แผนภาพการไหลของข้อมูลระดับสูงสุด (Context Diagram)
การเขียนแผนภาพการไหลของข้อมูลเราจะเขียนเป็นระดับชั้น (Level) ซึ่งระดับแรกสุดจะเป็นภาพรวมของระบบงานทั้งหมด ยังไม่มีรายละเอียดของกิจกรรมการดำเนินงานต่างๆแผนภาพการไหลของข้อมูลระดับแรกและระดับสูงสุดนี้จะได้หมายเลขระดับชั้นเป็น 0 หรือเรียกว่า Data Flow Diagram Level 0 แต่ส่วนใหญ่จะนิยมเรียก DFD Level 0 นี้ว่า "Context Diagram"




Context Diagram ของระบบงานใดๆ จะแสดงเฉพาะชื่อระบบงาน แหล่งข้อมูลภายนอกและเส้นทางการไหลของข้อมูลทั้งหมด โดยยังไม่มีการแสดงรายละเอียดในระบบงานและไม่มีการแสดงแหล่งเก็บข้อมูล (Data Store) แต่ไม่ได้หมายความว่าระบบนี้ไม่มีการเก็บข้อมูล แต่การเก็บข้อมูลจะอยู่ภายในระบบหรือในโพรเซส ดังนั้นจึงไม่ปรากฏการเก็บข้อมูล (Data Store) อยู่ใน DFD ระดับนี้ แต่การเก็บข้อมูลจะปรากฏอยู่ใน DFD ระดับลึกลงไป หรืออยู่ในชั้นลูกหลาน ต่อ ๆ ไป

2. ความสัมพันธ์ระหว่าง Parent และ Child


เนื่องจาก Context Diagram เป็นเพียงการแสดงภาพรวมของระบบงานและแหล่งข้อมูลภายนอกเท่านั้น ยังไม่มีการแสดงรายละเอียดของกระบวนการทำงานหรือโพรเซสต่าง ๆ ซึ่งดังนั้นจึงต้องมีการแตก Context Diagram ออกเป็นระดับย่อย หรือระดับลูก ต่อไปอีกเพื่ออธิบายรายละเอียดของงานต่าง ๆ ให้มากยิ่งขึ้น ซึ่งจะเรียกความสัมพันธ์แบบนี้ว่า Parent / Child หรือ ความสัมพันธ์แบบ แม่ / ลูก โดยละดับของ DFD ที่แตกต่างจาก Context Diagram จะเป็น DFD Level 1 และขณะเดียวกัน ถ้ามีการแตกโพรเซสย่อยของ DFD Leve1 1 ต่อไปอีก DFD ที่ย่อยลงไปจะเป็น DFD Leve1 2 ……ดังแสดงในรูปตัวอย่าง


3. การกำหนดหมายเลขโพรเซส


การที่แผนภาพการไหลของข้อมูล (DFD) ประกอบไปด้วยระดับของข้อมูลต่าง ๆ ทำให้เกิดกระบวนการย่อย ๆ มากมาย การกำหนดหมายเลขของโพรเซสแต่ละโพรเซส หรือ ระบบย่อยแต่ละระบบอย่างมีระเบียบแผนที่แน่นอนจะเป็นการป้องกันความสับสนในการเขียนได้ อธิบายได้ดังรูปตัวอย่าง


4. กฏความสมดุล
เมื่อมีการแตกโพรเซสออกตามความสัมพันธ์แบบ แม่/ลูก จะมีกฎอีกข้อที่ควรทราบนั่นคือ ความสมดุล DFD ในระดับแม่จะต้องสมดุลกับ DFD ในระดับลูก ซึ่งหมายความว่าข้อมูลขาเข้ากับผลลัพธ์ในระดับลูกจะต้องเหมือนกันในระดับแม่ จำนวนกระแสที่วิ่งเข้าและออกจากโพรเซสแม่ จะต้องเท่ากันกับกระแสข้อมูลที่วิ่งเข้าในระดับลูก ความสมดุลนี้ไม่รวมข้อมูลที่วิ่งอยู่ภายใน DFD ระดับลูก และไม่รวมข้อมูลที่วิ่งเข้าไฟล์ หรือออกจากไฟล์ด้วย ทั้งนี้เพราะข้อมูลที่วิ่งเข้าอยู่ภายใน DFD หนึ่งๆ จะเป็นข้อมูลภายในของแผนภาพนั้นๆ ไม่เกี่ยวกับ DFD ในระดับแม่


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


--------------------------------------------


คาดว่า น่าจะ OK นะคะ อย่างไรก็ตามสามารถพูดคุยกันได้อีก



6 ความคิดเห็น:

Gift กล่าวว่า...

อ่อออออออออออออ....

มันเป็นอย่างนี้นี่เอง

ขอบคุณค่ะ...^^

Pok กล่าวว่า...

อืมๆ สุดยอด

Tui_ER กล่าวว่า...

จารย์


ยาวจัง


ขี้เกียจอ่านง่ะ


ขอเม้นก่อน ไว้เม้นเสร็จ ค่อยอ่าน 555+


^^

ใคร กล่าวว่า...

ขอบคุณค่ะอาจารย์

ใคร กล่าวว่า...

ขอบคุณค่ะอาจารย์

ApirakKnot กล่าวว่า...

Lv.0ถ้าข้อมูลมากเกินนิยมเขียนแยกมั้ยครับ