آشنایی مهارت های عمومی برنامه نویسی (فصل دهم)

آشنایی مهارت های عمومی برنامه نویسی (فصل دهم)

فصل دهم انتخاب نرم افزار مناسب برای کار

مقدمه

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

چگونه نرم افزار مورد نيازمان را انتخاب كنيم؟

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

استاندارد انتخاب نرم افزار 

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

 شناخت یک راهکار یا محصول نرم افزاری در انتخاب یک تهیه کننده و یا ارائه دهنده مطمئن، تنها بخشی از یک فرایند انتخاب صحیح نرم افزار است. بهترین حالت این است که به شکل موازی فاکتورهای دیگر را نیز ارزیابی کنیم. 

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

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

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

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

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

ساختار فنی 

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

قابلیت ها 

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

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

خدمات و پشتیبانی 

به لحاظ خدمات و پشتیبانی نیز باید با در نظر گرفتن شاخص هایی به پاسخ این قبیل سؤالات دست یابیم. آیا تیم اجرایی شرکت ارائه دهنده، برای پیاده سازی و ارائه محصول آمادگی لازم را دارد؟ شاخص های بررسی این امر تعداد کافی پرسنل فنی، قابلیت کار به شکل تیمی، رعایت اصول ساختار لایه ای، تجربه کافی است و در کجا و به چه شکل به سؤالات فنی به شکل جامع و کامل پاسخ داده میشود؟ آیا ارائه دهنده از پاسخ به سؤالات اجتناب نمیکند؟ آیا مجری، پروژه را به شکل اجرای کامل (key turn )ارائه میکند؟ شاخص های برررسی این موضوع انجام پروژه تا اجرای عملیاتی آن است و اینکه چه نوعی از مدیریت پروژه قابل اجراست؟ چه نوع آموزش هایی در دست اجراست؟ طرح آموزشی چیست؟ میانگین تجربه گروه پشتیبانی برای محصول مورد نظر چقدر است ؟به چه روشی مشکلات وخطاهای ضروری و غیرضروری سیستم، در اسرع وقت مرتفع شود؟ آیا پشتیبانی 24×7 قابل اجراست؟ آیا ارائه دهنده محصول توانایی رسیدن به زمان و تاریخ پیشنهادی، جهت اجرای عملیاتی سیستم را دارد؟ آیا مجری میتواند متد طراحی مجدد را در پردازش تجاری خود به عنوان بخشی از پیاده سازی داشته باشد؟ آیا ارائه دهنده تجربه کافی و مرتبط دراین صنف خاص صنعت را دارد؟ 

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

اینها سؤالاتی هستند که پاسخ آنها را به لحاظ سوابق فعالیت ارائه دهنده محصول باید بدانیم. 

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

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

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

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

پروژه‌ ها انجام شده است را دوباره انجام دهیم و از کارهایی که باعث مشکل در آن پروژه‌ ها گشته اند، پرهیز کنیم. البته نمیتوانیم با این کار از وجود مشکل در نرم افزار خود مطمئن باشیم؛ زیرا مشکلات، چه بخواهیم چه نخواهیم، بروز خواهند کرد و از آنجایی که در کار رویه ای ثابت نداریم و تنها از تجربیات قدیمیخود استفاده میکنیم، نمیتوانیم انتظار داشته باشیم که نرم افزارهای ما بدون اشکال باشند؛ زیرا ممکن است با مشکلی برخورد کنیم که تا به حال با آن برنخورده ایم و تجربه ای در رفع آن نداریم. اوایل سال ۲۰۰۱ تعدادی از محققان و صاحب نظران نرم افزار، گروهی به نام Alliance Agile را تشکیل دادند که توانست راه حلی برای تیم‌ های نرم افزاری پیدا کند تا به سرعت و با کیفیت بالانرم افزار تولید کنند و بتوانند اگر تغییری در قسمتی از نرم افزار به وجود آمد، آن را کنترل کنند و اصالحات لازم را اعمال نمایند. آنها مدعی هستند که راه بهتری برای تولید نرم افزار پیشنهاد کرده اند که کار ما برنامه نویسان را آسان کرده است. آنها چند اصل مهم را به عنوان مانی فیست یا بیانیه خود در نظر گرفته اند. از جمله: اهمیت نقش اعضای تیم در پروژه نرم افزاری، تولید مستندات مناسب برای نرم افزار، اهمیت نقش کاربران سیستم و استفاده از آنها در مراحل ساخت نرم افزار، و توانایی اعمال تغییرات در نرم افزار در تمامیمراحل تولیدی آن. 

تولید مستندات  

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

کدهای برنامه نمیتوانند به تنهایی و بدون راهنما و مستندات توسط دیگر افراد قابل فهم باشند. طراحان نرم افزار باید مستنداتی فراهم کنند که بتواند به کسی که بعدها به آن کدها مراجعه میکند نشان دهد که طراحان اولیه این سیستم چگونه ساختار برنامه را درست کرده اند. البته درست کردن ِ مستندات زیاد و غیرضروری کار درستی نیست و وقت تلف کردن است. مهندسان نرم افزار اصطالح خوبی برای مستندات دارند و میگویند: مستندات نرم افزار باید «کوتاه»و «ساکت» باشد. منظور از کوتاه این است که باید مختصر و دقیق باشد و منظور از ساکت این است که نباید خیلی به جزئیات غیرضروری بپردازد و خواننده را خسته نماید. 

اهمیت نقش کاربران سیستم در پروژه 

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

توانایی اعمال تغییرات در نرم افزار و برنامه ریزی موقت 

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

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

اصول تولید نرم افزار به روشAgile

 * جلب رضایت کاربر سیستم با ارائه نرم افزارهای با کیفیت

* نیازهای کاربران ممکن است عوض شود؛ حتی در مراحل پایانی پروژه. در Agile Development  گروه آمادگی قبول هرگونه تغییری را در هر مرحله از پروژه دارد.

* تولید سریع نرم افزار با تبدیل آن به چند قطعه و ارائه آن به مشتری

* ایجاد محیط کاری مناسب برای اعضای تیم در پروژه

* یکی از بهترین روش‌ ها برای گرفتن اطلاعات و تبادل آن، ایجاد ارتباط گفتاری با دیگر اعضای تیم در پروژه است.

* در پروژه‌ هایی که به روش Agile تولید میشوند، معیار موفقیت پروژه و رویه انتخابی، میزان رضایت مشتری از نرم افزار تولید شده و نیازهایی است که برآورده شده اند.

* اعضای تیم در این روش در کار خود آهسته و پیوسته عمل میکنند.

* اعضای تیم در این روش باید بیشترین تلاش خود را برای نوشتن نرم افزارهایی با کیفیت بالابه عمل آورند.

* انتخاب بهترین و آسانترین راه برای رسیدن به هدف اصلی پروژه Development 

 

خلاصه فصل 

امروزه نياز به توليد نرم افزار هايي با نيازمندي‌ هاي متغير، زمان تحليل سريع، مديريت ريسک آسان و سازگاري در برابر تغييرات محيط، به يک اصل انکار ناپذير تبديل شده است.

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

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

اوایل سال ۲۰۰۱ تعدادی از محققان و صاحب نظران نرم افزار، گروهی به نامAgile Alliance را تشکیل دادند که توانست راه حلی برای تیم‌ های نرم افزاری پیدا کند تا به سرعت و با کیفیت بالا نرم افزار تولید کنند و بتوانند اگر تغییری در قسمتی از نرم افزار به وجود آمد، آن را کنترل کنند و اصلاحات لازم را اعمال نمایند. آنها مدعی هستند که راه بهتری برای تولید نرم افزار پیشنهاد کردهاند که کار برنامه نویسان را آسان کرده است. آنها چند اصل مهم را به عنوان بیانیه خود در نظر گرفته اند. از جمله: اهمیت نقش اعضای تیم در پروژه نرم افزاری، تولید مستندات مناسب برای نرم افزار، اهمیت نقش کاربران سیستم و استفاده از آنها در مراحل ساخت نرم افزار، و توانایی اعمال تغییرات در نرم افزار در تمامی مراحل تولیدی آن. 

مهندسان نرم افزار اصطلاح خوبی برای مستندات دارند و میگویند: مستندات نرم افزار باید «کوتاه» و «ساکت» باشد. منظور از کوتاه این است که باید مختصر و دقیق باشد و منظور از ساکت این است که نباید خیلی به جزئیات غیرضروری بپردازد و خواننده را خسته نماید.

 

 

آشنایی مهارت های عمومی برنامه نویسی (فصل اول)

آشنایی مهارت های عمومی برنامه نویسی (فصل دوم)

آشنایی مهارت های عمومی برنامه نویسی (فصل سوم)

آشنایی مهارت های عمومی برنامه نویسی (فصل چهارم)

آشنایی مهارت های عمومی برنامه نویسی (فصل پنجم)

آشنایی مهارت های عمومی برنامه نویسی (فصل ششم بخش 1)

آشنایی مهارت های عمومی برنامه نویسی (فصل ششم بخش 2)

آشنایی مهارت های عمومی برنامه نویسی (فصل هفتم)

آشنایی مهارت های عمومی برنامه نویسی (فصل هشتم بخش 1)

آشنایی مهارت های عمومی برنامه نویسی (فصل هشتم بخش 2)

آشنایی مهارت های عمومی برنامه نویسی (فصل نهم بخش 1)

آشنایی مهارت های عمومی برنامه نویسی (فصل نهم بخش 2)

 

امیدواریم از این مقاله بهره کافی را برده باشید وبرای شما مفید بوده باشد.

سؤالات خود در رابطه با این مقاله و همچنین انتقادات و پیشنهادات خود را در قسمت نظرات با ما در میان بگذارید


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