الوحدة الثانية: منهجيات بناء أنظمة المعلومات

مقرر تحليل الأنظمة وتصميمها (1380) — جامعة القدس المفتوحة

مقدمة الوحدة

لبناء أنظمة المعلومات منهجيات عديدة جداً، منها المنهجيات الرديئة ومنها الجيدة. تنتج عن المنهجيات الرديئة أنظمة ضعيفة، وعادة ما تفشل عند أول تطبيق فعلي لها، بينما ينتج عن المنهجيات الجيدة أنظمة ناجحة تتصف بالكثير من الخصائص والميزات الجيدة.

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

المنهجية التقليدية (Classical Approach)

تتكوّن المنهجية التقليدية لبناء أنظمة المعلومات من الخطوات التالية: التخطيط، والتحليل، والتصميم، والبناء، والصيانة. لقد أثبتت التجارب أن اتّباع هذه الخطوات وحدها غير كافٍ لإنتاج نظام ناجح يلبّي متطلبات المستخدم.

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

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

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

المنهجية الهيكلة (Structured Approach)

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

تعتمد هذه المنهجية على تجزئة النظام إلى أجزاء برمجية صغيرة (Modules)، بحيث تكون العلاقة ودرجة الاعتمادية بينها أقل ما يمكن (Low Coupling)، وينفّذ الجزء الواحد مهمة واحدة (High Cohesion). وهذا يؤدي إلى بناء نظام سهل خالٍ من التعقيد (Simple)، ومرن بحيث تسهل الإضافة والتعديل والحذف عليه دون أن تتأثر بقية الأجزاء (Flexible)، كما يؤدي إلى سهولة اختبار النظام حيث إنه من السهل اختبار أجزاء برمجية صغيرة من البرامج الضخمة بهذه المواصفات، ومن الطبيعي أن يكون قليل الحاجة إلى الصيانة إذا احتاج ذلك إلى صيانته تكون سهلة وميسّرة (Maintainable).

الخاصيةالوصف
Low Couplingدرجة اعتمادية منخفضة بين الوحدات البرمجية المختلفة.
High Cohesionكل وحدة برمجية تنفذ مهمة واحدة محددة بوضوح.
Simpleنظام خالٍ من التعقيد بفضل التجزئة إلى وحدات صغيرة.
Flexibleسهولة الإضافة والتعديل والحذف دون التأثير على بقية الأجزاء.
Testableسهولة اختبار الأجزاء البرمجية الصغيرة مقارنة بالبرامج الضخمة.
Maintainableقلة الحاجة إلى الصيانة، وسهولتها ويسرها إن احتاج النظام لها.
User Friendlyسهل الاستخدام من قبل المستخدمين نتيجة إشراكهم في كل خطوة من خطوات البناء.

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

منهجية الكينونات الموجهة (Object-Oriented Approach)

تعتبر تكنولوجيا الكينونات الموجهة من العبارات الطنّانة الحديثة في ميدان صناعة البرمجيات، حيث تتسابق كبريات المؤسسات والشركات لتبني هذه التكنولوجيا الجديدة ودمجها في تطبيقاتها البرمجية. وفي الواقع، فإن الغالبية العظمى من الأنظمة التي يتم تطويرها هذه الأيام تطبّق تكنولوجيا الكينونات الموجهة.

تعتبر منهجية بناء الأنظمة بالكينونات الموجهة طريقة مختلفة لبناء الأنظمة عن المنهجيات الأخرى في كثير من الأمور؛ فباستخدام هذه المنهجية يتم تقسيم النظام إلى أجزاء صغيرة أو كينونات (Objects) منفصلة عن بعضها بعض. فكِّر في هذه المنهجية كمن أراد بناء بيت من الطوب؛ أولاً، يجهّز الطوب ثم بعدها يضع بعضها مع بعض ليُكوِّن البيت. وكذلك الأمر عند بناء نظام ما، يتم تقسيمه إلى أجزاء برمجية بسيطة منفصلة عن بعضها قدر الإمكان، وبعدها يتم جمعها مع بعض لتكوّن النظام.

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

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

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

مقدمة إلى لغة النمذجة الموحدة (UML)

إن لغة النمذجة الموحدة عبارة عن لغة معيارية لتخصيص (Specifying)، وتصور (Visualizing)، وبناء (Constructing)، وتوثيق (Documenting) عناصر النظام، يستخدمها المحللون ومصممو الأنظمة.

لقد بُدئ ببناء هذه اللغة في أواخر سنة 1994، عن طريق عالمين من علماء هندسة البرمجيات هما غريدي بووخ (Grady Booch) وجيم رامبو (Jim Rambaugh) اللذان كانا يعملان في شركة راشونال للبرمجيات، حين قاما بدمج طريقتي Booch وOMT مع بعضهما. وفي خريف سنة 1995 انضم إليهما العالم جاكوبسون (Jacobson) الذي كان يمتلك شركة أوبجكتوري (Objectory) بطريقته المسماة OOSE، حيث كوّن هؤلاء العلماء لغة النمذجة الموحدة (UML).

وللغة النمذجة الموحدة فوائد واستخدامات عدة، أهمها:

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

وتُستخدم هذه اللغة لعدة أغراض أهمها: تبيين حدود النظام (System Boundary) ووظائف النظام (System Functions) الرئيسة عن طريق حالات الاستخدام (Use Cases) والمتفاعلين (Actors)، وتوضيح إدراك (Realization) حالات الاستخدام عن طريق المخططات التفاعلية (Interaction Diagrams)، وتوضيح البنية التركيبية الجامدة للنظام (Static Structure) باستخدام مخططات الكينونات (Class Diagrams)، وتوضيح سلوك الكينونات (Objects Behavior) باستخدام مخططات تحول الحالة (State Transition Diagrams)، وإظهار التطبيق المادي الملموس للنظام (Physical Implementation).

مخططات لغة UML الثمانية

تتكون لغة النمذجة الموحدة من ثمانية مخططات، ولكل منها هدف معين ويستطيع المستخدمون وفريق التطوير عن طريقها أن يروا طريقها من جهة معينة من النظام. اضغط على كل مخطط للاطلاع على تعريفه:

مخطط حالات الاستخدام (Use Case Diagram)
الشكل (1): الشكل العام لمخطط حالات الاستخدام
يبين هذا المخطط العلاقة بين المتفاعلين (Actors) وحالات الاستخدام، حيث يمثل المتفاعلون حواف النظام وهم إما أن يكونوا مصدراً لبيانات النظام أو مستلماً لها. وتمثل حالات الاستخدام وظائف النظام.
مخططات التسلسل أو التتابع (Sequence Diagrams)
الشكل (2): الشكل العام لمخطط التسلسل
تبين هذا النوع من المخططات التسلسل الزمني للكينونات التي تشارك في التفاعل مع كينونات أخرى، وتعتبر من المخططات التفاعلية (Interaction Diagrams). ويتكون مخطط التسلسل من بعدين، أولهما أفقي ويمثل الكينونات المشتركة في التفاعل، والبعد العمودي ويمثل الوقت.
مخططات التعاون (Collaboration Diagrams)
الشكل (3): الشكل العام لمخطط التعاون
تعتبر هذا النوع أيضاً من المخططات التفاعلية، حيث تبين التفاعل بين الكينونات، ويكون هذا التفاعل منظماً بطريقة تبين علاقة الكائن مع غيره من الكينونات كما تبين الرسائل التي تنتقل بين الكينونات، ويمكن ترقيم الرسائل لبيان تسلسلها الزمني.
مخططات الحالة (State Diagrams)
الشكل (4): الشكل العام لمخطط الحالة
يبين مخطط الحالة تسلسل حالات الكينونات أثناء تفاعلها بعضها ببعض. ويتم الانتقال من حالة إلى أخرى نتيجة استلامها حافز (Stimuli) بالإضافة إلى استجاباتها (Responses) وأفعالها (Actions).
مخططات الفعالية (Activity Diagrams)
الشكل (5): الشكل العام لمخطط الفعالية
يعتبر مخطط الفعالية نوعاً خاصاً من مخططات الحالة، حيث يتم الانتقال من حالة إلى أخرى بعد انتهاء الحالة المصدر من أعمالها. ويركز هذا المخطط على التدفق (Flow) الناتج عن المعالجات الداخلية للحالات.
مخططات الكينونات (Class Diagrams)
الشكل (6): الشكل العام لمخطط الكينونات
يبين هذا النوع من المخططات البنية التركيبية للأصناف بالإضافة إلى محتوياتها، كما تبين العلاقات بينها مثل التوريث (Inheritance) والتشارك (Association). وتعتبر مخططات الكينونات العمود الفقري لكل طرق بناء الأنظمة بالكينونات الموجهة بما فيها لغة النمذجة الموحدة.
مخططات المكونات (Component Diagrams)
الشكل (7): الشكل العام لمخطط المكونات
تعتبر مخططات المكونات من المخططات المادية (Physical Diagrams)، حيث تظهر طريقة ترتيب وتجميع البرنامج نفسه إلى مكونات. وتظهر هذه المخططات العلاقات بين المكونات وكيفية اعتماد بعضها على بعض.
مخططات الانتشار (Deployment Diagrams)
الشكل (8): الشكل العام لمخططات الانتشار
تبين هذه المخططات الهيئة العامة لعناصر معالجة وقت التنفيذ، بالإضافة إلى المكونات البرمجية (Software Components)، والعمليات (Processes)، والكينونات التي تعيش عليها.

مسرد المصطلحات

اضغط على كل بطاقة لعرض تعريف المصطلح.

UML
لغة النمذجة الموحدة؛ لغة معيارية لتخصيص وتصور وبناء وتوثيق عناصر النظام.
Use Case Diagram
مخطط حالات الاستخدام؛ يبين العلاقة بين المتفاعلين وحالات الاستخدام ووظائف النظام.
Sequence Diagram
مخطط التسلسل؛ يبين التسلسل الزمني للكينونات المشاركة في التفاعل.
Class Diagram
مخطط الكينونات؛ يبين البنية التركيبية للأصناف والعلاقات بينها كالتوريث والتشارك.
Deployment Diagram
مخطط الانتشار؛ يبين الهيئة العامة لعناصر المعالجة وقت التنفيذ والمكونات البرمجية.
Reusability
إعادة الاستخدام؛ إمكانية استخدام الأجزاء البرمجية الصغيرة مرات عديدة في أنظمة مختلفة.
Low Coupling
درجة اعتمادية منخفضة بين الوحدات البرمجية.
High Cohesion
تنفيذ الوحدة البرمجية الواحدة لمهمة واحدة محددة.
Data-Centric
منهجيات مركزية البيانات؛ تركز على المعلومات نفسها لا على سلوك النظام.
Rush to Code
الهرولة نحو البرمجة؛ منهج يقلل من وقت التحليل والتصميم لصالح البرمجة المباشرة.

10 مصطلحات أساسية لهذه الوحدة.

اختبار الوحدة

يتكوّن الاختبار من 5 أسئلة صح/خطأ، و5 أسئلة اختيار من متعدد، و3 أسئلة إنشائية. تُصحَّح الأسئلة الموضوعية تلقائياً، بينما تعرض الأسئلة الإنشائية إجابة نموذجية لتقييم إجابتك بنفسك.

أولاً: صح أم خطأ

1. تعتمد المنهجية التقليدية على خطوات: التخطيط، التحليل، التصميم، البناء، الصيانة.

2. تفترض المنهجية التقليدية أن متطلبات المستخدم قد تتغير طوال فترة المشروع، لذا تُشرك المستخدمين في كل مرحلة.

3. تعتمد المنهجية الهيكلة على تجزئة النظام إلى وحدات صغيرة (Modules) بدرجة اعتمادية منخفضة بينها.

4. خاصية إعادة الاستخدام (Reusability) تعني إمكانية استخدام الأجزاء البرمجية الصغيرة أكثر من مرة.

5. تعتمد لغة النمذجة الموحدة (UML) على لغة برمجة معينة لا يمكن الاستغناء عنها.

ثانياً: اختيار من متعدد

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

7. أي علماء البرمجيات التاليين انضم لاحقاً في خريف 1995 لتشكيل لغة UML بطريقته المسماة OOSE؟

8. أي المخططات التالية يمثل العمود الفقري لطرق بناء الأنظمة بالكينونات الموجهة؟

9. أي المخططات التالية يبين التسلسل الزمني لتفاعل الكينونات مع بعضها البعض؟

10. المنهجيات التي تركز على المعلومات التي تدخل النظام أكثر من تركيزها على سلوكه تُسمى:

ثالثاً: أسئلة إنشائية

11. عدّد ثلاثاً من مساوئ المنهجية التقليدية لبناء الأنظمة.

من أبرز مساوئها: الهرولة نحو البرمجة (Rush to Code) على حساب التحليل والتصميم، وضعف الالتزام بمعايير الجودة، وصعوبة صيانة النظام وربطه بالأنظمة الأخرى، واعتمادها على الإدارة بدل الفنيين في تقدير بنود المشروع، وافتراضها الخاطئ بأن متطلبات المستخدم تكتمل بعد مرحلة التحليل فقط.

12. وضّح الفرق بين المنهجيات التقليدية (Data-Centric) ومنهجية الكينونات الموجهة من حيث بؤرة التركيز.

تركز المنهجيات التقليدية على المعلومات التي تدخل النظام وكيفية تخزينها والحفاظ عليها فقط (Data-Centric)، بينما تركز منهجية الكينونات الموجهة على المعلومات وعلى سلوك النظام معاً، وتأخذ بعين الاعتبار إمكانية طلب أي تغيير في أي وقت وتُسهّل إجراءه.

13. اختر أحد مخططات UML الثمانية واشرح الغرض الرئيسي منه.

إجابة مقترحة: مخطط حالات الاستخدام (Use Case Diagram) يبين العلاقة بين المتفاعلين (Actors) وحالات الاستخدام (Use Cases)، حيث يمثل المتفاعلون حواف النظام (مصدراً أو مستلماً لبياناته)، بينما تمثل حالات الاستخدام وظائف النظام الرئيسة.