بررسی روش تحلیل سیستم [بخش اول]

بررسی روش تحلیل سیستم [بخش اول]

نوشته شده توسط: محمد جعفر جعفری
تاریخ انتشار: ۱۴ اردیبهشت ۱۳۹۸
آخرین بروزرسانی: ۲۲ اسفند ۱۴۰۲
زمان مطالعه: 29 دقیقه
۳.۷
(۳)

مقدمه

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

ببینید، فرض کنید صبح روز پنجشنبه از خواب بیدار می‌شوید و می‌خواهید تمامی کارهای عقب مانده طول هفته را انجام دهید تا در روز جمعه بدون استرس به استراحت یا تفریح بپردازید و شنبه بعد بتوانید اول هفته خوبی را بدون استرس کارهای انجام نشده شروع کنید. منظورم کارهای شخصی مانده است مثل دادن لباس‌ها به اتوشویی و پرداخت قبوض و دریافت کارت عابر بانک مفقود شده از بانک و درست کردن بوق ماشین و بردن ماشین به کارواش و تعویض هواکش سوخته دستشویی، روغن زدن به بلبرینگ کولر و رفتن به سلمانی و مرتب کردن خانه‌ای که در طول هفته فرصتی حتی برای بیرون گذاشتن آشغال‌ها برایش نگذاشته‌اید و… بله درست است که همه این اتفاقات همزمان رخ نمی‌دهد و اینکه قبوض را می‌توانید با *xxx# انجام دهید?، ولی این تبلیغ شرکت فلان و… نیست. فقط یک مثال است برای بیان موضوع. اگر بلافاصله پس از برخواستن از خواب شروع به انجام کارها کنید، می‌روید بانک و منتظر نوبت می‌شوید و بعد از اینکه نوبت شما شد، میبینید که کارت ملی خود را فراموش کردید و باید برگردید.

وقتی به کارواش می‌روید می‌بینید که اگر در ساعت دیگر می‌آمدید، می‌توانستید در زمان انتظار شسته شدن ماشین، به سلمانی آن طرف خیابان بروید. وقتی برای درست کردن بوق ماشین می‌روید می‌بینید که اگر اندازه گیری کرده بودید می‌توانستید هواکش دستشویی را از مغازه کناری بخرید و وقتی به اتوشویی میروید بسته شده و وقتی به خانه برمیگردید یادتان می‌افتد که برای روغنکاری کولر، روغندان خالی است و فراموش کردید روغن بخرید.

نخندید!!! به ظاهر احمقانه می‌رسد ولی چه کسی می‌تواند ادعا کند که درطول زندگی چنین اتفاقات ساده‌ای، یک روز او را خراب نکرده است. یا ادعا کند که پیش نیامده که مجبور شود با لباس نا مناسب به جلسه مهمی برود آن هم به دلیل بی‌برنامه بودن روز قبل برای آماده کردن لباس مناسب.
حال همین وضعیت را برای مسائل بزرگتر مثل درس خواندن برای کنکور یا برنامه ریزی سفر ده روزه درنظر بگیرید.

این مشکل در مسائل کامپیوتری، بسیار بزرگتر و بیشتر وجود دارد ولی به چشم نمی‌آید. با این حال در نتیجه کار بسیار موثر خواهند بود.
شاید بگویید کسانی را دیده‌اید که از همان ابتدای کار شروع به برنامه نویسی می‌کنند و بدون مشکل کارشان پیش می‌رود. بله، کسی که هر هفته در سفر است یا اصلا شغلش تور لیدر است، در ظاهر، بدون برنامه ریزی، سفر خود و خانواده‌اش را آغاز می کند ولی در واقع او آنقدر مهارت پیدا کرده است که در لحظه برنامه ریزی می کند و مهمتر اینکه او نیازی به آماده سازی و چیدن وسایل ندارد چون کوله اش همیشه آماده است و سبدی مخصوص دارد که تمامی وسایل مورد نیاز را در آن دارد و فقط کافی است که آن را در ماشین بگذارد. تازه این را هم درنظر بگیرید که برای یک تفریح نیمروز در پارک، و فقط برای برداشتن زیرانداز و یک هندوانه و چاقو و سینی، زمانی برای برنامه ریزی نمی‌گذارید و درواقع برنامه را فقط از ذهن خود می‌گذرانید. ولی مهمترین نکته این است که اگر مثلا بخواهید سه روز بروید لب دریا، هم میتوانید بدون برنامه ریزی سوار ماشین شوید و بروید یکی از شهرهای شمالی و لب ساحل ویلا بگیرید و… ولی وقتی همین سفر را با برنامه درست انجام دهید چه می‌شود. وسایل مورد نیاز را بر میدارید. شهر مناسب را در زمان مناسب انتخاب می کنید(با توجه به پیش بینی وضع هوا و…) تا گرفتار سیل نشوید یا به دلیل طوفانی بودن دریا از شنا کردن یا قایق سواری محروم نشوید. با انتخاب مسیر مناسب گرفتار راه بندان نمی‌شوید. مجبور نمی‌شوید در روز تعطیل به دنبال لاستیک زاپاس سالم بگردید. وقتی تصمیم می‌گیرید شب در هوای آزاد بگذرانید می‌دانید که فراموش نکرده‌اید پشه بند را همراه خود بیاورید. و از این قبیل مسائل. پس می‌بینید که حتی اگر کاری، بدون تحلیل، انجام شدنی هم باشد، کفیت آن با تحلیل بسیار متفاوت خواهد بود. به خصوص در شرایط خاص.

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

بگذریم همه اینها مثالی بود فقط برای نشان دادن اهمیت تحلیل. ولی این را هم بگویم که تحلیل اصلا موجود ترسناکی نیست بلکه کاملا دوست داشتنی است. بله دوستداشتنی چون درصورتی که بدانیم چگونه رفتار کنیم، بسیار کمک حال خواهد بود. یک اسب را درنظر بگیرید، اگر ندانید با آن چگونه رفتار کنید، موجب آزار شما خواهد شد و حتی اگر آن را عصبانی کنید بسیار خطرناک و حتی کشنده است. ولی اگر بلد باشید، به شما سواری می‌دهد، بار شما را حمل می‌کند و حتی دوست خوبی خواهد شد(حیوان نجیبی است?). تحلیل هم دقیقا همین است.

خوب، حال سوال اینجاست که از کجا شروع کنیم؟

پاسخ، خود شمایید!
بله باید از خودتان شروع کنید?. به مثال اول(صبح روز پنجشنبه) دقت کنید. شما به طور ذاتی می‌دانید که باید برنامه ریزی کنید و اگر اطلاعات لازم را داشته باشید(مدارک لازم برای بانک، ساعت کار اتوشویی، محل کارواش و سلمانی، و اینکه روغن در خانه دارید یا خیر) خود به خود می‌توانید برنامه ریزی کنید. اگر تعداد کارها کم باشد ذهنی برنامه ریزی می‌کنید و اگر زیاد باشد، روی برگه‌ای می‌نویسید تا چیزی از قلم نیفتد و برنامه دقیق باشد.
گاهی مواقع که تعداد کارها خیلی کم باشد همینطور شروع به کار می‌کنید و به تمامی کارها می‌رسید ولی در همان شرایط هم اگر برنامه درست بریزید زمان بیشتری خواهید داشد و فرصت خواهید داشت با نامزد خود یک مکالمه طولانی داشته باشید(البته برای تعرفه تلفن ارزان یا رایگان هم قبلا باید برنامه ریزی کرده باشید!?).

آیا متوجه اتفاقی که افتاد شدید؟ بله من تحلیل را با اتفاقات روزانه زندگی مقایسه کردم و مثال زدم. چون فقط همین است. “شما” فقط همین!!!

تحلیل چیز خاصی نیست، فقط برنامه ریزی و پیدا کردن راه حل برای مسائل درهم است. شما باید فقط از مغز خود کمک بگیرید، مغز شما برای حل کردن تمامی مشکلات طراحی شده است. ولی همانطور که برای تقویت عضلات خود از تغذیه و تمرینات ورزشی استفاده می‌کنید، برای منظم شدن مغزتان هم باید از تغذیه صحیح و تمرینات فکری استفاده کنید. البته در مورد مغز، تجربه از اهمیت بالایی برخوردار است.
پس تمرین دادن مغز و تقویت قوه تحلیل، فقط مختص مسائل کامپیوتری نیست، بلکه در کل زندگی کارساز خواهد بود.اگر قدرت تحلیل مغز شما کافی باشد و در موردی، تجربه یا اطلاعات کافی داشته باشید می‌توانید راه حلی پیدا کنید.
ما در این مباحث، از روش تقویت منطق مغز با مثال‌های دیتابیسی استفاده می‌کنید در نتیجه بیشتر به درد کسانی که تمایل دارند در مسائل کسب و کار بهتر عمل کنند می‌خورد خصوصا برای دنیای دیجیتال.
برگردیم به سراغ “شما” یا همان راه حل‌های مغزتان.تا به حال به دفترچه تلفن و یا تقویم‌های رومیزی دقت کرده‌اید؟ در دفترچه تلفن برای اینکه به دنبال شماره تلفن آقا یا خانم تابنده بگردید، نیازی نیست کل دفترچه تلفن را بگردید، به سراغ صفحه {ت} می‌روید و فقط در آن صفحه به دنبال فامیلی تابنده می‌گردید، یا برای یافتن تاریخ هفتم دی، نیازی نیست کل تقویم جستجو شود، ابتدا ماه دی را پیدا کرده سپس به دنبال روز هفتم می‌گردیم.این راه حل، برای مغز شما کاملا بدیهی است. خبر خوش اینکه این روش، در واقع همان ایندکس از نوع Clustered در پایگاه داده است. به همین سادگی. پس Clustered Index اصلا چیز پیچیده ای نیست.
اگر کتابی بنویسید که ده فصل دارد و هر فصل عنوانی خواص دارد، آیا برای آن کتاب یک فهرست شامل نام فصل و شماره صفحه شروع فصل، تهیه نمی‌کنید؟ این همان ایندکس معمولی است.
اگر بخواهید در یک واژه نامه بزرگ به دنبال واژه کامروا بگردید، چه می‌کنید؟ ۱۰۰ صفحه، ۱۰۰ صفحه حرکت می‌کنید و می‌بینید که در ۱۰۰ صفحه اول، آخرین واژه، “پاکنام” است پس ۱۰۰ صفحه به جلو می‌روید. ادامه می‌دهید تا به صفحه‌ای می‌رسید که آخرین واژه آن “فرهیخته” است پس احتمال دارد که در ۷۵ صفحه جلوتر به حرف “ک” برسید. از اینجا حرکت خود را آرامتر می‌کنید. و مثلا ۳۰ صفحه ۳۰ صفحه جلو می‌روید. تبریک!!! شما دارید از الگوریتم Chunking استفاده می‌کنید.
اگر در یک کتاب ۴۰۰۰ صفحه‌ای، به دنبال صفحه ۱۲۵۹ بگردید چه کار می‌کنید؟ مشخص است ابتدا یک قسمت از کتاب را باز می‌کنید، حالا کتاب دو نیم است، اگر صفحه آمده بزرگتر از ۱۲۵۹ بود، صفحه مورد نظر باید در نیمه اول کتاب باشد و گرنه، در نیمه دوم. حالا مجددا همینکار را در نیمه مورد نظر انجام می‌دهید تا زمانی که به صفحه مورد نظر برسید. این الگوریتم جستجوی دودویی خواهد بود.

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

حالا به نکته دیگری می‌پردازیم

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

باز هم نخندید چون بسیاری از خطاهای کامپیوتری که به آن باگ می‌گویند، در اثر همین اشتباهات ساده رخ می‌دهند. حتی برای حرفه‌ای ترین و باتجربه ترین برنامه نویسان. البته شاید خنده شما به این خاطر باشد که دوستی دارید که از این ربات هم گیج تر است. خوب این هم باگ انسانی است?.
اگر به فکر ربات‌های هوشمند یا هوش مصنوعی هستید باید بدانید که برنامه‌های هوش مصنوعی هم توسط دیگران نوشته شده اند و کامپیوتر فقط آنها را اجرا می‌کند. همین!

برگردیم سراغ اصل ماجرا، تحلیل

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

  •  گواهی پایان دوره شما حاضر است، لطفا جهت دریافت گواهی خود به موسسه مراجعه فرمایید
  •  گواهی پایان دوره شما به علت نواقص موجود در پرونده شما صادر نمی‌شود لطفا جهت تکمیل پرونده خود به موسسه مراجعه نمایید
  •  گواهی پایان دوره شما به دلیل بدهی صادر نخواهد شد لطفا جهت تسویه حساب به دفتر موسسه مراجعه نمایید
  •  گواهی پایان دوره شما به دلیل عدم مراجعه تا یک ماه پس از صدور، به بایگانی منتقل شده است

لیست افراد و شماره‌هایی که قرار است هر کدام از این پیام‌ها به آن ارسال شود نیز موجود است. شما قرار است این اطلاعات را هر ترم در یک فایل اکسل به صورت جدول ذخیره کنید تا یک نرم افزار در یک تاریخ و ساعت مشخص، ارسال را انجام دهد. چه می‌کنید؟
منطقا اولین طراحی که به ذهن می رسد به اینصورت است:ولی اگر دقت کنید میبینید که متن‌های پیام که طول هریک هم زیاد است، خیلی تکرار می‌شود. با کمی تفکر بیشتر، مغزتان پیشنهادی شبیه تصویر زیر را می‌دهد ولی شاید نمی‌داند چطور آن را پیاده سازی کند:ممکن است مغز شما از همان ابتدا راه حل دوم را پیشنهاد دهد. یا ممکن است روش پیاده سازی راه حل دوم را هم پیشنهاد دهد. باید بگویم که به این چیزها اهمیت ندهید، با تمرین و تجربه و آموزش، همه چیز درست خواهد شد.به هر حال راه حل سیستمی این مسئله کوچک به اینصورت است:مشاهده می‌کنید که تکرار شدن عدد {۱} بجای عبارت {گواهی پایان دوره شما حاضر است، لطفا جهت دریافت گواهی خود به موسسه مراجعه فرمایید} خیلی به صرفه‌تر است. البته وقتی دقیقتر ببینید متوجه می‌شوید که عبارت {گواهی پایان دوره شما به دلیل عدم مراجعه تا یک ماه پس از صدور، به بایگانی منتقل شده است} تکرار نشده است و آوردن کد {۴} باعث اضافه کاری می‌شود. ولی شما نباید روال‌های استثناء داشته باشید و می‌بینید که در کل، این روش بهینه است.
به کاری که در طراحی اولین جدول انجام دادید می‎گویند طراحی پایگاه داده یا طراحی دیتابیس. به انجام مراحل بعدی هم می‌گویند نرمال سازی جداول. تبریک! شما اولین طراحی خود را به صورت درست انجام دادید. البته کمی? تا طراحی پایگاه داده‌هایی با صدها جدول فاصله دارید ولی عجله نکنید، پله پله. ولی باید بدانید همه صدها جدول از همین قواعد پیروی می‌کنند و با تمرین و آموزش و بدست آوردن تجربه، مغز شما برای طراحی‌های پیچیده، آماده خواهد شد.

وقتی دقت کنید می بینید که بین ستون {کد پیام} در جدول پیام‌ها با ستون {کد پیام} در جدول شماره‌ها ارتباطی وجود دارد. می‌بینید که در جدول شماره‌ها، نمی‌تواند ردیفی وجود داشته باشد که کد پیام آن {۵} باشد، چون هیچ ردیف متناظری در جدول پیام‌ها برای آن وجود نخواهد داشت! و همچنین در جدول پیام ها، ردیفی با کد پیام {۳} نمی‌تواند حذف شود زیرا ردیف هایی در جدول شماره ها وجود دارند که با حذف پیام با کد {۳}، بلاتکلیف می شوند. به این میگویند ارتباط بین جداول و رابطه بیان شده یک رابطه {یک به چند} است. برای همین به پایگاه داده های نوع SQL ، میگویند پایگاه داده های رابطه ای. همین و بس. پس میبینید که ارتباط یا Relation در پایگاه داده چیز عجیب و غریبی نیست.
خوب بیایید چند گام جلوتر برویم. فرض کنید در هنگام ارسال پیام ها، برق برود. بعد از روشن کامپیوتر و اجرای مجدد نرم افزار، شما میخواهید ادامه پیام ها را ارسال کنید ولی تمایل ندارید پیام هایی که ارسال شده اند مجددا ارسال شوند. چه می کنید؟ مشخص است. باید برای پیام ها یک وضعیت وجود داشته باشد که پس از ارسال هریک، وضعیت آن تغییر کند. ولی این وضعیت، در کجا باید ثبت شود؟ کمی فکر کنید، دو جدول داریم. جدول پیام ها که فقط شامل متن پیام برای هر گروه است، پس ثبت وضعیت برای آن بی معنی خواهد شد. پس می ماند جدول شماره ها:همانطور که در تصویر می بینید، از ستون {وضعیت ارسال}، می‌توان تشخیص داد که کدام پیام ها ارسال شده اند و کدام پیام ها هنوز ارسال نشده اند. البته برای اینکه نرم افزار مجبور نشود که مقایسه را به صورت متنی انجام دهد و خطا کاهش یابد و گویایی جداول بالاتر برود، یا به عبارتی کار سیستمی‌تر بشود، بهتر است این جدول به دو جدول شکسته شود:باز هم رابطه میان جداول. بله فقط همین است. اگر به تصویر دقت کنید، می بینید که در جدول وضعیت های ارسال، چند وضعیت دیگر هم اضافه شده. به این صورت می توان جزئیات بیشتری را ثبت کرد. اینکه پیامی در حال ارسال به خطا خورده یا خیر و همینطور اینکه آیا پیام تحویل داده شده یا خیر(گزارش Delivery). و جزییات بیشتر.
اگر بخواهید درصورت بُروز خطا در ارسال، برای برخی پیام ها، تلاش مجدد برای ارسال انجام شود چطور؟ مثلا اینکه برای یک پیام حداکثر تا پنج بار تلاش انجام شود و برای دیگری، فقط دو بار و برای برخی فقط یک بار. کجا باید این مورد را ثبت کنید؟بله درست است به جدول شماره ها. برای اولویت بندی ارسال چطور؟ بله باز هم به جدول شماره ها ستونی از نوع عدد اضافه می شود که این عدد نمایانگر اولویت هر پیام است.خوب تا اینجا تقریبا مشخص شد که جدول اصلی، جدول شماره ها است. و دو جدول دیگر، جداولی هستند که به توضیح جدول اصلی کمک می کنند.
به هرکدام از جداول که طراحی کردید، می گویند یک موجودیت. تا حالا ما در اینجا سه موجودیت داریم.
پس تا اینجای کار ما موجودیت ها را شناسایی کردیم، رابطه بین موجودیت ها را مشخص کردیم، طراحی پایگاه داده را انجام دادیم و در نهایت نرمال سازی انجام دادیم.
دیدید چه راحت بود؟ در قسمت بعدی، موضوع را کمی پیچیده تر بررسی خواهیم کرد.

چه رتبه ای می‌دهید؟

میانگین ۳.۷ / ۵. از مجموع ۳

اولین نفر باش

title sign
دانلود مقاله
بررسی روش تحلیل سیستم [بخش اول]
فرمت PDF
10 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
محمد جعفر جعفری
مقالات
2 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
محمد جعفر جعفری
title sign
دیدگاه کاربران

  • 1
  • 2