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

البرمجة موضوعية التوجه AOP

مغلق
بدأه nardien28 في 16 أغسطس 2006 · 13 رد · 5,126 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

البرمجة موضوعية التوجه Aspect Oriented Programming AOP

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

ابتدع هذه التقنية جورج كيزاليز وفريقه من مركز Xeror PARC للأبحاث وطوروا أول لغة برمجة تدعم هذه التقنية AspectJ كإمتداد للغة البرمجة الشائعة جافا واليوم تدعم معظم لغات البرمجة هذه التقنية ابحثوا في الانترنت وستجدون AspectC# و AspectC و Aspect C++ و Aspect .Net و غير ذلك كثير .

في البرمجة الغرضية التوجه OOP غالبا يكون لكل صف وظيفة أو مهمة أساسية (محور اهتمام) ولكن يلاحظ ان هنك بعض المتطلبات الثانوية التي تتكرر في اكثر من صف في النظام البرمجي وتتشابك مع وظائف هذه الصفوف بحيث تصبح عملية فصلها شبه مستحيلة .

ومحاولة ستخد م OOP لتحقيق مثل هذه المحاور يؤدي الى نظام برمجي صعب الفهم (كود متشابك والمفاهيم مبعثرة )

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

باالإضافة انه محاولة التعديل في سلوك احدى هذه المحاور في مراحل متأخرة من مرحلة كتابة الكود تمثل كارثة حقيقة في المشاريع الضخمة .

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

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

معظم الأنظمة البرمجية تحتوي على محاور اهتمام يجب مراعاتها في جزء ووحدات عديدة في التطبيق البرمجي .

قد يكون محور الاهتمام هدف معين أو مفهوم

أمثلة لمحاور الاهتمام التي يجب مراعاتها في معظم التطبيقات البرمجية :

منطق التطبيق , الأداء والسرعة , ادارة الذكرة , الاستيقان أو التوثق , السرية والامن والخصوصية , الولوج ..... الخ

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

وغالب يكون كود المهمة الثانوية ذاته تقريبا في الصفوف المختلفة المضاف اليها كما في اكواد التقاط الاستثناءات

Exception Handeling ومعالجتها (غالبا برسالة خطأ) .

يقال عن هذه المتطلبات الثانوية انها قطاعات مستعرضة Crosscut في وحدات (كتل) النظام البرمجي المحققة للمتطلبات الأساسية .

ce95e265a7.gif

فجاءت AOP لتقدم فصلا أفضل لمثل هذا النوع من المتطلبات (المستعرضة) من المنهجيات الأخرى .

بتوفير منهجية معيارية (بروتوكول) للمطورين للتعامل مع محاور الاهتمام المستعرضة تمثل مستوى أعلى من التجريد.

لغة البرمجة المحققة لمنهجية AOP يجب ان يكون لها القدرة على تغليف محاور الاهتمام المستعرضة في التطبيق البرمجي في بنية تصميمية تسمى aspect حيث تبقى المحاور الأساسية مغلفة ضمن بنيتها التقليدية المعروفة Class .

هذا ال aspect يمتلك القدرة على تعديل سلوك الصف الاساسي بإضافة سلوك إضافي Additional Behaviour (Advice)

ممثلة ببعض سطر الكود بتعويضها مكان بعض نقاط الربط Join Point وهي نقاطة مختارة بعناية في مجرى تنفيذ الصف الاساسي في المواضع التي يراد فيها اضافة سلوك اضافي مثل الولوج ومعالجة الاستثناءات

النقاط القطعية Point Cut ليست اكثر من تعبير منطقي في عرف AOP عن مجموعة نقاط الربط التي تندرج تحت محور اهتمام محدد .

وبهاذا صار النظام البرمجي في عرف AOP مكون من صفوف class و سمات aspect يتم الربط المتأخر بينها Late Binding

في زمن التنفيذ عن طريق مترجم خاص بهذه التقنية تسميه AOP الحابكWeaver لأنه يقوم بإعادة تشكيل (حبك) الكود واضافة السلوك الاضافي في اماكنه (نقاط الربط) Joint Points وفقا لقواعد الربط الذي عينها المطور في الaspect

2a71a16e29.gif

1

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#2

أولا عتذ فعلا اني لم استوفي هذا الموضوع الجميل حقه .. قد اقوم بإدراج أمثلة لاحقا

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

مثلا

Aspect Oriented Programming احترت هل اسميها البرمجة شكلية التوجه أم البرمجة الموجهة بالسمات ... هل من حل افضل؟

Crosscutting concerns عبرت عنها بمحاور الاهتمام المستعرضة ... هل هذا مناسب؟

وتساؤل اخير .. لماذا لم تلق هذه التقنية اهتمام في العالم العربي .. معاهد وجامعات ؟

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#3

مشكور يا أخي كل هذه المقالة

أظن البرمجة الموضوعية التوجية تعريب جيد

لا عز نا إلا بالإسلام ومهما ابتغينا العزة بغيرة أذلنا الله (عمر بن الخطاب رضي الله عنه )

alfozan.jpg

#4
اقتباس
مشكور يا أخي كل هذه المقالة

اختك

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#5

لماذا مواضيعي لا تلقى تفاعلا من الاعضاء ..

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#6

أولا شكرا على الموضوع الجميل، وريحتني من البحث عن مقال جيد

ثانيا: والله أنا اشوف ان التقنيات المختلفة صارت في الأيام الأخيرة زي الموضة، وكل شوي تطلعلنا موضة جديدة

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

الله يعين

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#7

تعريف دار شعاع للكتب المعلوماتية لهذا المصطلح :

البرمجة شكلية التوجه: طريقة جديدة للبرمجة كائنية التوجه (OOP) تم تطويرها في مركز (PARC). تحل هذه الطريقة المسائل الناتجة عن تركيز البرمجة كائنية التوجه على الكتلية، حيث تتشكل البرامج من وحدات مستقلة تدعى كائنات. توفر هذه الطريقة إمكانية تحديد شيفرة برمجية مشتركة بين أصناف الكائنات، وتلغي بالتالي الحاجة إلى تكرار برمجة بعض العمليات المتماثلة.

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#8

أنا عارف أن البعض يستغرب عدم ردي على الموضوع....

ولكن معلوماتي متواضعة فيها...

وليس الموضوع بجديد

ولكن...

أنا لا أجد شيء جديد عما يعمل في الكائنية المنحى وهندسة البرمجيات....

و أعتقد أننا نمارس أفكار هذا النوع بدون أن نسميه الأسم الجميل هذا...

عموما جزاك الله خير يا أخي...

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

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

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

-----

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

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

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

http://blogs.msdn.com/wael

@waelkabli

#9

جزاكم الله عنا خيرا ونرجو الاهتمام بوضع بعض الأمثالة أو المواقع التي يمكن الرجوع إليها في هذا الموضوع

#10

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

اقتباس
و أعتقد أننا نمارس أفكار هذا النوع بدون أن نسميه الأسم الجميل هذا...

حضرتك مهندس برمجيات .. انت اخر شخص ممكن يقول هيك

فعلا مثل ما حضرتك تكرمت وذكرت ان الكثيرين يقومون بمثل هذه الافكار سلفا نتيجة الخبرة العملية وهذا جميل

بس الدنيا بتتقدم وبتتنظم كلما اوجدنا قوانين وقواعد للأشياء والتزمنا بها ...

وهذا ما اتت به هندسة البرمجيات ..القوعد والضوابط .. لتنظيم البرمجة (تحليلا وتصميماا وتحقيقا)

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

يعني اجراءات الولوج كان بعضهم يضعها في صف منفصل نتيجة الخبرة وبعضهم يتركها سابحة و متدخلة ضمن اكود صفوف اخرى (لم تخطر ببالهم الفكرة)

متل حكاية Design Pattern كلها كانت افكار الكثييرين يقومون بها (احيانا المبتدئين بدون ان يدروا) قبل ان يتم تسمية كل فكرة منها باسم جميل مثل singleton و Observer و Decorator .....الخ لتصبح ثوابت معيارية في هندسة البرمجيات Standards

وهنا اتت هذه التقنية لتضيف قواعد معيارية Standards للتعامل مع Crosscuttig Concerns

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

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

ان خلط Crosscuttig Concerns مع الكود الرئيسي سيقلل من الاهتمام بها ولكن بفصلها وتخصيص جزء من فريق العمل يهتم بها بشكل منفصل aspect developers سيزيد جودتها وبالتالي جودة المنتج البرمجي ..

http://trese.cs.utwente.nl/taosad/index.htm

http://en.wikipedia.org/wiki/Aspect-oriented_programming

http://www-128.ibm.com/developerworks/rati...brary/2782.html

http://www.javaworld.com/javaworld/jw-03-2...01-aspect2.html

http://www.iturls.com/English/TechHotspot/TH_e.asp

http://www.eclipse.org/aspectj/doc/release...uide/index.html

http://www.eclipse.org/aspectj/

INTRO_AOP.zip

تم تعديل هذه المشاركة بواسطة nardien28 في 21 أغسطس 2006 في 22:48

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#11

شكرا على الموضوع اخت nardien28

اضافة بسيطه فقط على الموضوع...

ال AOP أساسه OOP مع الاخذ بالاعتبار عدة امور.

ال OOP او البرمجة الشيئية الموجه (مع اني ما بحب اترجم المصطلحات اطلاقا) من الممكن تطبيقها مباشرة بعد عملية تحليل النظام او بعدها كمثال.

Evolutionary Approach في هندسة البرمجيات تقول ان البرمجه باستخدام ال OOP تتم في مراحل اولية جدا من التحليل و تكون عبارة عن Prototyping ... و من خلال مراحل التحليل يتم الإضافة و التعديل على البرنامج ... اي يتم اصدار عدة اصدارات من البرنامج الى ان يتم الحصول على افضل نسخة منه.

و هذا ما يتعارض مع ال AOP تماما ... حيث ان ال AOP لا يصح استخدامها ابدا في مثل حالة ال Evolutionary Approach ... و ذلك لأنها تعتمد على التحليل الكامل للنظام ... او التحليل على الأقل حتى تتضح مرحلة Specification Design من خلال ال UML Diagram او ال Data Model و من ثم تتم الترجمة باستخدام ال OOP او AOP ...

ال OOP مثلا تستطيع استخدامها مع جميع ال S.E. Approches لكن ال AOP تعتمد على Existing System Design Solution و التي توفرها عدة نظريات تحليلية مثل ال WaterFall او ما يمسى بال Life Cycle و ايضا ال Spiral Approach ...

اقتباس
لماذا مواضيعي لا تلقى تفاعلا من الاعضاء ..

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

هيني تفاعلت :rolleyes:

It's hard to stay in such ridiculous situation

#12

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

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#13
اقتباس
لماذا مواضيعي لا تلقى تفاعلا من الاعضاء ..

يجب إنك تصبر شوية...فأغلب الشباب والبنات مشغولين...

ولكننا في النهاية تفاعلنا معاك

اقتباس
حضرتك مهندس برمجيات .. انت اخر شخص ممكن يقول هيك

أنت عارف اني امزح معاك...

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

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

-----

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

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

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

http://blogs.msdn.com/wael

@waelkabli

#14

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

في الحقيقة عندي خبرة لا بأس بها في موضوع ال OOP وعملت بها على أشهر اللغات المختصة بها سواء Java أو C# أو حتى دلفي , لكني بصراحة من المقالة لم أفهم الجدوى من استخدام AOP بالرغم كما قلت أنني اجدها مثيرة ولكن تحتاج إلى شرح للمبتدئين أو بصراح "dummies" اللي مثلي ;)

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

تم تعديل هذه المشاركة بواسطة oneforall2012 في 17 سبتمبر 2006 في 21:58

مجموعة الدوت نت في السعودية , اشترك معنا لتحصل على كل مفيد في عالم الدوت نت

dotnetinsaudi-subscribe@yahoogroups.com

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

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