بخشی از مقاله
*** اين فايل شامل تعدادي فرمول مي باشد و در سايت قابل نمايش نيست ***
بررسي تکنيک هاي تحمل پذيري خطاي نرم افزار و بهينه سازي بلاک ترميم توافقي
چکيده : استفاده از سيستم هاي پيچيده کامپيوتري در صنعت و زندگي بشر رشد فزاينده اي داشته است و بسياري از اين سيستم ها بايد از قابليت اطمينان بالايي برخوردار باشند. از آنجائيکه فرآيند وارسي و آزمون در زمان طراحي و پياده سازي نرم افزار به تنهايي نميتواند جوابگوي اين نياز باشد براي قابل اطمينان ساختن نرم افزار از تکنيک هاي تحمل پذيري خطا استفاده ميشود . در اين پژوهش به بررسي تکنيک هاي تحمل پذيري خطاي نرم افزار مانند .برنامه نويسي چند نسخه اي ١ (NVP) ، بلاک ترميم ٢ (BR) ، بلاک ترميم توافقي٣ (BBR) پرداخته مي شود و سپس روشهايي براي بهينه کردن بلاک ترميم و برنامه نويسي چند نسخه اي ، مطرح ميشود. در اين پژوهش براي بهبود روش بلاک ترميم توافقي تکنيک جديدي را پيشنهاد ميدهيم .
کلمات کليدي: قابليت اطمينان - تحمل پذيري خطا – بهينه سازي- برنامه نويسي چند نسخه اي - بلاک ترميم توافقي
مقدمه
در دهه اخير استفاده از سيستم هاي کامپيوتري به شدت افزايش پيدا کرده است و يکي از نيازهاي اصلي اين سيستم ها (مانند سيستم هاي کنترل هواپيما ، دستگاه هاي پزشکي، هسته اي و غيره )استفاده از نرم افزارهاي ايمن و قابل اعتماد است . هزينه و نتيجه شکست اين سيستم ها ميتواند بسيار فاجعه انگيز باشد . يکي از راه هاي جلوگيري از شکست نرم افزاري سيستم ها، استفاده از تکنيک هاي تحمل پذيري خطا است . اين امر باعث ميشود برنامه هاي نرم افزاري خطاهاي کمتري توليد کنند. در اين تکنيک ها، چند نسخه از يک نرم افزار که معادل يکديگر هستند و عمليات يکساني را انجام ميدهند اما طراحي و پياده - سازي متفاوتي دارند استفاده ميشوند. در پروژه هاي نرم افزاري، تعداد نسخه هاي اضافي بسيار کم است (٥ نسخه و يا کمتر از ٥ نسخه ) . تاکنون بيشترين تعداد نسخه هاي استفاده شده در نرم افزار فضايي شاتل بوده است . در اين نرم افزار ٥ نسخه ي مشابه همزمان اجرا ميشدند و همين امر باعث افزايش هزينه ي نرم افزار و زمان اجرا آن شده بود . با توجه به اين مسئله بهتر است فقط تعداد کمي نسخه اضافي استفاده شود[١] ، بنابراين در اين پژوهش تعداد نسخه هاي اضافي ٥ در نظر گرفته شده است و تکنيک ها برمبناي ٥ نسخه توضيح داده ميشوند.
٢-تکنيک تحمل پذيري خطا به روش برنامه نويسي چند نسخه اي
برنامه نويسي چند نسخه اي پايه ، تکنيکي چند نسخه اي است که در آن تمام نسخه هاي نرم افزار به صورت مستقل طراحي و پياده سازي شده اند و عمليات يکساني را انجام مي دهند . هر يک از نسخه ها به صورت مستقل اجرا ميشوند و نتيجه نهايي معمولا با رأيگيري اکثريت بين خروجي نسخه ها توسط مؤلفه ي داور مشخص ميشود [٢ ,٣] . داور، مؤلفه اي است در معماري تحمل پذيري خطاي نرم افزار که نتيجه ي نهايي را از ميان نتايج نسخه هاي مختلف نرم افزار براساس رأيگيري انتخاب مي نمايد. اگر در اين تکنيک از n نسخه استفاده شود آن را NVP مي نامند و از آنجاييکه در اين پژوهش ٥ نسخه در نظر گرفته شده است ، واژه ي VP٥ بکار برده ميشود . براي بررسي ميزان قابليت اطمينان اين تکنيک از رابطه ي (١) استفاده ميشود [٤] .
که در آن qi برابر است با احتمال اينکه نسخه ي i جواب درست توليد کند و pi برابراست با احتمال اينکه نسخه ي i جواب نادرست توليد کند. به طور معمول احتمال موفقيت نسخه هاي مختلف با يکديگر برابر نيست اما براي راحتي اثبات و محاسبات در رابطه ي (١) و ديگر روابط موجود در اين مقاله فرض ميشود :
شکل ١ [٥] شماي کلي برنامه نويسي چند نسخه اي پايه را نشان ميدهد . در اين شکل DM مکانيسم تصميم گيري است که همان رايگيرنده ميباشد .
با ايجاد تغييراتي در ساختار تکنيک برنامه نويسي چند نسخه اي ، تکنيک هاي ديگري ايجاد شده است که مزايا و معايبي نسبت به برنامه نويسي چند نسخه اي پايه دارند . يکي از مشهورترين اين تکنيک ها برنامه نويسي چند نسخه اي خودآزما است در اين تکنيک چندين نسخه از نرم افزار اجرا ميشوند و بر روي خروجي هر نسخه يک تست پذيرش انجام ميشود و خروجيهايي که تست پذيرش را با موفقيت پشت سر بگذارند به يک رايگيرنده داده ميشوند و اين رايگيرنده است که نتيجه ي نهايي را مشخص مي کند[٦] . مزيت روش چند نسخه اي خودآزما بر روش چند نسخه اي پايه ، اضافه شدن تست هاي پذيرش به نسخه - ها و خودآزما شدن نسخه هاي نرم افزار است که در نتيجه قابليت اطمينان افزايش مييابد اما از طرفي اجراي تست هاي پذيرش به تعداد نسخه هاي نرم افزار سربار قابل توجهي را براي اين تکنيک ايجاد ميکند . شکل ٢ شماي کلي برنامه نويسي چند نسخه اي خودآزما را نشان مي دهد و در اين شکل selection logic همان رايگيرنده ميباشد .
٣- تکنيک تحمل پذيري خطا به روش برنامه نويسي چند نسخه اي esesu r ei s١
با ايجاد تغييرات قابل ملاحظه اي در معماري و ساختار تکنيک برنامه نويسي چند نسخه اي پايه تکنيک ديگري مطرح شده است که عليرغم ناشناخته بودن اين تکنيک ، قابل اطمينان تر ميباشد. همچنين نسبت به روش چند نسخه اي پايه سربار اجرايي کمتري دارد. اين تکنيک Alternative1 نام دارد [٤] .
تعداد ماژول هاي ( نسخه ها) تشکيل دهنده ي تکنيک Alternative1 برابر با تعداد نسخه هاي VP٥ است .
Alternative1 داراي يک ماژول تست پذيرش (T) با قابليت اطمينان بالا ميباشد. تست پذيرش ، مؤلفه اي در معماري تحمل پذيري خطاي نرم افزار است که رفتار نسخه اي از نرم افزار را با توجه به شرايط مورد انتظار بررسي ميکند و خروجي را توليد ميکند. از ٤ ماژول ديگر سه ماژول
به عنوان نسخه هاي اصلي هستند و ماژول ديگر ( M٤) نسخه اي فرعي است که در مواقع خاص از آن استفاده ميشود . نحوه ي عمکرد Alternative1 به اين صورت است که ابتدا اجرا ميشوند و يک راي گيرنده ( V ) بر روي خروجي آن ها تصميم ميگيرد . اگر رايگيرنده بتواند نتيجه ي نهايي را از ميان سه خروجي انتخاب کند کار به پايان ميرسد در غير اينصورت اگر رايگيرنده بر روي ٢ خروجي به توافق برسد ، خروجي راي گيرنده به تست پذيرش داده ميشود که اگر خروجي، تست پذيرش را با موفقيت بگذراند به عنوان نتيجه ي نهايي انتخاب ميشود و کار به پايان ميرسد . اما اگر تست پذيرش نيز در تعيين نتيجه ي نهايي شکست بخورد ، ماژول M٤ را فعال ميکند و خروجي M٤ نتيجه ي نهايي ميباشد . اگر رايگيرنده هيچ يک از نتايج نسخه ها را انتخاب نکند ، ماژول M٤ را فعال ميکند و خروجي M٤ نتيجه ي نهايي ميشود . شکل ٣ [٤] شماي کلي Alternative1 را نشان ميدهد .
VP٥ ميتواند تا دو شکست در نسخه ها را تحمل کند و باز هم جواب صحيحي را توليد کند زيرا بيش از
٢/ ( ١+n) نسخه باقي ميماند . اما سه و يا تعداد بيشتري شکست در ماژول ها موجب شکست VP٥ ميشود . ميتوان ادعا نمود که Asesu r es1 نيز ميتواند تا دو شکست در تمام ماژول ها ( نسخه ها ، رأي گيرنده و تست پذيرش ) را تحمل کند و اين ادعا را با بررسي فضاي حالتي که با دو شکست بوجود ميآيد اثبات نمود :
حالت ١ ) دو نسخه از ميان خطا دارند و امکان دارد شکست بخورند.T و M٤ بدون خطا هستند و شکست نميخورند . اگر دو نسخه خطا دار نتايج غلط و مشابهي توليد کنند ، اين نتايج غلط توسط T رد ميشوند . اگر دو نسخه ي خطا دار نتايج مشابهي توليد نکنند ، M٤ توسط V فعال ميشود .
حالت ٢ ) T و M٤ خطا داشته باشند و شکست بخورند . بدون خطا هستند و نتايج درستي توليد ميکنند و نتيجه ي صحيح نهايي توسط V انتخاب ميشود