تقرير حول كتاب هندسة البرمجيات بعنوان تطبيق UML التحليل و التصميم بالمنحى للكائن باستخدام UML ترجمة و إعداد خالد الشقروني

أصبحت UML (لغة النمذجة الموحّدة) اللغة المعتمدة لترميز العمليات البرمجية لدى الوسط الصناعي. لقد خرجت من تحت عباءة ثلاثة يعدون من أهم أصحاب المنهجيات ولقت قبولا واسعا لدي المهتمين ببناء البرمجيات على اختلاف مشاربهم و منهجياتهم.
هي تقدم وسيلة رموزية مبسطة للتعبير عن مختلف نماذج العمل البرمجي يسهل بواسطتها على ذوي العلاقة - من محللين و مصممين و مبرمجين بل و حتى المستفيدين - التخاطب فيما بينهم و تمرير المعلومات في صيغة نمطية موحدة و موجزة، تغنيهم عن الوصف اللغوي المعتاد. إنها مثل مخططات البناء التي يتبادلها المساحون والمعماريون ومهندسو التشييد، أو مخططات الدوائر الكهربائية و الالكترونية التي يمكن لأي كان في هذا المجال أن يفهمها و يتعامل معها.





جدول المحتويات

مقدمة المترجم    1


الفصل1: مقدمة إلى UML    3

ما هي UML ؟    3
لغة مشتركة    3
•بوك Booch
•OMT
•OOSE
ملخص    5
UML هي لغة رسومية للتعبير عن مشغولات (artifacts) التطوير البرمجي.
تقدم لنا اللغة رموزا ننتج بها النماذج.
تلقى UML تبنيا واسعا في الوسط الصناعي كلغة موحدة.
اللغة غنيّة جدا، و تحمل في طيّاتها العديد من جوانب أفضل الممارسات في هندسة البرمجيات.



الفصل 2: UML داخل عملية التطوير    6

UML كترميز    6
النموذج الانحداري WATERFALL MODEL    6
النموذج اللولبي    8
إطار العمل التكراري التزايدي    10
الاستهلال    11
التفصيل    11
البناء    12
التحوّل (الانتقال) TRANSITION    13
كم عدد هذه التكرارات؟ و كم يجب أن تطول؟    13
القيد الزمني TIME BOXING    14
التوقيتات النمطية للمشروع.    15
العملية الموّحدة من راشيونال    16
ملخص    17
يقدم إطار العمل التكراري التزايدي العديد من الفوائد مقارنة بالعمليات التقليدية.
ينقسم إطار العمل هذا إلى أربعة أطوار الاستهلال، التفصيل، البناء، الانتقال.
يعني التطوير التصاعدي استهداف الحصول على توليف قابل للتشغيل في نهاية كل تكرار (بأكبر عدد ممكن منها).
التكرارات يمكن تقييدها زمنيا كأسلوب صارم لجدولة و مراجعة التكرارات.
بقية هذه الدروس سوف تركز على إطار العمل Framework ، و كيف تقوم UML بدعم مخرجات كل طور في إطار العمل


الفصل 3: المنحى الكائني    18

البرمجة المهيكلة    18
أسلوب المنحى الكائني    21
التغليف    ENCAPSULATION    22
الكائنات OBJECTS    23
مصطلحات    24
سمات Attributes
نهجيات Methods
Class الصنفية
إستراتجية المنحى الكائني    25
ملخص    26
•    المنحى الكائني طريقة تفكير تختلف عن الاتجاه المهيكل.
•    نقوم بالجمع بين البيانات و التصرفات ذات العلاقة داخل صنفيات.
•    ثم يقوم برنامجنا بخلق تجسّدات/ تمثلات للصّنفية، بشكل كائنات.
•    الكائنات يمكنها التعاون مع بعضها البعض، من خلال مخاطبة نهجياتها.
•    البيانات في الكائن مغلّفة و لا يقوم بتعديلها إلا الكائن نفسه.


الفصل 4: نبذة عامة عن UML    27

مخطط واقعة استخدام THE USE CASE DIAGRAM    28
مخطط الصنفيات THE CLASS DIAGRAM    29
مخططات التعاون  THE COLLABORATION DIAGRAMS    30
مخطط التتابع  SEQUENCE DIAGRAM    31
مخططات الحالة STATE DIAGRAMS    32
مخططات التحزيم    PACKAGE DIAGRAMS    33
مخططات المكونات COMPONENT DIAGRAMS    34
مخططات التجهيز DEPLOYMENT DIAGRAMS    35
ملخص    35
يوفّر UML عدة نماذج مختلفة لوصف النظام. القائمة التالية تعرضها كلها مع جملة واحدة توجز الغرض من كل نموذج:
•    وقائع الاستخدامUse Cases - "كيف سيتفاعل نظامنا مع العالم الخارجي؟"
•    مخطط الصنفيات Class Diagram - "ما هي الكائنات التي نحتاجها؟ و ما علاقتها؟"
•    مخطط التعاون Collaboration Diagram - "كيف تتعامل الكائنات مع بعض؟"
•    مخطط التتابع Sequence Diagram - "كيف تتعامل الكائنات مع بعض؟"
•    مخطط الحالة  State Diagram - "ما الحالات التي يجب أن تكون عليها الكائنات؟"
•    مخطط التحزيم Package Diagram- "كيف سنقوم بقولبة عملنا؟"
•    مخطط المكونات Component Diagram - "كيف سترتبط مكونات برنامجنا؟"
•    مخطط التجهيز Deployment Diagram - "كيف سيتم تجهيز البرنامج؟"
 


الفصل 5: طور الاستهلال    37


الفصل 6: طور التفصيل    39

المسودات PROTOTYPING    39
المخرجات DELIVERABLES    39
ملخص    41
يهتم طور التفصيل بتطوير آلية لفهم المشكلة بدون القلق بشأن تفاصيل التصميم المتعمقة (فيما عدا تلك المتعلقة بالمخاطر التي يتم تحديدها و المسودات البرمجية اللازمة).
نموذجان سوف يساعداننا في هذا الطور: نموذج وقائع الاستخدام والنموذج المفاهيمي.


الفصل 7: نمذجة وقائع الاستخدام    42

اللاعب ACTOR    42
الغرض من وقائع الاستخدام    44
مدى كثافة واقعة الاستخدام    45
توصيفات وقائع الاستخدام    48
وقائع الاستخدام في طور التفصيل    49
البحث عن وقائع الاستخدام    49
ورش عمل التخطيط المشترك للمتطلبات (JRP)    49
نصيحة حول العصف الذهني    51
ملخص    52
وقائع الاستخدام أسلوب فعال لنمذجة ما يحتاج النظام لعمله.
هي طريقة ممتازة للتعبير عن نطاق عمل النظام (ما بالداخل = مجموع وقائع الاستخدام؛ ما بالخارج = اللاعبون).
نحتاج إلى أن ننتبه لمدى كثافة وقائع الاستخدام التي تحوي تعقيدات.
أفضل وسيلة لبناء وقائع الاستخدام هي مع الزبون في ورشة عمل.


الفصل 8: نمذجة المفاهيم    53

إيجاد المفاهيم    55
استخلاص المفاهيم من المتطلبات    55
النموذج المفاهيمي في UML    56
إيجاد السمات    57
إرشادات لإيجاد السمات    58
الروابط ASSOCIATIONS    58
الإلزاميات المحتملة    60
بناء النموذج بالكامل    61
ملخص    62
النموذج المفاهيمي وسيلة فعالة من أجل تحليل أعمق للمسألة.
لاحقا،  سنقوم بتوسعة النموذج نحو نواحي التصميم.
سيكون هذا النموذج في النهاية أحد أهم المعطيات عند بناء التوليف code.
لبناء النموذج، استخدم تقنيات ورش العمل كما في وقائع الاستخدام


الفصل 9: ترتيب وقائع الاستخدام    63
ملخص    64
قمنا باستكمال التفصيل Elaboration ، و الآن نحن جاهزين لبدء البناء. سوف ننظر في كل نموذج على حدة ونرى كيف يفيدنا في عمليات البناء.
قائع الاستخدام تسمح لنا بجدولة عملنا عبر تكرارات متعددة.
نعطي رتبة لكل وقائع الاستخدام لتحديد أولوياتها في التصدي لها.
ترتيب وقائع الاستخدام مبنية على معرفتنا وخبرتنا الخاصة.
بعض الإرشادات المجربة سوف تساعد في الأيام الأولى.
بعض وقائع الاستخدام سوف تمتد لأكثر من تكرار


الفصل 10: طور البناء    65

البناء    65
ملخص    66
قمنا باستكمال التفصيل Elaboration ، و الآن نحن جاهزين لبدء البناء. سوف ننظر في كل نموذج على حدة ونرى كيف يفيدنا في عمليات البناء.



الفصل 11: طور البناء: التحليل    67

عودة  لوقائع الاستخدام    68
شروط مسبقة    68
شروط لاحقة    69
التدفق الرئيسي    69
التدفقات البديلة    70
التدفقات الاستثنائية    71
واقعة الاستخدام بعد اكتمالها    72
مخطط التتابع في UML    73
ملخص    75
في هذا الفصل، انتقلنا نحو طور البناء. و ركزنا على بعض وقائع الاستخدام في التكرار، و استكشفنا التفاصيل التي نحتاجها لتطوير واقعة استخدام كاملة.
تعلمنا أساسيات مخطط UML جديد، و هو مخطط تتابع النظام، و رأينا أن هذا المخطط يمكنه الإفادة عند توليد واقعة استخدام مفصلة.
الآن و نحن لدينا التفاصيل الكامنة في وقائع الاستخدام، ستكون المرحلة التالية إنتاج تصميم مفصل. كنا قد تطلعنا إلى ماذا -  الآن سنتطلع إلى كيف.


الفصل 12: طور البناء: التصميم    76

التصميم – مقدمة    76
تعاون الكائنات في واقع الحياة    77
مخططات التعاون    79
صيغ التعاون: الأساسيات    79
مخططات التعاون: التوالي    81
مخططات التعاون: خلق كائنات جديدة    82
ترقيم الرسائل    83
مخططات التعاون: مثال عملي    83
بعض الإرشادات لمخططات التعاون    89
ملخص    90
في هذا الفصل، بدأنا ببناء حل برمجي لما لدينا من وقائع استخدام. مخطط التعاون يجعلنا قادرين على توزيع المسؤوليات على الصنفيات التي استخلصناها  خلال طور التفصيل.
لمسنا بعض القضايا التي يجب مراعاتها عند توزيع المسؤوليات، مع احتياجنا لتعلم المزيد حول هذا الأمر لاحقا. قمنا بدراسة مثال “Place Bet” (وضع رهان.)
في القسم التالي، سوف نرى كيف يمكننا توسيع النموذج المفاهيمي و تطويره نحو مخطط صنفية حقيقي


الفصل 13: مخططات صنفيات تصميم    91

مديونية و دائنية الحسابات    91
خطوة 1: إضافة العمليات    92
خطوة 2: إضافة الاتجاهات    92
خطوة 3: تحسين السمات    93
خطوة 4: تحديد المنظورية    93
التجمع    94
التكون    94
إيجاد التجمع و التكون    95
ملخص    95
في هذا الفصل، رأينا كيفية تطوير نموذج الصنفية، بناء على عملنا في التعاونات. التحول من النموذج المفاهيمي إلى نموذج لصنفية تصميم أمر في غاية السهولة و الآلية، و لا يجب أن يسبب الكثير من العناء.


الفصل 14: أنماط توزيع المسؤولية    96

ما هو النمط؟    96
(GRASP 1): الخبير EXPERT    97
(GRASP 2): المنشئ CREATOR    100
(GRASP 3): اتساق عال HIGH COHESION    101
(GRASP 4): اقتران منخفض LOW COUPLING    103
(GRASP 5): الموجه CONTROLLER    108
ملخص    110
في هذا الفصل، استكشفنا أنماط “GRASP”. التطبيق الدقيق لأنماط GRASP الخمسة يؤدي إلى تصميم كائني المنحى أكثر وضوحا، و أكثر قابلية للتحوير، و أشد تماسك.
 

الفصل 15: الوراثة    111

الوراثة – الأساسيات    111
الوراثة هي استخدام لصندوق أبيض    114
قاعدة 100%    115
الاحلالية    116
قاعدة هي_نوع_من    116
المشاكل عند الوراثة    119
منظورية السمات    120
التشكل POLYMORPHISM    121
الصنفيات المجردة    122
قوة التشكل    124
ملخص    125
بساطة ترميز الوراثة في UML
الصنفيات يكن ترتيبها في وراثة هرمية
الصنفية الفرعية يجب أن ترث كل السلوكيات العمومية للصنفية الأم
المنهاجات و السمات المحمية يتم توريثها أيضا
التشكل أداة بالغة القوة من أجل إعادة استخدام التوليف.


الفصل 16: معمار النظام – الأنظمة الكبيرة و المركبة    126

مخطط التحزيم في UML    126
العناصر داخل الحزمة    127
لماذا التحزيم؟    128
بعض الاستكشافات في التحزيم    128
الخبير EXPERT    129
الاتساق العالي  HIGH COHESION    129
ضعف الاقتران LOOSE COUPLING    129
معالجة الاتصالات عبر الحزم    129
نمط الواجهة    131
المرتكز المعماري للتنشئة    132
مثال    133
معالجة وقائع الاستخدام الضخمة    134
طور البناء    135
ملخص    135
تطرق هذا الفصل لبعض القضايا التي تحيط بتنشئة النظم الكبيرة الحجم. واضح أنه بالرغم من أن لغة UML تم تصميمها كي تطبق على أي قياس، فإن نقل إطار العمل التكراري التزايدي إلى المشاريع الضخمة أبعد من أن يكون عملا بسيطا.
مؤسسة راشيونال تقترح المقاربة التالية:
•    تحديد الأنظمة الفرعية منذ المراحل الأولى
•    جعل التعقيد قابلا للمناولة بقدر الإمكان
•    التكرار على التوازي بدون هتك الواجهات
•    تعيين فريق مركزي للمعماريات
نموذج التحزيم التي تقدمه UML يوفر طريقة لاحتواء التشابك الضخم، هذا النموذج يجب أن يتولاه فريق المعماريات.


الفصل 17: نمذجة الحالات    136

مثال رسم حالة    137
صيغة مخطط الحالة    138
الحالات الفرعية    139
أحداث دخول/خروج    140
أحداث الإرسال    141
دفاعات    142
حالات التاريخ    142
استخدامات أخرى لمخططات الحالة    143
ملخص    143
في هذا الفصل، نظرنا في مخططات تنقل الحالة. رأينا:
•    صيغة المخطط
•    كيف نستخدم الحالات الفرعية
•    أفعال الدخول و الخروج
•    أحداث الإرسال و الدفاعات
•    حالات التاريخ
رسم الحالات بسيطة جدا، لكنها تتطلب غالبا عمليات تفكير عميقة
معظم استخداماتها على الكائنات، لكن بالإمكان استخدامها على أي شيء: وقائع الاستخدام، كامل النظام، إلخ..


الفصل 18: التحول للتوليف    144

تحديث (مزامنة) المشغولات SYNCHRONISING ARTIFACTS    144
ترجمة التصاميم إلى توليف    145
تحديد المناهج METHODS    148
خطوة 1    149
خطوة 2    149
خطوة 3    150
خطوة 4    150
ترجمة الحزم لتوليف    150
بلغة جافا    150
بلغة سي++    151
نموذج المكونات في UML    151
ملخص    152
في هذا الفصل تم بصورة مختصرة وصف العمليات الرئيسية لتحويل النماذج إلى توليف حقيقي. تعرفنا بإيجاز على مشكلة الإبقاء على النموذج على خط متواز مع التوليف، ونظرنا في فكرتين لحل هذه المشكلة.
رأينا نموذج المكونات. و كيف تساعد على وضع خريطة للعناصر المادية للبرمجيات و الاعتماديات فيها.


قائمة المراجع    153


[1] : Krutchten, Philippe. 2000 The Rational Unified Process An Introduction Second Edition Addison-Wesley
العملية الموحدة من راشيونال – مقدمة – طبعة ثانية
مقدمة مختصرة للعملية الموحدة من راشيونال، وعلاقتها بلغة UML.

[2] : Larman, Craig. 1998 Applying UML and Patterns An Introduction to Object Oriented Analysis and Design Prentice Hall
 
تطبيق UML و الأنماط – مدخل للتحليل و التصميم كائني المنحى
مدخل ممتاز ل UML، و تطبيقها في عمليات تطوير واقعية للبرمجيات. أستخدم كأساس لهذا الكتاب.

[3] : Schmuller, Joseph. 1999 Teach Yourself UML in 24 Hours Sams
 
علم نفسك UML في 24 ساعة
مقدمة شاملة حول UML، النصف الأول يركز على صيغ UML، و الثاني يعرض كيفية تطبيق UML (باستخدام عملية تشبه العملية الموحدة و تسمى GRAPPLE)

[4] : Collins, Tony. 1998 Crash: Learning from the World’s Worst Computer Disasters Simon&Schuster
 
انهيار: التعلم من أسوأ كوارث الحاسوب في العالم
باقة ممتعة من حالات دراسية تستكشف سبب فشل العديد من المشاريع لتطوير وبناء البرمجيات

[5] : Kruchten, Phillipe 2000 From Waterfall to Iterative Lifecycle  - a tough transition for project managers Rational Software Whitepaper – www.rational.com
 
من دورة حياتية تدفقية إلى تكرارية – انتقال صعب لمدراء المشاريع
وصف ممتاز و قصير للمسائل التي ستواجه مدراء المشاريع في المشاريع التكرارية

[6] : Gamma, E., Helm, R., Johnson, R., Vlissides, J. 1995 Design Patterns : Elements of Reusable Object Oriented Software Addison-Wesley
 
أنماط التصميم: عناصر قابلية إعادة الاستخدام في البرمجيات كائنية المنحى
الفهرس المميز من "عصابة الأربعة" عن مختلف أنماط التصميم

[7] : Riel, Arthur 1996 Object Oriented Design Heuristics Addison-Wesley
 
استكشافات التصميم كائني المنحى
إرشادات مجربة للمصممين بالمنحى للكائن

[8] : UML Distilled
Martin Fowler's pragmatic approach to applying UML on real software developments
 
مختصر UML
مقاربة عملية لتطبيق UML على عمليات تنشئة واقعية للبرمجيات

[9] : Kulak, D., Guiney, E. 2000 Use Cases : Requirements in Context Addison-Wesley
 
وقائع الاستخدام: المتطلبات في سياقها
معالجة متعمقة لهندسة المتطلبات، المقادة بوقائع الاستخدام.


تعليقات

  1. That was nice explanation

    ردحذف
  2. بارك الله فيك اخي اللهم انفع بها ابناء و بنات المسلمين واننا لنشكر لله ثم الاخ خالد الشقروني صاحب الترجمه

    ردحذف

إرسال تعليق

المشاركات الشائعة من هذه المدونة

الشاشة الإفتتاحية لإكسل

أوامر الجافا سكريبت JavaScript

مقدمة عن برنامج الأكسل Excel ( الجداول الألكترونية )