معماری نرمافزار چیست؟
این اولین مقاله من از سری مقالات با موضوع معماری نرمافزار است. هدف اصلی این پست ایجاد درک بهتری از مفهوم معماری در مقوله نرمافزار است. در نظر داشته باشید مباحث مطرح شده در این پست میتواند در هر چارچوبی اعمال شود.
معماری نرم افزار
طبق تعریف کتاب clean architecture، نرمافزار (software) از دو بخش soft به معنی توانایی تغییر راحت و ware به معنی محصول تشکیل شده است، همچنین معماری به معنای توانایی تغییر است. هرچه معماری شما بهتر باشد، ویژگیهای سیستم را میتوان آسانتر، سریعتر و ارزانتر تغییر داد. هدف معماری نرمافزار، به حداقل رساندن نیروی انسانی مورد نیاز برای ساخت و نگهداری سیستم مورد نیاز است. اما بیایید در این مورد چند دقیقه تفکر کنیم! آیا ترجیح می دهید نرمافزاری داشته باشید که کار میکند، اما قابل تغییر نیست و یا اینکه نرم افزاری داشته باشید که کار نمیکند اما به راحتی میتوان آن را تغییر داد؟
به نظر من هر دو حالت اغراقآمیز و غیر قابل استفاده است، اما من شخصا ترجیح میدهم یک نرم افزار خوب در هفته آینده داشته باشم تا اینکه یک سیستم بد در حال حاضر.
باید بدانیم مشتریان و مالکان محصول، برنامهنویس نیستند، لذا به خوبی از عواقب یک سیستم نرمافزاری با معماری بد آگاه نیستند (گرچه حتی شاید من برنامهنویس هم آگاه نباشم). شاید در کوتاه مدت به نظر برسد طراحی یک معماری نرم افزار خوب نیاز به وقت و هزینه زیادی دارد و این مسأله معمولا خوشایند مالکان محصول نیست، اما مطمئنا در آینده دوستدار آن خواهند بود چرا که منجر به جلوگیری از بسیاری از هزینه های اضافی میشود.
منابع بخش اول:
clean architecture book
ThinkToCode
با تشکر از :
K.Akbari