سخنران: Barry O'Reilly
رویداد: NDC London 2024
لینک ویدئو: https://www.youtube.com/watch?v=_MPUoiG6w_U
در این سخنرانی، بهجای معرفی یک ابزار یا الگوی جدید، خود شیوه فکرکردن ما به طراحی را به چالش میکشد. «نظریه باقیماندهها» (Residuality Theory) از بری اورایلی از این جنس است. اورایلی سالها معمار سیستمهای سازمانی بزرگ بوده و بعد برای پاسخ به یک سوال آزاردهنده به برگشته است: چرا معماریهایی که با دقت طراحی میکنیم، در برخورد با واقعیت اینقدر زود میشکنند؟ پاسخ او تلفیقی غیرمنتظره از معماری نرمافزار و علم سیستمهای پیچیده است و این سخنرانی، بهترین نقطه ورود به آن است.
استدلال اورایلی از یک مشاهده ساده شروع میشود: نرمافزار، سیستمی «مرتب» (Ordered) است (قطعی و قابل تحلیل) اما در محیطی «پیچیده» (Complex) زندگی میکند: بازار، رقبا، قانونگذار، کاربران و مدیرانی که رفتارشان پیشبینیناپذیر است. او این وضعیت دوگانه را «هایپرلیمینال» مینامد. رویکرد سنتی ما فرض میکند آینده قابل استخراج از ذینفعان است؛ در حالی که در محیط پیچیده، مهمترین اتفاقات آنهایی هستند که هیچکس پیشبینی نکرده است.
جایگزین پیشنهادی او چنین است: طراحی را با یک «معماری سادهلوحانه» شروع کنید؛ همان طرح اولیهای که با دانش امروز میکشید. سپس بهجای افزودن نیازمندیهای بیشتر، سیستم را زیر رگبار «استرسورها» بگیرید: اگر تأمینکننده اصلی ورشکست شود چه؟ اگر بار سیستم ده برابر شود؟ اگر قانون جدیدی مدل درآمد را ممنوع کند؟ اگر رقیبی سرویس را رایگان عرضه کند؟ برای هر استرسور بررسی میکنید چه چیزی از معماری «باقی میماند» و طرح را طوری اصلاح میکنید که باقیمانده کارآمدتری داشته باشد. ابزار عملی این کار «ماتریس وقوع» (Incidence Matrix) است: جدولی از استرسورها در برابر اجزای سیستم که نشان میدهد هر شوک به کدام اجزا سرایت میکند. این ماتریس ساختار پنهان و اتصالهای واقعی سیستم را آشکار میکند. ادعای جسورانه و جالب اورایلی، که آن را با پژوهش دانشگاهی هم محک زده، این است که تمریندادن معماری با استرسورهای تصادفی، مثل آموزش شبکه عصبی، سیستم را در برابر شوکهای «دیدهنشده» هم مقاومتر میکند؛ چون آنچه واقعاً بهبود مییابد، ساختار اتصالات درونی سیستم است، نه پاسخ به تکتک سناریوها.
اولین بار که این سخنرانی را دیدم، حس کردم کسی بالاخره برای شهودی که هر معمار باتجربهای دارد (اینکه طرح اول همیشه غلط است) یک چارچوب نظری و قابل آموزش ساخته است. زیبایی نظریه باقیماندهها این است که عدم قطعیت را نه دشمنی که باید حذف شود، بلکه ماده اولیه طراحی میداند. مقایسه آن با رویکردهای رایج هم روشنگر است: تحلیل ریسک سنتی فقط ریسکهای «محتمل و شناختهشده» را میبیند، اما استرسورهای اورایلی عمداً تصادفی و حتی نامعقول انتخاب میشوند، چون هدف، پیشبینی نیست؛ ورزیدهکردن ساختار است. البته نقدی هم دارم: فرایند کامل آن برای پروژههای کوچک شاید سنگین باشد و مهارت تسهیلگری قابلتوجهی میخواهد تا جلسات استرسور به فهرست نگرانیهای تکراری تبدیل نشود. اما حتی نسخهٔ سبک آن هم از هیچچیز بهتر است.
عملیترین کاربرد این ایدهها در فاز طراحی اولیه و بازبینیهای معماری است. میتوانید کارگاه نیمروزهای برگزار کنید: معماری فعلی یا پیشنهادی را روی تخته بکشید، از اعضای تیم (و نه فقط فنیها) بخواهید بیست استرسور بنویسند و سپس ماتریس وقوع را پر کنید. جاهایی که یک استرسور به چندین جزء سرایت میکند، اتصالهای پنهان شماست؛ همانجا باید مرز، انتزاع یا افزونگی اضافه کنید. این تمرین بهخصوص پیش از تصمیمهای گرانبرگشت (انتخاب پلتفرم، مدل استقرار، وابستگی به یک فروشنده خاص) ارزش واقعی دارد و خروجیاش را میتوان مستقیم به ADRها برد.
نظریه باقیماندهها به ما میگوید معماری خوب آن نیست که برای نیازمندیهای امروز بهینه باشد؛ آن است که بعد از شوکهای فردا، چیز مفیدی از آن باقی بماند. درسهای کلیدی: بهجای پیشبینی آینده، ساختار را در برابر تصادف ورزیده کنید؛ اتصالهای پنهان را با استرسور آشکار کنید؛ و طرح اول را همیشه پیشنویس بدانید. این سخنرانی برای هر کسی که در محیطی بیثبات نرمافزار میسازد، دیدنی و شاید ضروری است.
اين مطلب، بخشي از تمرينهای درس معماری نرمافزار در دانشگاه شهيد بهشتی است.