ساده سازی پیچیدگیهای ذاتی و کم کردن پیچیدگیهای تصادفی
-
پیچیدگی ذاتی، به دشواریهای ذاتی یک مسئله اشاره دارد که بدون از دست دادن جزئیات مهم نمیتوان آن را سادهتر کرد. برای مثال، کنترل ترافیک هوایی یک کشور به خودی خود یک مسئله پیچیده است، زیرا باید موقعیت دقیق، سرعت، جهت و مقصد هر هواپیما را در لحظه ردیابی کرد تا از برخوردها جلوگیری شود. همچنین، برنامهریزی زمانهای پرواز و مدیریت تغییرات آب و هوایی هم به پیچیدگی ذاتی این مسئله اضافه میشود.
-
پیچیدگی اتفاقی به بار اضافی اشاره دارد که توسط سیستمها یا چارچوبهایی که برای حل پیچیدگی ذاتی ساخته شدهاند، اضافه میشود. در مثال ترافیک هوایی، سیستمهای قدیمی کنترل ترافیک هوایی یک نمونه از پیچیدگی اتفاقی است. این سیستمها که برای مدیریت پیچیدگیهای ترافیک هوایی ایجاد شدهاند، به مرور زمان قدیمی شده و انعطافپذیری خود را از دست دادهاند، بهطوریکه بهروزرسانی آنها بسیار دشوار شده است و لایههای غیرضروری به مشکل اصلی اضافه کردهاند.
گاهی اوقات، توسعهدهندگان به دلیل چالشبرانگیز بودن مسائل پیچیده، به سمت پیچیدگی جذب میشوند، اما این میل میتواند باعث ایجاد سیستمهای بیش از حد پیچیده و دارای پیچیدگی اتفاقی شود. چالش برای معماران سیستم این است که چارچوبها و راهحلهایی را انتخاب کنند که این پیچیدگی اتفاقی را به حداقل برسانند و روی کدی تمرکز کنند که مستقیماً به حل مشکل اصلی کسبوکار کمک میکند، نه اینکه ساختار را با راهحلهای بیجهت پیچیده کنند.
برای دستیابی به این هدف، توصیهها عبارتند از:
1.
انتخاب چارچوبهایی که در عمل موثر بودن خود را اثبات کردهاند به جای طرحهای نظری صرف.
2.
ارزیابی درصد کدی که فقط به ارتباط بین کاربر و سیستم میپردازد و مستقیماً مشکل اصلی را حل نمیکند.
3.
با دقت انتخاب کردن راهحلهای ارائه شده توسط فروشندگان، زیرا این راهحلها گاهی بیشتر پیچیدگی اتفاقی را افزایش میدهند تا اینکه آن را برطرف کنند.
در نهایت، وظیفه معمار سیستم این است که پیچیدگیهای ذاتی را بهدرستی مدیریت کند و از افزودن پیچیدگی اتفاقی جلوگیری کند تا راهحلهای بهینه، قابل نگهداری و انعطافپذیر ایجاد شوند.
"پیچیدگی ذاتی در هر مسئله وجود دارد، اما پیچیدگی اتفاقی از راهحلهای اضافه و غیرضروری ناشی میشود. وظیفه معماران سیستم این است که بدون افزودن پیچیدگی غیرضروری، راهحلهایی ساده و کارآمد برای مسائل پیچیده طراحی کنند."
#TIP-02
〰️〰️〰️〰️〰️〰️© @microfrontend_ir