هر چقدر منتظر ماندم تا عزیزان راجع به مبجث معماری نظری بدهند تا به بهانه آن، مباحث را از سر بگیرم، نظری نیامد که نیامد. انگار دوستان علاقهای به این بحث ندارند یا شاید ….
به هر حال سعی میکنم این نوشتهها را تا تکمیل شدن ادامه دهم. برگردیم به بحث اصلی.
برای این که معماری نرمافزار را بتوان مورد استفاده قرار دهیم و با آن اخت بگیریم، نیاز داریم تا تکلیف چند موضوع را روشن کنیم:
۱- تعریف معماری نرمافزار چیست؟
۲- چرا به معماری نرمافزار نیاز داریم؟
۳- معماری نرمافزار تحت تأثیر چه چیزهایی است؟
۴- معماری نرمافزار روی چه چیزهایی تأثیرگذار است؟
۵- چگونه به یک معماری نرمافزار خوب (مطلوب) دست پیدا کنیم؟
۵- معماری نرمافزار را چگونه نمایش دهیم؟
۶- کدام فرآیند تولید نرمافزار، مفهوم معماری نرمافزار را در خود به وضوح بیان کرده و ما را مجبور به انجام آن میکند؟
بخش اول: تعریف معماری نرمافزار
واقعیت این است که تعاریف متفاوتی در کتابها و منابع مختلف از معماری نرمافزار ارائه شده است. این مفهوم در انستیتو مهندسی نرمافزار دانشگاه کارنگیملون به بلوغ رسید و پس از آن توسط دیگران بسط داده شد.
وقتی صحبت از معماری نرمافزار میشود، اولین چیزی که میشنوید، مبحث لایهبندی(Layering) است. تا چند سال پیش، کلمه معماری معادل سیستمهای دو لایه و سه لایه بود و امروز سیستمهای سه لایه و گاه پنج لایه و گاه چهار به علاوه یک لایه و گاه برای همخوانی با ضرب المثل معروف، به هفت لایه نیز منجر میشود.(آفتابه، لگن هفت دست. …)
اما آیا واقعاً معماری جز لایهبندی، چیز دیگری نیست؟
در جواب این سوال، دوستان موارد دیگری را نیز مطرح میکنند و آن مسائلی مثل مانایی(Persistance)، تراکنشها (Transaction) و از این قبیل است.
خوب سوال دیگری که مطرح میشود آن است که اگر مسائل مطرح شده بالا شامل مانایی، تراکنش و از این دست را برای یک سیستم حل کنیم، آیا برای سیستم دیگر، بحث معماری نخواهم داشت؟ آیا میتوانم ادعا کنم که معماری نرمافزار را یک بار برای همیشه حل کردهام؟
لطفاً جوابهایتان را برایم ارسال کنید. (آزموده را آزمودن خطاست )
برگردیم به بحث خودمان، تعریف معماری نرمافزار چیست؟ در اینجا از مراجع موجود استفاده کرده و تعاریفی ارائه میدهیم.
“معماری نرمافزار برنامه یا سیستم کامپیوتری، در برگیرنده ساختار سیستم است که شامل مولفهها، خصوصیات قابل رویت مولفهها و روابط بین آنها میباشد”[سایت SEI(انستیتو مهندسی نرمافزار)].
همچنین “معماری نرمافزار شامل:
– تصمیمگیریهایی در مورد سازمان سیستم نرمافزار
– انتخاب عناصر ساختاری و واسطهای آنها به نحوی که سیستم از ترکیب رفتار این عناصر شکل گرفته باشد.
– سازماندهی عناصر ساختاری و رفتاری در قالب زیرسیستمها
– سبکهای معماری مورد استفاده
علاوه بر ساختار و رفتار سیستم، معماری نرمافزار شامل سبک و سنگین کردن و پوشش دادن مواردی از قبیل سهولت کاربری، کارکردی، کارایی، انعطاف، استفاده مجدد، سهولت درک و فهم، محدودیتهای اقتصادی و تکنولوژیکی نیز میگردد.” [RUP]
در این مورد بیشتر توضیح خواهم داد.
حمیده
۱۷ آبان ۱۳۸۵ در ۰۰:۰۰این قسمت را یادم رفت بگم که در بحث معماری، چون موضوعی است و به تجارب معمار بستگی دارد در صورتی که در هر بخش قبلاً کار کرده باشد به آن نمی پردازد.
یکی از جمله هایی که خود شما سر کلاس مطرح میکردین این بود که :
معمار سیستم کسی است که به اضافه بیشتر اون سیستم را خراب کرده باشد!!
somy
۱۷ آبان ۱۳۹۰ در ۰۰:۰۰سلام:اگه میشه یک منبع در مورده معماری نرم افزار به من معرفی کنید خیلی لازم دارم
مرسی
———————————–
سلام؛
منابع زیادی در مورد معماری نرمافزار وجود دارد. لطفاً بفرمایید برای چه کاری بدان نیاز دارید تا راهنمایی کنم.
مهرداد
۱۸ آبان