1 / 34

ارائه درس معماری سیستم های بزرگ

ارائه درس معماری سیستم های بزرگ. نفیسه فرامرزی استاد درس: آقای دکتر عبدالله زاده. عنوان فصل: طراحی زیرسیستم. فهرست مطالب واژگان مدل کردن زیرسیستم ها، واسط ها و لایه ها نگاشتن زیرسیستم ها و لایه ها به پیاده سازی. مقدمه. پیشنهاد Fowler : استفاده از Package ها

Download Presentation

ارائه درس معماری سیستم های بزرگ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ارائه درس معماری سیستم های بزرگ نفیسه فرامرزی استاد درس: آقای دکتر عبدالله زاده

  2. عنوان فصل: طراحی زیرسیستم فهرست مطالب • واژگان • مدل کردن زیرسیستم ها، واسط ها و لایه ها • نگاشتن زیرسیستم ها و لایه ها به پیاده سازی Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  3. مقدمه • پیشنهاد Fowler : استفاده از Package ها • پیشنهاد بهتر: استفاده از زیرسیستم ها • تقسيم بندي کلاس ها به صورت زيرسيستم و مديريت وابستگي هاي بين آنها: از موارد کليدي مورد توجه معمار Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  4. ادامه • زيرسيستم ها : تعریف ساختار سيستم، واسط ها و وابستگي ها در زمان طراحي يا ساخت • Viewpoint هاي مربوط به زيرسيستم : اطلاعاتي در مورد سيستم در زمان ساخت و وابستگي هاي سازماني • مهم براي تيم هاي پياده سازي • تهیه ی مستندات ساختار ايستاي نرم افزار Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  5. واژگان • Package با توجه به UML User’s Guaide: • مجموعه اي از المان هاي مدل • المان ها کلاس ها، واسط ها، component ها، همکاري (collaboration)، موارد کاربرد و ديگر package ها • حذف المان های داخل package در صورت حذف آن • المان هاي قابل ديدن: کلاس هاي واسط داخل package Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  6. ادامه • سیستم : یک package داراي sterotype • زيرسيستم: بخشي از سيستم، يک package داراي sterotype • اطمينان از قابليت نگهداري سيستم: • cohesion بالا و coupling پايين بین زیرسیستم ها • coupling نامناسب : تيم هاي توسعه زمان و کار غير لازمي را صرف مذاکره، توسعه و تحويل واسط ها بين زيرسيستم ها خواهند کرد. • اهمیت زیرسیستم: محصولات کار طراحي در اين سطح به تيم هاي توسعه داده ميشود. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  7. خصوصیات زیرسیستم • زیرسیستم: • سطح پايين ترين موجوديت هايي که معمار نرم افزار واسط هاي انها را مديريت ميکند • واحد توليد مستندات طراحي • امکان دادن چند زيرسيستم به يک تيم داده • لزوم طراحي، ايجاد و به صورت جداگانه • واحدهاي اجراي تست و ايجاد test suitهاي اتوماتيک • واحد تحويل براي مستندات، کد منبع، گزارش هاي تست و ديگر محصولات • امکان در نظر گرفتن یک زیرسیستم بزرگ و پیچیده به عنوان یک سیستم Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  8. لایه ها • يک تکنيک ديگر براي داشتنن دید مجرد از سيستم • تقسیم عملکرد سيستم به چند گروه • وابستگي عملکرد لايه هاي بالاتر به عملکرد لايه هاي پايين تر • انواع لايه بندي • strict layering • relaxed layering • وراثت بين لايه ها Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  9. ادامه Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  10. ادامه نتايج عملي لايه بندي • افزایش قابليت حمل نرم افزار • اجتناب از ساختن لايه هاي پاييني در صورت عدم تغيير • برقراري ارتباط آسانتر با حذف جزئيات Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  11. مدل کردن زيرسيستم ها، واسط ها و لايه ها • زيرسيستم ها و لايه ها : دو ابزار اساسي براي سازماندهي سيستم هاي بزرگ در بخش هاي کوچکتر و قابل مديريت • تقسيم نرم افزار: ايجاد وابستگي بين زيرسيستم ها • مديريت وابستگي ها و ايجاد واسط ها: از وظايف اساسي ايجاد معماري • اهميت مديريت وابستگي ها : تاثیر مستقيم بر قابليت تغيير و قابليت تست نرم افزار Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  12. ادامه • سيستمی با تعداد زيادي زيرسيستم وابسته به هم • به سرعت غيرقابل تغيير مي شود • نياز به ساخت و تست مجدد تمام زیرسيستم ها با ايجاد هر تغيير • سخت شدن فرايند مذاکره در مورد تغيير واسط زيرسيستم ها و component ها • سيستم فاقد زيرسيستم هاي وابسته به هم • تغییر بسيار آسانتر • محلی بودن تاثير تغييرات جابه جا کردن کلاس ها و توابع بين زيرسيستم ها و تعيين مکان مناسب براي آنها حياتي ترين وظيفه ي تيم معماري است. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  13. Subsystem interface dependency viewpoint ابزارهاي لازم براي ثبت، کاوش و مديريت وابستگي ها در کل سيستم را فراهم ميکند. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  14. ادامه Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  15. ادامه - اضافه کردن واسط ها Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  16. توسعه ي Subsystem dependency Viewبا لايه ها Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  17. ادامه • اطلاعاتي در مورد ساختار سيستم در ارتباط با يک زيرسيستم خاص • کمک لايه ها به حذف جزئيات در View هاي پيچيده • کاهش سطح اطلاعات • حذف وابستگي هاي واسط • حذف جزئيات وابستگي زیرسيستم هاي لايه ي بالا به زيرسيستم هاي لايه ي پايين • ايجاد و نگهداري آسانتر مدل Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  18. Subsystem dependency Viewبا لایه ها و تمرکز بر یک مورد کاربرد Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  19. وابستگي هاي سطح بالا Top-level Dependencies • ترکيب يک مجموعه از view هاي متمرکز بر زيرسيستم ها: يک نسخه ي سطح بالا از Subsystem interface dependency view • حذف زيرسيستم هاي زيرساختي و off-the-shelf • هدف: توصيف واسط هاي سازماني • امکان مخابره ي مرز تيم هاي توسعه • امکان مخابره و مذاکره ي واسط هاي بين تيم هاي توسعه • امکان برقراري ارتباط با مديران پروژه Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  20. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  21. Layered Subsystem viewpoint • مستندات معماري قديمي • معمولا يک viewي لايه اي از سيستم وجود دارد • فهم آسان براي افراد معمولي • به صورت هماهنگ رسم نمی شود • اطلاعات فني قابل توجهي را در مورد معماري منتقل نمي کنند. • Layered Subsystem viewpoint • اضافه کردن مفاهيم وابستگي را براي تيم هاي فني به اين نمودار سنتي • حفظ قابليت فهم آسان Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  22. ادامه • نمونه ای از مفاهیم وابستگی اضافه شده • لایه بندی های formal و relaxed • مهم برای تیم های توسعه و معماری • سیستم های بسیار بزرگ که از زیرساخت های مشترک استفاده می کنند: لایه بندی relaxed • سیستم های کوچک یا با زمینه ی کاری محدود: لایه بندی formal • وابستگی بین زیرسیستم های یک لایه؟ • به نحوه ی تعریف لایه ها بستگی دارد Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  23. ادامه • سازماندهي زيرسيستم ها در لايه ها • نشان دادن کل معماري در يک View • نسخه ي تطبيق يافته ي Subsystem interface dependency view • لايه بندي و حذف جزئيات • فراهم کردن يک viewي کلي از معماري يک سيستم بزرگ Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  24. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  25. ادامه Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  26. ادامه • ارائه ی جنبه اي حياتي از معماري نرم افزار براي توسعه دهندگان نرم افزار به صورت مختصر: وابستگي هاي زمان ساخت. • بستگي زيرسيستم هاي لايه هاي بالا به زيرسيستم هاي لايه هاي پايين • به عنوان يک بازنمايي اساسي از طراحي و معماري سيستم نرم افزاري در زمان ساخت به کار مي رود • نسخه هاي توسعه يافته از اين view را ميتوان براي انتقال جنبه هاي مختلفي از سيستم براي stakeholder هاي متفاوت به کار برد. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  27. Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  28. نگاشتن زيرسيستم ها و لايه ها به پياده سازي • پيشنهاد: نگاشتن مستقيم لايه ها و زيرسيستم ها به ساختار پياده سازي زمان ساخت پروژه • يک زيرسيستم در طراحي : زيردايرکتوري با همان نام در دايرکتوري منبع • دايرکتوري يک زیرسيستم شامل چند دايرکتوري براي مديريت محصولات توسعه ي زيرسيستم • کد منبع • تست هاي زيرسيستم • مستندات • لايه ها در معماري: به صورت دايرکتوري در پياده سازي Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  29. ادامه • پيشنهاد: نشان دادن معماري زيرسيستم ها به طور مستقيم در کد منبع • بهترين راه استفاده از مسيرهاي include منطبق بر معماري لايه ها و زيرسيستم ها • براي دسترسي به کلاس date در زيرسيستم date-time از لايه ي foundation در يک ماژول C++ #include “foundation/date-time/date.hpp” Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  30. ادامه • فايده: انعکاس معماري سيستم در کد منبع • کمک در يادگيري سازماندهي کل سيستم به پياده سازي کنندگان • مشکل: تاثیر بر مقدار زیادی از کد در صورت تغيير • سازماندهي سيستم (مثلا تغيير نام يک Package) • روش ديگر: حذف جزئيات از کد منبع • سيستم ساخت موظف به مديريت مسيرهاي include است • برنامه نويس تنها #include “date.hpp”را مي نويسد. • کوتاهتر و انتقال اطلاعات بسيار کمتر Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  31. زيرسيستم ها و component ها • امکان ایجاد view هايي شامل زيرسيستم ها و component ها در UML • پيشنهاد: عکس اين مطلب • تعريف component : نمونه هاي زمان اجرا • زيرسيستم ها : يک روش ساختار دادن به سيستم در زمان ساخت • تنها رابطه ي معني دار: يک زيرسيستم يک component را مي سازد • هر component يک زيرسيستم متناظر دارد که به آن "زيرسيستم مبدا" يا “subsystem of origin”گفته مي شود Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  32. ادامه • Component در زيرسيستم مبدا نيست • نتيجه اي از ساخت، نصب و اجراي آن زيرسيستم • برای توصیف مفاهيم زمان ساخت و زمان اجرا تنها با component ها • component هاي زمان ساخت • componentهاي زمان اجرا را با يک نام • يک زيرسيستم مي تواند چندين component را بسازد Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  33. ادامه Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

  34. منابع Jeff Garland, Richard Anthony, Chapter 6 of Book entitled “Large-Scale Software Architecture”. Recommended Reading Hofmeister et al. (1999) Buschmann (1996) Doug Smith (2000) Lakos (1996) Amirkabir University of Technology, Computer Engineering Faculty, Large Scale Software Architecture Course, Dr. Abdollahzadeh

More Related