معماری نرم افزار ؟!؟
با سلام وقتی درباره معماری نرم افزار صحبت میکنیم دقیقا مصداق چی هست؟
اگر یه ساختمون رو در نظر بگیریم که با معمار اون پیشروی میکنه پس فی الواقع میشه گفت ما هم معمار هستیم برای اون نرم افزار ! و هر معماری طبق اصول ساختمان سازی به ساخت و مهندسی کردن اون ساختمون میپردازه ، اما با استفاده از یکسری نو آوری ها و جزئیات اضافی ساختمون رو طبق دیدگاه و سلیقه ی خودش تغییر میده. حالا اگر وارد دنیای برنامه نویسی بشیم آیا این دیدگاه درسته که ماهم معمار نرم افزار هستیم و با در نظر گرفتن مهندسی نرم افزار و اصول های اون در واقع داریم نرم افزارمون رو معماری و مهندسی میکنیم .اما با سلیقه و دیدگاه خودمون جلو میرم ولی چیزی خلاف قوانین مهندسی نرم افزار انجام نمیدیم! پس آیا به نظر دوستان این دیدگاه درسته یا خیر…
اگر کلمه ی “معماری” رو از دید جدای برنامه نویسی نگاه کنیم خیلی راحت تر متوجه میشیم که دقیقا مصداق چی بوده! و شاید مبهم نباشه.
پاسخ ها ( ۳ )
معماری نرمافزار یعنی ساختار و سازمان یک سیستم نرمافزاری که به منظور پشتیبانی از عملیات مشخص، بر روی سازماندهی اجزاء متمرکز میباشد. در واقع اجزاء را در حوزههای مرتبط به هم گروه بندی میکند. دیگر حوزههای مرتبط به هم، بر روی تبادل و تعامل با این حوزه متمرکز میشوند.
معماری نرمافزار از کلیدیترین بخشهای تولید نرمافزار مخصوصاً نوع تجاری آن است که البته در سالهای اخیر با ایجاد مدلهای کلاسیک تولید نرمافزار به نرمافزارهای عظیم تر محدود شدهاست.
معماری نرمافزار در واقع انتخاب یک ساختار کلی برای پیادهسازی یک پروژه نرمافزاری بر مبنای مجموعهای از نیازهای کاربری و تجاری یک سیستم نرمافزاری است تا هم بتوان کاربردهای مورد نظر را پیادهسازی کرد و هم بتوان کیفیت نرمافزار، تولید آن و نگهداری آن را نیز بهینه کرد و سرعت بخشید. به عبارتی دیگر: معماری نرمافزار یک برنامه یا سیستم محاسباتی، ساختار یا ساختارهای آن سیستم محاسباتی است که خصوصیات قابل رویت از بیرون، عناصر و ارتباطات بین آنها را نشان میدهد.
معماری نرمافزار فرایند تعریف یا راه حل نرمافزاری ساختار منداست یه شکلی که بتواند کلیه نیازمندیهای فنی و عملیاتی مورد انتظار را، پوشش دهد.
این فرایند باید به شکلی انجام شود که معیارهای کیفی مانند بهره دهی ، امنیت و قابلیت اطمینان و مدیریتپذیری ، بهینه شده باشند. فیلیپ کرچن و گریدی بوش معماری نرمافزار را به صورت زیر تعریف می نمایند: “معماری نرمافزار شامل تصمیمات کلیدی راجع به ساختار یک سیستم نرمافزاری است که شامل انتخاب اجزای سازنده نرمافزار و رابطههای آنها است . همچنین رفتار این اجزا را به عنوان تعاملی که باهم برای ساختن یک زیر سیستم بزرگتر ، انجام میدهند ، مشخص می سازد. معماری نرمافزار همچنین ، کارکردها ، قابلیت استفاده ،انعطاف پذیری، عملکرد ، استفاده مجدد، قابل درک بودن، محدودیتهای اقتصادی و فناوری، نحوه تبادل اطلاعات و جنبههای زیبایی سیستم نرمافزاری را شامل میشود.”
بطور کلی معماری نرم افزار شامل شناخت و تعریف تصویر کلی سامانه و سیستم، ارتباطاتش با سایر اپلیکیشن های خارجی، دیتابیس، نحوه چینش سرورهای سامانه، دلایل انتخاب مواردی همچون استفاده از معماری میکروسرویس، استفاده از فلان زبان برنامه نویسی برای توسعه سمت سرور، فرانت و…
بله منم با نظر شما موافقم، اگر برای ساختن یک ساختمان نیاز به یک نقشه راه و ابزار و تجهیزات داشته باشیم
برای ساختن یک نرم افزار هم نیاز به یک چارت و الگوریتم و زبان برنامه نویسی و یک نقشه راهی است که طی عمل کردن به قوانین مهندسی نرم افزار، برنامه مهندسی ساز میشود.