معماری نرم افزار

دسته بندی: مباحث عمومی

معرفی معماری نرم افزار

Software Architecture یا معماری نرم افزار یک سیستم، سازمان یا ساختار سیستم را نشان می دهد و توضیح می دهد که چگونه رفتار می کند. یک سیستم نشان دهنده مجموعه ای از اجزایی است که یک تابع خاص یا مجموعه ای از توابع را انجام می دهند. به عبارت دیگر، معماری نرم افزار یک پایه محکم برای ایجاد نرم افزار را فراهم می کند.

چندین الگوی معماری سطح بالا معمولا در سیستم های مدرن استفاده می شود. اینها اغلب به سبک معماری اشاره می کنند. معماری یک سیستم نرم افزاری به ندرت به یک سبک معماری محدود می شود. در عوض، ترکیبی از سبک ها اغلب سیستم کامل را تشکیل می دهند.

معماری نرم افزار، فرایند تعریف یک راه حل ساختار یافته ای می باشد که مطابق تمام الزامات فنی و عملیاتی است، در حالی که ویژگی های کیفی مشترک مانند عملکرد، امنیت و قابلیت مدیریت را بهینه سازی می کند. این شامل مجموعه ای از تصمیمات مبتنی بر طیف وسیعی از عوامل است و هر یک از این تصمیمات می تواند تاثیر قابل توجهی بر کیفیت، عملکرد، قابل نگهداری و موفقیت کلی برنامه داشته باشد. عدم توجه به مشکلات رایج و عواقب طولانی مدت می تواند سیستم شما را در معرض خطر قرار دهد.

مانند هر ساختار پیچیده ی دیگری، نرم افزار باید بر پایۀ جامد ساخته شود. عدم در نظر گرفتن سناریوهای کلیدی، عدم طراحی مشکلات رایج و یا عدم موفقیت در تصمیمات کلیدی طولانی مدت، می تواند برنامه شما را در معرض خطر قرار دهد. ابزار و سیستم عامل مدرن به ساده سازی کار ساخت برنامه ها کمک می کند، اما این بدان معنا نیست که جایگزین نیاز به برنامه ریزی دقیق خود بر اساس سناریو و الزامات خاص می شوند. خطراتی که در معرض معماری ضعیف قرار دارد شامل نرم افزاری است که ناپایدار است، قادر به پشتیبانی از نیازهای کسب و کار موجود یا آینده نیست، یا راه اندازی و یا مدیریت در یک محیط تولیدی برای آن دشوار می باشد.

سیستم ها باید با توجه به کاربر، سیستم (زیرساخت IT) و اهداف کسب و کار طراحی شود. برای هر یک از این مناطق، شما باید سناریوهای کلیدی را مشخص کنید و ویژگی های کیفیت مهم (مثلا قابلیت اطمینان یا مقیاس پذیری) و زمینه های اصلی رضایت و نارضایتی را شناسایی کنید. در صورت امکان، معیارهایی را که موفقیت در هر یک از این حوزه ها را ارزیابی می کند، در نظر بگیرید.

معماری برنامه به دنبال ایجاد یک پل بین نیازهای تجاری و الزامات فنی با درک موارد استفاده و سپس یافتن راه هایی برای اجرای موارد مورد استفاده در نرم افزار است. هدف معماری شناسایی الزاماتی است که بر ساختار برنامه تأثیر می گذارد. معماری خوب خطرات تجاری را در ارتباط با ساخت یک راه حل فنی کاهش می دهد. طراحی خوب به اندازه کافی انعطاف پذیر است تا بتواند جریان طبیعی را که در طول زمان در تکنولوژی سخت افزار و نرم افزار، و همچنین در شرایط و شرایط کاربر اجرا می شود، اداره کند. معمار باید تاثیر کلی تصمیمات طراحی و ترکیبات ذاتی بین ویژگی های کیفیت (مانند عملکرد و امنیت) و ترکیبات مورد نیاز برای پاسخ دادن به کاربر، سیستم و الزامات تجاری را در نظر بگیرد.

تفاوت طراحی نرم افزار و معماری نرم افزار

معماری نرم افزار ساختار یک سیستم را در حالی که جزئیات پیاده سازی را پنهان می کند نشان می دهد. معماری نیز بر این عقیده است که چگونه عناصر و اجزای یک سیستم با یکدیگر در ارتباط هستند. طراحی نرم افزار عمیق تر به جزئیات پیاده سازی سیستم می پردازد. موضوعات طراحی شامل انتخاب ساختار داده ها و الگوریتم ها یا جزئیات پیاده سازی اجزای فردی می باشد. موضوعات معماری و طراحی اغلب با هم همپوشانی دارند. به جای استفاده از قوانین سخت و سریع برای تمایز بین معماری و طراحی، منطقی است که آنها را ترکیب کنید. در بعضی موارد، تصمیمات به وضوح بیشتر معماری هستند. در موارد دیگر، تصمیمات به شدت بر طراحی و نحوه کمک به درک معماری تمرکز دارد.

یک مسئله مهم برای یادآوری این است که معماری، طراحی است، اما همه طراحی ها معماری نیستند. در عمل، معمار کسی است که خط را بین معماری نرم افزار (طراحی معماری) و طراحی دقیق (طراحی غیر معماری) ترسیم می کند. هیچ قاعده یا دستورالعملی وجود ندارد که همه موارد را مطابقت دهد - هرچند تلاش هایی برای تمایز این دو صورت گرفته است.

آیا این نوشته را دوست داشتید؟