به نظر من موارد زیر در انتخاب یک معماری مناسب برای یک نرم افزار دخیل است:
-
چه کسانی می خواهند از نرم افزار استفاده کنند یا ذی نفعان (stakeholder) نرم افزار چه کسانی هستند.
-
چه مقدار هزینه برای تولید نرم افزار در نظر گرفته شده است.
-
نرم افزار در چه حوزه ای می خواهد استفاده شود.
-
عمر نرم افزار قرار است چقدر باشد.
-
چه مقدار زمان برای تولید نرم افزار در نظر گرفته شده است.
-
آیا پیش بینی از میزان تغییرات نرم افزار در آینده وجود دارد.
-
آیا نرم افزار تجاری است یا تحقیقاتی یا خدماتی یا ...
-
اگر نرم افزار تجاری است، رقبا در چه وضعیتی قرار دارند.
تمام موارد فوق در انتخاب یک معماری خوب و نتیجه گرا برای تولید یک نرم افزار دخیل هستند.
به نظر من یک معماری خوب آن نیست که بهترین متدها و روش های موجود را در خود داشته باشد، بلکه یک معماری خوب آن است که بتواند بر اساس شرایط پروژه بهترین خروجی را داشته باشد.