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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

نفیسه فرامرزی

:استاد درسآقای دکتر عبدالله زاده

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

عنوان فصل: طراحی زیرسیستم

فهرست مطالبواژگان

مدل کردن زیرسیستم ها، واسط ها و الیه

ها

نگاشتن زیرسیستم ها و الیه ها به پیاده

سازی2

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

Abdollahzadeh

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

مقدمه

پیشنهادFowler استفاده از : Packageها

پیشنهاد بهتر: استفاده از زیرسیستم ها

تقسيم بندي کالس ها به صورت زيرسيستم و

مديريت وابستگي هاي بين آنها: از موارد کليدي

مورد توجه معمار3

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

Abdollahzadeh

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

ادامه

زيرسيستم ها : تعریف ساختار سيستم، واسط ها و

وابستگي ها در زمان طراحي يا ساخت

Viewpoint هاي مربوط به زيرسيستم : اطالعاتي در

مورد سيستم در زمان ساخت و وابستگي هاي

سازماني

مهم براي تيم هاي پياده سازي

تهیه ی مستندات ساختار ايستاي نرم افزار4

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

Abdollahzadeh

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

واژگان

Package با توجه به UML User’s Guaide :

مجموعه اي از المان هاي مدل ‹

ها، همکاري componentالمان ها کالس ها، واسط ها، ‹

(collaboration) موارد کاربرد و ديگر ،package ها

در صورت حذف آنpackageحذف المان های داخل ‹

packageالمان هاي قابل ديدن: کالس هاي واسط داخل ‹5

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

Abdollahzadeh

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

ادامه

سیستم : یکpackage داراي sterotype

زيرسيستم: بخشي از سيستم، يکpackage داراي sterotype

:اطمينان از قابليت نگهداري سيستم

›cohesion باال و couplingپايين بین زیرسیستم ها

›coupling نامناسب : تيم هاي توسعه زمان و کار غير الزمي را صرف

مذاکره، توسعه و تحويل واسط ها بين زيرسيستم ها خواهند کرد.

اهمیت زیرسیستم: محصوالت کار طراحي در اين سطح به

تيم هاي توسعه داده ميشود.6

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

Abdollahzadeh

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

خصوصیات زیرسیستم

زیرسیستم:

سطح پايين ترين موجوديت هايي که معمار نرم افزار واسط هاي انها ‹

را مديريت ميکند

واحد توليد مستندات طراحي‹

امکان دادن چند زيرسيستم به يک تيم داده‹

لزوم طراحي، ايجاد و به صورت جداگانه ‹

هاي اتوماتيک test suitواحدهاي اجراي تست و ايجاد ‹

واحد تحويل براي مستندات، کد منبع، گزارش هاي تست و ديگر ‹

محصوالت

امکان در نظر گرفتن یک زیرسیستم بزرگ و پیچیده به عنوان یک ‹

سیستم

7

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

Abdollahzadeh

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

الیه ها

يک تکنيک ديگر براي داشتنن دید مجرد از سيستم

تقسیم عملکرد سيستم به چند گروه

وابستگي عملکرد اليه هاي باالتر به عملکرد اليه هاي پايين

تر

انواع اليه بندي›strict layering

› relaxed layering

وراثت بين اليه ها‹8

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

Abdollahzadeh

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

ادامه

9

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

Abdollahzadeh

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

ادامه

نتايج عملي اليه بندي

افزایش قابليت حمل نرم افزار ‹

اجتناب از ساختن اليه هاي پاييني در صورت عدم تغيير‹

برقراري ارتباط آسانتر با حذف جزئيات ‹

10

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

Abdollahzadeh

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

مدل کردن زيرسيستم ها، واسط ها و اليه ها

زيرسيستم ها و اليه ها : دو ابزار اساسي براي

سازماندهي سيستم هاي بزرگ در بخش هاي

کوچکتر و قابل مديريت

تقسيم نرم افزار: ايجاد وابستگي بين زيرسيستم ها

مديريت وابستگي ها و ايجاد واسط ها: از وظايف

اساسي ايجاد معماري

اهميت مديريت وابستگي ها : تاثیر مستقيم بر

قابليت تغيير و قابليت تست نرم افزار 11

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

Abdollahzadeh

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

ادامه

سيستمی با تعداد زيادي زيرسيستم وابسته به هم به سرعت غيرقابل تغيير مي شود‹نياز به ساخت و تست مجدد تمام زیرسيستم ها با ايجاد هر ‹

تغيير سخت شدن فرايند مذاکره در مورد تغيير واسط زيرسيستم ها ‹

ها componentو سيستم فاقد زيرسيستم هاي وابسته به هم

تغییر بسيار آسانتر ‹محلی بودن تاثير تغييرات‹

جابه جا کردن کالس ها و توابع بين زيرسيستم ها و تعيين مکان مناسب براي آنها حياتي ترين وظيفه ي تيم معماري

است. 12

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

Abdollahzadeh

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

Subsystem interface dependency viewpoint

ابزارهاي الزم براي ثبت، کاوش و مديريت وابستگي ها در کل سيستم را فراهم ميکند.

13

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

Abdollahzadeh

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

ادامه

14

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

Abdollahzadeh

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

ادامه - اضافه کردن واسط ها

15

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

Abdollahzadeh

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

با اليه ها Subsystem dependency Viewتوسعه ي

16

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

Abdollahzadeh

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

ادامه

اطالعاتي در مورد ساختار سيستم در ارتباط با يک زيرسيستم

خاص

کمک اليه ها به حذف جزئيات درView هاي پيچيده

کاهش سطح اطالعات

حذف وابستگي هاي واسط

حذف جزئيات وابستگي زیرسيستم هاي اليه ي باال به

زيرسيستم هاي اليه ي پايين

ايجاد و نگهداري آسانتر مدل17

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

Abdollahzadeh

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

Subsystem dependency View با الیه ها وتمرکز بر یک مورد کاربرد

18

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

Abdollahzadeh

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

Top-levelوابستگي هاي سطح باال Dependencies

ترکيب يک مجموعه ازview هاي متمرکز بر زيرسيستم ها: يک

Subsystem interface dependency viewنسخه ي سطح باال از

حذف زيرسيستم هاي زيرساختي وoff-the-shelf

هدف: توصيف واسط هاي سازماني

امکان مخابره ي مرز تيم هاي توسعه

امکان مخابره و مذاکره ي واسط هاي بين تيم هاي توسعه

امکان برقراري ارتباط با مديران پروژه

19

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

Abdollahzadeh

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

20

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

Abdollahzadeh

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

Layered Subsystem viewpoint

مستندات معماري قديمي

ي اليه اي از سيستم وجود داردview معموال يک ‹

فهم آسان براي افراد معمولي‹

به صورت هماهنگ رسم نمی شود‹

اطالعات فني قابل توجهي را در مورد معماري منتقل نمي کنند. ‹

Layered Subsystem viewpoint

اضافه کردن مفاهيم وابستگي را براي تيم هاي فني به اين نمودار ‹

سنتي

حفظ قابليت فهم آسان ‹21

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

Abdollahzadeh

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

ادامه

نمونه ای از مفاهیم وابستگی اضافه شده

relaxed و formalالیه بندی های ‹

مهم برای تیم های توسعه و معماری‹

سیستم های بسیار بزرگ که از زیرساخت های مشترک استفاده

relaxedمی کنند: الیه بندی

سیستم های کوچک یا با زمینه ی کاری محدود: الیه بندی formal

وابستگی بین زیرسیستم های یک الیه؟

به نحوه ی تعریف الیه ها بستگی دارد‹

22

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

Abdollahzadeh

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

ادامه

سازماندهي زيرسيستم ها در اليه ها

نشان دادن کل معماري در يکView

نسخه ي تطبيق يافته يSubsystem interface

dependency view

اليه بندي و حذف جزئيات

فراهم کردن يک view ي کلي از معماري يک

23سيستم بزرگ

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

Abdollahzadeh

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

24

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

Abdollahzadeh

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

ادامه

25

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

Abdollahzadeh

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

ادامه

ارائه ی جنبه اي حياتي از معماري نرم افزار براي توسعه

دهندگان نرم افزار به صورت مختصر: وابستگي هاي زمان

ساخت.

بستگي زيرسيستم هاي اليه هاي باال به زيرسيستم هاي اليه

هاي پايين

به عنوان يک بازنمايي اساسي از طراحي و معماري سيستم

نرم افزاري در زمان ساخت به کار مي رود

نسخه هاي توسعه يافته از اين view را ميتوان براي انتقال

هاي متفاوت stakeholderجنبه هاي مختلفي از سيستم براي

به کار برد.

26

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

Abdollahzadeh

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

27

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

Abdollahzadeh

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

نگاشتن زيرسيستم ها و اليه ها به پياده سازي

پيشنهاد: نگاشتن مستقيم اليه ها و زيرسيستم ها به ساختار پياده سازي

زمان ساخت پروژه

يک زيرسيستم در طراحي : زيردايرکتوري با همان نام در دايرکتوري منبع

دايرکتوري يک زیرسيستم شامل چند دايرکتوري براي مديريت محصوالت

توسعه ي زيرسيستم

کد منبع‹

تست هاي زيرسيستم ‹

مستندات ‹

اليه ها در معماري: به صورت دايرکتوري در پياده سازي

28

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

Abdollahzadeh

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

ادامه

پيشنهاد: نشان دادن معماري زيرسيستم ها به طور

مستقيم در کد منبع

بهترين راه استفاده از مسيرهاي include منطبق بر

معماري اليه ها و زيرسيستم ها

براي دسترسي به کالسdate در زيرسيستم date-

time از اليه ي foundation در يک ماژول C++

#include “foundation/date-time/date.hpp”29

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

Abdollahzadeh

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

ادامه

فايده: انعکاس معماري سيستم در کد منبع

کمک در يادگيري سازماندهي کل سيستم به پياده سازي کنندگان ‹

مشکل: تاثیر بر مقدار زیادی از کد در صورت تغيير

( Packageسازماندهي سيستم )مثال تغيير نام يک ‹

روش ديگر: حذف جزئيات از کد منبع

استincludeسيستم ساخت موظف به مديريت مسيرهاي ‹

را مي نويسد.” include “date.hpp#برنامه نويس تنها ‹

کوتاهتر و انتقال اطالعات بسيار کمتر‹30

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

Abdollahzadeh

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

هاcomponentزيرسيستم ها و

امکان ایجادview هايي شامل زيرسيستم ها و component ها در

UML

پيشنهاد: عکس اين مطلب

تعريفcomponent نمونه هاي زمان اجرا :

زيرسيستم ها : يک روش ساختار دادن به سيستم در زمان ساخت

تنها رابطه ي معني دار: يک زيرسيستم يکcomponentرا مي سازد

هرcomponent يک زيرسيستم متناظر دارد که به آن "زيرسيستم

گفته مي شود” subsystem of origin“مبدا" يا

31

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

Abdollahzadeh

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

ادامه

Componentدر زيرسيستم مبدا نيست

نتيجه اي از ساخت، نصب و اجراي آن زيرسيستم

برای توصیف مفاهيم زمان ساخت و زمان اجرا تنها با

component ها

› componentهاي زمان ساخت

› component هاي زمان اجرا را با يک نام

يک زيرسيستم مي تواند چندينcomponentرا بسازد 32

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

Abdollahzadeh

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

ادامه

33

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

Abdollahzadeh

Page 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(

34

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

Abdollahzadeh