المنهجيــــة غرضيــة التوجـــــه Object Oriented Methodology
Download
Report
Transcript المنهجيــــة غرضيــة التوجـــــه Object Oriented Methodology
المنهجيــــة غرضيــة التوجـــــه
Object Oriented Methodology
المحاضرة الثانية عشر
مراجعة عامة
د .محمد احمد
مقدمـــــــــــــة
• بدأ استخدام المنهجيات المهيكلة في السبعينيات مترافقا مع ظهور مفهوم دورة
حياة النظم ،ثم تم تطوير المنهجيات المهيكلة الموجهة باإلجراءات ( Process
)Orientedكتقنية تحليل وتصميم أكثر فعالية .وقد استندت المنهجيات المهيكلة
على بنى البرامج الحاسوبية القائمة على الفصل بين خطوات البرنامج
(اإلجراءات )Processes -والبيانات (.)Data
• مع مطلع الثمانينيات ،ومع تطور وانتشار نماذج قواعد البيانات ،احتلت تقنيات
نمذجة البيانات دورا أكبر في تطوير النظم البرمجية مما أدى إلى ظهور
المنهجيات الموجهة بالبيانات ( .)Data-Orientedوعلى الرغم مما قدمته هذه
المنهجيات من تحسينات إال أنها حافظت على استخدام مبدأ التقسيم الوظيفي في
مرحلة تصميم النظم.
2
نقاط ضعف المنهجيات التقليدية
– يتطلب النموذج الشاللي إكمال كل مرحلة من مراحل التطوير قبل االنتقال إلى
المرحلة التالية ،مما يزيد من خطورة انتقال األخطاء من مرحلة إلى المراحل التالية.
– يمكن أن يؤدي التقسيم الوظيفي إلى تصميم غير مستقر ألن هذا التصميم يعتمد
على اإلجراءات التي غالبا ما تتغير نتيجة لظهور متطلبات جديدة أو نتيجة لتصحيح
أخطاء سابقة.
– تفترض المنهجيات التقليدية أن تطوير النظام البرمجي يبدأ من الصفر بدال من
إعادة استخدام رماز موجود مسبقا ،وهذا طبيعي ألن التقسيم الوظيفي يؤدي إلى
فصل اإلجراءات (المعالجة) عن البيانات مما يجعل نقل الرماز وإعادة استخدامه
أمرا صعبا للغاية.
– بما أن التقسيم الوظيفي موجه لحل مسألة محددة ،يصبح هذا الحل (التصميم)
وحيدا مما يجعل بناء تطبيقات عامة االستخدام أمرا صعبا.
3
منهجية التحليل والتصميم غرضية التوجه
• اعتاد المحللون في الماضي خالل قيامهم بتطوير النظم على التركيز
على المعطيات ليحصلوا بذلك على نماذج (مثل )ERDتشكل
المعطيات محورها الرئيسي ( )Data centric approachأو على
إجرائيات العمل ليحصلوا بذلك على نماذج (مثل )DFDتشكل
اإلجراءات محورها الرئيسي (.)Process centric approach
• تعتمد المنهجية غرضية التوجه على النظر إلى نظام المعلومات
كمجموعة من األغراض (تتضمن اإلجراءات والبيانات بآن معا)
المتفاعلة والتي تعمل معا إلنجاز مهمات محددة.
4
منهجية التحليل والتصميم غرضية التوجه
• تساعد المنهجية غرضية التوجه على التركيز على كال الجانبين
(المعطيات واإلجرائيات) في الوقت نفسه:
– جوهر عملية التحليل :مقاربة المسألة من زاوية األغراض (أشياء أو مفاهيم
من العالم الحقيقي).
– جوهر عملية التصميم :تعريف الحل كمجموعة من األغراض البرمجية (مع
إسناد مسؤوليات لألغراض).
• تحتل المعطيات كما األفعال درجة األهمية ذاتها.
• الغرض ()Object
– مكون برمجي يجمع في البنية ذاتها كال من المعطيات واألفعال التي يجري
تطبيقها على تلك المعطيات.
5
المنهجية غرضية التوجه والمنهجيات المهيكلة
ما الفرق؟
• يتعامل التصميم المهيكل مع تطوير النظام كمسألة تجزئة خوارزمية
(أو تجزئة وظيفية) حيث يمثل كل مجتزأ في النظام خطوة رئيسية من
خطوات الحل اإلجمالي .بالمقابل تعتمد المنهجية غرضية التوجه على
التجزئة الغرضية (أي على األغراض وليس الخوارزميات) ،فيركز
التحليل على وصف ما يجب أن يقوم به النظام بداللة األغراض
الرئيسية لفضاء المسألة كما يركز التصميم على وصف كيف سيعمل
النظام باستخدام تلك األغراض.
6
منهجية التحليل والتصميم غرضية التوجه
حساب مصرفي
المعطيات :الرصيد
األفعال :سحب ،إيداع ،استعالم عن الرصيد
7
األنظمة غرضية التوجه – مفاهيم أساسية
•
•
•
•
•
8
األغراض والصفوف .Objects and Classes
الطرق والرسائل Methods and Messages
التغليف وإخفاء المعلومات Encapsulation and Information
Hiding
الوراثة Inheritance
تعددية األشكال والربط الديناميكي Polymorphism and
Dynamic Binding
-1األغراض والصفوف
• الغرض هو “شيء” في نظام المعلومات قادر على االستجابة للرسائل
التي يتلقاها .والصف هو مجموعة من األغراض المتشابهة .فعلى
سبيل المثال ،يمكن أن يحوي الصف “زبون” أغراضا مثل “فادي” أو
“عامر” .لكل أغراض الصف المجموعة نفسها من الواصفات
( )attributesمثل :االسم ،الكنية ،العنوان ،تاريخ الميالد ،رقم
الهاتف وغيرها.
• من أمثلة صفوف األغراض :استمارة إدخال المعطيات في نظام
حاسوبي ( ،)data-entry formالزر ( )buttonوعلبة النص
( .)text boxيجري إنشاء األغراض المستقلة كأمثال من هذه
الصفوف .بالمثل ،يمكن النظر إلى الطابعة كصف في حين أن
الطابعات المختلفة التي قد تستخدمها هي أغراض من هذا الصف لكل
منها قيم واصفات خاصة بها.
9
األغراض والصفوف
• الغرض :هو أي شيء يتميز بسلوك ( )Behaviorمحدد وله في
لحظة محددة حالة معينة (.)State
– أغراض من العالم الحقيقي :دراجة ،كتاب ،طالب ،صف..
– أغراض برمجية :تمثل أغراضا حقيقية أو أغراضا مجردة (قائمة مثال).
• الطرق :هي إجراءات ( )proceduresتتواصل بواسطتها األغراض
فيما بينها (طالب :يسجل ،يدرس.)...
• الواصفات ( :)Attributesمتحوالت تخزن معلومات عن حالة
الغرض (طالب :االسم ،الرقم.)...
• الصف :هو قالب أو نموذج ( )Prototypeلكل األغراض التي هي
من النوع نفسه (طالب ،جامعة ،شكل هندسي)...
– يُنظر إلى الغرض كمثل ( )Instanceمن صف ( SVUهو غرض من
الصف myCircle ،Universityو mySquareأغراض من الصف
.)Shape
10
-2الطرق والرسائل
• تجسد الطرق سلوك الغرض
• مشابهة للتابع ( )Functionأو اإلجراء (.)Procedure
• الرسائل هي آلية تفعيل الطرق
• يُرسل غرض ما رسالة إلى غرض آخر لتفعيل إحدى طرقه (مشابهة
لعملية استدعاء تنفيذ إجراء).
11
-3التغليف وإخفاء المعلومات
• التغليف ()Encapsulation
– جمع المعطيات واإلجراءات التي تتعامل معها في كيان واحد.
• إخفاء المعلومات ()Information Hiding
– يُزود المستخدم فقط بالمعلومات الالزمة الستخدام الغرض.
– يشكل هذا أساس مبدأ إعادة االستخدام ( )Reusabilityإذ يكفي الستخدام أي
غرض استدعاء طرقه.
12
-4الوراثة
•
•
•
•
•
13
الوراثة ( :)Inheritanceيمكن تنظيم الصفوف في بنية هرمية يرث
من خاللها صف ما صفات وطرق صف أعلى.
تتوضع الصفوف العامة ( )generalأو العليا ( )Superclassesفي
أعلى هرمية الصفوف.
تتوضع الصفوف الخاصة ( )Specificأو الفرعية ()Subclasses
في أسفل الهرمية.
ترث الصفوف الخاصة صفات وطرق الصفوف التي تتوضع فوقها
في هرمية الصفوف.
صفوف حقيقية ( )Concreteوصفوف مجردة (.)Abstract
الصفوف المجردة والصفوف الحقيقية
14
-5تعددية األشكال والربط الديناميكي
• تعددية األشكال
– تُفسر الرسالة نفسها بطرق مختلفة وفقا لنوع الغرض الذي يستقبل الرسالة.
• الربط الديناميكي
– يسمى أحيانا الربط المتأخر ()late binding
– تؤجل عملية انتقاء الطريقة إلى زمن التنفيذ (وفقا لنمط الغرض)
– في الربط السكوني يجب تحديد نمط الغرض (وبالتالي اإلجراء) أثناء
الترجمة (.)compile time
15
تعددية األشكال والربط الديناميكي
Instance variable: SALARY
Method: monthPay = SALARY / 12
Employee
Super Class
Sub Class
Pilot
Instance variable:
Method:
flyPay
monthPay
Super monthPay + flyPay
Mechanic
overtimePay
monthPay
Super monthPay + overtimePay
16
التحليل والتصميم غرضي التوجه
• التحليل غرضي التوجه :يعرف كل أنماط األغراض التي تؤدي عمل
النظام ويبين كيف تتفاعل هذه األغراض إلنجاز المهمات.
• التصميم غرضي التوجه :يعرف كل أنماط األغراض اإلضافية
الالزمة للتخاطب مع محيط النظام (من أشخاص و تجهيزات
سن تعريف أنماط األغراض بحيث يمكن تحقيقها بلغة
وغيرها) كما يح ّ
برمجة أو بيئة برمجة محددة.
17
خطوات التحليل غرضي التوجه
ينطوي التحليل غرضي التوجه على أربع خطوات أساسية:
.1التعرف على األغراض وصفوفها.
.2التعرف على العالقات بين األغراض.
.3التعرف على واصفات األغراض.
.4التعرف على الخدمات.
18
خطوات التصميم غرضي التوجه
ينطوي التصميم غرضي التوجه على أربع خطوات أساسية:
.1تعريف دورة حياة كل غرض.
.2تعريف العالقات بين الصفوف.
.3تعريف منطق الخدمات.
.4إكمال تعريف الصفوف.
19
مميزات المنهجية غرضية التوجه
• تتميز المنهجية غرضية التوجه بأنها:
• ُمساقة بحاالت االستخدام ()Use-case driven
• متمحورة حول البنيان ()Architecture Centric
• تكرارية وتزايدية ()Iterative and Incremental
• إجرائية التطوير المفضلة:
• اإلجرائية الموحدة (.)The Unified Process
20
-1مساقة بحاالت االستخدام
• مساقة بحاالت االستخدام:
– حاالت االستخدام هي أداة النمذجة األساسية التي تستخدم لتعريف سلوك
النظام.
– تصف حالة االستخدام كيف يتخاطب المستخدم مع النظام إلنجاز عملية ما
(مثل إجراء حجوزات أو البحث عن معلومات).
– تُستخدم حاالت االستخدام لتحديد متطلبات عمل النظام الوظيفية
( )Functional Requirementsوإيصالها للمبرمجين الذين سيطورون
النظام.
21
-2متمحورة حول البنيان
• أي أن توصيف بنيان النظام هو الذي يقود أنشطة التوصيف والبناء
والتوثيق .يقدم التحليل والتصميم غرضي التوجه ثالثة نماذج مختلفة
(لكن مترابطة ومتسقة فيما بينها) لبنيان النظام يجسد كل منها شكل
النظام من وجهة نظر محددة :وظيفية ،سكونية ،ديناميكية.
• يجري تحديد البنية البدائية بالبحث عن الوظائف األساسية
صفنا مزيدا من حاالت االستخدام
• تنضج البنية أكثر كلما اكتشفنا وو ّ
22
متمحورة حول البنيان
ثالثة نماذج مختلفة للنظام نفسه
• النموذج الوظيفي ( :)Functionalيصف السلوك الخارجي للنظام من وجهة نظر
المستخدم .نستخدم حاالت االستخدام ومخططات حاالت االستخدام لبناء هذا
النموذج.
• النموذج السكوني ( :)Staticيصف بنية النظام من حيث هو أغراض وصفوف
لها واصفات وطرق وتربط بينها عالقات .نستخدم مخططات الصفوف
ومخططات األغراض لبناء هذا النموذج إضافة إلى ما نسميه بطاقات CRC
(.)Class-Responsibility-Collaboration
• النموذج الديناميكي ( :)Dynamicيصف السلوك الداخلي للنظام بداللة الرسائل
المتبادلة بين األغراض والتغيرات التي تطرأ على حاالت هذه األغراض .نستخدم
مخططات التسلسل ومخططات التعاون ومخططات الحاالت لبناء هذا النموذج.
تُطور هذه النماذج في مرحلة التحليل ويجري تحسينها أثناء التصميم .يتم إضافة
مخططات أخرى مع االنتقال من التحليل إلى التصميم ومع االنتقال من التصميم
إلى التنفيذ.
23
النموذج الوظيفي
Boundary
Library System
Actor
Borrow book
Employee
Client
Remove book
Return book
24
النموذج السكوني
25
النموذج الديناميكي
:System
Librarian
enterBorrower(id)
borrowResource(callNumber)
printReport()
report
data token
26
-3تكرارية وتزايدية
• قانون ميلر ()Miller’s Law
– في لحظة محددة يمكننا فقط التركيز على سبعة عناصر (أو وحدات من
المعلومات).
– للتعامل مع مقادير أكبر من المعلومات نعتمد مبدأ “الصقل المتدرج”
(.)Stepwise refinement
• نركز على المفاهيم األكثر أهمية في الوقت الراهن.
• نؤجل المفاهيم غير األساسية حاليا إلى وقت الحق.
• بالنتيجة ،تجري معالجة المفاهيم بترتيب موافق (إلى حد بعيد) لترتيب أهميتها.
– هذا ما نسميه “إجرائية تكرارية” (.)Incremental Process
27
تكرارية وتزايدية
• تركز المنهجية غرضية التوجه على التطوير التكراري التزايدي الذي
يخضع لعمليات اختبار وتحسين تستمر طيلة فترة حياة المشروع.
يؤدي كل تكرار إلى جعل النظام أقرب من احتياجات المستخدم
الحقيقية.
– يُنفذ المشروع بتكرار حلقات ()iterations
– يؤدي كل تكرار إلى إنتاج نسخة مزيدة ( )incrementأكثر قربا إلى المنتج
النهائي من سابقتها.
– يتضمن كل تكرار :تحليل ،تصميم ،تحقيق ،اختبار
28
)تكرارية وتزايدية (توضيح
Student
- studNum: int
- studSurname: String
- studGivenname: String
+ getSurname(): String
+ setSurname(name: String) : void
Student
Student
studNum
studSurname
getSurname()
في نموذج التحليل
)(مرحلة مبكرة
في فضاء المسألة
(عند جمع
)المتطلبات
مع التقدم باتجاه نموذج التصميم
29
تكرارية وتزايدية
30
-4إيجابيات المنهجية غرضية التوجه
• باالعتماد على تقنية إخفاء المعلومات تصبح الصيانة أسهل (ينخفض
احتمال األخطاء المتدحرجة – .)regression faults
• يصبح التطوير أسهل
– عادة ،لكل غرض مقابل فيزيائي (من العالم الحقيقي).
• األغراض المصممة جيدا هي وحدات مستقلة
–
–
–
–
31
التغليف :يتضمن الغرض كل ما له عالقة بالكائن الفعلي الذي يمثله الغرض.
يجري التواصل بين الوحدات بإرسال رسائل بين األغراض.
تصبح إعادة استخدام الوحدات (األغراض) ممكنة كونها وحدات مستقلة
بعضها عن بعض.
تنخفض درجة تعقيد البرمجية.