نسخه چاپی
از همان زمانی که درسال 1947 حشرهاي عملکرد سیستم مارک 2 هاروارد را مختل كرد تا همین امروز که بیش از شصت سال از آن تاریخ ميگذرد، باگها عضو جدانشدني نرمافزارهای کامپیوتری بودهاند (البته برخلاف افسانههاي موجود، تولد اصطلاح باگ با این اتفاق رخ نداده است). این مفهوم آنقدر در زندگی ما وارد شده که حتی بهعنوان کاربر نیز در موارد بسیاری ميتوانیم تشخیص دهیم، نرمافزار در چه بخشی باگ دارد و البته بهراحتی نیز از کنار آن ميگذریم، زیرا برایما روشنشدهاست که نرمافزارها باگ دارند و این امری اجتنابناپذیر است، اما مسئله به همین سادگیها هم نیست. با این که باگها به ندرت خسارت جانی در پی داشتهاند، اما بارها نيز خسارتهاي عظیم مالی به همراه آوردهاند. در این مقاله سعی خواهیم كرد تا ده باگ خطرآفرین تاریخ نرمافزارهای کامپیوتری را بیان كنيم. فهرستي که شامل اتفاقاتی غیرقابل باور است. توجه داشته باشید که در این مقاله به هر باگ به صورت مختصر اشاره شده و به همین دلیل ممکن است توضیحات فنی ارائه شده برای بعضی کافی نباشد. به همين دليل، بهتر است با جستوجو درباره باگ مورد نظر اطلاعات تکمیلی در رابطه با آن را مطالعه كنيد. اين مطلب يكي از مقالات بخش ويژه نشريه ماهنامه شبكه در شماره 122 با عنوان خطرناك ترين باگ هاي تاريخ ميباشد. جهت دريافت اين بخش ويژه به بخش پروندههاي ويژه سايت مراجعه نمائيد.
1- کاوشگر مارینر (1962)
هزینه: 18,5 میلیون دلار
راکت مارینر 1 و یک کاوشگر فضایی به سمت ونوس در حال حرکت بودند. با این حال، درست کمی بعد از ظهر بود که آنها از مسیرشان منحرف شدند. مرکز کنترل عملیات مجبور شد راکت را 295 ثانیه بعد از شروع حرکت از بین ببرد. مشکل اینجا بود که یک برنامهنویس هنگام واردکردن فرمولی از روی نوشته کاغذی مرتکب اشتباه شده و علامت باری را که بر بالای یکی از حروف قرار داشت و نشان دهنده تابع Smoothing (ملايمكننده) آن متغیر بود، وارد نکرده بود. به این ترتیب، هر تغییر نرمال سرعتو شتاب را به صورت یک موضوع جدی تلقی کرده و این امر باعث شد تا حرکت راکت دچار تغییرات اشتباه شده و از مسیر منحرف شود.
2- خط لوله گاز شوروی (1982)
هزینه: میلیونها دلار، ضرر قابل توجه به اقتصاد روسیه
دولت شوروی در راستای برنامه کسب یا سرقت فناوريهاي حیاتی از ایالاتمتحده کامپیوترهایی را برای کنترل خط لولهگاز ترانس، سیبری تهیه کرد. ماهیت پیچیده این خط لوله نیاز به سیستمهاي پیچیدهاي را برای کنترل اقتضا ميکرد. به همین دلیل، آنها تصمیم گرفتند از فناوريهاي غربی استفاده کنند و سراغ کانادا رفتند . CIA با علم به این خرید، باگی را در این سیستمها جاسازی کرد که در بررسیهاي اولیه روسها خود را نشان ندهد، اما بعد در عملیات باعث انفجار خطوط گاز شود. در نهايت، این اتفاق افتاد و انفجار صورت گرفته بزرگترین انفجار انسانی غیراتمی تاریخشد. با توجه به قرار داشتن این سیستمها در مناطق دورافتاده خسارت جانیاي برای آن اعلام نشد. بعدها روسها منکر چنین داستانی شده و آن را زاییده مغز امریکاییها دانستند. به گفته آنان، دلیل این انفجار فقط خطا در ساخت خط لوله در آن نقطه خاص بوده و شدت آن نیز بسیار کمتر از آن چیزی که بیان شده بوده است.
3- جنگ جهانی سوم (1983)
هزینه: تقریباً تمام بشریت
23 سپتامبر 1983 روزی بود که ميتوانست تاریخ بشریت را برای همیشه تغییر دهد. همه چیز از یک باگ شروع شد که باعث شد شوروی اخطاری اشتباه را مبنی بر شروع حمله هوایی ایالاتمتحده دریافت كند. شاید همه ما باید سپاسگزار یک کارمند دولت شوروی باشیم که باعث شد جنگ جهانی سوم کلید نخورد.ماجرا اينگونه شروع شد که صبح روز بیست و سوم ماه سپتامبر، سیستم اخطار اولیه شوروی اعلام كرد، پنج موشک از سوی امریکا به سمت این کشور در حال حرکت است. کلنل ستوان استانیسلاو پتروف که فرماندهی آن بخش از سیستم اخطار اولیه را برعهده داشت، به کارمندانش اعلام کرد، برای اعلام نتیجه دست نگه دارند. وی برای کارش دو دلیل داشت: نخست اینکه با وجود دعواهای لفظی موجود میان دو کشور در آن زمان کلنل مشاهده کرده بود که بيشتر این درگیریها تنها در مرحله کلامی باقی مانده و اثر جانبی ندارند. البته، دومین دلیل کلنل که مهمترین آنها نیز محسوب ميشد، این بود که اگر ایالاتمتحده قصد حمله هوایی به شوروی را داشته باشد، به يقين برای این کار خیلی بیشتر از پنج عدد موشک به سمت این کشور روانه خواهد كرد.
پس از تأملی چند دقیقهای، سیستم دیگر هیچ نشانی از این موشکها نشان نداد و به این ترتیب مشخص شد، تشخیص اولیه از خطای سیستم ناشی شده بود. دلیل این خطا از آنجا ناشی ميشد که نرمافزار نتوانسته بود تشخیص اشتباه وجود موشکی را که از انعکاس نورخورشید از روی بخش بالایی ابرها ناشی ميشد، فیلتر کند. البته، بررسیهاي بعدی نشان داد، تعداد باگهاي این سیستم خیلی بیشتر از این صحبتها بوده و به طور کلی نرمافزار به کار رفته در آن پر از باگ است. با وجود تصمیم هوشمندانه کلنل مبنی بر جلوگیری از اعلام دستور ضدحمله، وی به دلیل عدم اعتمادش به سیستم برنامهنویسان شوروی به شدت از سوی دولت در تنگنا قرار گرفت و به همین دلیل مجبور به بازنشستگی پیش از موعد شد. تصمیم او آینهاي از عدم قدرت برنامهنویسان شوروی در تولید سیستمهاي حیاتی بود و این موضوعی بود که اصلاً به مذاق پروپاگاندای دولت شوروی سابق خوش نمیآمد. در 21 مي سال 2004 سازمان انجمن شهروندان جهانی در سانفراسیسکو بالاترین درجه افتخاریاش را به کلنل پتروف اهدا کرد تا شاید به این وسیله از تصمیم هوشمندانه وی تجلیلی به عمل آید.
4- شتاب دهنده پزشکی ثراک- 25 (1986-1985)
هزینه: مرگ سه نفر و مصدومیت شدید سه نفر دیگر
ماشین Radiation Therapy کانادایی ثراک25 با عملکرد اشتباه خود پرتوهاي مرگ باری را به سمت تعدادی از بیماران روانه داشت. این دستگاه که یک سیستم درمانی پیشرفته محسوب ميشد ميتوانست دو نوع پرتوزایی مختلف را ارائه كند. یکی با پرتوهای کم قدرت مانند ذرههاي بتا و دیگری با اشعه X. یکی از پیشرفتهاي مهم انجامگرفته در ساخت این دستگاه جایگزینی قفل امنیتی الکترومکانیکی با یک نرمافزار کنترلی بود که به عقیده سازندگان ميتوانست اطمینان پذیری بیشتری را برای نرمافزار به همراه آورد.
چیزی که مهندسان سازنده ثراک25 از آن اطلاع نداشتند این بود که هم این مدل و هم مدل قبلی آن، یعنی ثراک20 از سیستم عاملی استفاده ميکردند که توسط یک برنامهنویس نه چندان حرفهاي سرهم شده بود. در نتیجه، این سیستم عامل از باگ به نسبت مشهوری با عنوان Race Condition رنج ميبرد. این اصطلاح به زمانی گفته ميشود که خروجی سیستم به صورت غیرمنتظره و خطیری به زمان بندی اجرای فرآيند یا رشتههاي پردازشي (thread) مختلف بستگی داشته باشد. به طور خاص در سیستم ثراک25 این باگ باعث ميشد تا تایپیستی با انگشتان سریع بتواند به صورت اتفاقی تنظیمات سیستم را به گونهاي تغییر دهد که سیستم شروع به تابش پرتوی با قدرت بالا كند، در حاليكه فلز هدف اشعه X در موقعیت حفاظتی خود قرار نداشته باشد. به احتمال ميتوانید تصور کنید که بقیه داستان چگونه پیش خواهد رفت!
این باگ به یکی از غم انگیزترین داستانهاي شکست نرم افزارها تبدیل شد. تعداد کشتهها در برخي منابع تا پنج نفر نیز گزارش شده است. دو تن از بیماران در هنگام درمان با این دستگاه سعی کردند در حال جیغ کشیدن و زاری کردن از اتاق فرار کنند. تجربه ثراک 25 باعث شد تا دستگاههای پزشکی با کنترل بیشتری قبل از عرضه مواجه شوند، هر چند که هزینه این پیشرفت بسیار سنگین بود.
5- راز دوشنبه سیاه (1987)
هزینه : 500 میلیارد دلار در یک روز
دوشنبه سیاه اصطلاحی است که به 19 اکتبر 1987 گفته ميشود. یعنی روزی که شاخص صنعتی داو جونز با 508 درجه سقوط 22,6 درصد ارزش کلیاش را از دست داد. شاخص S&P 500 نیز 20,4 درصد سقوط كرد تا به این وسیله وال استریت با یکی از بزرگترین بحرانهاي تاریخش مواجه شود.برنامههاي مبادله کامپیوتری در آن زمان به نسبت مفهومی جدید محسوب ميشدند و عده بسیاری از افراد هنوز اطمینان کافی به این سیستمها نداشتند. با سقوط بازار در روز دوشنبه، بلافاصله بسیاری دلیل اصلی این امر را اشتباه برنامه در تولید تعداد زیادی از دستورات فروش دانستند که باعث شد بازار در هم شكسته (Overwhelm) شده و سیستمها از کار بیفتند. جامعه فعال در زمینه مالی نیز بهدلیل پیشزمینه فکری شان در زمینه استفاده از برنامههاي کامپیوتری به سرعت این دلیل را پذیرفتند. اما مسئله پیچیدهتر از این حرفها بود. در حقيقت، این فاجعه اصلاً از یک باگ کامپیوتری به وجود نیامده بود، بلکه افراد فعال در این زمینه سعی کردند با سپر بلا کردن کامپیوتر، اشتباهات خود را در تنظیم بازار بپوشانند. واقعیت اینجا است که این سیستم شامل راهبردي برای دست و پنجهنرمکردن با بیمههاي پورتفولیو بود و همین راهبرد بود که سقوط بازار را رقم زد. مشتقات بیمه پورتفولیو وابستگی شدیدی به شرایط بازار دارند. به همین دلیل، وقتی شرایط در بورس هنگ کنگ و اروپا بحرانی شد، با باز شدن بازار بورس در ایالاتمتحده این برنامه بنا به راهبرد پيشبيني شده در آن شروع به تولید حجم زیادی از دستورهای فروش كرد و این موضوع باعث شد تا قیمتها به طرز حیرت آوری پایین آید. نکته اصلی اینجا است که این برنامه دقیقاً همانکاری را انجام داد که قرار بود انجام دهد. یکی از ویژگیهایی که در این نرمافزار تعبیه شد، تولید حجم زیادی از درخواستهاي فروش در شرایط فروریختن بازار بود. هر چند که دوشنبه سیاه مشخص کرد این ویژگی، هوشمندانه تنظیم نشده بود، اما به هر سو این مشکلی نیست که بتوان آن را به نرمافزار ارتباط داد. تا جایی که به نرمافزار مبادله مربوط ميشده است، این سیستم کارش را به درستی انجام داده بود. این حادثه شاید مشهورترین باگی باشد که در واقع باگ نبوده است!