مدل های معماری نرم افزار
امیدواریم تا به اینجای این آموزش را از وب سایت پرووید مفید دیده باشید. در این قسمت قصد داریم بحثمان در رابطه با مدل های معماری را آغاز کرده و تا 2 قسمت بعد نیز در رابطه با آن صحبت کنیم.
معماری نرم افزار شامل ساختار سطح بالای یک سیستم نرمافزاری انتزاعی و یا abstract می باشد که با استفاده از تکنیک های مختلفی از قبیل؛ تجزیه و یا decomposition و ترکیب و یا composition و البته استفاده کردن از سبک های معماری مختلف و ویژگیهای کیفیتی و یا quality attributeها تشکیل می گردد. یک معماری نرم افزار و طراحی آن می بایست با مهمترین نیازمندی های عملکردی و کارایی سیستم تطابق داشته باشد و علاوه بر این نیازمندی های غیر عملکردی و یا non-functional از قبیل؛ قابلیت reliability و یا اعتمادپذیری، قابلیت scalability و یا مقیاس پذیری، قابلیت portability و یا جابجایی پذیری و قابلیت availability و یا در دسترس بودن را برقرار کند.
یک معماری نرم افزار باید گروهی از component ها را برای خود تعریف کرده، ارتباطات و تعاملات بین هر کدام را مشخص کند و پیکربندی های مختلف مربوط به استقرار و یا deployment این component ها را تنظیم نمایند.
یک معماری نرم افزار را می توان به روش های مختلف تعریف کرد، که سه مورد از مهمترین آنها شامل موارد زیر می باشند:
استفاده از UML و یا Unified Modeling Language: احتمالاً میدانید که UML یک زبان مدلسازی برای نرم افزار های شی گرا می باشد که در روند طراحی و مدلسازی نرم افزار مورد استفاده قرار می گیرد. در این رابطه می توانید از بسته ی آموزش ویدئویی UML و بسته ی آموزش ویدئویی شی گرایی پیشرفته در سی شارپ استفاده کنید.
روش Architecture View Model و یا 4+1 view model: مدل روش Architecture View Model نمایانگر نیازمندی های عملکردی و غیر عملکردی یک سیستم نرم افزاری است. منظور از نیازمندی های عملکردی و یا functional، نیازمندی هایی هستند که جزئی از نیازمندی های مطرح شده توسط کاربر می باشند و نیازمندی های غیر عملکردی و یا non-functional، شامل مواردی از قبیل؛ کارایی و قابلیت نگهداری می باشند.
روش ADL و یا Architecture Description Language: منظور از روش ADL، روشی برای تعریف کردن رسمی و معنایی یک سیستم نرمافزاری است.
در این قسمت از این آموزش، روش اول یعنی زبان UML را بررسی کرده و روش های Architecture View Model و همچنین روش Architecture Description Language را به قسمتهای بعدی موکول خواهیم کرد.
زبان مدلسازی UML
واژه UML مخفف Unified Modeling Language و یا زبان مدلسازی یک شکل می باشد. زبان UML، یک زبان بصری است که برای ایجاد کردن نقشههای سیستمهای نرمافزاری مورد استفاده قرار میگیرند. در ابتدا UML توسط Object Management Group و یا OMG مطرح شد. استاندارد UML 1.0 توسط OMG در ژانویه سال ۱۹۷۰ پیشنهاد شد. زبان مدلسازی UML به عنوان یک استاندارد برای مستند سازی طراحی و تجزیه و تحلیل نیازمندی های نرم افزار که اساس توسعه نرمافزار میباشد، بنا نهاده شده است. در رابطه با UML توصیه می کنیم از بسته ی آموزش ویدئویی UML استفاده کنید.
زبان مدلسازی UML می تواند به عنوان یک زبان مدلسازی بصری همه منظوره برای ساخت، تعریف و مستند سازی سیستم های نرم افزاری به صورت بصری مورد استفاده قرار بگیرد. هرچند که زبان UML اغلب برای مدل کردن سیستم های نرم افزاری مورد استفاده قرار میگیرد، اما محدود به این قضیه نیست. از زبان UML میتوان برای مدل سازی سیستم های غیر نرم افزاری نیز استفاده کرد.
در زبان مدلسازی UML عناصری وجود دارند که شبیه به component ها و یا اجزای تشکیل دهنده یک سیستم نرم افزاری، به طرق مختلف با یکدیگر در ارتباط هستند تا مدلسازی کامل UML که تحت عنوان نمودار و یا diagram نیز شناخته میشود کامل بگردد. به همین دلیل درک نمودارهای مختلف UML برای پیاده سازی دانش مربوطه در یک سیستم دنیای واقعی بسیار مهم است. به طور کلی؛ diagram ها و یا نمودارهای UML را به دو دسته با نامهای structural diagram و یا نمودار های ساختاری و behavioral diagram و یا نمودار های رفتاری تقسیم بندی می کنند که در ادامه در رابطه با آنها صحبت خواهیم کرد.
نمودارهای ساختاری و یا structural diagram ها
نمودارهای ساختاری اغلب نمایانگر جنبههای ایستا و غیرقابل تغییر یک سیستم می باشند. این جنبه های ایستا، نمایانگر بخش هایی از نمودار هستند که ساختار کلی یک سیستم نرمافزاری پایدار را نشان میدهند. این قسمت های ایستا، در یک سیستم نرمافزاری، با استفاده از کلاس ها، interface ها، اشیاء، component ها و گره ها نشان داده می شوند. نمودارهای ساختاری را به دسته های زیر تقسیم بندی می کنیم:
نمودارهای class diagram: این نمودار نمایانگر خاصیت شی گرایی و یا object orientation یک سیستم است و نحوه ارتباط کلاسهای مختلف در یک سیستم نرمافزاری با یکدیگر را نشان میدهند.
نمودارهای object diagram: نمایانگر مجموعه از object ها و ارتباط بین آنها در زمان اجرا و یا runtime برنامه و همچنین یک view و یا دید ایستا از سیستم است.
نمودارهای component diagram: نمایانگر تمامی component ها یا اجزای تشکیل دهنده یک سیستم، ارتباط بین آنها، تعامل و همچنین interface یک سیستم است.
نمودارهای deployment diagram: نمایانگر مجموعهای از گرهها و یا node ها و ارتباط بین آنها است. این node ها در واقع موجودیتهای فیزیکی هستند که component های نرم افزاری بر روی آنها deploy و یا مستقر خواهند شد.
نمودارهای package diagram: نمایانگر ساختار package و سازماندهی یک نرمافزار است. این نمودار شامل کلاس های درون یک package و همچنین package های درون دیگر package می شود.
نمودارهای composite structure: نمایانگر ساختار درونی component ها با لحاظ class ها، interface ها و component های دیگر می باشد.
نمودارهای رفتاری و یا behavioral diagram ها
نمودارهای رفتاری و یا behavioral diagram ها، به طور کلی؛ جنبه های پویا و یا dynamic یک سیستم را بررسی میکنند. منظور از جنبههای پویا، آن دسته از قسمت های از یک سیستم می باشد که در حال تغییر کردن و یا حرکت کردن هستند. نمودارهای رفتاری در زبان مدلسازی UML به موارد زیر تقسیم میشوند:
نمودار use case: نمایانگر رابطه بین functionality ها و internal controllers ها و یا external controllers ها می باشند. این کنترلر ها را اغلب Actor و یا عامل مینامند.
نمودار activity: نمایانگر جریان کنترل سیستم است و شامل activity ها و لینک ها و یا ارتباطات بین آنها می باشند. جریان میتواند ترتیبی و یا sequential، هم روند و یا concurrent و شاخه شده و یا branched باشد.
نمودار state machine و یا state chart: نمایانگر تغییرات حالت سیستم بر اساس رویدادهایی می باشد که در سیستم رخ می دهند. این نمودار تغییرات کلاسها، interface ها و دیگر موارد را نشان میدهند و برای بصری کردن تعاملات و واکنش های یک سیستم به عوامل داخلی و خارجی مورد استفاده قرار می گیرد.
نمودار sequence: نمایانگر دنباله ای از فراخوان ها درون سیستم و انجام functionality های خاص است.
نمودار interaction overview: ترکیب نمودارهای activity و sequence به منظور فراهم کردن یک دید کلی از جریان کنترل و یا control flow مربوط به سیستم و البته فرآیند تجاری را با این نمودار نشان می دهند.
نمودار communication: شبیه به نمودار sequence diagram عمل می کند با این تفاوت که تمرکزش بر روی نقش هر object است. هر ارتباط و یا communication با یک sequence order و البته، تعداد آنها به علاوه message ها و یا پیام های رد و بدل شده تشکیل میگردد.
نمودار time sequenced: نمایانگر تغییراتی است که message ها در state و condition و event ها ایجاد کرده اند.