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

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

مهدی هنرمند؛ کارشناس فناوری اطلاعات / اگر در همه رشته‌های مهندسی مجموعه یکسری از دانش‌ها، یک مهندس می‌سازد، در حوزه نرم‌افزار، علاوه بر مجموعه دانش‌ها، مفهومی بر همه آن‌ها سایه افکنده است که تحت عنوان و درس مهندسی نرم‌افزار، تدریس و تحقیق می‌شود. علاوه بر این موارد، اندازه و سایز یک پروژه نرم‌افزاری نیز، یکی از فاکتورهای تعیین‌کننده در الزامات و استانداردهای به‌کارگرفته در طراحی و پیاده‌سازی نرم‌افزار است. از نوشتن یک برنامه که دو عدد از ورودی گرفته و چهار عمل اصلی را روی انجام دهد تا سیستمی که بتواند در فضای وب خزش (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

ارسال یک پاسخ

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