You are on page 1of 12

Software Engineering

Lecturer: Habibullah Nazari


Faculty of Computer Science
1
‫طراحی معماری (‪)Architecture Design‬‬

‫▪ طراحی معماری عبارتند از درک چگونگی سازماندهی سیستم و طراحی ساختار کلی سیستم است‪.‬‬
‫▪ طراحی معماری اولین مرحله از فرآیند طراحی نرم افزار است‪.‬‬
‫▪ طراحی معماری پیوند حیاتی بین (‪ Design‬مرحله طراحی کلی از نرم افزار) و مهندسی خواسته ها‬
‫است چون مهمترین مولفه های ساختاری یک سیستم و روابط بین آن ها را مشخص می کند‪.‬‬
‫▪ خروجی فرآیند طراحی معماری یک مدل معماری است که توضیح می دهد چگونه یکس سیستم به‬
‫صورت مجموعه ای از مولفه های مرتبط به هم سازمان دهی می شود‪.‬‬
‫▪ در فرآیند های چابک توسعه نرم افزار معماری سیستم بصورت کلی وجود داشته باشد کفایت میکند‪.‬‬

‫‪2‬‬
‫معماری یک سیستم ربات بسته بندی کننده‬

‫‪3‬‬
‫طراحی معماری سیستم نرم افزاری‬

‫▪ تجزیه معماری معموال برای ساختاردهی و سازمان دهی مشخصات مفید است چون برای بحث در باره خواسته ها و‬
‫ویژگی ها سیستم با ذینفع ها تجزیه الزم است‪.‬‬
‫▪ معماری به دو سطح انتزاعی طراحی میشود‪.‬‬
‫▪ معماری در مقیاس کوچک‪ :‬در این سطح به روش تجزیه ی هر یک از برنامه ها به مولفه ها می پردازیم‬
‫▪ معماری در مقیاس بزرگ‪ :‬معماری های سیستم های پیچیده ی شرکت ها سروکار دارد که شامل سیستم های دیگر‪ ،‬برنامه‬
‫ها و مولفه های برنامه ها است‪.‬‬

‫▪ مزیت های طراحی و مستند سازی صریح معماری نرم افزار‬


‫▪ ارتباطات ذینفعان‪ :‬معماری نمایش سطح باالیی از سیستم است که ذینفعان مختلف می توانند درباره ای آن بحث کنند‪.‬‬
‫▪ تحلیل سیستم‪ :‬تعیین معماری در مرحله ی اولیه ی توسعه سیستم‪ ،‬نیاز به تحلیل دارد‪ .‬تصمیمات طراحی معماری‪ ،‬اثر‬
‫شگرفی بر تامین خواسته های حیاتی سیستم مثل کارایی‪ ،‬قابلیت اعتماد و قابلیت نگهداری دارد‪.‬‬
‫▪ استفاده مجدد در مقیاس وسیع‪ :‬مدل معماری سیستم نشان دهنده سازماندهی سیستم است‪ .‬و مولفه ها چگونه با هم کار میکنند‪.‬‬
‫اغلب سیستم های با خواسته های مشابه معماری مشابه دارد بنا ساحه استفاده از مولفه های آن زیاد است‪.‬‬
‫‪4‬‬
‫طراحی معماری سیستم های نرم افزار‬

‫▪ موارد استفاده معماری نرم افزار قرار ذیل اند‬


‫برای مذاکره روی خواسته های سیستم‬ ‫▪‬
‫ابزاری سازماندهی بحث با مشتریان‬ ‫▪‬
‫توسعه دهندگان‬ ‫▪‬
‫مدیران‬ ‫▪‬
‫مدیریت بر پیچیدگی‬ ‫▪‬

‫▪ معماری های سیستم غالبا با استفاده از نمودار های بلوکی ساده مدلسازی میشود‬
‫▪ مستطیل ها نشان دهنده مولفه است‬
‫▪ مستطیل داخل مستطیل نشان میدهد آن مولفه به چند زیر مولفه تقسیم بندی شده‬
‫▪ فلش ها جریان داده ها و یا سگنال های کنترلی از مولفه ای به مولفه دیگر را نشان میدهد‪.‬‬

‫‪5‬‬
‫طراحی معماری سیستم های نرم افزار‬

‫▪ نمودار های بلوکی تصویر سطح باالیی از ساختار سیستم را نشان میدهد و افرادی از نظام های مختلفی‬
‫که در فرآیند توسعه سیستم دخالت دارند به آسانی آن را درک می کنند‪.‬‬
‫▪ مدل های معماری یک برنامه به دو روش مورد استفاده قرار می گیرد‪.‬‬
‫▪ به عنوان راهی برای تسهیل بحث درباره ی طراحی سیستم‪ .‬نمای معماری سطح باالی سیستم‪ ،‬برای‬
‫برقراری ارتباط با ذینفعان سیستم و برنامه ریزی پروژه مفید است زیرا فاقد جزییات و شلوغی است‪.‬‬
‫ذینفعان می توانند با آن ارتباط بر قرار کنند‪ .‬یک نمای انتزاعی از سیستم را درک کند‪ .‬مدل معماری‪ ،‬مولفه‬
‫های کلیدی را شناسایی میکند و مدیران می تواند منابع الزم را برای توسعه آن تخصیص دهد‪.‬‬
‫▪ مستند سازی‪ :‬به عنوان راهی برای مستند سازی یک معماری که طراحی شده است‪ .‬هدف تولید یک مدل‬
‫سیستم بصورت کامل است که مولفه های مختلف موجود در سیستم‪ ،‬واسط های آن‪ ،‬و اتصال های آن را‬
‫نشان می دهد‪.‬‬
‫▪ توصیف معماری مشروح درک تکامل سیستم را ساده می سازد‪.‬‬
‫▪ مدلسازی معماری بصورت نماد های رسمی و غیر رسمی انجام میشود‪.‬‬

‫‪6‬‬
‫تصمیمات طراحی معماری‬

‫▪ طراحی معماری یک فرآیند خالق است که در آن سعی می کنید یک سازماندهی برای سیستم ایجاد کنید‬
‫که خواسته های عملکردی و غیر عملکردی سیستم را بر آورده کند‪.‬‬
‫▪ پرسش های در موقع طراحی معماری سیستم‪:‬‬
‫آیا یک معماری کلی برای برنامه ای کاربردی وجود دارد که به عنوان قالبی برای طراحی سیستم مورد‬ ‫‪.1‬‬
‫نظر محسوب شود؟‬
‫سیستم چگونه در چندین هسته (‪ )core‬یا پردازنده توزیع می شود؟‬ ‫‪.2‬‬
‫چه الگو ها یا سبک های معماری برای سیستم مناسب است؟‬ ‫‪.3‬‬
‫مهم ترین روش برای تعیین ساختار سیستم چیست؟‬ ‫‪.4‬‬
‫مولفه های ساختاری موجود در سیستم چگونه به زیر مولفه ها تجزیه می شوند؟‬ ‫‪.5‬‬
‫برای کنترل عملیات مولفه ها در سیستم از چه راهبردی استفاده می شود؟‬ ‫‪.6‬‬
‫طراحی معماری چگونه ارزیابی می شود؟‬ ‫‪.7‬‬
‫معماری سیستم چگونه باید مستند سازی شود؟‬ ‫‪.8‬‬

‫‪7‬‬
‫معماری به اساس اولویت ها‬

‫▪ سیستم های موجود در یک دامنه ی کاربردی معماری های مشابه دارند‪.‬‬


‫کارایی‪ :‬اگر کارایی یک خواسته ی حیاتی باشد‪ ،‬معماری باید طوری طراحی شود که عملیات های حیاتی را در تعداد‬ ‫‪.1‬‬
‫اندکی از مولفه ها قرار دهد‪ ،‬و تمام این مولفه ها به جای توزیع شدن در شبکه در یک کامپیوتر مستقر شوند‪ .‬این کار‬
‫موجب کاهش ارتباطات بین مولفه ها خواهد شد و همچنان از چند پردازنده استفاده شود‪.‬‬
‫امنیت‪ :‬اگر امنیت یک خواسته ی حیاتی باشد‪ ،‬باید از یک ساختار الیه ای برای معماری استفاده شود‪ ،‬به طوری که حیاتی‬ ‫‪.2‬‬
‫ترین دارایی ها در داخلی ترین الیه ها محافظت شوند و اعتبار سنجی سطح باالیی برای این الیه ها صورت گیرد‪.‬‬
‫ایمنی‪ :‬اگر ایمنی یک خواسته ی حیاتی باشد‪ ،‬معماری باید طوری طراحی شود که عملیات های مرتبط با ایمنی‪ ،‬یا در یک‬ ‫‪.3‬‬
‫مولفه یا در تعداد اندکی از مولفه ها قرار داده شوند‪ .‬سیستم در هنگام خرابی با ایمنی خاصی خاموش کند‪.‬‬
‫دسترس پذیری‪ :‬اگر دسترس پذیری یک خواسته ی حیاتی باشد معماری باید طوری طراحی شود که شامل مولفه های‬ ‫‪.4‬‬
‫اضافی باشد تا مولفه ها را بدون توقف سیستم جایگزین یا به هنگام کرد‪.‬‬
‫قابلیت نگهداری ‪ :‬اگر قابلیت نگهداری یک خواسته ی حیاتی است‪ ،‬معماری سیستم باید با استفاده از مولفه های مستقل و‬ ‫‪.5‬‬
‫بزرگی طراحی کرد‪ .‬تولید کنندگان داده ها باید از مصرف کنندگان تفکیک شوند و از ساختمان داده های مشترک اجتناب‬
‫شود‪.‬‬

‫‪8‬‬
‫نما های معماری (‪)Architectural Views‬‬

‫‪ .1‬هنگام طراحی و پیاده سازی یک معماری سیستم‪ ،‬چه نماها و دیدگاه هایی مفید هستند؟‬
‫‪ .2‬برای توصیف مدل های معماری‪ ،‬چه نمادگذاری هایی باید مورد استفاده قرار گیرند؟‬
‫▪ نمایش تمام اطالعات مربوط به معماری سیستم در یک مدل معماری غیر ممکن است‪ .‬زیرا هر مدل یک نما یا‬
‫دیدگاه سیستم را نشان می دهد‪ .‬مانند تجزیه سیستم به ماژول ها‪ ،‬فرآیند زمان اجرا‪ ،‬روش های مختلف توزیع مولفه‬
‫ها در شبکه چگونه است را نمایش میدهد‪.‬‬
‫نمای منطقی‪ ،‬که انتزاع های مهم در سیستم را به صورت اشیا یا کالس ها نشان میدهد‪ .‬خواسته های سیستم را به‬ ‫▪‬
‫موجودیت های واقع در این نمای منطقی مرتبط کرد‪.‬‬
‫نمای فرآیند‪ ،‬که نشان می دهید سیستم در زمان اجرا از چه فرآیند های تشکیل شده است این نما برای قضاوت در باره ی‬ ‫▪‬
‫ویژگی های غیر عملکردی سیستم مثل کارایی و دسترس پذیری نیز مفید است‪.‬‬
‫نمای توسعه‪ ،‬که نشان می دهد نرم افزار چگونه برای توسعه تجزیه می شود‪ ،‬یعنی نشان می دهد که نرم افزار به مولفه‬ ‫▪‬
‫هایی تقسیم می شود که توسط یک توسعه دهنده یا تیم توسعه پیاده سازی می شود‪ .‬برای مدیران و برنامه نویسان‬
‫نمای فزیکی که سخت افزار سیستم و چگونگی توزیع مولفه های نرم افزار در پردازنده های سیستم را نشان می دهد‪.‬‬ ‫▪‬
‫‪9‬‬
‫نما های معماری‬

‫▪ استفاده از ‪ UML‬در طراحی معماری مناسب نیست چون ‪ UML‬خیلی نزدیک به پیاده سازی است در‬
‫حالیکه معماری مرحله سازماندهی مولفه های سیستم نرم افزاری است بنابر این باید از نمادگذاری های‬
‫غیر رسمی استفاده شود در مرحله نهایی طراحی معماری میتوان از ‪ UML‬برای مستند سازی استفاده‬
‫کرد‪.‬‬
‫▪ معماری چابک و ساختاری‪ :‬برای توصیف معماری سیستم های نرم افزار اگر روش های چابک باشد‬
‫باید خیلی سطحی و کلی باشد و اگر معماری سیستم های حیاتی باشد نیازمند طراحی معماری مشروح و‬
‫با مستنند الزم است‪.‬‬

‫‪10‬‬
‫الگو های معماری (‪)Architectural Pattern‬‬

‫▪ الگو معماری عبارتند از توصیف انتزاعی و اصولی یک عمل خوب بدانید که در سیستم ها و محیط های‬
‫مختلفی مورد استفاده و آزمون قرار گرفته است‪ .‬مانند الگوی )‪MVC (Model View Controller‬‬
‫جدا سازی تعامل‪ ،‬نمایش و داده ها یک سیستم نرم افزاری است که به سه بخش عمده تقسیم بندی شده‬ ‫▪‬
‫مدل ‪ Model‬داده های سیستم و انجام عملیات ها روی آن داده ها را مدیریت می کند‬ ‫▪‬
‫‪ View‬چگونگی نمایش داده ها به کاربر را تعریف و مدیریت میکند‪.‬‬ ‫▪‬
‫‪ Controller‬تعامل های کاربر مانند(کیبورد‪ ،‬کلیک کردن‪ ،‬ماوس و غیره ) را مدیریت میکند‪.‬‬ ‫▪‬

‫▪ از جمله محصوالت مایکروسافت و فریمورک ‪ Laravel php‬از الگو ‪ MVC‬استفاده میکند‪.‬‬


‫▪ داده ها و نمایش از هم مستقل اند که هر تغیرات که روی داده ها اعمال شود تاثیر روی نمایش ندارد و‬
‫بالعکس‪.‬‬

‫‪11‬‬
‫الگو معماری (‪)MVC‬‬

‫▪ شرح الگو شامل ‪ :‬نام الگو‪ ،‬توصیف مختصر (همراه بایک مدل گرافیکی) و مثالی از نوع سیستمی که‬
‫این الگو در آن به کار رفته است(یک مدل گرافیکی سیستم) عالوه بر این باید مشخص کنید الگو در چه‬
‫زمانی قابل استفاده است و مزایا و معایب آن کدامند‪.‬‬

‫‪12‬‬

You might also like