راه پرداخت
رسانه فناوری‌های مالی ایران

الزامات پیاده‌سازی يک سيستم نرم‌افزاری بزرگ

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

.

توزیع‌شدگی (Distribution)

فضاي مهندسي نرم‌افزار اعم از روش‌ها، ابزارها و نگرش‌ها، به‌شدت متأثر از رويه شرکت‌های بزرگ و تعیین‌کننده و تأثیرگذار فضاي وب است. اگر گوگل و فیس‌بوک و آمازون بازيگران اصلي اين صحنه هستند و به همان نسبت IBM  و مايکروسافت، صحنه و ميدان را به رقبا واگذار کرده‌اند. لاجرم استانداردها و روش‌هاي شرکت‌های پيروز، تکنولوژي غالب و تعیین‌کننده اين حوزه خواهد بود. اگر ارمغان IBM براي اين فضا، MainFrameها و SuperComputerها بوده است؛ دستاورد گوگل براي دنياي ما، فضاي پردازشي توزيع شده با استفاده از تعدد سخت‌افزارهای ارزان‌قیمت (Commodity Hardware) بوده است. اگر قرار است نرم‌افزار بزرگ توليد شود لاجرم بايست قابليت توزیع‌شدگی به معناي امکان پیاده‌سازی روي n سرور مجازي و واقعي در يک زمان با نگرش Horizontal Scalable را داشته باشد.

.

DevOps&Cloud

اين روزها در فضاي IT کشور ما نيز مفاهيم جديدي چون پردازش ابري و لزوم حرکت به‌سوی آن شنيده می‌شود. واقعيت اين است که پردازش ابري، اصول و مبناي خاص خود را دارد و بدون آن، اطلاق لفظ پردازش ابري نادرست است. استقلال پردازش از مکان فيزيکي (سخت‌افزار)، ايجاد تعداد زياد از پردازه‌ها به‌تناسب بار کاري، تعداد ورودي بالا ازجمله ویژگی‌های سیستم‌های پردازش ابري است. در کشور ما، مثال سامانه‌های بزرگ نرم‌افزاری، سیستم‌های core banking است. با وجود يک پايگاه داده رابطه‌ای متمرکز که موظف است خواص ACID  را در بالاترين سطح رعايت کند، هیچ‌گاه سيستمي با مفهوم يارانش ابري نخواهيم داشت. از ابزارهاي اساسي مديريت و نگهداري cloud، مفاهيم مرتبط با DevOps است.

.

Standard API on Web

نرم‌افزارها لازم است با يکديگر در ارتباط باشند. اين يک اصل بديهي است. براي ارتباط، نياز به يک زبان مشترک است. امروزه اين زبان مشترک، تکنولوژي وب‌سرویس و روش غالب REST است. اگر به طراحي يک سيستم بزرگ می‌اندیشیم، بايست سرويس گرا بودن را در جزء جزء آن در نظر گرفت. هر بخش بر مبناي سرويسي که ارائه خواهد، تشخيص داده می‌شود و چنانچه انتظار می‌رود اين سرويس به خارج دامنه مسئله سيستم نيز خدمات بدهد واسط‌های عمومي با در نظر گرفتن ملاحظات سازمان تعريف می‌شود.

.

Security as an Aspect

رعايت جنبه‌های امنيتي يک سيستم، امري بديهي است؛ اما مسئله در چگونگي پیاده‌سازی اين مهم است. يکي از مفاهيمي که توليد نرم‌افزار را دستخوش تغيير کرده است، نگرش aspect oriented programming بوده است. بر اساس اين نگرش، امنيت را می‌توان يکي از جنبه‌های سيستم و اصطلاحاً aspect در نظر گرفت. ارمغان اين نوع نگرش، جداسازي پیاده‌سازی جنبه‌های مختلف سيستم از خود سيستم خواهد بود. به‌بیان‌دیگر و در اين مثال، وجود جنبه‌ای به نام امنيت، تأثیری در کد نویسی برنامه نخواهد داشت. درنهایت با استفاده از تنظيمات سيستم در زمان راه‌اندازی و اجرا، جنبه‌های مختلف سيستم ازجمله امنيت لحاظ خواهد شد.

mhonarsari@gmail.com

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.