Presentation is loading. Please wait.

Presentation is loading. Please wait.

كارگاه آموزشي معماري نرم‌افزار

Similar presentations


Presentation on theme: "كارگاه آموزشي معماري نرم‌افزار"— Presentation transcript:

1 كارگاه آموزشي معماري نرم‌افزار www.esoa.ir
جلسه اول دكتر فريدون شمس سيد شروين استادزاده

2 فهرست مطالب يك مثال: عمارت وينچستر مقدمه‌ای بر معماری
معماري نرم‌افزار چيست؟ چرخه کاری معماری ساختارها و ديدها صفات کيفيتی

3 يك مثال: عمارت وينچستر نمونه‌اي از عدم معماري

4 يك مثال: عمارت وينچستر هزينه ساخت = 5/5 ميليون دلار
مدت ساخت = 38 سال (از 1884 تا 1922) تعداد اطاق‌ها = 160 تعداد طبقات = 2 تعداد راه پله‌ها = 40 تعداد آسانسور = 3 تعداد درب‌ها = 467 تعداد پنجره‌ها = 1257 (10000 قطعه شيشه) تعداد بخاري = 47 تعداد دودكش = 17 سيستم گرمايي = كانال بخار، هواي گرم، بخاري تعداد درب‌هايي كه به جايي باز نمي‌شود = 950

5 يك واقعيت اگر سازه‌هاي بلوكي و زيرساخت‌هاي اكثر سيستم‌هاي نرم‌افزاري امروزي را با معادل‌هاي آنها در ساختمان جايگزين كنيم به عمارت‌هايي نظير عمارت وينچستر خواهيم رسيد. عمارت‌هايي كه هر چند هزينه و زمان زيادي صرف ساخت آنها شده است، ولي چون بر اساس معماري مشخصي بنا نشده‌اند، اثربخشي لازم را ندارند.

6 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص

7 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني

8 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي

9 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول

10 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول

11 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول حضور نسل‌هاي مختلفي از سبك‌ها و سيستم‌ها

12 نکاتی درباره عمارت وينچستر
عدم وجود يك راهبرد مشخص عدم وجود نقشه فني عدم توجه به نيازمنديهاي واقعي زمان غير معقول هزينه غير معقول حضور نسل‌هاي مختلفي از سبك‌ها و سيستم‌ها غير قابل توسعه

13 معماري چيست؟ معماري يعني ارايه توصيفي فني از يك سيستم كه نشان دهنده ساختار اجزاء آن، ارتباط بين آنها، و اصول و قواعد حاكم بر طراحي آن، و تكامل آنها در گذر زمان باشد.

14 مقدمه‌اي بر معماري نرم‌افزار
مفاهيم اوليه مقدمه‌اي بر معماري نرم‌افزار

15 ساخت يك لانه سگ مي‌تواند توسط يك نفر ساخته شود. نيازمنديها:
كمترين مدل‌سازي فرآيند ساخت ساده ابزارهاي ساده

16 ساخت يك خانه مي‌تواند توسط يك تيم ساخته شود. نيازمنديها: مدل‌سازي
فرآيندهاي خوش ساخت ابزارهاي قدرتمند

17 ساخت يك آسمانخراش

18 چه زمانی معماری لازم است؟
ابعاد بزرگ

19 چه زمانی معماری لازم است؟
ابعاد بزرگ پيچيدگی زياد

20 چه زماني معماري لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص

21 چه زماني معماري لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص طول عمر زياد

22 چه زماني معماري لازم است؟
ابعاد بزرگ پيچيدگی زياد نيازمندي خاص طول عمر زياد انعطاف پذيری در برابر تغييرات

23 معماري نرم‌افزار چيست؟
مفاهيم اوليه معماري نرم‌افزار چيست؟

24 تعريف معماري معماري يعني
هنر يا علم ساخت هر نوع عمارت كه مورد استفاده بشر قرار گيرد. عمل يا فرآيند ساخت كار وابسته به معماري؛ ساختار، ساخت و ساز ساختمان يا ساختار عمومي سازمان كلي و ساختار مفهومي يك كامپيوتر يا يك سيستم كامپيوتري از ديد استفاده يا طراحي آن؛ يك عينيت بخش از آن - به نقل از فرهنگ‌نامه آكسفورد

25 تعريف معماري (ادامه) معماري نرم‌افزار كاري است كه معماران نرم‌افزار انجام مي‌دهند. - Beck

26 تعريف معماري (ادامه) يك مجموعه از عناصر معماري (يا طراحي) كه داراي يك شكل مشخص باشند. - Perry and Wolf, 1992. يك معماري سيستم نرم‌افزار تشكيل شده از ... مجموعه‌اي از مولفه‌ها، ارتباطات، و قيدهاي نرم‌افزاري و سيستمي مجموعه‌اي از نيازمنديهاي ذينفعان سيستم اصولي كه نشان دهد اين مولفه‌ها، ارتباطات، و قيدها، سيستمي را تعريف مي‌كند كه نيازمنديهاي سهامداران را برآورده مي‌سازد. - Boehm et al., 1995.

27 تعريف معماري (ادامه) معماري نرم‌افزار يك برنامه يا يك سيستم محاسباتي ساختار يا ساختارهايي از سيستم است كه عناصر نرم‌افزاري، خصوصيات قابل مشاهده از بيرون آن عناصر، و ارتباطات بين آنها را شامل مي‌شود. - Clements et al., 1997.

28 بخشهاي مشترك در تعريف معماري
تعريف معماري (ادامه) بخشهاي مشترك در تعريف معماري معماري مولفه‌هاي اصلي را نشان مي‌دهد. معماري ارتباطات (ساختارهاي) مولفه‌ها و تعامل بين آنها را نشان مي‌دهد. معماري اطلاعات محتوايي درباره مولفه‌ها را كه مربوط به تعامل آنها نباشد، حذف مي‌كند. رفتار مولفه‌ها بخشي از معماري است. هر سيستمي داراي يك معماري است، حتي اگر تنها از يك مولفه تشكيل شده باشد. معماري اصول پشت پرده هر مولفه و ساختار را بيان مي‌كند. تعاريف معماري نمي‌گويند يك مولفه چيست؟ معماري يك ساختار منفرد نيست. هيچ ساختار منفردي نيز معماري نيست.

29 تعريف معماري (ادامه) معماري نرم‌افزار با موارد زير نيز سروكار دارد :
وظيفه‌مندي قابليت استفاده قابليت استفاده مجدد پايداري قابليت درك قيدها و محدوديت‌هاي فن‌آوري و اقتصادي زيبايي شناسي

30 معماري، طراحي، و پياده‌سازي
معماري مفاد طراحي و پياده‌سازي را مشخص مي‌كند. Analysis Architecture Design Implementation CODE

31 آيا اين نمودار يك معماري است؟
مثالي از معماري آيا اين نمودار يك معماري است؟ Control Card Interface Cash Dispenser Keyboard Interface

32 چه نكات مبهمي در نمودار قبل وجود داشت؟
مثالي از معماري چه نكات مبهمي در نمودار قبل وجود داشت؟ ماهيت عناصر (فرآيند، كلاس، شيء، واحد، وظيفه، پردازنده، ...) مسووليت عناصر نوع ارتباطات (فراخواني، درخواست، بكارگيري، سيگنال، ارسال داده، كنترل، زيركلاس، ...) مفهوم طرح‌بندي عمليات زمان اجراي سيستم

33 چه بخشهايي در نمودار قبل جا مانده است؟
مثالي از معماري چه بخشهايي در نمودار قبل جا مانده است؟ ماهيت هر يك از عناصر چيست؟ مسووليت هر يك از عناصر چيست؟ مفهوم هر يك از ارتباطات چيست؟ مفهوم هر يك از طرح‌بندي‌ها چيست؟ جز در مواقعي كه ما دقيقاً بدانيم هر عنصر چيست و چگونه با ديگر عناصر همكاري دارد تا يك وظيفه سيستم انجام شود، نمودار قبلي هيچ استفاده‌اي ندارد.

34 نظراتي درباره معماري معماري تنها بر روي كاغذ است.
معماري همان طراحي است. معماري همان زيرساخت است. معماري همان ساختار است. فن‌آوري مورد علاقه من يك معماري است. معماري نتيجه كار تنها يك معمار است. معماري مي‌تواند توسط يك نوع خروجي نمايش داده شود (تك ديدي است). معماري سخت‌افزار مقدم بر معماري نرم‌افزار است. معماري قابل ارزش‌يابي و يا اعتبارسنجي نيست. معماري يك علم است. معماري يك هنر است.

35 چرخه كاري معماري چه مواردي بر معماري تاثير مي‌گذارند؟
چه مواردي از معماري تاثير مي‌گيرند؟

36 چه كساني بر معماري تاثير دارند؟

37 مشتريان و كاربران نهايي
نيازمنديها (+ صفات كيفيتي مثل كارايي، قابليت نگهداشت، ...) محدوديت‌هاي بودجه‌اي محدوديت‌هاي زماني رعايت قواعد خاص سازمان مثل رعايت يك فن‌آوري خاص

38 سازمان توسعه موارد كاري موارد سازماني
سرمايه‌گذاري و استهلاك زيرساخت‌ها كاهش هزينه‌ها ساده بودن پياده‌سازي موارد سازماني استفاده از ساختار سازماني موجود استفاده بهينه از كارمندان

39 محيط فن‌آوري گرايش غالب امروزي (مثلاً نرم‌افزارها تحت وب باشد)
فن‌آوري موجود (مثلاً تصميم در استفاده از يك سيستم متمركز يا توزيع‌شده بستگي به هزينه پردازنده‌ها و سرعت خطوط ارتباطي دارد)

40 پيش زمينه معمار معماران كارشان را با توجه به مجموعه تجربيات گذشته‌شان انجام مي‌دهند. تجربه موفق باعث تكرار آن در معماري جديد مي‌شود. تجربه ناموفق باعث عدم استفاده از آن در معماري جديد مي‌شود.

41 تاثيرات بر معماري

42 معماري بر روي سازمان توسعه تاثير دارد
ساختار و منابع سازماني واحد‌هاي كاري زمانبندي بودجه اهداف سازماني تخصص در زمينه ساخت يك نوع از سيستم‌ها موفقيت در بازار ارزيابي بازار دارايي‌هاي خط توليد

43 معماري بر روي نيازهاي مشتريان تاثير دارد
دانش مشتريان ارتقاء سيستم، انطباق پذيري، ...

44 معماري بر روي تجربه معمار و محيط فن‌آوري تاثير دارد
ساخت يك سيستم بر روي تجربه معمار تاثير خواهد داشت. معمولاً، يك سيستم يا يك معماري بر روي محيط فن‌آوري تاثير دارد.

45 چرخه كاري معماري

46 فعاليتهای چرخه كاري معماري
ايجاد يک مورد کاری برای سيستم فهم نيازمنديها ايجاد يا انتخاب معماری تعامل با معماری تحليل يا ارزيابی معماری پياده سازی بر مبنای معماری حصول اطمينان از انطباق محصول با معماری

47 ساختارها و ديدهاي معماري

48 تعريف ساختار يك مجموعه از عناصر همگن به همراه ارتباط بين آنها است. براي هر ساختار مي‌توان موارد زير را مشخص كرد. نوع عناصر نوع ارتباطات مجموعه‌اي از قيدهاي نحوي معني نمودار اصول، قواعد، و راهبردها براي چه هدفي قابل استفاده است؟ ديد نمايشي از معماري نرم‌افزار بر پايه يك ساختار است كه توسط معمار ترسيم شده و دينفعان آن را مي‌خوانند. (نمونه‌اي از يك ساختار) معماري نرم‌افزار توسط تعدادي ديد مستند مي‌شود.

49 چارچوب مفهومي معماري (IEEE Std. 1471-2000)
ماموريت انجام مي دهد 1..* دارد يك تاثير دارد بر محيط سيستم معماري قرار دارد در توصيف مي شود با 1..* دارد 1..* تعيين هويت مي كند 1..* حمايت مي كند مهم است براي 1..* توصيف معماري عقلانيت (منطق) صاحب نقش - ذينفع مشخص مي كند 1..* شركت مي كند در دارد 1..* انتخاب مي كند 1..* سازمان مي يابد با 1..* تبيين مي كند 1..* مطابق دغدغه ديدگاه ديد استفاده مي شود تا پوشش دهد 1..* شركت مي كند در 1..* انتخاب مي شود از 0 .. 1 جمع شده 1..* شامل 1..* كتابخانه ديدگاه روشي را براي تبيين ايجاد مي كند مدل

50 طبقه‌بندي ساختارها ساختارهاي ماژول (Module)
ساختارهاي مولفه و اتصال (Component & Connector) ساختارهاي تخصيص (Allocation) اين طبقه بندی ها متعامد هستند.

51 1- ساختارهاي واحد عناصر: ماژول‌ها (واحدهاي پياده‌سازي) مشخص مي‌كند :
مسووليت وظيفه‌اي ماژول‌ها ساير عناصري كه ماژول اجازه استفاده از آنها را دارد. روابط عام و خاص عمليات زمان اجرای نرم‌افزار براي اين ديد اهميتي ندارد.

52 1-1 ساختار تجزيه عناصر: ماژول‌ها به شكل سلسله مراتبي
ارتباطات: زيرواحدي از ...، به اشتراك مي‌گذارد با ... مفيد براي ... تخصيص منابع پنهان سازي اطلاعات محصور‌سازي كنترل پيكربندي

53 1-2 ساختار استفاده عناصر: ماژول‌ها، روال‌ها، يا منابع مربوط به واسط ماژول‌ها ارتباطات: استفاده مي‌كند از ... مفيد براي ... مهندسي گسترش

54 1-3 ساختار لايه‌اي زيرنوعي از ساختار استفاده است.
عناصر: لايه‌ها (مجموعه‌اي همگن از وظيفه‌مندي مرتبط) ارتباطات: استفاده مي‌كند از ... (در حالت ايده‌آل، هر لايه تنها از لايه قبل از خود استفاده مي‌كند). مفيد براي ... ماشين مجازي

55 1-4 ساختار كلاس عناصر: كلاس‌ها ارتباطات: وراثت، نمونه‌اي از ... است
مفيد براي ... طراحي شيءگرا

56 2- ساختارهاي مولفه و ارتباط
عناصر: مولفه‌هاي زمان اجرا (واحدهاي اصلي محاسبه) و اتصالات (ابزارهاي ارتباطي بين مولفه‌ها) مشخص مي‌كند: مولفه‌هاي اجرايي اصلي و چگونگي تعامل بين آنها انباره‌هاي داده مشترك اصلي چه بخشي از سيستم تكرار شده است؟ جريان داده در سيستم چه بخش‌هايي بصورت موازي مي‌توانند اجرا شود؟ ساختار سيستم در حين اجرا چگونه مي‌تواند تغيير كند؟

57 2-1 ساختار مشتري/خدمتگزار
عناصر: مشتري، خدمتگزار ارتباطات: ارتباط برقرار مي‌كند با ...، وابسته است به ... مفيد براي ... عمليات توزيع شده جداسازي موارد بااهميت تعادل بار

58 2-2 ساختار پردازه عناصر: پردازه‌ها يا نخ‌ها
ارتباطات: موازي اجرا مي‌شود با ...، قبل از ... اجرا مي‌شود مفيد براي ... تحليل كارايي تحليل زمانبندي

59 2-3 ساختار توازي عناصر: نخ‌هاي منطقي ارتباطات: اجرا مي‌شود بر روي ...
مفيد براي ... اتصال انشعاب

60 2-4 ساختار داده مشترك يا انباره
عناصر: انباره داده، توليدكننده داده، مصرف كننده داده ارتباطات: توليد داده، مصرف داده مفيد براي ... يكپارچگي داده كارايي تغييرپذيري

61 3- ساختارهاي تخصيص ارتباط بين نرم‌افزار را با عناصري از محيط خارجي نشان مي‌دهد. مشخص مي‌كند: پردازنده‌اي كه هر يك از عناصر نرم‌افزاري را اجرا مي‌كند. فايلي كه هر يك از عناصر نرم‌افزاري را در هنگام توسعه نگهداري مي‌كند. انتساب نرم‌افزار به تيم توسعه

62 3-1 ساختار استقرار عناصر: نرم‌افزار، سخت‌افزار، و مسيرهاي ارتباطي
ارتباطات: تخصيص داده شده به ...، مهاجرت به ... مفيد براي ... تحليل كارايي تحليل دسترس پذيري تحليل امنيت

63 3-2 ساختار پياده‌سازي عناصر: هر واحد منطقي(مثل ماژول)
ارتباطات: پياده‌سازي مي‌كند ... مفيد براي ... كنترل پيكربندي يكپارچه سازي فعاليت‌هاي آزمون

64 3-3 ساختار انتساب كار عناصر: هر واحد منطقي(مثل ماژول)
ارتباطات: انتساب داده مي‌شود به ... مثالي از كاربرد مديريت پروژه بهنرين استفاده از تخصص‌ها

65 طبقه‌بندي ساختارها

66 صفات كيفيتي

67 طبقه‌بندي سنتي نيازمنديها
وظيفه‌اي غيروظيفه‌اي يك افسانه متداول در نرم‌افزار: ابتدا نرم‌افزاري ساخته شود كه نيازمنديهاي وظيفه‌اي را برآورده كند، سپس نيازمنديهاي غيروظيفه‌اي به آن افزوده يا تزريق شود. اين ايده ما را به سمت اتلاف منابع و كيفيت پايين سوق مي‌دهد. بايد تمركز بر روي كيفيت را از همان ابتدا آغاز كرد (در سطح معماري)

68 وظيفه‌مندي و معماري وظيفه‌مندي و صفات كيفيتي از نظر تئوري متعامد هستند. نمي‌توان با هر سطحي از وظيفه‌مندي به همه صفات كيفيتي دست يافت. وظيفه‌مندي را مي‌توان به شكل‌هاي مختلف بدست آورد (چندان به معماري مربوط نيست) معماري قصد دارد با سازماندهي وظايف به صفات كيفيتي دست پيدا كند.

69 معماري و كيفيت دستيابي به كيفيت بايد در تمام مراحل طراحي (از جمله معماري)، پياده‌سازي، و استقرار مد نظر قرار گيرد. كيفيت هم جنبه‌هاي مربوط به معماري و هم جنبه‌هاي نامربوط به معماري دارد. مثلاً دسترس پذيري: انتخاب از بين عناصر در برابر پشتيباني از عمل بازگشت كارايي: مقدار ارتباط بين مولفه‌ها در برابر الگوريتم‌ها صفات كيفيتي مستقل نيستند و نبايد بصورت مجزا به آنها دست يافت. همبستگي مثبت (مثل تغييرپذيري و قابليت ساخت) همبستگي منفي (مثل قابليت اطمينان و امنيت)

70 طبقه‌بندي صفات كيفيتي صفات كيفيتي سيستمي: دسترس‌پذيري، تغييرپذيري، كارايي، امنيت، آزمون‌پذيري، و قابليت استفاده صفات كيفيتي كاري: مثلاً مدت زمان بازاريابي صفات كيفيتي معماري: مثلاً يكپارچگي مفهومي

71 طبقه‌بندي صفات كيفيتي سيستمي
قابل مشاهده از طريق اجرا (مثل كارايي و امنيت) غيرقابل مشاهده از طريق اجرا (مثل تغييرپذيري و آزمون‌پذيري) اين دو گروه كاملاً مستقل (متعامد) هستند . اگرچه گروه دوم بر روي اولي تاثير غيرمستقيم دارد. صفات كيفيتي غيرقابل مشاهده نيز مهم هستند، گاهي حتي مهم‌تر !!!

72 صفات كيفيتي سيستمي دسترس‌پذيري (وابسته به قابليت اطمينان)
تغييرپذيري (شامل قابليت حمل، قابليت استفاده مجدد، مقياس‌پذيري) كارايي امنيت آزمون‌پذيري قابليت استفاده (شامل قابليت خود انطباقي و قابليت انطباق كاربر)


Download ppt "كارگاه آموزشي معماري نرم‌افزار"

Similar presentations


Ads by Google