بخشی از مقاله
چکیده
امروزه سیستم های نرم افزار ی با تغییرات بسیاری مواجهند.از یک سو محیطی که این سیستم ها در آن مشغول به کار هستند بسیار پویا و متغیر است و از سوی دیگر نیازمندی های کاربران سیستم ها به طور مداوم در حال تغییر است . با وجود تغییرات مداوم از سیستم های نرم افزاری انتظار می رود که توانایی مقابله با این تغییرات را داشته باشند و بتوانند در محیط های متغیر نیز وظایف خود را له درستی انجام دهند. به منظور دستیابی به چنین سیستم هایی مفهومی تحت عنوان تطبیق پذیری در مهندسی نرم افزار مطرح شده و نسل جدیدی از سیستم های نرم افزار ی با نام سیستم های تطبیق پذیر معرفی شده اند. این مقاله با هدف بررسی این سیستم ها و بیان برخی ویزگی های این نوع سیستم ها ارائه گشته است.
-1 مقدمه
در سالهای اخیر، پیچیدگی سیستمهای نرم افزاری افزایش یافته است، هم چنین با رشد روز افزون استفاده از سیستم های کامپیوتری در زندگی روزمره و فعالیت های تخصصی و تمایل به خودکار انجام شدن این فعالیت ها، توانا شدن سیستم ها در سرویس دهی بدون وقفه حتی در حضور خطاها، منابع متغیر و نیازهای گوناگون کاربران از اهمیت بیشتری برخوردار می شود. . علاوه بر این، سیستمها باید انعطاف پذیر، قابل پیکربندی و خود بهینه شوند تا بتوانند خود را با تغییراتی که در محیط عملیاتی و نیازمندیهای سیستم رخ میدهند تطبیق دهند.
در گذشته قسمت عمده ی این قابلیت ها که شامل پیکربندی مجدد، رفع اشکال و امور نگهداری هستند ،توسط نظارت نیروی انسانی تامین می شد و در نتیجه هزینه ی مدیریت این سیستم ها به شدت افزایش می یافت. یکی از دلایل اصلی این مشکلات ،ساختار حلقه باز - در اینگونه سیستم ها خواسته های ما از عملکرد آن به خوبی برآورده نمی شود و تنها دلیل استفاده ازاین سیستم سادگی ، تعمیر ونگهداری آسان واقتصادی بودن آن است - است که اغلب در توسعه ی سیستم ها وجود دارد.
سیستم خودتطبیق یک سیستم با حلقه Bبسته - آنچه برای کنترل دقیق تر و قابل انعطافتر لازم بوده و در سیستم کنترل مدار باز وجود ندارد یک اتصال بافیدبک لحظه توسط عنصری اندازه گیر - سنسور - انداز گیری می شود و در مقایسه ای با مقدار مطلوب ، اختلاف بین خروجی و مقدار مطلوب محاسبه شده ، به عنوان سیگنال خطا معرفی می گردد . این سیگنال خطابه واحد کنترل کننده ارسال و سپس کنترل کننده در حلقه کنترل ، به عنوان تصمیم گیرنده عمل مینماید به این ترتیب که با توجه به تنظیم های از پیش تعیین شده ، فرمان لازم برای تصحیح خطا صادر می نماید.
- به همراه یک حلقه ی بازخورد میباشد.هدف از آن تنظیم خود در طول عملیات،متناسب با تغییرات است.ین تغییرات ممکن است از خود سیستم - عوامل داخلی مانند خطا - یا زمینه - یا رویدادهای خارجی مانند افزایش درخواست های کاربر - سرچشمه بگیرند. این موارد منجر شده اند طراحان و توسعه دهندگان به سمت هدایت خودکار سیستم ها از طریق خود تطبیقی مسألهی بسیار مهمی در جامعهی مهندسی نرم افزار شود.
اخیرا برای حل این مشکل توجه شده است. سیستم خود تطبیقی سیستمی است که میتواند به صورت خودکار و پویا نقص ها، خطاها و خرابیهای عملیاتی خود در نرم افزار و سخت افزار را کشف، علت یابی و ترمیم میکند. اگر این کار به درستی انجام پذیرد، منجر به نتایج بهتر و رضایت بیشتر کاربران خواهد شد..هسته خود تطبیقی یک حلقه ی کنترلی است که در آن سیستم پایش می شود، مشاهدات حاصل از پایش تحلیل می شوند تا صحت سیستم مشخص شود و در صورت وجود خطا سیستم ترمیم می شود. مدیریت نرم افزار در زمان اجرا اغلب هزینه بر و زمان بر است، بنابراین از یک مکانیزم تطبیق انتظار میرود تا عملهای تطبیقی را با هزینهی منطقی و در یک روش زمانبندی شده انجام دهد. این هدف، از طریق کنترل خود سیستم نرمافزاری و محیط برای تشخیص تغییرات، اتخاذ تصمیمهای مناسب و بر طبق آن تصمیمها عمل کردن، به دست میآید.[1]
-2 تعریف سیستمهای خود تطبیق
نرم افزار خودتطبیق رفتار خودش را ارزیابی می کند و درصورتیکه مشخص شود که وظیفه اش را به درستی انجام نمی دهد یا می تواند آن را با کارایی بهتری انجام دهد،رفتارش را تغییر می دهد.این تعریف نشان می دهد که نرم افزار برای رسیدن به هدفش چندین راه دارد - می تواند راه با کارایی بالاتر را انتخاب کند - و همچنین برای تغییر ساختار خود در زمان اجرا ،از ساختارش دانش کافی دارد.چنین نرم افزاری باید قابلیت ارزیابی رفتار و کارایی خود را د اشته باشد و نیز باید بتواند خود را باز پیکربندی کند .[2]
این نوع سیستم ها با استفاده از نمونه های ورودی که به طورمطمعن طبقه بندی شده اند ودر زمان عملیات در دسترس هستند،خود را با محیط متغییر تطبیق می دهند.قادرند بدون اینکه هرگونه درخواست تعاملی از کاربر داشته باشند ،خود را با وجه به تغییر شرایط داخلی یا بیرونی وفق دهند. نکته ی اساسی در مورد سیستم خودتطبیق چرخه ی حیات آن است .بالعکس نرم افزارهای رایج،بعد زا نصب و راه اندازی نرم افزار خودتطبیق ،چرخه ی حیات آن پایان نمی یابد بلکه در زمان اجرا نیز برای تغییر سیستم وجود دارد.
یک سوال اساسی این است چرا به نرم افزار خود تطبیق نیاز است. دلیل اصلی،افزایش هزینه ی مریریت کردن پیچیدگی سیستم نرم افزاری است.به طور معمول،قسمت زیادی از تلاش ها برای مدیریت پیچیدگی و دست یابی به اهداف کیفی ،در فازهای توسعه ی نرم افزار متمرکز است .اما در سال های اخیر ،افزایش ناهمگونی مولفه های نرم افزاری ،تغییرات بیشتر در محیط /اهداف/نیازمندیها در زمان اجرا ونیازهای امنیتی بالاترباعث شدهاندکه تلاش شود تا پیچیدگی نرم افزار در زمان اجرا مدیریت شود. هدف نرم افزار خود تطبیق این است که محصولات و ویژگی های مختلف سیستم را نسبت به تغییرات در خود سیستم نرم افزاری و محیط آن وفق دهد.[2]
-3 ویژگیهای خود تطبیقی
در شکل زیر یک دید سلسه مراتبی از ویژگی های خود تطبیقی ارائه شده است.[3] در این دید سه سطح داریم :
سطح ابتدایی که شامل ویژگی های اساسی هر سیستم خود تطبیق است وچهار ویژگی در این سطح مطرح می شوند.
· خودآگاهی:سیستم از حالات و رفتار خودش آگاه است.
· آگاهی از محیط:سیستم از محیط خود یعنی محیط عملیاتی اش آگاه است .
· نظارت بر خود:سیستم قادر به تشخیص شرایط محیطی در حال تغییر است .
· آگاه از موقعیت خود:سیستم از شرایط عملیاتی خارجی که در حال حاضر وجود دارند آگاه است. سطح اصلی و سطح کلی.در این سلسله مراتب به نوعی خصیصه های زیرین ،بخش هایی از خصیصه های سطوح بالاتر هستند.
سطح کلی:این سطح شامل ویژگی هایی ست که هر سیستم خودتطبیق دارا می باشد.یک مجوعه از این صفات که زیر مجموعه ی خود تطبیقی هستند شامل خود مدیریتی خود دولتمندی،خود نگهداری،خودکنترلی وخود ارزیابی است.[2] خود مدیریتی خود دارای چهار جنبه میباشد که هر یک از این جنبه ها توسط تیمی جداگانه طراحی شوند اما وقتی در سیستم با هم ادغام میشوند خاصیت خودنگهداری به سیستم می دهند.[3]
در خود کنترلی سیستم به طور پیوسته محیط خود را کنترل کرده بر اساس ورودی های دریافت شده عمل می کند.[4] در این روش هدف این است که وظایف نگهداری و پیکربندی سیستم را از روی دوش مدیر سیستم برداریم.برای مثال سیستم وضعیت خودش را بررسی میکند ومتوجه میشود که به روز کردن یک مولفه کارایی سیستم را افزایش می دهد ،بنابراین خصوصیت به روز شده ی آن مولفه را نصب کرده وخود پیکربندی میکند ،سپس تست انجام می دهد.اگر سیستم در حین تست متوجه خطایی شود ، به حالت قبل بر می گردد و با استفاده از الگوریتم های مناسب سعی به رفع خطا کند.همه ی این کارها به طور خودکار وپویا در سیستم انجام می گیرد. سطح اصلی:مثل بدن انسان تا بتواند خودش را با تغییرات در محیط سازگار کند .چهار ویژگی در این سطح وجود دارند .
· خودپیکربندی:توانایی پیکر بندی خودکار وپویا در پاسخ به تغییراتی است که به وسیله ی نصب ،به روز رسانی ،یکپارچه سازی و تجزیه یا ترکیب موجودیت ها به وقوع می پیوندد.
· خودالتیام:با خود تعمیری و خود تشخیصی مرتبط است .یعنی توانایی تشخیص خطاها ،نقص ها و شکست ها با خود تعمیری یعنی توانایی بازیابی از این حالت ها . خود التیامی یعنی سیستم قابلیت کشف ،تشخیص و واکنش نشان دادن به اختلالات را دارد
. اختلالات دامنه ی وسیعی دارند ،از مشکلات سخت افزاری مثل نقص در حافظه تا مشکلات نرم افزاری مثل خطا در برنامه بعد از یافتن مشکل ،سیستم تلاش می کند تا آن را رفع کند .همچنین سیستم می تواند مشکلات بالقوه را کشف وبا انجام کارهای مناسب مانع از تبدیل آنها به شکست شود.
· خودبهبودی:توانایی مدیریت عملکرد و تخصیص منابع به منظور برآوردن نیازمندیهای کاربران می باشد.
· خودحفاظتی:به توانایی تشخیص نقص امنیت و بهبود اثرات بعد از آن اطلاق می شود.در واقع دارای دو جنبه است. جنبه ی اول،دفاع از سیستم در برابر حملات مخرب وجنبه ی دوم،پیش بینی مشکلات و اقداماتی در جهت جلوگیری از کاهش اثر این حملات می باشد. فرایند تطبیق دارای دو ساز و کار اصلی است: سازو کار پایش و سازو کار تطبیق . ساز و کار پایش به طور مداوم سیستم را مورد پایش قرار داده و رخدادها را شناسایی مب کند . هر رخداد نشانگر شرایطی است که درآن سیستم از حالت عادی اجرای خود خارج شده است ونیازمند تطبیق است.به عبارت دیگر هر رخداد باعث بروز تعدادی نیازمندی تطبیق می شود .و سازو کارهای تطبیق نحوهی تحقق هر استراتژی تطبیق را مشخص می کند [5].
فرایند پایش و تطبیق در سیستم های تطبیق پذیر[6]
یکی از چالش های اساسی در توسعه ی سیستم های تطبیق پذیر ارئه ی سازو کارهای تطبیق مناسب است که قادر بعه انتخاب و اعمال استراتژی تطبیق مناسب در زمان اجرا باشد. -4 ویژگی های مورد استفاده برای مقایسه ی سازوکارها یک ساز وکار تطبیق مناسب باید دارای ویژگی های اصلی زیر باشد: قابلیت استفاده ی مجدد اولین ویژگی ضروری برای یک سازو کار تطبیق خواهد بود .از سوی دیگر یک ساز وکار تطبیق باید قادر به پیش بینی تاثیر تطبیق پیش از اعمال آن بر سیستم باشد.
در غیر این صورت اعمال تطبیق ممکن است اما بدیهی ست که اعمال تطبیق های نادست نه تنها به بهبود عملکرد آن می شود.لذا لازم است تا حد امکان اطمینان حاصل کرد که تطبیق موردنظر اثر سوئی بر سیستم نخواهد داشت . یکی دیگر از ویژگی های مهم برای ساز و کارهای تطبیق این است که این ساز و کارها بتوانند فرایند تطبیق را در مرتبه ی زمانی قابل قبولی اجرا نمایند.بدیهی ست هدف از تطبیق سیستم مقابله با تغییرات محیطی است .