یک مدل جریان دادهیک روش شهودی برای نشان دادن چگونگی پردازش دادهها توسط یک سیستم است. در سطح تحلیلی، باید برای مدلسازی نحوه پردازش دادهها در سیستمهای موجود استفاده شوند.
پس از انتشار کتاب تحلیل سیستمهای ساختاری دمارکومدل جریان داده به طور فزایندهای در تحلیل مورد استفاده قرار گرفته است. آنها بخشی ذاتی از رویکرد ساختاری هستند که از این کار توسعه یافته است. نمادهای استفاده شده در این مدلها نمایانگر پردازش عملکرد (مستطیلهای گرد)، ذخیرهسازی داده (مستطیلها) و حرکت داده بین عملکردها (پیکانهای برچسبگذاری شده) هستند.
چرا DFD هنوز برای توسعه نرمافزار مفید است؟
اگرچه مدلسازی مبتنی بر جریان دادهبه عنوان یک فناوری منسوخ شده توسط برخی از مهندسان نرمافزار در نظر گرفته میشود، اما هنوز یکی از نمادهای تحلیل نیازمندیهای پرکاربرد است. اگرچه نمودارهای جریان داده (DFD) بخشهای رسمی UML نیستند، اما میتوانند برای تکمیل نمودارهای UML و ارائه بینش اضافی در مورد نیازمندیها و فرآیندهای سیستم استفاده شوند.
مدل جریان داده ارزشمند است زیرا پیگیری و ثبت نحوه حرکت دادههای مربوط به یک فرآیند خاص در سیستم به تحلیلگران کمک میکند تا درک کنند چه اتفاقی در حال وقوع است. مزیت نمودارهای جریان داده این است که، برخلاف برخی دیگر از نمادهای مدلسازی، آنها ساده و شهودی هستند. معمولاً میتوان آنها را به کاربران بالقوه سیستم که ممکن است در تحلیل و اعتبارسنجی نیازمندیها درگیر باشند، توضیح داد.
چرا DFD؟
DFD به صورت گرافیکی عملکردها یا فرآیندهایی را که دادهها را بین یک سیستم و محیط آن و همچنین بین اجزای یک سیستم ضبط، دستکاری، ذخیره و توزیع میکنند، نمایش میدهد. نمای بصری آن را به ابزاری خوب برای ارتباط بین کاربر و طراح سیستم تبدیل میکند. ساختار DFD اجازه میدهد که از یک نمای کلی شروع کرده و آن را به یک سلسلهمراتب از نمودارهای دقیق گسترش دهیم. DFD به دلایل زیر اغلب مورد استفاده قرار گرفته است:
- جریان منطقی اطلاعات سیستم
- تعیین نیازمندیهای ساخت فیزیکی سیستم
- سادگی نمادگذاری
- تعیین نیازمندیهای سیستمهای دستی و خودکار
DFD یک فرآیند تجزیه از بالا به پایین است
مدلسازی جریان داده یک فرآیند «از بالا به پایین» است. ابتدا کل فرآیند تأمین را تحلیل کنید. سپس زیر فرآیندها به صورت تجزیه از بالا به پایین تحلیل میشوند.
DFD میتواند برای مدلسازی سیستمها یا نرمافزار در هر سطحی از انتزاع استفاده شود. همانطور که قبلاً ذکر شد، DFD میتواند به سطوحی تقسیم شود که نمایانگر جریان فزاینده اطلاعات و جزئیات عملکردی هستند. شمارههای سطح در DFD شامل 0، 1، 2 یا بالاتر است. در اینجا، خواهیم دید که سه سطح اصلی در نمودار جریان داده وجود دارد، یعنی، سطح 0 DFD، سطح 1 DFD و سطح 2 DFD.

نمودار زمینه — سطوح DFD
نمودار زمینه (که به عنوان سطح 0 DFD نیز شناخته میشود)، تمام نیازمندیهای نرمافزاری را به عنوان یک حباب نمایش میدهد، با دادههای ورودی و خروجی که توسط پیکانهای ورودی و خروجی نمایش داده میشوند.
سپس سیستم به یک DFD با حبابهای متعدد تجزیه میشود. بخشهای سیستم که توسط هر حباب نمایان شدهاند، سپس به نمودارهای جریان داده با جزئیات فزاینده تجزیه و ثبت میشوند. این فرآیند میتواند در سطوح لازم تکرار شود تا زمانی که برنامه مورد نظر به طور کامل درک شود.
تعداد ورودیها و خروجیها بین سطوح باید حفظ شود، مفهومی که به عنوان سطحبندی دمارکو شناخته میشود. بنابراین، اگر حباب «A» دارای دو ورودی X1 و X2 و یک خروجی Y باشد، نمودار جریان دادههای زیر سطحی که نمایانگر DFD سطح بالای «A» است باید دقیقاً دو ورودی خارجی و یک خروجی خارجی داشته باشد.
در DFD سطح 1، نمودار زمینه به چندین فرآیند تجزیه میشود. در این سطح، ما عملکردهای اصلی سیستم را برجسته کرده و فرآیند سطح بالای DFD سطح 0 را به زیر فرآیندها تجزیه میکنیم تا جزئیات فعالیتهای پردازش را نمایان کنیم.
نمودار زمینه (سطح 0 DFD) — نمودار زمینه DFD نموداری است که نمای کلی از سیستم و تعامل آن با بقیه «جهان» را نمایش میدهد.
نمودار جریان داده سطح 1 — DFD سطح 1 نمای دقیقتری از سیستم نسبت به نمودار زمینه ارائه میدهد و زیر فرآیندهای اصلی و ذخیرهسازی دادههایی را که کل سیستم را تشکیل میدهند، نشان میدهد.
سطح 2 (یا پایینتر) — یک مزیت عمده فناوری مدلسازی جریان داده این است که پیچیدگی دقیق سیستمهای دنیای واقعی میتواند در سطح انتزاعی از طریق فناوریای به نام «سطحبندی» مدیریت و مدلسازی شود. برخی از عناصر هر نمودار جریان داده میتوانند به مدل دقیقتری در سطح پایینتر در سلسلهمراتب تجزیه شوند.
سطوح DFD — مثال— سیستم سفارش غذا
سطح 0
همچنین به عنوان نمودار زمینهطراحی شده است تا نمایی انتزاعی باشد و سیستم را به عنوان یک فرآیند واحد با رابطهاش با موجودیتهای خارجی نشان دهد.
- نمودار زمینه باید در یک صفحه جا بگیرد.
- نام فرآیند در نمودار زمینه باید نام سیستم اطلاعاتی باشد.
- به عنوان مثال، سیستم نمرهدهی، سیستم پردازش سفارش، سیستم ثبتنام.

در DFD سطح 1، نمودار زمینه به چندین فرآیند تجزیه میشود. در این سطح، ما عملکردهای اصلی سیستم را برجسته کرده و فرآیند سطح بالای DFD سطح 0 را به زیر فرآیندها تجزیه میکنیم تا جزئیات فعالیتهای پردازش را نمایان کنیم.
سطح 1 — سیستم سفارش غذا
در DFD سطح 1، نمودار زمینه به چندین فرآیند تجزیه میشود. در این سطح، ما عملکردهای اصلی سیستم را برجسته کرده و فرآیند سطح بالای DFD سطح 0 را به زیر فرآیندها تجزیه میکنیم تا جزئیات فعالیتهای پردازش را نمایان کنیم.

اگر یک فرآیند با جریان داده زیاد که بین چند موجودیت خارجی ارتباط دارد وجود داشته باشد، میتوانیم ابتدا آن فرآیند خاص و موجودیتهای خارجی مرتبط را به یک نمودار جداگانه مشابه نمودار زمینه استخراج کنیم، قبل از اینکه فرآیند را به یک سطح جداگانه از DFD تصفیه کنیم؛ و به این ترتیب میتوانید اطمینان حاصل کنید که بین آنها سازگاری بیشتری وجود دارد.
نمادهای DFD
وجود دارد چهار نماد پایهکه برای نمایش یک نمودار جریان داده استفاده میشود.
فرآیند
یک فرآیند دادههای ورودی را دریافت کرده و خروجی با محتوای یا فرم متفاوت تولید میکند. فرآیندها میتوانند به سادگی جمعآوری دادههای ورودی و ذخیرهسازی در پایگاه داده باشند، یا میتوانند پیچیده باشند مانند تولید گزارشی که شامل فروش ماهانه تمام فروشگاههای خردهفروشی در منطقه شمالغرب است.
هر فرآیند نامی دارد که عملکرد آن را شناسایی میکند.
نام شامل یک فعل است که به دنبال آن یک اسم مفرد میآید.
مثال:
- پرداخت را اعمال کنید
- محاسبه کمیسیون
- تأیید سفارش
نوتیشن DFD
- یک مستطیل گرد نشاندهنده یک فرآیند است
- به فرآیندها شناسههایی داده میشود تا ارجاع به آنها آسانتر باشد

مثال فرآیند

جریان داده
یک جریان داده مسیری است برای حرکت دادهها از یک بخش سیستم اطلاعاتی به بخش دیگر. یک جریان داده ممکن است نمایانگر یک عنصر داده واحد مانند شناسه مشتری باشد یا میتواند نمایانگر مجموعهای از عناصر داده (یا یک ساختار داده) باشد.
مثال:
- اطلاعات_مشتری (نام خانوادگی، نام، شماره تأمین اجتماعی، شماره تلفن و غیره)
- اطلاعات_سفارش (شناسه سفارش، شماره کالا، تاریخ سفارش، شناسه مشتری و غیره).
مثال جریان داده:

نوتیشن
- خطوط مستقیم با پیکانهای ورودی جریان داده ورودی هستند
- خطوط مستقیم با پیکانهای خروجی جریانهای داده خروجی هستند
توجه داشته باشید که:
زیرا هر فرآیند دادهها را از یک فرم به فرم دیگر تغییر میدهد، حداقل یک جریان داده باید وارد و یک جریان داده باید از هر نماد فرآیند خارج شود.
ذخیرهسازی داده
یک ذخیرهسازی داده یا مخزن داده در یک نمودار جریان داده برای نمایش وضعیتی استفاده میشود که سیستم باید دادهها را نگهدارد زیرا یک یا چند فرآیند نیاز به استفاده از دادههای ذخیرهشده در زمان بعدی دارند.
نوتیشن
- دادهها میتوانند در ذخیرهسازی داده نوشته شوند، که با یک پیکان خروجی نشان داده میشود
- دادهها میتوانند از یک ذخیرهسازی داده خوانده شوند، که با یک پیکان ورودی نشان داده میشود.
- مثالها عبارتند از: موجودی، حسابهای دریافتی، سفارشات و پرداختهای روزانه.

مثال ذخیرهسازی داده

توجه داشته باشید که:
- یک ذخیرهسازی داده باید به یک فرآیند با یک جریان داده متصل باشد.
- هر ذخیرهسازی داده باید حداقل یک جریان داده ورودی و حداقل یک جریان داده خروجی داشته باشد (حتی اگر جریان داده خروجی یک پیام کنترل یا تأیید باشد).
موجودیت خارجی
یک موجودیت خارجی یک شخص، بخش، سازمان خارجی یا سیستم اطلاعاتی دیگر است که دادهها را به سیستم ارائه میدهد یا خروجیها را از سیستم دریافت میکند. موجودیتهای خارجی اجزای خارج از مرزهای سیستمهای اطلاعاتی هستند. آنها نشاندهنده نحوه تعامل سیستم اطلاعاتی با دنیای خارج هستند.
- یک مستطیل نمایانگر یک موجودیت خارجی است
- آنها یا دادهها را تأمین میکنند یا دادهها را دریافت میکنند
- آنها دادهها را پردازش نمیکنند
نوتیشن
- یک مشتری که یک سفارش ارسال میکند و سپس صورتحسابی از سیستم دریافت میکند
- یک فروشنده فاکتوری صادر میکند

مثال موجودیت خارجی

توجه داشته باشید که:
- موجودیتهای خارجی همچنین به عنوان ترمیناتورها نامیده میشوند زیرا آنها مبدأ داده یا مقصد نهایی هستند.
- یک موجودیت خارجی باید از طریق یک جریان داده به یک فرآیند متصل باشد.
قانون جریان داده
یکی از قوانین برای توسعه DFD این است که تمام جریانها باید با یک مرحله پردازش شروع و در آن پایان یابند. این کاملاً منطقی است، زیرا دادهها نمیتوانند به تنهایی بدون پردازش تغییر کنند. با استفاده از قانون سرانگشتی، شناسایی جریانهای داده غیرقانونی و اصلاح آنها در یک DFD بسیار آسان است.
توصیف نادرست / درست


یک موجودیت نمیتواند دادهها را به موجودیت دیگری ارائه دهد مگر اینکه پردازشی انجام شده باشد.


دادهها نمیتوانند بهطور مستقیم از یک موجودیت به یک داستان داده منتقل شوند مگر اینکه پردازش شوند.


دادهها نمیتوانند بهطور مستقیم از یک انبار داده منتقل شوند مگر اینکه پردازش شوند.


دادهها نمیتوانند بهطور مستقیم از یک انبار داده به انبار داده دیگری منتقل شوند مگر اینکه پردازش شوند.
سایر اشتباهات رایج در DFD
دسته دوم اشتباهات DFD زمانی به وجود میآید که خروجیها از یک مرحله پردازش با ورودیهای آن مطابقت نداشته باشند و میتوان آنها را به صورت زیر طبقهبندی کرد:
- چالههای سیاه — یک مرحله پردازش ممکن است جریانهای ورودی داشته باشد اما هیچ جریان خروجی نداشته باشد.
- معجزات — یک مرحله پردازش ممکن است جریانهای خروجی داشته باشد اما هیچ جریان ورودی نداشته باشد.
- چالههای خاکستری — یک مرحله پردازش ممکن است خروجیهایی داشته باشد که بیشتر از مجموع ورودیهای آن باشد.

ابزار UML رایگان
- سازنده آنلاین نمودار جریان داده
- چگونه نمودار جریان داده (DFD) ایجاد کنیم؟
- نرمافزار نمودار جریان داده (DFD)
نوتیشنهای مختلف DFD
This post is also available in Deutsch, English, Español, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.