سیستم خودتطبیق
خودتطبیقی در یک نگاه
در منابع کلاسیک سیستم خودتطبیق چنین تعریف شده است: “یک سیستم خودتطبیق رفتار خود را ارزیابی نموده و هنگامی که این رفتارها در جهت اهداف تعیین شده برای نرم افزار نباشند و یا کارایی بالاتری ممکن باشد، این رفتارها را تغییر می دهد.” در یک تعریف وسیع تر سیستم خودتطبیق سیستمی است که رفتار خود را در پاسخ به تغییرات روی داده در محیط عملیاتی خود تغییر می دهد. همچنین در اینجا منظور از محیط عملیاتی هر چیزی مانند ورودیهای کاربر نهایی، ابزار سخت افزاری، حسگرها و ابزار برنامه است که برای سیستم نرم افزاری قابل مشاهده باشد.
مفاهیم دیگری نیز وجود دارند که در واقع به قابلیت خودتطبیقی اشاره می کنند. مهمترین آنها مفهوم رایانش خودمختار است که اولین بار توسط آقای پاول هورن مدیر ارشد تحقیقات شرکت IBM در یک سخنرانی برای یک آکادمی مهندسین بین-المللی در دانشگاه هاروارد معرفی شد. این واژه با الهام از سیستم عصبی خودمختار انتخاب شده است. سیستم عصبی خودمختار ضربان قلب و دمای بدن را مدیریت کرده و این مسئولیت را از مغر انسان سلب می کند.
آنچه در تعریف سیستمهای خودمختار مشهود است، آنست که این سیستمها از نظر مفهومی بسیار به مفهوم سیستمهای خودتطبیق شباهت دارند. به همین دلیل است که در بسیاری از مقالات، این دو مفهوم به جای یکدیگر به کار رفته اند. بنابراین می توان گفت که مرز میان این مفاهیم به طور دقیق قابل ترسیم نیست.
چرخه خودتطبیقی
همانگونه که ذکر شد، آنچه تمایز سیستمهای خودتطبیق از سیستمهای پیشین را سبب می شود، وجود یک حلقه بازخورد است. این حلقه بازخورد از تعامل یک مؤلفه خودتطبیق با یک منبع مدیریت شده حاصل می شود. چرخه مطرح شده در اینجا کاملاً مشابه چرخه پیشنهادی توسط IBM است که به چرخه MAPE-K مشهور شده است. این چرخه در شکل زیر قابل مشاهده می باشد.
خصیصههای خودتطبیقی
وقتی سیستمی خودتطبیق، خودگردان و یا خودمختار خوانده می شود، انتظار می رود که نیازهای خاصی از سیستم را در هنگام بروز تغییرات محیطی برآورده کند. برای مثال از چنین سیستمی انتظار می رود که در هنگام بروز خطا قابلیت ترمیم سیستم و یا کاهش اثرات خطا را داشته باشد. همچنین انتظار می رود سیستم مذکور در هنگام تغییر شرایط و داده های محیطی، پارامترها و پیکربندی خود را مورد بازبینی قرار دهد. به چنین خصوصیاتی خصایص خودتطبیقی، خصایص خودگردانی و یا به طور کلی خصایص خود-* گفته می شود. در واقع این خصیصه ها، بیانگر مشخصاتی هستند که از یک سیستم خودتطبیق انتظار می رود.
این خصیصه ها با تغییر توقعات و نگرش به سیستمهای خودتطبیق تغییر می یابند و به مرور زمان خصیصه های جدیدی به این مجموعه می پیوندد. به همین دلیل مطالعات مختلفی در این زمینه صورت گرفته و چارچوبها و طبقهبندیهایی نیز ارائه شده است.
سطح کلی شامل مفاهیم سطح بالای خودتطبیقی می شود. در واقع می توان گفت که این سطح خصوصیات هم ارز با خودتطبیقی نظیر خود گردانی، خود سازماندهی و غیره را در برمی گیرد. هر یک از خصوصیات این سطح در اثر ارضای تعداد زیادی از خصوصیات سطوح پایینتر برآورده می شوند. در سطح اصلی خصوصیات خودتطبیقی جزئی قرار دارند. در واقع در این سطح خصوصیات مختلفی هر یک از سیستمهای سطح یک می توانند به آنها دست پیدا کند قرار دارند. مهمترین خصوصیات مطرح شده در این سطح، چهار خصوصیتی است که توسط IBM به عنوان ابعاد اصلی سیستمهای خود گردان مطرح شده است. این ابعاد عبارتند از: خودپیکربندی، خود التیامی، خودبهینه سازی و حفاظت از خود. هر یک از این خصوصیتها در ادامه به تفصیل توضیح داده خواهند شد. از دیدگاه IBM ممکن است که در ابتدا هر یک از این خصوصیات به شکل جداگانه توسط تیمهای مختلف ارضا شود. ولی سرانجام تمایز بین آنها از بین رفته و همه در قالب قابلیت خودنگهدار سیستم مطرح خواهند شد.
در سطح ابتدایی خصایصی مانند خود-آگاهی و آگاهی از محیط و غیره مطرح می شوند. خودآگاهی به معنای آن است که سیستم از وضعیت و رفتارهای خود آکاه است. این خصوصیت به کمک پایش خود برآورده میشود. آکاهی از محیط به معنای آن است که سیستم از وضعیت محیط عملیاتی خود آکاه است و با گایش آن میتواند تغییرات آن را متوجه شود. خصوصیات این سطح لازمه تحقق تمام خصوصیات خودتطبیقی سطوح بالاتر هستند.
خودبهینگی
میان افزارهای بزرگ مانند websphere یا اوراکل دارای هزاران پارامتر هستند که باید به شکل صحیح تنظیم شوند تا عملکرد بهینه حاصل شود. سیستمهای خودتطبیق دائماً در جستجوی راههایی هستند که از نظر کارایی و هزینه بهینه تر شوند. بنابراین همانگونه که ماهیچه های بدن در اثر ورزش کردن و فعالیت ورزیده می شوند یا همانگونه که مغز انسان در اثر فعالیت مغزی پربارتر می شود، سیستمهای خودتطبیق نیز به مرور زمان و در اثر کارکرد بیشتر بهتر می شوند. آنها به صورت مداوم به دنبال بهروزرسانی کارکردهای خود یا واگذاری آنها به دیگر مؤلفه های خودتطبیق هستند. این خصوصیت مخصوصاً در مواردی که عاملها و سیستمها خودتطبیق دارای محدودیتهای منابع مانند محدودیت پهنای باند، انرژی، زمان و غیره هستند بسیار حائز اهمیت است.
خودپیکربندی
نصب، پیکربندی و تجمیع سیستمهای بزرگ و پیچیده معمولاً بسیار کار سنگین و زمانبر بوده و حتی اگر توسط کاربر متخصص نیز انجام شود با خطاهای احتمالی فراوانی مواجه خواهد شد. این موضوع مخصوصاً در مورد سیستمهای تحت وب پیچیده و سیستمهایی مانند سیستمهای برنامه ریزی منابع انسانی شدت بیشتری می یابد. برای مثال ممکن است ماهها برای یک تیم متخصص زمان نیاز باشد تا سیستمی مانند SAP را پیاده سازی و پیکربندی نمایند.
خود پیکربندی قابلیت پیکربندی مجدد سیستم به صورت خودکار و پویا در پاسخ به تغییرات ایجاد شده به وسیله نصب، به-روزرسانی، تجمیع و تجزیه و ترکیب موجودیتهای نرم افزاری است. به این ترتیب، آنچه از سیستمهای خودتطبیق در آینده انتظار می رود آن است که بتوانند با توجه به سیاستهای سطح بالا خود را پیکربندی نمایند. زمانی که یک مؤلفه جدید معرفی می شود، آن مؤلفه باید خود را به شکل نامحسوس با بقیه سیستم ترکیب کند و بقیه مؤلفه ها باید خود را با این مؤلفه جدید تطبیق دهند. این عمل را می توان به عملکرد سلولهای بدن انسان و یا اضافه شدن یک فرد جدید به یک جامعه شناخته شده انسانی تشبیه نمود.
خودالتیامی
در حال حاضر اکثر شرکتهای نرم افزاری تیمهای متخصص زیادی برای یافتن ریشه خرابی های سیستمهای کامپیوتری در اختیار دارند. برخی از خطاهایی که توسط مشتریان گزارش می شود، ممکن است مدتها یک تیم برنامه نویس را به خود مشغول کند. در بسیاری از موارد یک خطا به صورت مرموزی بدون هیچ اقدام خاصی محو می شود.
یک سیستم خودتطبیق از طریق ابزاری مانند آزمونگر رگرسیون می تواند خطاهای محلی را تشخیص داده و تعمیر نماید. یک مؤلفه تشخیص خطا، با استفاده از دانشی که در مورد سیستم کسب می کند( با استفاده از ابزاری مانند شبکه بیزن) اطلاعات به دست آمده از فایلهای ثبت وقایع را درخواست می کند. به این منظور مؤلفه ممکن است درخواست پایشهای کمکی نموده و از تحلیل آنها نیز برای یافتن مشکلات و خطاهای احتمالی استفاده کند. سپس مؤلفه خودتطبیق اطلاعات حاصل شده را با تصحیحهای نرم افزاری شناخته شده تطبیق داده و این تصحیحها را برای رفع مشکل نصب می نماید.
در واقع یک سیستم زمانی خود التیام نامیده می شد که بتواند به شکل خودمختار مشکلات و خطاهای رخداده در سیستم را تشخیص داده و اصلاح نماید. در سیستمهای خودمختار و خودتطبیق توزیع شده علاوه بر اصلاحاتی که در هر عامل به شکل مجزا و انفرادی رخ می دهد، کل سیستم نیازمند اصلاحات ساختاری است که با همکاری تمام سیستم حاصل می شود. برای مثال هنگامی که در یک سیستم که از تعداد زیادی عامل تشکیل شده است، عاملی از رده خارج می شوند، بقیه عاملها با همکاری یکدیگر باید مکانیزمی را اتخاذ نمایند که اثر نبودن آن عامل در سیستم به نحوی جبران شود. این کار می تواند از طریق واگذاری نقش به یک عامل دیگر، تغییر وظایف عاملهای موجود و غیره صورت پذیرد.
با وجود استفاده از دیواره های آتش و سیستمهای تشخیص نفوذ، همچنان حضور نیروی انسانی برای تصمیم گیری درباره نحوه حفاظت سیستم در برابر حملات و نفوذها ضروری می باشد. بنابراین سیستمهای خودتطبیق باید از دو جنبه خصوصیت حفاظت از خود را دارا باشند. اول آنکه باید از کل سیستم در برابر خطرات احتمالی شناخته شده و یا مشکلات گزارش شده توسط مؤلفه های خودالتیام محافظت کنند. دوم آنکه یک سیستم خودتطبیق باید بر پایه گزارشات اولیه از حسگرها برخی از مشکلات یا نفوذها را پیش بینی نموده و قدمهایی در جهت کاهش یا رفع آنها بردارد .
یک سیستم خودتطبیق از طریق ابزاری مانند آزمونگر رگرسیون می تواند خطاهای محلی را تشخیص داده و تعمیر نماید. یک مؤلفه تشخیص خطا، با استفاده از دانشی که در مورد سیستم کسب می کند( با استفاده از ابزاری مانند شبکه بیزن) اطلاعات به دست آمده از فایلهای ثبت وقایع را درخواست می کند. به این منظور مؤلفه ممکن است درخواست پایشهای کمکی نموده و از تحلیل آنها نیز برای یافتن مشکلات و خطاهای احتمالی استفاده کند. سپس مؤلفه خودتطبیق اطلاعات حاصل شده را با تصحیحهای نرم افزاری شناخته شده تطبیق داده و این تصحیحها را برای رفع مشکل نصب می نماید.