خطا و از کار افتادن بخشی از سیستم، یک اتفاق استثنایی نیست، بلکه بخشی از رفتار طبیعی سیستمهای نرمافزاری واقعی است.
بنابراین طراحی باید از ابتدا به این سؤال پاسخ دهد که سیستم در زمان بروز خطا چگونه واکنش نشان میدهد.

خطا بهعنوان بخشی از واقعیت سیستم
نمیتوان انتظار داشت همهٔ بخشهای سیستم همیشه درست کار کنند.
شبکه، سرویسها، دیتابیس یا وابستگیهای خارجی ممکن است دچار مشکل شوند و این وضعیت باید در طراحی دیده شود.
طراحی خوب، تلاش نمیکند خطا را نادیده بگیرد، بلکه رفتار سیستم در زمان خطا را مشخص میکند.
واکنش سیستم به از کار افتادن اجزا
وقتی یک بخش از سیستم از کار میافتد، چند حالت ممکن است رخ دهد:
مشکل به همان بخش محدود بماند
یا مشکل به بخشهای دیگر سرایت کند
هدف طراحی این است که مشکل تا حد امکان محدود بماند و کل سیستم تحت تأثیر قرار نگیرد.
ایزولهسازی بخشها
هرچه اجزای سیستم مستقلتر باشند، احتمال گسترش خطا کمتر میشود.
اگر خرابی یک بخش باعث توقف بقیهٔ بخشها شود، سیستم شکنندهتر خواهد بود. بنابراین جدا نگه داشتن مسئولیتها و وابستگیها اهمیت دارد.
نوع ارتباط میان اجزا
ارتباطهایی که وابستگی لحظهای ایجاد میکنند
ارتباطهایی که این وابستگی را کاهش میدهند
نوع ارتباط، تأثیر مستقیمی بر این دارد که خطا چگونه و تا کجا منتشر شود.
وابستگی در زمان اجرا
برخی ارتباطها باعث میشوند اجزا در زمان اجرا به هم وابسته باشند.
در این حالت اگر یکی از اجزا دچار مشکل شود، بخشهای دیگر نیز تحت تأثیر قرار میگیرند.
کاهش این وابستگی، باعث میشود سیستم در شرایط خطا رفتار پایدارتری داشته باشد.
واکنش سیستم در شرایط فشار
در شرایط فشار بالا یا بروز خطا:
سیستم نباید دچار واکنش زنجیرهای شود
هر بخش باید تا حد ممکن مستقل عمل کند
طراحی باید بهگونهای باشد که سیستم بتواند فشار را بهتر تحمل کند.
تصمیمگیری در طراحی ارتباطها
انتخاب نوع ارتباط میان اجزا یک تصمیم طراحی مهم است.
این تصمیم:
بر پایداری سیستم اثر میگذارد
بر رفتار سیستم در زمان خطا تأثیر مستقیم دارد
بنابراین این انتخاب نباید اتفاقی یا صرفاً سلیقهای باشد.
ارتباط طراحی با سناریوهای خطا
تصمیمهای طراحی باید با در نظر گرفتن سناریوهای خطا گرفته شوند.
طراح باید از خود بپرسد:
اگر این بخش از کار افتاد چه میشود؟
آیا کل سیستم متوقف میشود یا فقط همان بخش؟
این پرسشها پایهٔ طراحی مقاومتر هستند.
خطا بخشی از واقعیت سیستم است
نوع ارتباط میان اجزا نقش مهمی در انتشار یا محدود شدن خطا دارد
طراحی خوب تلاش میکند اثر خطا را کنترل و محدود کند