Presentation is loading. Please wait.

Presentation is loading. Please wait.

روش‌هاي شناسائي و يافتن كلاس‌ها

Similar presentations


Presentation on theme: "روش‌هاي شناسائي و يافتن كلاس‌ها"— Presentation transcript:

1 روش‌هاي شناسائي و يافتن كلاس‌ها
بسمه‌تعالي فصل چهارم روش‌هاي شناسائي و يافتن كلاس‌ها

2 اهداف جلسه درك اهميت طبقه‌بندي در OOAD آشنائي با روش‌هاي يافتن كلاس‌ها
درك تفاوت بين روش‌هاي مبتني بر داده و مبتني بر وظيفه آشنائي با مدلسازي بوسيله كارت‌هاي CRC آشنائي با لايه‌بندي و نقش آن آشنائي با مقوله‌بندي و نقش آن كارت‌هاي CRC و مقوله‌بندي

3 فهرست مطالب طبقه‌بندي (Classification)
روش‌هاي مبتني بر داده (Data-Driven) روش‌هاي مبتني بر وظيفه (Responsibility-Driven) روش‌هاي شناسائي كلاس‌هاي اوليه روشCRC لايه‌بندي (Layering) مقوله‌بندي (Stereotyping)

4 طبقه‌بندي (Classification)
طبقه‌بندي ابزاري است كه بوسيله آن دانش خود را مرتب مي‌نماييم مسئله طبقه‌بندي در همه رشته‌هاي علوم محض، كاربردي و مهندسي مطرح است كلاس‌هاي مطرح براي مدلسازي يك سيستم بوسيله طبقه‌بندي 1) كلاس‌هاي مناسب يا كليدي 2) غير مناسب يا كم اهميت

5 طبقه‌بندي - ويژگيها 1) هر طبقه‌بندي با توجه به معياري(معيارهايي) انجام مي‌گيرد معيارهاي متفاوت منجر به طبقه‌بندي‌هاي مختلف خواهد شد 2) طبقه‌بندي ايده‌آل (يعني بهترين طبقه‌بندي بدون توجه به شرايط موجود) وجود ندارد! 3) فرآيند طبقه‌بندي يك فرآيند افزايشي و تكراري

6 ويژگيهاي طبقه‌بندي در OOAD
1) كلاس‌هايي بايد انتخاب شوند كه با توجه به معيارها و محدوديت‌هاي موجود (اقتصادي، تكنولوژي و ...) سازگار باشند 2) نبايد دنبال راه‌حل طلائي بلكه بايد بدنبال راه‌حل مناسبتر باشيم!

7 ويژگيهاي طبقه‌بندي در OOAD (ادامه)
3) طبيعت افزايشي و تكراري فرآيند طبقه‌بندي به صورت زير خود را نشان مي دهد: تعدادي كلاس كانديدا (اوليه) افزايش درك مسئله+ تلاش براي تشريح ساختار و رفتار كلاس‌ها شناسائي كلاس‌هاي ديگر بهبود كلاس‌هاي اوليه تقسيم يك كلاس بزرگتر به تعدادي كلاس كوچكتر تركيب تعدادي كلاس كوچكتر براي تشكيل دادن يك كلاس بزرگتر ايجاد زيركلاس‌هاي جديد

8 منابع تشخيص کلاس‌ها دو منبع اصلي براي تشخيص كلاس‌ها
فضاي مسئله (Problem Space) فضاي راه‌حل (Solution Space) مدل تحليل توصيف فضاي مسئله مدل طراحي مفصل توصيف فضاي راه‌حل

9 فرآيند شناسايي کلاس‌ها
فرآيند شناسائي كلاس‌ها شامل دو فعاليت اكتشاف (Discovery) و ابداع (Invention) است ابداع كلاس‌هايي براي پياده‌سازي كلاس‌هاي موجود اكتشاف كلاس‌هاي موجود مثال: ساختمان داده‌ها (ليست، آرايه، درخت،...)، ارتباط با پايگاه داده‌ها، كلاس‌هاي كنترلي و هماهنگ كننده، ...

10 يافتن كلاس‌ها رهيافت‌ها
1) روش‌هاي مبتني بر داده (Data Driven Approach) 2) روش‌هاي مبتني بر رفتار (Responsibility Driven Approach) Responsibilities Data اولويت با وظايف اولويت با داده‌ها

11 روش‌هاي مبتني بر داده در اين روش‌ها مبناي شناسائي كلاس‌هاي مناسب سيستم، شناسائي ساختار داده‌هاي مورد نياز هر كلاس است فرآيند تعيين كلاس‌ها با پرسيدن دو سوال صورت مي‌گيرد 1-   ساختار هر كلاس چيست؟ 2-   چه عملياتي بوسيله هر كلاس انجام مي گيرد؟ مزيت سهولت يادگيري مخصوصاً براي كساني كه پيش زمينه‌اي در روش‌هاي ساخت‌يافته و طراحي مبتني بر داده‌ها را دارند

12 روش‌هاي مبتني بر داده (ادامه)
نقض اصل محصورسازي و هدف از واسط گام 2: عمليات مورد نياز بر اساس ساختار داده‌هاي پيشنهادي را معين كنيد گام 1: داده‌هاي مورد نياز را تعيين كنيد سرويس‌گيرندگان به ساختار داخلي كلاس وابسته خواهند شد سرويس‌هاي كلاس به ساختار داخلي آن وابسته خواهند بود

13 روش‌هاي مبتني بر وظيفه در اين روش‌ها مبناي شناسائي كلاس‌هاي مناسب سيستم، شناسائي مسئوليت‌هاي (Responsibilities) مورد نياز هر كلاس است فرآيند تعيين كلاس‌ها با پرسيدن دو سوال صورت مي‌گيرد 1-  هر كلاس چه مسئوليتي دارد؟ (چه عملياتي بوسيله اين كلاس انجام مي‌گيرد؟) 2- اين شي، چه اطلاعاتي با بقيه اشياء به اشتراك مي‌گذارد؟

14 روش‌هاي مبتني بر وظيفه (ادامه)
گام 1: عمليات مورد نياز را تعيين كنيد گام 2: ساختار داده‌اي مورد نياز را تعيين كنيد روش‌هاي مبتني بر وظيفه الگوي Client/Server سرويس گيرندگان، مستقل از ساختار داخلي كلاس خواهند شد سرويس‌هاي كلاس به ساختار داخلي آن وابسته نخواهند بود

15 روش‌هاي مبتني بر وظيفه (ادامه)
نگاه اصلي اين روش به هر كلاس عبارت از موجوديتي است كه در هر آن مي‌تواند نقش سرويس‌دهنده يا نقش سرويس گيرنده را ايفا نمايد هر كلاس در نقش سرويس‌دهنده مي‌تواند فراهم‌كننده خدمات براي 3 نوع سرويس‌گيرنده باشد 1-  سرويس‌گيرندگان خارجي (External Clients) 2- سرويس‌گيرندگان مشتق شده (Derived Clients) 3- خود كلاس (Self Client)

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

17 روش‌هاي شناسائي كلاس‌هاي اوليه
1) طبقه‌بندي‌هاي پيشنهاد شده بوسيله متدولوژي‌هايOO 2) تحليل دامنه (Domain Analysis) 3) تحليل موارد كاربري (Use Case Analysis) 4) تحليل لغوي صورت مساله (Problem Statement Analysis) 5) استفاده از الگوها (Patterns) 6) كارت‌هاي CRC

18 طبقه‌بندي‌هاي پيشنهاد شده...
منابع بالقوه زير براي شناسائي كلاس‌ها پيشنهاد مي‌شوند 1) دستگاه‌ها(Devices): دستگاه‌هايي كه برنامه با آنها تعامل دارد 2) نقش‌ها: نقش‌هاي گوناگون كه كاربر در تعامل با سيستم ايفا مي‌نمايد 3) محل‌هاي فيزيكي (مانند دفاتر، سايت‌ها،...) كه براي سيستم مهم هستند 4) سازمان‌ها: مجموعه‌هاي سازماندهي شده (مردم، منابع، ابزار، ...) كه داراي ماموريت‌هاي مشخصند

19 طبقه‌بندي‌هاي پيشنهاد شده...
5) مفاهيم منطقي: اصول و ايده‌هاي منطقي كه در منطق كاري سازمان بكار گرفته مي‌شوند 6) ساختار: همان روابط IS-A و PART-OF 7)  ديگر سيستم‌ها: سيستم‌هاي خارجي كه برنامه با آنها تعامل دارد

20 تحليل دامنه (Domain Analysis)
عبارتست از شناسائي كلاس‌ها و اشياء مشترك در همه برنامه‌هاي كاربردي (Applications) متعلق به يك دامنه مشخص (مانند كامپايلرها، سيستم‌هاي اطلاعاتي جغرافيايي، ...) در اين روش، با ديدن سيستم‌هاي مرتبط و اسناد آنها و با صحبت با كارشناسان خبره در زمينه سيستم مورد نظر مي‌توان كلاس‌هاي كليدي يك سيستم را حدس زد

21 تحليل موارد كاربري دنباله‌اي از عمليات است كه يك سيستم انجام مي‌دهد تا يك نتيجه قابل مشاهده و ارزشمند براي كاربر فراهم نمايد كلاس‌هاي كليدي موارد كاربري تجزيه و تحليل

22 تحليل لغوي صورت مساله با تحليل صورت مكتوب مساله مي‌توان كلاس‌هاي اوليه را بدست آورد گام 2: حذف نام‌ها و فعل‌هاي غيرضروري گام 1: تعيين نام‌ها و فعل‌هاي موجود فعل‌ها: عمليات كانديدا نام‌ها: كلاس‌هاي كانديدا

23 كاتالوگي از الگوهاي استاندارد
استفاده از الگوها يك الگو، يك مساله طراحي كه در يك زمينه مشخص مرتباً تكرار مي‌گردد را توصيف كرده و سپس يك راه‌حل كلي و تكرارپذير براي آن ارائه مي‌كند كاتالوگي از الگوهاي استاندارد كلاس‌هاي كليدي گزينش

24 كلاس(رده) مسئوليت‌ها همكاران
كارت‌هاي CRC روشي غيررسمي(Informal) براي شناسائي و توصيف كلاس‌ها، رفتار و مسئوليت‌هاي آنها و همكاراني (كلاس‌هاي ديگر) كه به كمك آنها وظايف خود را انجام مي‌دهند كلاس(رده) مسئوليت‌ها همكاران كلمه Class Responsibilities Collaborators CRC

25 كارت‌هاي CRC (ادامه) كارت‌هاي “2×3” اسم كلاس : مسئوليت‌ها : همكاران :
Class Name Collaborators Responsibilities كارت‌هاي “2×3” اسم كلاس : مسئوليت‌ها : همكاران : دارا بودن مجموعه‌اي از اطلاعات لازم و كافي (به صورت Abstract) از هر عنصر در يك سيستم در چه رده‌اي ؟ (Class) با چه وظايفي؟(Responsibilities) با چه همكاراني ؟(Collaborators)

26 كارت‌هاي CRC (ادامه) هدف
فراهم نمودن روشي براي آموزش مفاهيم شي‌گرا (كمك به پياده نمودن شيوه‌اي كه در آن اشياء محور مي‌باشند) حل مشكل شناسايي اشياء براي مسائلي كه آشنايي زيادي در مورد آنها نداريم

27 كارت‌هاي CRC - ويژگيها سادگي روش: بر اساس يك بازي ساده با كارت‌ها
طبيعي بودن روند كار و نمايش سناريوهاي واقعي فرايندگرايي براساس كار گروهي What if …

28 فرآيند مدلسازي بوسيله كارت‌هاي CRC
1- موارد كاربري كليدي سيستم را مرور كنيد 2- در صورت نياز يكي (يا تركيبي) از تكنيك‌هاي يافتن كلاس‌هاي اوليه را براي شناسائي مجموعه‌اي از كلاس‌هاي كانديدا بكار ببريد 3- به ازاي هر مورد كاربري گام‌هاي زير را انجام دهيد الف) از كلاس‌هاي موجود، كلاس‌هايي كه مناسب اين مورد كاربري است را مشخص نماييد ب) اگر كلاس مناسبي وجود نداشته باشد پس كلاس جديدي را ايجاد نماييد

29 فرآيند مدلسازي بوسيله ... (ادامه)
ج) مسئوليت‌هاي كلاس را تشخيص دهيد: اين كلاس بايد چه وظيفه‌اي را انجام دهد؟ اگر وظيفه‌اي را در اختيار داريد، اين وظيفه متعلق به كدام كلاس است؟ بعضي از مسئوليت‌ها بوسيله همكاري كلاس با ديگر كلاس‌ها انجام مي‌پذيرند، بنابراين عجله نكنيد.

30 فرآيند مدلسازي بوسيله ... (ادامه)
د) همكاران كلاس را تشخيص دهيد: سناريوي “What if…?” را اجرا كنيد همكاري هنگامي رخ مي‌دهد كه يك كلاس نيازمند اطلاعاتي باشد كه در اختيار ندارد همكاري هنگامي رخ مي‌دهد كه يك كلاس نيازمند به روزرساني اطلاعاتي باشد كه در اختيار ندارد در هر همكاري، حداقل يك كلاس آغازكننده بايد وجود داشته باشد

31 فرآيند مدلسازي بوسيله ... (ادامه)
هـ) كارت‌هاي CRC را دور ميز چرخش دهيد: كارت‌هاي كلاس‌هايي كه با يكديگر همكاري دارند نزديك هم قرار دهيد هرچه همكاري قويتر باشد نزديكي دو كلاس به يكديگر مي‌بايست بيشتر باشد كارت‌هاي پر(شلوغ) را در وسط ميز قرار دهيد كارت‌ها را دور ميز بچرخانيد از كساني كه در جلسه شركت دارند بخواهيد كه به كارت‌هاي در حال چرخش توجه نمايند حاضرين در جلسه ارتباطات جديدي بين كلاس‌ها تشخيص خواهند داد سناريوي «چه مي‌شود اگر...؟» را اجرا نماييد

32 مثال: مسئله Producer/Consumer

33 نمونه نرم‌افزار کارت‌هاي CRC

34 کارت‌هاي CRC - مزايا نقطه مناسبي براي شروع تحليل (جرقه ذهني)
قابليت شبيه‌سازي رفتار سيستم (مرور سناريو) با نمودار كلاس‌ها سازگار است امکان کارگروهي

35 کارت‌هاي CRC – مزايا (ادامه)
نداشتن مشكل سيم‌بندي (Wire Syndrome) مقوله‌بندي (Stereotyping) رضايت كاربران تحليل بوسيله خبرگان

36 کارت‌هاي CRC – معايب مشكل برقراري ارتباط با كاربران

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

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

39 لايه‌بندي و مقوله‌بندي (ادامه)
در توصيف يك سيستم نرم‌افزاري دو اصل وجود دارد: 1) از ديد چه كسي اين سيستم توصيف مي‌گردد؟ 2) ميزان پرداختن به جزئيات چه قدر است؟ لايه‌بندي مقوله‌بندي

40 لايه‌بندي و مقوله‌بندي (ادامه)
در اين لايه چه گروه‌هايي از كلاس‌ها را مي‌توان يافت؟‌ مقوله‌بندي سيستم Layer 3 لايه‌بندي Layer 2 Layer 1

41 لايه‌بندي (Layering) در لايه‌بندي يك سيستم نرم‌افزاري به صورت تعدادي از لايه‌ها تقسيم‌بندي مي‌گردد لايه‌بندي وابستگي‌ها را كاهش مي‌دهد بطوريكه لايه‌هاي پايين‌تر از جزئيات و واسط‌هاي لايه‌هاي بالاتر اطلاعي ندارند

42 لايه‌بندي (ادامه) يك برنامه كاربردي از نظر منطقي به سه لايه كلي تقسيم مي‌شود 1) واسط كاربر (User Interface) 2) منطق حرفه (Business Logic) 3) سرويس‌هاي داده‌اي (Data Services)

43 لايه‌بندي (ادامه) با توجه به تقسيم‌بندي قبل سه معماري وجود دارد:
1) معماري متمركز 2) معماري Client/Server 3) معماري 3-Tier

44 معماري متمركز در اين معماري بخش‌هاي سه‌گانه برنامه شديداً با يكديگر آميخته‌اند. در واقع، تنها يك لايه وجود دارد. مزايا 1) سادگي در طراحي و پياده‌سازي معايب 1) عدم قابليت استفاده مجدد 2) عدم انعطاف‌پذيري و قابليت تغيير پائين 3) قابليت توسعه‌پذيري و مقياس‌پذيري پائين در صورت نياز به قدرت محاسباتي بيشتر پديده جزاير برنامه‌هاي كاربردي (Applications Islands) به وجود مي‌آيد

45 معماري متمركز (ادامه) User Interface + Business Logic +
Data Management Mainframe Terminal 1 Terminal 2 Terminal 3

46 معماري Client/Server در اين معماري بخش‌هاي سه‌گانه برنامه در دو لايه اصلي قرار مي‌گيرند لايه‌ها 1) سرويس‌گيرنده: واسط كاربر + بخشي از منطق حرفه 2) سرويس‌دهنده: سرويس‌هاي داده‌اي + قسمت اعظم منطق حرفه

47 معماري Client/Server (ادامه)
Tier 1 Business Logic + Data Management Server Tier 2 User Interface + Business Logic Client 1 Client 2 Client 3

48 معماري Client/Server (ادامه)
مزايا واسط كاربر قابل استفاده مجدد است وجود محيط‌هاي برنامه‌سازي يكپارچه و قوي مانند Delphi، Visual Studio .NET، و ... كه امكان دسترسي به داده‌هاي قديمي و جديد سازمان به صورت يكپارچه را فراهم مي‌كنند امكان استفاده مجدد جزئي از منطق حرفه در قسمت سرويس‌دهنده

49 معماري Client/Server (ادامه)
معايب محل منطق حرفه مشخص نيست تنها بخشي از منطق حرفه قابل استفاده مجدد است منطق حرفه قابل استفاده مجدد، معمولاً، به صورت روال‌هاي ذخيره شده كه متعلق به يك پايگاه داده معيني است، وجود دارد. به علت اين وابستگي منطق حرفه قابليت استفاده مجدد را در سطح تمام سازمان نخواهد داشت

50 معماري 3-Tier در اين معماري بخش‌هاي سه‌گانه برنامه در سه لايه اصلي قرار مي‌گيرند منطق حرفه بر روي سرويس‌دهنده مستقلي كه به سرويس‌دهنده كاربردي (Application Server) معروف است، قرار مي‌گيرد

51 معماري 3-Tier (ادامه) مزايا معايب
معماري 3-لايه‌اي از تقسيم‌بندي منطقي برنامه تبعيت مي‌كند جداسازي منطق حرفه از بقيه قسمت‌هاي برنامه باعث به حداكثر رساندن قابليت استفاده مجدد آن است معايب پيچيدگي در طراحي و پياده سازي

52 معماري 3-Tier (ادامه) Tier 1 Data Management Tier 2 Business Logic
Server Tier 2 Business Logic Tier 3 User Interface Client 1 Client 2 Client 3

53 مقايسه معماري C/S و 3-Tier
Data Management Business Logic User Interface Client/Server 3-Tier Initial Development Effort

54 مقايسه معماري C/S و 3-Tier
Data Management Business Logic User Interface Client/Server 3-Tier Subsequent Development Efforts

55 مقايسه معماري C/S و 3-Tier
Data Management Business Logic User Interface Client/Server 3-Tier Client Tool Migration

56 مقوله‌بندي (Stereotyping)
مقوله‌‌بندي اشياء كمك مي‌كند كه سطوح تجريد در يك سيستم نرم‌افزاري را شناخته شده و بدين صورت تمام افراد تيم مي‌توانند در سطح واحدي از تجريد فعاليت نمايند مقوله‌بندي روشي براي تنظيم سطح تجريد است (Abstraction Level Tuner)

57 مقوله‌بندي (ادامه) مثال: مقوله‌بندي در متدولوژي‌هاي
Unified Software Development Process (USDP) Select Perspective Responsibility Driven Design

58 مقوله‌بندي در USDP در USDP كلاس‌ها به سه گروه زير تقسيم مي‌شوند
كلاس‌هاي مرزي (Boundary Classes) مثال: واسط كاربر، پروتكل‌هاي ارتباطي، واسط چاپگر، حسگرها و ... كلاس‌هاي كنترلي (Control Classes) كلاس‌هاي موجوديتي (Entity Classes) كلاس‌هاي موجوديتي مفاهيم كليدي در سيستم در حال توسعه را نمايش مي‌دهند

59 مقوله‌بندي در Perspective
كلاس‌هاي واسط (Interface Classes) در سيستم هتل‌داري: اپراتوري كه با سيستم كار مي‌كند با فرم‌هايي(همان اشياء واسط) ارتباط دارد مانند: فرم رزرو اتاق، فرم حساب شخص، گزارشي از تعداد افراد و … Check in Form Check out Form Booking Report Reservation Form

60 مقوله‌بندي در Perspective (ادامه)
كلاس‌هاي حرفه (Business Classes) در سيستم هتل‌داري: اشيائي مانند رزرو كردن و درخواست مشتري، فاكتور، حساب و … مشاهده مي‌شوند كه سرويس‌هاي مورد انتظار از سيستم را فراهم مي‌نمايند Customer Order Account Invoice Reservation

61 مقوله‌بندي در Perspective (ادامه)
كلاس‌هاي داده‌اي (Data Classes) در سيستم هتل‌داري: اشيائي مانند مدير داده‌هاي حساب، تبديل‌كننده داده‌هاي حساب، دستيابي به داده‌هاي حساب و… مشاهده مي‌شوند كه سرويس‌هاي داده‌اي مورد انتظار اشياء ديگر را فراهم مي‌نمايند Account Data Conversion Account Data Manager Account Data Access

62 مقوله‌بندي در RDD در RDD كلاس‌ها به 6 گروه زير تقسيم مي‌شوند
كلاس‌هاي كنترل كننده (Controller Classes) كلاس‌هاي هماهنگ كننده (Coordinator Classes) كلاس‌هاي واسط (Interface Classes) كلاس‌هاي فراهم‌كننده سرويس (Service Provider Classes) كلاس‌هاي نگهدارنده اطلاعات (Information Holder Classes) كلاس‌هاي ساختاري (Structure Classes)

63 كارت‌هاي CRC و مقوله‌بندي
مثال: در يك سيستم بانكي مشتري مي‌خواهد مبلغي از حساب خود برداشت نمايد. اين كار بوسيله ماشين پرداخت پول(Automatic Teller Machine) انجام مي‌گيرد.

64 كارت‌هاي CRC و مقوله‌بندي (ادامه)
Withdrawal Transaction Supercalss: Financial Transaction Responsibilities Collaborators Knows account Knows amount Performs Withdraw Cash Dispenser Logs Transaction Initiates Dispensing cash

65 كارت‌هاي CRC و مقوله‌بندي (ادامه)
Withdrawal Transaction Withdraws cash from an account and dispense it Purpose Service Provider, Coordinator, Business Object Stereotypes پشت كارت Withdrawal Transaction كه در آن طبقه‌بندي كلاس ديده مي‌شود

66 پرسش و پاسخ


Download ppt "روش‌هاي شناسائي و يافتن كلاس‌ها"

Similar presentations


Ads by Google