بخشی از مقاله
چکیده:
ارزیابی معماری نرمافزار با هدف کشف ریسکها و خطرات بالقوه، در جهت کاهش هزینهها و افزایش اطمینان انجام گرفت. ارزیابی معماری نرمافزار به توسعهدهندگان این تضمین را میدهد که معماری انتخابی آنها نیازهای وظیفهمندی و غیروظیفهمندی را با کیفیت مورد نیاز آنها پوشش میدهد. در این مقاله به روشهای ارزیابی معماری نرمافزار اشاره شده و در طی جداولی به شباهتها و تفاوتها و نقاط ضعف و قوت آنها پرداخته شدهاست.
کلمات کلیدی: ارزیابی معماری نرم افزار، متدهای ارزیابی
-1 مقدمه:
معماری نرم افزار نقش حیاتی در چرخه حیات مهندسی نرم افزار ایفا میکند، بطوریکه فراهم کننده یک پایه پایدار برای طراحان و توسعه دهندگان می باشد، تا سیستمی تولید کنند که علاوه بر نیازهای وظیفه مندی، نیازهای غیر وظیفه مندی را نیز فراهم نماید. بطوریکه اگر معماری سیستمی ضعیف طراحی شده باشد احتمال آنکه آن پروژه با شکست مواجه شود، بیشتر است. به دلیل اهمیت معماری نرم افزار باید ارزیابی آن از مراحل اولیه توسعه نرم افزار آغاز شود. طراحی و ارزیابی معماری نرم افزار فاز اصلی در چرخه تولید نرم افزار در سازمان های بالغ میباشد. هزینه برای تغییر معماری در مرحله طراحی بسیار ناچیزتر از مرحله پیاده سازی است. درنتیجه با ارزیابی معماری می توان خطرات و ریسک ها را در مراحل اولیه تولید نرم افزار شناخت و این هزینه ها را کاهش داد.[1]
معماری نرم افزار یک سیستم "ساختار یا ساختارهایی از سیستم است که مولفه های نرم افزاری،ویژگی های قابل رویت از خارج این مولفه ها و روابط بین آنها را نمایش دهد".[2]
ارزیابی معماری نرم افزار تکنیکی است که خصوصیات، نقاط ضعف و قوت معماری نرم افزار و یا سبک و الگوهای طراحی را تعیین میکند. ارزیابی معماری در خصوص دستیابی به نیازهای کیفی مطلوب، اهداف کسب و کار و کیفیت معماری است. ارزیابی معماری نرم افزار با انتخاب معماری مناسب این اطمینان
را به توسعهدهندگان میدهد که نیازهای وظیفهمندی و غیروظیفه مندی برای کاربران فراهم خواهد شد[3] .درخواست کاربران از یک سیستم نرم افزاری به
دو بخش وظیفهمندی و غیر وظیفهمندی تقسیم می شود. نیازهای وظیفه مندی به توانایی و عملکرد سیستم در انجام وظایف مربوط می شودکه نیازهای وظیفهمندی به دلیل بدیهی بودن در پایان چرخه تولید نرم افزار میزان دستیابی به آنها کاملا واضح و مشخص است و نیازهای غیروظیفه مندی نیازهای کیفی است از قبیل امنیت ،کارایی، قابلیت اطمینان و... می باشد. تحقق برخی از ویژگیهای کیفی مانند کارایی و قابلیت اطمینان، امنیت که به جنبه های رفتاری نرم افزار مربوط میشود میتوانند در سطح معماری نرم افزار ارزیابی شوند. تحقق برخی دیگر از ویژگی های کیفی به جنبه های ساختاری مربوط می شود و وابسته به معماری نرم افزار نیستند و نمی توانند در سطح معماری پیش بینی شوند.
-2 متدهای ارزیابی:
با افزایش حضور نرم افزار و محصولات نرم افزاری در صنعت و سازمان ها نیاز به معماری نرم افزار جهت تولید نرم افزاری کارا و متناسب با خواستههای ذینفعان مورد توجه قرار گرفته است. معماری نرم افزار در اوایل توسعه نرم افزار ایجاد میشود و وسیله ای برای ایجاد یک طراحی سطح بالا برای سیستم فراهم می آورد و بدین ترتیب اطمینان حاصل میشود همه نیازهای وظیفه-مندی و غیر وظیفه مندی سیستم برآورده می شود. ارزیابی معماری در یک فاز یا تمامی فازهای چرخه توسعه نرم افزار انجام می شود. ارزیابی معماری جهت شناسایی نقاط ضعف و قوت در معماری های مختلف در مراحل اولیه توسعه نرم افزار مورد استفاده قرار گیرد، نوعی از روشهای ارزیابی نیز وجود دارد که در سیستم های موجود نیز میتواند مفید واقع شود.
دو فرصت اصلی برای ارزیابی معماری نرم افزار قبل و بعد از پیاده سازی می باشد. در ابتدا متدهای ارزیابی معماری نرم افزار قبل از پیاده سازی مورد استفاده قرار می گرفتند.
اگر معماری نرم افزار با توجه به کیفیت مورد نیاز خاص خود در مراحل اولیه توسعه نرم افزار ارزیابی شود آنگاه اهداف کیفی میتوانند در مراحل اولیه بدست آیند. روش های ارزیابی معماری نرم افزار اختلاف بین واقعیت و معماری طرح ریزی شده را تشخیص میدهد که در سیستم های موجود مورد استفاده قرار می گیرد. این روش دستورالعمل مفیدی را میدهد که چگونه معماری موجود را بازسازی کرد بطوریکه آن را با معماری طرح ریزی مطابقت دهند.
متدهای ارزیابی می توانند به طور مستقل استفاده شوند اما در صورت نیاز نیز می توانند برای ارزیابی جنبه های مختلف از معماری نرم افزار با هم ترکیب شوند. متدهای ارزیابی معماری نرم افزار در چهار بخش اصلی تجربه محور، بر پایه شبیه سازی، مدل سازی ریاضی و برپایه سناریو تقسیم می شود.
ارزیابی مبتنی بر تجربه: بر پایه تجربه و قلمرو دانش از توسعه دهندگان و یا مشاوران است.افرادی هستند که پیش از اینکه با معماری درگیر شوند می توانند درجه صحت معماری را تعیین کنند.
ارزیابی مبتنی بر شبیه سازی: ارزیابی مبتنی بر شبیه سازی تکیه بر اجرای تمام یا بخشی از اجزای سازنده در معماری نرم افزار دارد و می تواند برای ارزیابی نیازهای کیفی همانند کارایی استفاده شود.
مدل سازی ریاضی: مدل سازی ریاضی با استفاده از دلایل ریاضی و متدهایی برای ارزیابی نیازمندیهای کیفی عملکرد اصلی همانند کارایی و قابلیت اطمینان مورد استفاده قرار گیرد.
مدل سازی بر پایه سناریو: ارزیابی معماری بر پایه سناریو تلاش می کند تا ارزیابی ویژگی کیفی خاص با ایجاد یک حالت از نیازمندیهای کیفی نمایش دهد.[5,6,7,8]
سناریوها شرحی مختصر از تعامل منفرد ذینفع با سیستم میباشند.
-3 اهداف متدهای ارزیابی
ارزیابی معماری نرم افزار برای شماری از اهداف از جمله ارزیابی ریسک، پیشگویی هزینه نگهداری، مقایسه معماری، تحلیل تجارت و ... انجام میشد. هیچ متدی نمیتواند برای همه اهداف ارزیابی به طور یکسان مفید واقع شود. هدف رایج از بیشتر متدهای ارزیابی، ارزیابی پتانسیلی از معماری طراحی شده جهت تسهیل یا مهار دستیابی از ویژگیهای کیفی مورد نیاز بوده است. برای مثال برخی از سبک های معماری همانند معماری لایهای برای سیستم های حساس به کارایی مناسب نبودند؛ اگرچه آنهامعمولاَ در سیستمهای قابل نگهداری و انعطاف پذیر مفید میباشند.[24] به علاوه دستیابی به سود زیاد از فعالیت ارزیابی، باید اهداف ارزیابی به صورت صریح و واضح مشخص باشند.[34]اهداف ارزیابی به معمار نرمافزار در اخذ تصمیمات مهم با در نظر گرفتن انتخاب متدهایویژه و نیازمندیهای قابل تحویل کمک میکند.