مهندسی نرم افزار - بخش ششم

زمانبندی پروژه نرم افزاری

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

اگر چه دلایل بسیاری وجود دارند که ممکن است منجر به تاخیر پروژه شوند. دلایل اصلی آن عبارتنداز:

► ایجاد محدودیت های زمانی غیرواقعی

تعیین نیازمندی های مشتری که در نیازمندی ها دیده نشوند.

تخمین کم میزان تلاش و منابع مورد نیاز

ریسک های پیش بینی شده یا پیش بینی نشده که در نظر قرار نگرفته اند رخ دهد

مشکلات فنی که از قبل قابل پیش بینی نبوده اند

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

سوء هماهنگی بین افراد پروژه

خطای مدیریت پروژه در تشخیص اینکه پروژه از زمانبندی عقب است و عدم انجام مقدمات پیشگیرانه

برای رفع مشکلات فوق و زمانبندی های غیرواقعی، موارد زیرر پیشنهاد می شود.

تخمین دقیقی با استفاده از داده های تاریخچه ای پروژه های قبل انجام گیرد

از یک فرآیند افزایشی استفاده شود بدین صورت که عملیات حساس زودتر تحویل داده شوند و سایر عملیات به تعویق بیفتد.

برگزاری جلسه با مشتری و ارائه توضیحات در مورد اینکه زمانبندی واقع گرایانه نیست و همچنین بیان شود که تمام تخمین ها براساس پروژه های گذشته محاسبه گشته است.

یک راهبرد توسعه افزایشی را بعنوان یک جایگزین پیشنهاد دهید.

 

زمانبندی پروژه

مدیر پروژه در راستای زمانبندی، دارای اهداف زیر است:

تعریف تمامی وظایف پروژه

ساخت شبکه ای از وابستگی های بین وظایف

ردگیری میزان پیشرفت آنها جهت شناسایی تاخیرهای پیش آمده

جهت رسیدن به اهداف فوق مدیر باید دارای زمانبندی باشد و این برنامه با دقتی تعریف شده باشد که بتوان با استفاده از آن میزان پیشرفت پروژه را پایش و کنترل نمود.

زمانبندی پروژه نرم افزاری فعالیتی است که تلاش تخمینی را در مدت زمان برنامه ریزی شده پروژه توزیع می کند که این کار از طریق تخصیص تلاش به وظایف مهندسی افزاری خاص انجام میگیرد.

 

روشهای زمانبندی

زمانبندی یک پروژه نرم افزاری تفاوت چندانی با زمانبندی یک کار چند وظیفه ای مهندسی ندارد و مفاهیم کلی در هر دو یکسان است. تکنیک ارزیابی و مرور برنامه (PERT) و روش مسیر بحرانی (CPM) دو روش زمانبندی پروژه هستند. هر دو روش مبتنی و متکی به اطلاعاتی هستند که در فعالیت های قبلی برنامه ریزی به دست آمده اند:

تخمین تلاش ها

تجزیه عملیات محصول

انتخاب مدل فرآیند مناسب

تجزیه وظایف

وابستگی بین وظایف را میتوان با شبکه وظیفه نشان داد هر دو روش PERT و CPM ابزارهایی کمّی را فراهم می کنند که به برنامه ریز نرم افزاری اجازه میدهد تا : 1) مسیر بحرانی را تعیین کند (زنجیره ای از وظایفی که مدت زمان پروژه را تعیین می کنند) 2) ایجاد تا جای ممکن بهترین تخمین زمانی برای وظایف شخصی با استفاده از مدلهای آماری 3) محاسبه زمانهای محدوده ای که برای هر وظیفه خاص یک قاب، پنجره زمانی تعریف کند.

محاسبات زمان محدوده ای در زمانبندی پروژه بسیار مفید است  زیرا خطاهای کوچک در طراحی یک تابع می تواند توسعه بقیه توابع را به عقب بیندازد. از یک شبکه  PERT یا CPM میتوان زمانهای محدوده ای مهمی را تشخیص داد:

زودترین زمانی که یک وظیفه می تواند شروع شود هنگامیکه تمامی وظایف پیشین در کوتاهترین زمان ممکن تمام شده باشند.

 دیرترین زمان برای انجام یک وظیفه قبل از اینکه کمترین تاخیری در زمان پروژه حادث گردد.

 زودترین خاتمه (مجموع زمن زودترین شروع و مدت زمان انجام وظیفه)

دیرترین خاتمه (مجموع دیرترین شروع و مدت زمان انجام وظیفه)

شناوری کلی (مقدرا زمان مازاد یا مهلتی که در زمانبندی وظایف اجازه داده می شود به طوریکه مسیر بحرانی شبکه تحت برنامه زمانی قرار داشته باشد)

محاسبات زمان محدوده ای منجر به تعیین مسیر بحانی میشوند و برای مدیر روش کمی را فراهم می کنند تا بتواند پیشرفت وظایف را حین کامل شدن ارزیابی کند برای دو روش PERT و CPM ابزارهایی نیز موجودند که می توانند این کار را بصورت خودکار انجام دهند. گاهی اوقات وظایف، ساختار شکست کار نیز نامیده میشوند.

♦ چارت میله ای (Timeline Chart)

♦ ردگیری زمانبندی

زمانبندی پروژه، نقشه راهی را برای مدیران پروژه نرم افزاری فراهم می آورد. زمانبندی پروژه وظایف مهم و نقاط مهمی را تعریف می کند که باید در حین پروژه، ردگیری و کنترل شوند. ردگیری را میتوان به روشهای زیر انجام داد:

جلسات وضعیت دوره ای

ارزیابی نتایج تمامی  بازنگری های محصولات

مقایسه نقاط مهمی که در واقع به آنها رسیده ایم با آنچه که در زمانبندی پروژه است.

مقایسه زمان شروع واقعی وظایف با آنچه که در زمانبندی بوده است

جلسات غیر رسمی با افراد فنی که مسئولیت تعیین میزان پیشرفت را دارند

استفاده از تحلیل ارزش بدست آمده جهت تعیین کمی پیشرفت

♦ ردگیری پیشرفت در پروژه های شیءگرا

اگر چه یک مدل تکراری بهترین چارچوب برای پروژه های شیءگرا است، موازی سازی وظایف منجر به مشکل شدن ردگیری پروژه می شود. همچنین به علت اینکه در پروژه های شیءگرا عناصر مختلفی وجود دارند، تعریف نقاط مهم در آنها کاری مشکل است. در زیر نقاط مهم اصلی تعریف شده اند که عبارتنداز:

-نقطه مهم در تحلیل شی گرا

تمامی سلسله مراتب کلاسها تعریف و بازنگری شده باشند

صفات و عملیات کلاسها تعریف و بازنگری شده باشند

روابط کلاسها تعریف و بازنگری شده باشند

مدل رفتاری تعریف و بازنگری شده باشند

کلاسهای قابل استفاده مجدد شناسایی شده باشند

-طراحی شیءگرا

زیر سیستم ها تعریف و بازنگری شده باشند

کلاسها به زیر سیستم ها تخصیص داده و بازنگری شده باشند

تخصیص وظیفه انجام و بازنگری شده باشند

مسئولیت ه و همکاری تعیین شده باشند

صفات و عملیات طراحی و بازنگری شده باشند

مدل ارتباطی ساخته و بازنگری شده باشد

-برنامه نویس شیءگرا

تمامی کلاسهای مدل طراحی پیاده سازی شده باشند

کلاسهایی که از کتابخانه استفاده مجدد استخراج شده اند پیاده سازی شده باشند

نمونه یا افزایش ساخته شده باشد

-تست شی گرا

صحت و کامل بودن مدلهای تحلیل و طراحی شی گرا بازنگری شده باشند

شبکه CRC توسعه داده و بازنگری شده باشد

حالات تست طراحی شده باشند و تست های سطح کلاس برای هر کلاس انجام گرفته باشد

حالات تست طراحی شده باشند، تست خوشه کامل شده باشدو کلاسها یکپارچه شده باشند

تست های سطح سیستم کامل شده باشند. 

 

معیارهای محصول نرم افزاری

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

معیارهای محصول یکی از فعالیت های کلیدی فرآیند مهندسی اندازه گیری است و جهت تعیین کیفیت محصول سیستمی که مهندسی شده، استفاده میگردد. کیفیت نرم افزار نیز عبارتست از: میزان انطباق با نیازمندی های کارایی و عملیاتی صریح بیان شده، استانداردهای توسعه مستندسازی شده بصورت صریح و خصوصیات ضمنی که از کلیه نرم افزارهایی که بصورت حرفه ای توسعه می یابند، انتظار میرود.

مزایای معیارهای محصول

► در ارزیابی تحلیل و مدل وارسی کمک می کند.

نشانگرهایی از میزان پیچیدگی طراحی روال و کد منبع فراهم می آورد.

طراحی تست های موثرتر را تسهیل میبخشد.

 

چارچوبی برای معیارهای محصول

♦ تعاریف

► اندازه : یک نشان دهنده کمی از درجه، میزان، ابعاد، حجم یا اندازه بعضی از صفات یک محصول یا یک فرآیند است.

► معیار : یک معیار نرم افزاری، اندازه ها را با روشی به یکدیگر مربوط می کند مثل میانگین.

► نمایانگر: یک معیار یا ترکیبی از معیارها است که بینش را در فرآیند نرم افزار، پروژه نرم افزاری یا محصول فراهم می کند مثلا در بهبود فرآیند در یک سازمان از نمایانگر استفاده میکنیم.

► هدف از اندازه گیری بهبود کیفیت نرم افزار است یعنی از معیارهای محصول استفاده می کند.

♦ فرآیند اندازه گیری

1- فرموله سازی : استخراج اندازه گیری ها و معیارهای مناسب برای نمایش نرم افزار مد نظر قرار میگیرد.

2- جمع آوری داده : مکانیزم هایی که برای جمع آوری داده های مورد نیاز جهت استخراج معیارهای نرم افزاری از آنها استفاده میگردد.

3- تحلیل : معیارها محاسبه میشوند.

4- تفسیر : معیارهایی که نتایج آنها می توانند بینشی را نسبت به کیفیت محصولات کاری تولید شده ایجاد کنند مورد بررسی قرار میگیرند.

5- بازخورد : از نتایج وارسی معیارهایی که به تیم توسعه نرم افزار ارائه گردیده اند توصیه هایی استخراج میگردد.

♦ اصول اندازه گیری

1- قبل از جمع آوری هرگونه داده ای، هدف از اندازه گیری باید مشخص گردد.

2- هر معیار محصول باید بصورت غیرمبهم تعریف شده باشد.

3- معیارها باید از تئوری ای که در دامنه مساله معتبر است مشتق شده باشند.

4- معیارها باید به فرمی خاص تغییر یابند تا بتوانند فرآیندها و محصولات خاص را نیز نشانگر باشند.

♦ اصول تبیین و اعتبارسنجی معیارها

1-معیارها باید خواص ریاضی قابل قبول داشته باشد.

2-وقتی که معیار خصیصه ای نرم افزاری را نشان میدهد که با ورودی مثبت افزایش می یابد و با نتایج منفی کاهش می یابد. مقدار معیار نیز به همین ترتیب افزایش یا کاهش می یابد.

♦ اصول گردآوری و تحلیل اندازه گیری

1- در هر جایی که ممکن بود از گردآوری و تحلیل خودکار استفاده شود.

2- از روشهای آماری معتبر استفاده گردد تا بتوان بین صفات درونی محصول و خصوصیات کیفی بیرونی آن ارتباط برقرار نمود.

3- برای هر معیار، رهنودها و توصیه های تفسیری ایجاد گردد.

♦ صفات معیارهای نرم افزاری کارا

از آنجایی که معیارهای بسیار زیادی برای نرم افزار معرفی گردیده است این جنبه اهمیت دارد که یک معیار تا چه اندازه مفید و موثر است. یک معیار مفید باید دارای صفات زیر باشد:

سادگی و قابل محاسبه بودن

بصورت تجربی و ادراکی تعقیب کننده باشد.

سازگار و هدفگرا باشد.

در استفاده از ابعاد و واحدها سازگار باشد.

غیر وابسته به زبان برنامه نویسی باشد.

مکانیزمی کارا برای بازخوردهایی با کیفیت تعریف کند، تا به کیفیت بیشتر منجر شود.

 

چشم انداز معیارهای محصول

در هر کدام از زمینه های تحلیل، طراحی، کد منبع و تست، تعدادی معیار محصول مهم وجود دارند. بررسی اجمالی هر کدام را در زیر میبینید:

معیارهای مدل تحلیل : میزان عملکردی که تحویل داده شده، اندازه سیستم، کیفیت تعریف مشخصات

معیارهای مدل طراحی : معیارهای معماری، معیارهای سطح قطعه، معیارهای طراحی واسط، معیارهای طراحی خاص شیءگرا

معیارهای کد منبع : معیارهای Halstead ، معیار پیچیدگی، معیار طول

معیارهای تست : معیارهای پوشش دستورات دستورات و انشعاب ها، معیارهای مرتبط با خطا، معیارهای موثر بودن تست، معیارهای درونی فرآیندی


تخمین پروژه های نرم افزاری

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

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

 

عوامل موثر در مطمئن بودن تخمین

► پیچیدگی پروژه

اندازه پروژه

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

موجود بودن اطلاعات سلسله مراتبی

 

فرآیند طرح ریزی پروژه

در زیر مجموعه فعالیت های وابسته به طرح ریزی پروژه نرم افزاری ارائه شده اند:

بنیان کردن حوزه پروژه

تعیین امکان سنجی

تحلیل ریسک ها

تعیین منابع مورد نیاز (منابع انسانی، نرم افزاری، محیطی، هزینه وتلاش)

توسعه دادن زمانبندی پروژه (ایجاد مجموعه وظایفی با معنی، تعریف شبکه وظیفه، تعریف مکانیزم های ردگیری زمانبندی)

 

شدنی بودن پروژه

وقتی که حوزه پروژه معین شد، بهتر است که سوالات زیر پرسیده شود: 1) آیا نرم افزاری را که این حوزه را پاسخ میدهد میتوانیم بسازیم؟ 2) آیا انجام پروژه شدنی است؟

پیشنهاد می شود که بازه بندی پروژه به تنهایی کافی نیست. هنگامیکه حوزه پروژه تعیین شد، تیم نرم افزاری و سایرین باید مشخص کنند که آیا میتوان پروژه را در ابعادی که در حوزه پروژه تعریف شده انجام داد یا خیر. بعبارت دیگر شدنی بودن یک کار از لحاظ فنی، دلیلی کافی برای تولید یک محصول نیست. همچنین محصول باید به نیازمندی های مشتری نیز پاسخ دهد.  

 

تخمین منابع

دومین عامل در طرح تخمین پروژه تخمین منابع است. تخمین منابع در سه بعد افراد، قطعات نرم افزاری قابل استفاده و محیط توسعه انجام میگیرد.

منابع انسانی: تعداد افراد مورد نیاز، مهارتهایی که برای تکمیل توسعه پروژه نیاز است و موقعیت فیزیکی افراد را تعیین می کند.

 منابع نرم افزاری قابل استفاده مجدد: در طرح تخمین، چهار دسته از منابع نرم افزاری مد نظر قرار میگیرند: قطعات آماده، قطعات تجربه شده، قطعات کمتر تجربه شده، قطعات جدید.

منابع محیطی: محیط مهندسی نرم افزار، شامل نرم افزارها و سخت افزارهایی است که پروژه نرم افزاری را حمایت می کنند.

 

انتخابهایی برای تخمین پروژه نرم افزاری

نرم افزار گرانترین عنصر سیستم های مبتنی بر رایانه است و درنتیجه، تجاوز کردن هزینه از حد تخمینی می تواند برای توسعه دهندگان خطرناک باشد. معمولا عوامل زیادی از جمله عوامل انسانی، فنی، محیطی و سیاسی، می توانند در تخمین هزینه نهایی موثر باشند. جهت دستیابی به تخمین هایی قابل اعتماد از لحاظ هزینه وتلاش گزینه های زیر وجود دارند:

تخمین را تا اواخر پروژه به تاخیر بیاندازیم. البته در کل، چنین کاری عملی نیست زیرا تخمین هزینه باید در ابتدا انجام گیرد.

تخمین ها را بر اساس پروژه های مشابهی که اخیرا تمام شده اند، انجام دهیم. اگرچه این کار معقولانه است، ممکن است گاهی تجارب گذشته نتوانند نشانگرهای خوبی برای پروژه های آینده باشند.

با استفاده از روش های تجزیه ساده، هزینه و تلاش را تخمین بزنیم.

از مدل های تجربی برای تخمین هزینه و تلاش استفاده کنیم.

دومدل آخر روشهای تخمین مناسبی را فراهم می آورند. البته این دو وش باید  در ترکیب هم انجام گیرند و دیگری را وارسی کنند. کارایی هر کدام از این روشها به میزان زیادی وابسته به داده های تاریخچه ای است که از آنها استفاده می کنند.   

 

روشهای تجزیه در تخمین نرم افزاری

جهت تخمین پروژه خصوصا هنگامیکه پروژه پیچیده است، از روش تجزیه مسائل به مجموعه ای از مسائل کوچکتر استفاده میگردد. تجزیه به دو صورت تجزیه مساله و تجزیه فرآیند انجام میگیرد. قبل از انجام تخمین تخمینی از اندازه نرم افزار باید انجام گیرد.

اندازه نرم افزار : چون دقت تخمین پروژه به دقت اندازه نرم افزار برمیگردد این تخمین اولین چالش طرح پروژه است. این تخمین به چهار صورت منطق فازی، FP، قطعات استاندارد و تغییرات انجام میگیرد.

تخمین مبتنی بر مساله : این تخمین به دو صورت انجام میگیرد : تجزیه با استفاده از LOC با تاکید بر عملیات نرم افزار و تخمین با استفاده از FP و تاکید بر خصوصیات دامنه اطلاعاتی

تخمین مبتنی بر فرآیند: در این روش، تجزیه براساس وظایف مورد نیاز برای تکمیل چارچوب فرآیند نرم افزار انجام میگیرد.

تخمین با استفاده از مورد کاربر : این روش به نظر مفید به نظر میرسد اما به علت نقص در استانداردسازی جای بحث دارد.

 

مدل تخمین تجربی

یک مدل تخمین برای نرم افزار رایانهی از فرمولهایی که به صورت تجربی استخراج شده اند استفاده می کند تا میزان تلاش را بعنوان تابعی از LOC یا FP پیش بینی کند. معمولا به دلیل اینکه داده های تجربی از تعداد محدودی پروژه که قبلا انجام گرفته اند بدست می آیند، هیچ مدل تخمینی برای همه پروژه ها و محیط ها مناسب نیست. یک مدل تخمین باید جهت انعکاس شرایط خاص خود پروژه تنظیم گردد. این مدلها معمولا با تحلیل داده های پروژه های تاریخچه ای استخراج میشوند و با نفر – ماه به عنوان متغیر وابسته و LOC، FP یا متغیرهای وابسته به اشیا بعنوان متغیرهای غیر وابسته، تخمین ها انجام میشوند. برخی از این مدلها عبارتنداز :

 مدل هزینه سازنده COCOMO : نمونه ای از مدل های تخمین ایستا است.

 مدل COCOMO ǁ :سلسله مراتبی از مدلهای تخمینی است که با درنظر گرفتن فاز فرآیند، آن تبدیل به یک مدل تخمین پویا می کنند.

 معادله نرم افزار : یکی از مدلهای پویای تخمین است.

 




0
جستجو در سایت
استارت آپ ها

ایده ها برای استارت آپ موجب رونق کسب و کارهای اینترنتی

آینده / استارت آپ

استارت‌آپ‌ها ادبیات بازار سرمایه را بلدند؟

استارت آپ

صدور تاییدیه دانش بنیانی شتابدهنده صدر فردا

اخبار / استارت آپ

اپلیکیشن شارژاپ

گوناگون / استارت آپ / رپرتاژ آگهی / بازتاب

جذاب‌ترین ایده‌های B2B در سال 2020

استارت آپ

۱۰ استارتاپ که بدون سرمایه به سوددهی رسیدند

استارت آپ

ایده ها و پیشنهاد برای استارت آپ در سال جدید

راهکارها و ترفند ها / استارت آپ

استارت‌آپ ایرانی؛ مرجع اول زنان افغان

استارت آپ

شروع یک کسب و کار نوپا پلتفرمی

استارت آپ

برنامه شبکه اجتماعی تیندر

گوناگون / معرفی وب سایت / استارت آپ

10 استارت آپ برتر تاکسیرانی جهان

استارت آپ

پخت پیتزاهای هیجان انگیز با هوش مصنوعی

آینده / استارت آپ

ایده‌ های استارتاپی فراموش شده‌

دورنما / بازار / استارت آپ

اپل، استارتاپ فناوری خودران Drive.ai را تصاحب کرد

استارت آپ

بررسی مهمترین چالش‌های تیم‌های استارتاپی

استارت آپ

نگرانی کاربران از هزینه تعمیر و تامین قطعات

گفت و گو / بازار / استارت آپ

مصاحبه با مدیرعامل و بنیان‌گذار استارتاپ Moz

گفت و گو / استارت آپ

آشنایی با استارت آپ های حوزه مدیریت آب

استارت آپ

راه اندازی ۷۰ استارت آپ توسط نخبگان ایرانی

استارت آپ

معرفی هشت استارت‌آپ‌ موفق ایرانی در حوزه فینتک

استارت آپ

اولین مرورگر شرعی دنیا

استارت آپ

از صفر تا پیست

استارت آپ

معرفی برترین استارتاپ‌های CES 2019

اخبار / استارت آپ

تبلیغات
تگ ها
درباره ما

مجله اینترنتی دیپروتد نشریه مجازی بر بستر اینترنت به مسائل آموزشی و مقالات پیرامون کسب وکار های نوپا یا استارت آپ ها و سبک زندگی است فعالیت و محتوای مطالب ارائه شده در سایت همه بیشتر در حوزه مدیریت، کارآفرینی ، روانشناسی ،اقتصادی و فناوری اطلاعات است نام اصلی دیپروتد "ریشه های عمیق " با مجوز رسمی از هیات نظارت برمطبوعات مشغول به فعالیت است

ما را در شبکه های اجتماعی دنبال کنید