الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا UML ؟

مغلقرائج
بدأه MEMONONO في 2 ديسمبر 2004 · 16 رد · 25,749 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم......

أعرف اني مطيل الغيبة ولكني مع الاسف صاحب جدول مضغوط جدا.....

عموما لا اطيل عليكم...

ندخل في صلب الموضع...

-------------------------------------------------

لماذا UML ؟ ( لما وراء ذلك.....)

المقدمة:

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

لذا اجد الكثير من المطورين يعمل البرنامج ومن ثم يكتب الملاحظات، او ينتهي من عمل البرنامج ومن ثم يرسم UML مع الأسف....هذه الظواهر تدل على اننا نستخدم الشيء ونحن لا نعرف لماذا...!!!

لذلك يجب ان يسأل الشخص دائما في كل شيء يتعلمه ثلاث اسئلة:

- ما هو الشيء الذي سأتعلمه؟

- لماذا هذا بالذات ؟

- كيف أتعلم ؟

ودائما هذه الاسئلة تسأل في أغلب الحالات في التعليم والحياة العملية. لأن الشخص الذي يستطيع ان يكتب ولا يعرف لماذا هو يكتب او لماذا تعلم الكتابة؟ فلن يستطيع الانتاج لانه وبكل بساطة يعرف ولا يعرف لماذا يعرف!!!

البداية:

لكي نجيب عن السؤال لماذا UML ؟ يجب ان نجيب على الاسئلة:

- ماهو UML ؟؟

- لماذا UML ؟؟

- كيف نعمل UML ؟؟

ماهو UML ؟سنبدا الان بشيء من التاريخ وهو تاريخ النمذجة لماذا ظهرت النمذجة.... في علم المتطلبات كانت هناك مشاكل قائمة بين المستخدم والمطور على مدى العصور سواء على مستوى الميكانيكا او الكهرباء ومن ثم الحاسب.

كان دائما هناك الفراغ بين المستخدم والمطور. فالمطور بسبب علمه يعتقد ان الناس من حوله قريبين في مستوى المعرفة والذوق وحتى لو لم يعتقد ذلك فهو لا يقدر حجم المسافة بين الاثنين...

لذا لجأ المهندسون الى وسائل عديدة للتقليل من هذه الفجوة. وبدأت النمذجة بالظهور. فكان المهندس يجمع المتطلبات ويأتي بقطعة تشبه المشروع الكامل للمستخدم ليتاكد ان ما يفعله صحيح قبل الشروع في المشروع الرئيسي.

نعود للحاسب وهندسة البرمجيات. فنحن نطبق القواعد الهندسية على بناء البرامج. ولكن المسألة هنا معقدة للغاية فالبرامج تتجه نحو التعقيد والصعوبة يوما بعد يوم. والحجم يزيد ويتضخم ويمس اعداد اكثر من المستخدمين. لذا نعتقد ان كلما احسن الفريق العمل في جمع المتطلبات كلما زادت نسبة نجاح البرنامج.

لذا كيف نبين فهمنا للمتطلبات ( متطلبات المستخدم) ؟

وجدت لغات النمذجة لسببين:

- لنبين مدى فهمنا للمشروع او النظام.

- لتمثيل النظام بلغة دقيقة تفسر تفسيرا واحدا.

اذا فنحن ننمذج النظام لنبين لانفسنا مدى فهمنا للنظام. وبالفعل متى ما عملت نموذج للنظام تستطيع ان ترى مالذي كنت تعنيه عندما نقلت عن المستخدم العبارة "اريد برنامجا سريعا" !!!

ترى هل ماهو سريع بالنسبة لك هو كذلك بالنسبة لي؟؟؟

نعود الان بعدما فهمنا سبب وجود النمذجة نفهم ماهو UML ؟

UML ===> Unified Modeling Language

أو لغة النمذجة الوحدة...

ماذا يعني ذلك؟؟؟ يعني ان هناك لغات توحدت داخل هذه اللغة وانها لغة تختص بالنمذجة. وهذا صحيح فلقد كان المطورون يفكرون بطريقة تسلسلية دالية Functional Orientation .

لتوضيح لذلك. يجب ان يعرف القارئ الفرق بين التصميم لكائني المنحى والدالي المنحنى

Object Oriented and Functional Oriented. وليس هذا مكان للتوسع في هذا الموضوع.

ولكن باختصار عندما كان المهندسون يفكرون بطريقة دالية اي انهم كانوا يقسمون النظام الى عدة اجرائات او دوال وكان البرنامج يعمل بطريقة تسلسلية. فكل البرنامج يدور حول المعلومات و العمليت التي تعمل عليها.

لذا ظهر ما يسمى بالـ DFD (Data Flow Diagram) and ERD (Entity Relationship Diagram) and وهي بالعربية نموذج سير المعلومات و نموذج الكائنات والعلاقات.

بعد ذلك عندما ظهرت اساسيات الكائنية المنحى OO اكتشف المطورين ان الطرق القديمة لا تنفع لنمذجة الانظمة بالطرق التقليدية . وكانت هناك محاولات عديدة مثل OMG وغيرها حتى ظهرت UML لتجمعهم في لغة واحدة وكان بوخ وجاسكوبسون ( يعقوب) و رامبو باخراج الابداع الذ نعرف بالـ UML.

لكن وجود UML لا يعني ابدا باي شكل من الاشكال انها الافضل ولكنها مناسبة!!!

الان نعود للسؤال المهم لماذا UML ؟؟

بكل بساطة UML تقدم ثلاث نظرات على النظام:

1- نظرة على العمليات.

2- نظرة على التركيب.

3- نظرة على التصرف.

نظرة على العمليات:

تقدم UML نموذج يدعى Use Case Diagram. هذا النموذج يقدم طريقة لشرح الخدمات والعمليات التي يقدمها النظام وعلاقتها مع المستخدم.

مثال: في نظام التسجيل الجامعي ( المستخدم "الطالب" يستطيع تسجيل المادة).

نظرة على التركيب:

تقدم UML نموذج يدعى Class Model. هذا النموذج يقدم طريقة لشرح كيف هي اشكال المعلومات في النظام . وتقدم على شكل "كلاسات" وكل كلاس يحوي صفات و تصرفات.

مثال: في نظام بنكي ( كلاس الحساب يحوي الصفات "رقم الحساب و تاريخ فتحه" ويتصرف بعدة طرق مثل "الايداع والسحب" ).

نظرة على التصرف:

تقدم UML نموذج يدعى State Transition Diagram. وهذا النموذج يشرح النظام على طريقة الحالات State وكل حالة تقود الى حالة اخرى بسبب تحفيز المستخدم للنظام.

مثال: في برنامج منبه للصلاة ( يكون البرنامج في حالة خمول يطلب المستخدم "البداية" وينتقل الى حالة العد التنازلي حتى يصل الى الصفر وينتقل الى حالة تشغيل الاذان).

هل يكفي هذا ؟

بالطبع لا!! فلكي تكتمل لغة النمذجة يجب ان نستطيع ان نربط بين النظرات لكي تكتمل عندنا نظرة كاملة على النظام. لذا تقدم UML اشياء اخرى مثل Flow of events and sequence Diagram ليس هنا مجال لذكرها الان.

حتى الان كلام جميل ولكن نبقى ونسأل لماذا UML بالذات ؟

اولا ماذا يعني وجود لغات نمذجة اخرى غير UML ؟ معناه انها صالحة وخناك من يستخدمها ويعرف انها صالحة.

ولكن الاختيار للـ UML يقوم على وجوه عديدة:

- انها لغة تنمذج النظام على ثلاث نظرات لكي تعطي تصور كامل.

- لغة مبنية على اساس كائني المنحى.

- نماذجها سهلة القراءة ولا تعي الا شيئا واحدا دائما (فاذا قرات النموذجمرة او اكثر فستصل دائما لنفس المعنى).

- بقينا ان UML تربط النظرات الثلاث بطرق مهمة بغية التأكد من تكامل هذه النظرات.

عملية حسابية بسيطة:

لو قلنا ان عندنا ثلاث اشخاص كل واحد منهم كلف بنظرة معينة على النظام ومن ثم اجتمعوا ليكونوا النظام الكامل. ولنفرض ان احتمال ان يفقد احدهم متطلبا من متطلبات المستخدم او لا يفهمه هي 0.1

وبما ان الثلاث النظرات لا تعتمد على بعض فيكون عندنا احتمالية ان ننسى او نخطء في فهم متطلب من متطلبات المستخدم هي 0.1 * 0.1 * 0.1 = 0.001.

فما رأيك الان!!! هل عرفت الان لماذا UML.....!!!

بقينا لشيء واحد الان

كيف نتعلم UML؟

هذا ليس موضوع حديثنا الان وله مكانه ان شاء الله ولكن افضل طريقة لتعلمها الذعاب الى كتب المؤلفين (اعني مولفي UML).

ولكن من هنا الى أين ؟

لا أدري ولكن قد تخرج لغات غير UML وتسود. اهم شيء يجب ان نبقى متجهين نحو الافكار والمبادئ وليس التكنولوجيا فالتكنولوجيا تتغير كل دقيقة وتبقى الافكار دائما. فالنمذجة هي المهمة لا يهم انرسمها ام نتلفظ . تتغير الطرق والفكرة واحدة.

وشكرا

بقلم/ وائل كابلي

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#2

بارك الله فيك أخيي

موضوع أكثر من راااااااااااااااااااااااااااااااائئئئئئئئئئئئئئئئئئئئئئئئع

#3

بعض الإستفسارات :-

1 - هل UML هى لغه (أكواد وأدوات وخلافه) أم أنها لغة وصفيه مثل (SQL) ?

2 - متى أقوم بإستخدامها ، عند البدأ فى تحليل البرنامج الجديد أم عند الإنتهاء وأريد التأكد من كل شىء يسير على ما يرام ؟

3 - هل UML برنامج أو له واجهه بحيث أقوم برسم أو توصيف البرنامج (أقصد المراحل الثلاثه التى تحدثت عنها) ؟ أم أنها طريقه لإتباعها ؟

#4

السلام عليكم

الاخ أحمد عز

لغة UML هي لغة رسوميه أي أنك ترسم أشكال بها مثل الفئه ترسم كمربع مقسم الى عدة أقسام تكتب في قسم إسم الفئه و في أخر الاعضاء

و تستخدم هذه اللغه في بداية المشروع أي في مرحلة التحليل و نرجع اليها عند تطوير أو صيانة البرنامج. أما عن الواجهه فهناك عدة برامج تستخدم لهذه اللغه مثل Microsoft Visio و برنامج Rational Rose و غيرهم كثير

أرجوا أن أكون قد أفدت

#5

سلام عليكم......

اولا شكرا khabini.com على معلوماتك....

وللتوضيح فاجيب:

اقتباس
1 - هل UML هى لغه (أكواد وأدوات وخلافه) أم أنها لغة وصفيه مثل (SQL) ?

2 - متى أقوم بإستخدامها ، عند البدأ فى تحليل البرنامج الجديد أم عند الإنتهاء وأريد التأكد من كل شىء يسير على ما يرام ؟

3 - هل UML برنامج أو له واجهه بحيث أقوم برسم أو توصيف البرنامج (أقصد المراحل الثلاثه التى تحدثت عنها) ؟ أم أنها طريقه لإتباعها ؟

1- كما قال الاخ ان UML لغة رسومية تعمل نماذج للنظام على شكل رسوم.

2- هنا يكمن الخلط العام .... فـ UML تستخدم في :

جمع المتطلبات والتحليل ومن ثم التصميم وكتابة الكود وأيضا في الصيانة بعد ذلك.

3- الان كما قال الاخ مرة اخرى انها لغة رسومية فلا فرق سواء رسمتها على ورق او في الرسام او انك جعلتها في برنامج رسومي مختص مثل visio and Rational Rose.

المشكلة تكمن في تعلم كيفية استخدام اللغة في كل مرحلة وهذا شيء يحتاج الى شرح يطول

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#7

شكرا khabini.com ، MEMONONO على سرعة الرد ...

هذا يعنى انى يمكن تعلم مبادئها وأسسها ومن ثم إستخدامها على ورق وقلم ومن ثم تطبيقها فى معظم المراحل - كما ذكر سابقا - ،وكما إتضح ان هذه أنسب كثيرا للبرمجه كائنية التوجه OOP من المسارات الإعتيداديه Flow Diagram and block diagram >> وهذا مهم جدا للوصول الى أقصى كفاءة للبرامج والمشروعات التى نقوم بتنفيذها .

اقتباس
المشكلة تكمن في تعلم كيفية استخدام اللغة في كل مرحلة وهذا شيء يحتاج الى شرح يطول

وفقك الله فى ذلك ،،

#8

بصراحة ما قصروا الشباب MEMONONO و khabini.com في الشرح .

لكن حبيت ادلي باللي معي و لو كان قليل....

تخيل معي ، انك اخيرا توفر معك مبلغا من المال وبدات تفكر في صرفه في شيء تستفيد منه قبل ان يضيع ،،،، فأتتك فكرة ان تبني بيتـا لك و لاسرتك .. وبدأت تفكر جديا في

الامر.. ولنفرض فرضا انك من سيبني البيت او الفيلا (أعني بيديك و بمساعدة اشخاص اخرين) ..

هل تتوقع انك ستقوم من تلك اللحظة و تبدأ في شراء الادوات و الذهاب الى الارض و البدأ

في البناء ؟؟ ... مستحيل ، أليس كذلك ؟!!

كيف ستبدأ ؟ هاه ؟

أكيد انك سوف تعمل حسابك بشان كلفة البناء و كيف سوف يكون .. اين الصالة ؟ هل في

المنتصف ام في مقدمة المنزل ؟ اين مواضع السلالم ؟؟ كثير من الاسئلة في خاطرك...

ستفكر وتحلل في ذلك كثيرا .. لكن في الاخير ستصل الى مرحلة تخطيط المنزل..

انا في اعتقادي بانك ستحضر أوراق رسم كبيرة و صغيرة و تبدأ في رسم و تخطيط البيت و تقول هنا سوف تكون

غرفة النوم و مساحتها 7*8 م و بحمام ملاصق و بنافذة مطلة على الجانب الشرقي...... وتحدد مواقع الابواب مثلا..

كل ذلك سيكون على الواح الرسم و ستظهر الابواب على شكل خطين متقاطعين ومنحنى يربط بين طرفيهما ... كما في الشكل التالي :

door_draw1_win.gif

واذا حصل وان بدأت تمل العمل في البناء وأردت ان يستلم العمل مقاول ما ، فتعطيه هذه الرسوم والتي ستكون مفهومة بالنسبة اليه ويعرف انك تريد مكان النوافذ والابواب هنا و هناك ( هذا اذا رسمت جيدا و على اصول الرسم المعماري (-: ) حتى لو كانت بالصيني >>

16.jpg

نفس الشيء في هندسة البرمجيات ، عند بناء البرنامج وخاصة اذا كان كبيرا وفيه اكثر من مبرمج ( فريق عمل كامل ) لا بد لك من لغة تسهل لك التخاطب مع اقرانك من المختصين ... وتسهل لك تصور البرنامج و تفاعله مع محيطه.

هنا تأتي UML و تحل لك مشاكل التخاطب و الاتصال و تقضي تماما على اي غموض في البرنامج من ناحية التصميم و الهيكلة.

UML مشابهه لمفهوم الرسوم المعمارية للمباني و لكن نستخدمها في البرمجة ...

تفحص هذه الرسوم التالية والتي هي رسوم UML ....

uml.png

UML-Classes.gif

UML-Associations.gif

UML-example.gif

UML%20Activity-a.gif

ولو كانت بلغة اخرى فمن السهولة معرفة اهم الفئات المستخدمة في الصورة التالية:

uml-p2.png

انظر الى الصورة التالية وستجد ان بامكنك ان تكتب الكود بمجرد رؤيتها..

UML_class_diagrams.jpg

ولهذه اللغة UML قواعد واصول ... مثلا :

UML.png

ارجو ان تكون وصلت الفكرة ... والعفو على الاطالة

تم تعديل هذه المشاركة بواسطة Abo Waleed في 3 ديسمبر 2004 في 22:06

#9

ألف شكر على الشرح والصور :)

#11

جزاكم الله خيراً جميعاً

الموضوع كنت أرغب في فهمه منذ وقت طويل و مافصرتم

لي تساؤل : هل هناك برامج تعمل او تساعد على عمل UML كما سمعت بأن MS Visio يعملها فهل هذا صحيح

#12

السلام عليكم ...

بارك الله فيكم اخي MEMONONO و اخي ابو وليد .. في الحقيقة معلومات قيمة و طرح شيق بارك الله فيكما ..

اخي عمرالعمودي .. نعم هناك برامج تعمل من خلالها على تصميم المخططات مثل Rational Rose و Architect و الأخير ممكن تحمله من الرابط :

Enterprise Architect

و هو تجريبي لمدة شهر ...

و تحياتي للجميع ..

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#13

السلام عليكم

شكرا لهذ الموضوع الرائع

و اتمني ان يتواصل الحديث و لا ينقطع

و للاضافة يمكن ان نرسم مخططات الـ UMl باستخدام برنامج مرفق

مع الــفجول استديو لا اذكرة الان و لكن اعدكم بالمشاركة بقدر المستطاع :)

ان ارتم الخوض في المزيد. فقد استخدمتها في مشروع تخرجي .

و تحياتي لــكم جميع بالتوفيق

gaza3-3.jpg
#14
khabini.com كتب:
al salam alaikom

Thank u for ur greart Lessons but we want a complete course in UML

باذن الله سيكون هناك دورة كاملة عن UML في الشهر القادم .... الله يعين بس

#16

اذا اردت مساعدة

أو اي شيء انا حاضر

واذا تريد استطيع لتعليق على كل درس تشرحه

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#17

السلام عليكم

شو اخينا العزيز "Abo Waleed" :)

خير ان شاء الله و ينك , نحن في انتظارك بالدروس .

gaza3-3.jpg

هذا الموضوع مغلق.

مواضيع مشابهة