فرآیندهای طراحی معماری نرم افزار

همانطور که در قسمت قبلی از این سری آموزشی دیدید، در رابطه با سبک های معماری معمول، صحبت کردیم و ویژگی های کلی هر کدام را برشمردیم. در این قسمت در رابطه با ادامه همین مبحث صحبت خواهیم کرد.فرآیندهای طراحی معماری و یا architecture design processمنظور از فرآیند طراحی معماری، تمرکز بر روی تجزیه کردن یک سیستم به اجزای تشکیل دهنده و یا component های متفاوت و همچنین تعاملات بین آنها برای برقراری نیازمندی‌های functional وnon functional می باشد. ورودی اصلی طراحی معماری نرم افزار، موارد زیر می باشند:نیازمندی های تولید شده توسط مراحل تجزیه و تحلیلمعماری سخت افزاری (معمار نرم‌افزار به نوبه خود، نیازمندی‌های معمار سیستم که مسئولیت پیکربندی معماری سخت افزاری را دارد، نیز فراهم می‌کند.)نتیجه و یا خروجی فرایند طراحی معماری، یک توصیف معماری و یا architectural description می باشد. یک فرایند طراحی معماری ساده از مراحل طراحی زیر تشکیل گردیده است:درک مسئلهاولین و مهمترین مرحله درک مسئله است. چراکه این مرحله می‌تواند شدیداً بر روی کیفیت طراحی مراحل بعدی تاثیر بگذارد.بدون داشتن درک مناسبی از مسئله پیش رو، نمی‌توان یک solution و یا راه حل موثر را برای مسئله ایجاد کرد.بسیاری از پروژه های نرم افزاری و محصولات، به این دلیل شکست می خورند که نمی توانند یک مسئله تجاری معتبر و یا اصطلاحاً business problem را حل و فصل کنند و یا بازگشت سرمایه قابل مشاهده ای را ایجاد نمی کنند.مشخص کردن عناصر طراحی و ارتباطات بین آنهادر این مرحله می بایست که یک شالوده و اساس برای طراحی کردن و تعریف کردن مرزها و همچنین context مربوط به سیستم، ایجاد کنید. منظور از context، فضایی است که سیستم نرم‌افزاری نهایی قرار است در آن اجرا بشود.تجزیه کردن یک سیستم به component های اصلی آن بر اساس نیازمندی های functional و یا عملکردی در این قسمت اتفاق می‌افتد. تجزیه کردن می‌تواند با استفاده از یک ماتریس ساختار طراحی و یا اصطلاحاً design structure matrix اتفاق بیفتد. این ماتریس نشان دهنده وابستگی های بین عناصر طراحی، بدون مشخص کردن دانه بندی مربوط به این عناصر می باشند.در این مرحله اولین اعتبارسنجی معماری انجام می‌شود و این موضوع با توصیف تعدادی از نمونه های سیستم اتفاق می افتد. علاوه بر این؛ نام دیگری که بر این مرحله می‌گذارند functionality based architectural design و یا طراحی معماری مبتنی بر عملکرد می باشد.ارزیابی کردن طراحی معماریهر ویژگی کیفی که در قسمت های قبلی مشخص شده است و حتی در رابطه با آنها نیز صحبت کردیم، به صورت تخمینی در این مرحله ارزیابی می شود. این کار برای به دست آوردن یک معیار کیفی و کمی اتفاق می افتد.در این مرحله، معماری طراحی شده را برای تطابق آن با ویژگی ها و نیازمندی های کیفی معماری می سنجیم.اگر تمامی ویژگی های کیفی بر اساس استانداردهای نیازمندی‌ها، ارزیابی گردند، سپس فرآیند طراحی معماری به پایان می‌رس.اگر این اتفاق نیافتد، وارد فاز سوم از طراحی معماری نرم افزار می شویم که به آنarchitecture transformation و یا تغییر شکل معماری می گویند. اگر معیارهای کیفی به نیازمندی‌های مشخص شده پاسخ مناسبی ندهند، می بایست که یک طراحی جدید ایجاد شود.تغییر شکل طراحی معماریدر این مرحله؛ می بایست که طراحی معماری مشخص شده، کمی تغییر کند. این مرحله پس از ارزیابی یک طراحی معماری اتفاق می افتد. به عبارت دیگر؛ طراحی معماری مورد نظر می بایست تا زمانی که به نیازمندی‌های کیفی پاسخ بدهد تغییر کند.در این مرحله راه حل های طراحی مختلفی برای بهبود ویژگی های کیفی نرم افزار و در عین حال حفظ کردن domain functionality و یا عملکرد دامنه نرم افزار، انتخاب می گردد.نحوه تغییر دادن یک طراحی با استفاده از اضافه کردن عملگرهای طراحی، سبک های مختلف و یا حتی الگوه های متنوع می باشد. برای تغییر شکل، یک طراحی از قبل موجود را انتخاب کرده و عملگرهای طراحی متفاوتی از قبیل؛ تجزیه و یا decomposition، تکثیر و یا replication، فشرده سازی و یا compression، مجرد سازی و یا abstraction و به اشتراک گذاری منابع و resource sharing را بر روی آن انجام می دهیم.پس از انجام این کار، طراحی مورد نظر باری دیگر ارزیابی می شود و اگر نیاز باشد مراحلی که ذکر شد دوباره انجام می گردند. این کار تا زمانی اتفاق می افتد تا شرایط طراحی مورد نظر، از نقطه نظر ارزیابی مساعد و مناسب گردند.تغییر شکل ها، اغلب ویژگی های کیفی متعددی را بهبود می بخشند و از طرفی؛ ممکن است بر روی برخی از ویژگی‌های دیگر تاثیر منفی داشته باشد.پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار