یکی از موارد تاثیرگذار روی چرخه فعالیت یه سیستم نرم‌افزاری خطاهاست. خطاهای نرم‌افزاری رو می‌شه بر اساس فاکتور‌های مختلفی دسته بندی کرد و توی مستندات مختلف تعاریف مختلفی وجود داره.

می‌تونیم بگیم سه دسته تهدید برای یک نرم‌افزار وجود داره :

  • Fault : خرابی‌هایی در نرم‌افزار که محسوس نیستند و کاربر از آن مطلع نخواهد شد
  • Error : میشه گفت به Fault های محسوس Error می‌گیم
  • Failure : زمانی که Error آنقدر ادامه پیدا کنه که و به دید ناظر بیرونی برنامه برسه و یا به اصطلاح روی خروجی برنامه تاثیر مستقیم داشته باشه به اون Failure خواهیم گفت

دلایل بروز خطاها رو هم می‌تونیم به دو دسته تقسیم کنیم :

  • خطاهای ذاتی: فاکتورهای مختلفی روی این نرم‌افزارها تاثیرگدارن، برای مثال گستردگی نرم‌افزار و یا عدم مستقل بودن اون و در نتیجه بستری که نرم‌افزار روی اون پیاده‌سازی می‌شه.

  • خطاهای انسانی: که خوب همونطور که از اسمش مشخصه مربوط به خطاهای افراد می‌شه برای مثال اشتباهات اپراتور در ورود اطلاعات.

حالا چه طور می‌شه از این خطاها جلوگیری کرد؟ جواب این سوال خیلی سادست، با رعایت مواردی مثل به کار گرفتن برنامه‌نویس‌های ماهر و استفاده از متودولوژی درست و همچنین اثیات رسمی ( Formal Proof ) می‌تونیم تا حدی از تهدیدات نرم‌افزاری دور بمونیم.