يكي از جذابترين و پيچيدهترين خصوصيات كيفي در توسعه نرمافزار ايمني (Safety) است. اين خصوصيت از آن لحاظ جذاب است كه توسعه نرمافزار و خصوصاً معماري نرمافزار را دچار چالش ميكند و اين براي افرادي چون من، بسيار جذاب است. روشهاي متداول با توجه به ماهيت ايمني، توان پاسخگويي به چنين مسئلهاي را بسادگي ندارند و از طرفي ايمني جزء معدود خصوصيات كيفي است كه تاثير دوگانه در توسعه نرمافزار دارد، هم بر محصول تاثير ميگذارد و هم بر فرآيند توسعه محصول. ايمني بهعنوان يك اصل وارد چرخه توسعه نرمافزار ميشود و بسادگي نميتوان از سد آن گذشت، گاهي چرخه توسعه نرمافزار را تا حد بسيار زيادي دستخوش تغييرات ميكند تا تضميني بر ايمني باشد، از طرفي معماري ايمن را بر نرمافزار اجبار مينمايد تا محصولي ايمن توسعه داده شود.
در برخورد با نرمافزارهاي ايمن (Safety-critical Software) اولين و مهمترين موضوع ايجاد چرخه ايمن توسعه نرمافزار است. استانداردهايي در اين زمينه ارائه شده است كه از آن جمله ميتوان به IEC 61508 اشاره نمود. اين استاندارد، به چند بخش تقسيم ميشود كه يك بخش آن مربوط به خصوصياتي است كه ميبايست در توسعه نرمافزار ايمن به آن توجه نمود. طبيعتاً اين استانداردها تنها در حوزه ايمني متمركز هستند و بالاجبار بايد با متدولوژيهاي متداول توسعه نرمافزار تركيب شوند يا به طريقي ديگر سفارشي شوند. تاكيدي كه اغلب اين استانداردها دارند به دو بخش اصلي تقسيم ميشوند:
- چگونه مخاطرات را شناسايي و رفع كنيد
- چگونه نرمافزار يا سختافزار ايمن توليد كنيد
در بخش اول، روشهايي براي شناسايي مخاطرات و تبديل آنها به نيازمنديهاي ايمني ارائه ميشود و در بخش دوم قواعد، اصول، رويهها يا ويژگيهايي براي مراحل مختلف توليد توصيه ميشود كه بستگي به سطح ايمني (Safety Integrity Level) مورد نياز بايد رعايت شود. بدين ترتيب شما با روشهايي بايد مخاطرات را شناسايي نموده كه اين ميتواند يك نظم يا فرآيند در توسعه نرمافزار باشد و آنها را تبديل به نيازمندي نماييد در چرخه توسعه محصول ديده شود و در كنار آن بايد قواعد ايمني در توليد را رعايت نماييد. بهعنوان مثال استفاده از زبان C با رعايت نكات ايمني همچون قواعد MISRA C يا استفاده از مدلسازي مبتني بر رياضي همانند روشهاي صوري يا پترينت.
پس از توسعه چرخه ايمن، مفهوم ديگر ظاهر ميشود و پيش روي شماست و آن معماري ايمن است. حال شما يك خصوصيت كيفي بهنام ايمني داريد كه بايد همانند ساير خصوصيات كيفي با آن برخورد نماييد. براي در نظر گرفتن اين خصوصيت كيفي ميبايست الگوها و تاكتيكهاي خاص آن را در نظر بگيريد. يكي از افرادي كه در اين زمينه، تحقيقات خوبي داشته است Tim Kelly استاد دانشگاه يورك ميباشد كه مجموعهاي از الگوها و تاكتيكهاي ايمني را شناسايي و بهصورت مستقل دستهبندي نمود. در واقع، وابستگي اين خصوصيت كيفي به خصوصياتي نظر Availability، Reliability و Fault Tolerance سبب شده است كه اغلب ايمني بهعنوان خصوصيت كيفي مجزا ديده نشود و اين تفكر كه يك معماري ايمن ميتواند متمركز بر خصوصيت كيفي ايمني باشد، اغلب ناديده گرفته ميشود.
در كاري كه اخيراً براي توسعه چرخه نرمافزار ايمن و سفارشيسازي RUP انجام دادم، سعي كردم قواعد و بندهاي استاندارد را به فعاليتهاي اجرايي در متدولوژي تبديل نمايم. اين كار با استفاده از EPF (رجوع شود به اينجا) انجام شده است. طبيعتاً چون حق استفاده و نشر در اختيار شركت ميباشد، تنها نمونهاي از آن در اينجا قرار داده ميشود.
براي مطالعه بيشتر در اين زمينه ميتوانيد استاندارد 61508 را از اينجا دانلودكنيد. همچنين ميتوانيد از ابزاري و كيتهاي آماده همچون Rational DOORS kit for ISO 26262 and IEC 61508 نيز استفاده نماييد، البته اگر بودجه شما كافي است.






مهدی جان، جالب بود.