ما هي هندسة البرمجيات software engineering؟
في الواقع انه من الصعب جدا تحديد معنى هندسة البرمجيات "software engineering". فهي تستخدم كل من الهندسة والعلوم في محاولة لإدخال تحسينات في مجال تكنولوجيا البرمجيات "software technology". مختلف الناس لديهم تعريفات مختلفة لمصطلح هندسة البرمجيات اعتمادا على الميادين التي يعملون فيها.
والمهمة الرئيسية لمهندس البرمجيات هو تغيير وتصميم البرمجيات المعقدة. و يسعى ايضا الى إدخال تحسينات على البرامج في محاولة لجعلها أسهل في الاستخدام.
هندسة البرمجيات هي مجال جديد نسبيا ، و ظهرت بسبب التطور السريع في أجهزة الكمبيوتر. ونتيجة لهذا ، لا يوجد كثير من مقررات هندسة البرمجيات المتاحة فهي محدودة وغالبا ما يختار الناس دراسة تكنولوجيا المعلومات "information technology" أولا. ومع ذلك ، هناك أدلة على أن هذا المجال ينمو وببطء ولكن بثبات ، فقد ظهر المزيد من الدورات المفيدة للغاية ذات الصلة بهندسة البرمجيات. كل ما تحتاجه هو التأكد من أن تجد تكوين جيد ويكون مقبول من طرف أرباب العمل الذين ترغب في العمل لديهم.
يمكن لمهندسي البرامج العمل مع نطاق واسع من الناس والمنظمات المختلفة. بعض الأمثلة على مجموعة من المنظمات التي يمكن ان تعمل على ذلك: الشركات ، الإدارات ، الوكالات الحكومية ، الجمعيات الخيرية والشركات الصحية. فهي مطلوبة من قبل أي منشأة تستخدم أجهزة الكمبيوتر وأنظمته. و مطلوبة في بعض الأحيان لإصلاح المشاكل القائمة أو لوضع تدابير لمنع مزيد من مشاكل البرمجيات في المستقبل.
واحدة من أهم الأشياء التي يجب أن تعرفها في حالة ما إذا كنت تريد أن تصبح مهندس البرمجيات والبرمجة. فحصولك على شهادة في علوم الكمبيوتر يمكن ان يساعد بالتأكيد للحصول على فهم قوي لهذا الموضوع ، و يوفر لك المهارات العملية. ومع ذلك ، فإن أفضل مكان لتعلم البرمجة هو العمل و في الحالات العملية للغاية. وبذلك عليك أن تبدأ كمبتدئ او مساعد فذلك يمكنك من ممارسة مهارات البرمجة و تعمل على هذا المنوال حتى تصل الى مستوى محترف في هندسية البرامج.
-----------------------------------------------------------------------------------------------------------------------------
ما هي لغة النمذجة الموحدة Unified Modeling Language؟
لغة النمذجة الموحدة "Unified Modeling Language -- UML" هي لغة قياسية لتحديد ، تصور ، بناء ، وتوثيق الأعمال لبرمجيات الأنظمة ، فضلا عن نماذج الأعمال التجارية وغيرها من النظم المختلفة عن البرمجيات. لغة النمذجة الموحدة تمثل مجموعة من أفضل التطبيقات الهندسية التي ثبت نجاحها في نمذجة النظم الضخمة والمعقدة. و لغة النمذجة الموحدة "UML" هي جزء هام لتطوير البرمجة الكائنية التوجه "object oriented software" و عملية تطوير البرمجيات "software development". لغة النمذجة الموحدة تستخدم الرموز الرسومية في الغالب للتعبير عن طريقة تصميم مشاريع البرامج. يساعد فريق العمل في المشروع الذي يستخدم لغة النمذجة الموحدة في التواصل ، استكشاف إمكانات التصاميم ، والتحقق من صحة التصميم الهندسي للبرنامج.
أهداف لغة النمذجة الموحدة UML
الأهداف الرئيسية للغة النمذجة الموحدة هي :
- تزويد المستخدمين بلغة نمذجة بصرية تعبيرية جاهزة للاستعمال بحيث يتمكنون من تطوير وتبادل النماذج التعبيرية.
- توفر قابلية التمدد وآليات التخصيص ، لتوسيع المفاهيم الأساسية للمشروع.
- تكون مستقل عن لغات البرمجة الخاصة وعمليات التطوير.
- توفير مناهج أو القواعد أساسية لفهم لغة النمذجة "modeling language".
- تشجيع نمو كائنية توجه أدوات السوق "object-oriented tools market".
- دعم أعلى مستوى تطوير المفاهيم "development concepts" مثل التعاون "collaborations"، و منصات العمل "frameworks"، و القوالب "patterns" و المركبات "components".
- دمج أفضل الممارسات.
لماذا تستخدم لغة النمذجة الموحدة UML
و بناءا على استراتيجية زيادة اهمية البرامج للعديد من الشركات ، فمجال الصناعة سعى بالبحث عن تقنيات لجعل إنتاج البرمجيات أوتوماتيكي، مع تحسين النوعية والضغط على التكلفة والوقت لزيدة القدرة التنافسية في السوق. وتشمل هذه التقنيات تقنية المركبات "component technology"، والبرمجة المرئية "visual programming"، و القوالب "patterns" ومنصات العمل "frameworks". الشركات تسعى أيضا إلى تقنيات لإدارة تعقيدات الأنظمة لأنها في زيادة من حيث الحجم و المدى. وعلى وجه الخصوص ، فهي تعترف بالحاجة إلى حل المشاكل الهندسية المتكررة ، مثل التوزيع المادي "physical distribution"، التزامن "concurrency"، التكرار "replication"، الأمن ، الموازنة "load balancing" و الاحتمال الخطأ "fault tolerance". بالإضافة إلى ذلك ، قد أدى تطور شبكة الويب العالمية ، مما جعل بعض الأمور أكثر بساطة ، في زيادت المشاكل الهندسية. وقد تم تصميم لغة النمذجة الموحدة "UML" للاستجابة لهذه الاحتياجات.
-----------------------------------------------------------------------------------------------------------------------------
أنواع مخططات لغة النمذجة الموحدة Unified Modeling Language Diagrams — UML
كل مخطط للغة النمذجة الموحد تم تصميمه بطريقة تسمح للمطورين والعملاء عرض أنظمة البرامج من وجهات نظر مختلفة وبدرجات متفاوتة من التجريد. مخططات لغة النمذجة الموحدة "UML diagrams" عادة ما تخلق بأدوات النمذجة البصرية منها ما يلي :
مخطط حالة الاستخدام "Use Case Diagram" يعرض العلاقة بين الجهات الفاعلة "actors" وحالات الاستخدام"use cases".
حالة الاستخدام "use case" هي عبارة عن مجموعة من السيناريوهات التي تصف التفاعل بين المستخدم والنظام. يعرض مخطط حالة الاستخدام “Use Case Diagram“ العلاقة بين الجهات الفاعلة “actors” وحالات الاستخدام”use cases”. المكونان الرئيسيان لمخطط حالة الاستخدام “Use Case Diagram“ هما حالات استخدام "use cases" والجهات الفاعلة "actors".
الجهة الفاعل "actor" تمثل المستخدم أو نظام آخر الذي سيتفاعل مع النظام الذي قمت بنمذجته. حالة استخدام "use case" عبارة عن رؤية خارجية للنظام بحيث تستعرض بعض الإجراءات التي يمكن ان يقوم بها المستخدم لإكمال المهمة.
متى تستخدم : مخططات حالات الاستخدام “Use Cases Diagrams“
وتستخدم حالات الاستخدام "Use cases" في كل المشاريع تقريبا. وتساعد في الكشف عن الاحتياجات والتخطيط للمشروع. وينبغي خلال المرحلة الأولى من المشروع التعريف بمعظم حالات الاستخدام ، ولكن ، بما ان المشروع لا يزال متواصل فسيظهر لك المزيد.
كيفية رسم : مخططات حالات الاستخدام “Use Cases Diagrams“
حالات الاستخدام "Use cases" هو مخطط للغة النمذجة الموحدة “Unified Modeling Language — UML” سهل الرسم نسبيا ، هذا مثال مبسط للغاية. ويهدف هذا المثال فقط الى تقديم حالات الاستخدام "Use cases" و لغة النمذجة الموحدة “Unified Modeling Language — UML”:
نبدأ من خلال سرد سلسلة من الخطوات التي سيقوم بها المستخدم من أجل إتمام مهمة او عمل معين. على سبيل المثال عند وضع مستخدم طلب من شركة مبيعات قد يتبع هذه الخطوات.
- تصفح الكتالوج "catalog" واختيار العناصر.
- تلقي رقم الموافقة "conformation number" من مندوب المبيعات.
هذه الخطوات ستولد مخطط حالة استخدام "use case diagram" البسيط هذا:
هذا المثال يظهر الزبون كجهة فاعلة "actor" لأن الزبون هو الذي يستخدم نظام وضع الطلبات "ordering system". المخطط يأخذ الخطوات البسيطة المذكورة أعلاه ، و يظهرها على اساس إجراءات يمكن للعميل او الزبون ان ينفذها. ويمكن أيضا أن يدرج مندوب مبيعات في مخطط حالة الاستخدام “Use Case Diagram“ هذا لأن البائع أيضا يتفاعل مع نظام وضع الطلبات"ordering system".
من هذا المخطط البسيط لنضام وضع الطلبات "ordering system" يمكن بسهولة ان نشتق المتطلبات.
النظام بحاجة إلى أن يكون قادرا على تنفيذ الإجراءات لكافة حالات الاستخدام "use cases" المذكورة. كلما تقدم المشروع قد تظهر حالات استخدام أخرى. و ربما يحتاج الزبون الى ان يضيف طلب اخر الى الطلبات التي وضعها سابقا. يمكن بسهولة توسيع هذا المخطط الى مدى وصف كامل لنظام وضع الطلبات "ordering system" بتشخيص لكل الشروط التي سيحتاج النظام إلى تنفيذها.
----------------------------------------------------------------------------------------------------------------------------
مخطط الفئة "Class Diagram" : نماذج هيكل الفئة "class structure" ومحتوياتها تستخدم عناصر التصميم مثل الفئات "classes"، والحزم والكائنات "objects". ويعرض أيضا علاقات مثل الاحتواء "containment" ، التوريث "inheritance" ، و التجميع "associations" وغيرها.
مخطط الفئة "Class Diagram" يستخدم على نطاق واسع لوصف أنواع الكائنات "objects" الموجودة في النظام و علاقاتها ببعضها. نموذج مخطط الفئة "Class diagrams model" ، هيكل الفئات "class structure" و المحتويات "contents" يستخدمون عناصر التصميم مثل الفئات "classes"، والحزم "packages" والكائنات "objects". مخططات الفئة "Class diagrams" يصف لنا ثلاثة منظورات مختلفة عند تصميم النظام و هم: منظور المفاهيمي "conceptual" ، و منظور المواصفات "specification"، و منظور التطبيق "implementation". هذه المنظورات تصبح واضحة عندما يتم إنشاء المخطط و تساعد بقدر كبير في عملية التصميم. ويهدف هذا المثال الى وضع تقديم للغة النمذجة الموحدة “Unified Modeling Language — UML” و مخططات الفئة "Class diagrams".
وتتألف الفئات من ثلاثة أشياء : اسم "name" والصفات "attributes"، والعمليات "operations". هذا مثال على الفئة "class" أدناه.
مخططات الفئة "Class diagrams" أيضا تقوم بعرض العلاقات مثل الاحتواء "containment" ، و الوراثة "inheritance"، و التجميع "associations" و اشياء اخرى ، هذا مثال على وجود علاقة ترابطية "associative relationship" :
وعلاقة الارتباط "association relationship" هي العلاقة الأكثر شيوعا في مخطط الفئة "Class Diagram" . الارتباط "association" يوضح العلاقة بين نماذج الفئات "instances of classes". على سبيل المثال ، فئة الطلب "class Order" ترتبط مع فئة العملاء "class Customer". تعدد الارتباطات "multiplicity of the association" يدل على عدد من الكائنات "objects" التي يمكن أن تشارك في العلاقة. على سبيل المثال ، يمكن أن يرتبط كائن الطلب "Order object" بعميل واحد فقط ، ولكن يمكن أن يرتبط عميل واحد بطلبات كثيرة.
علاقة أخرى مشتركة في مخططات الفئة "class diagrams" و هي التعميم "generalization". ويستخدم التعميم عندما يكون لدين فئتين متشابهتين ، ولكن توجد بعض الاختلافات. انظروا إلى التعميم "generalization" التالي :
في هذا المثال الفئة الشركة العميلة "Corporate Customer" و فئة العميل الفردي "Personal Customer" لديهم بعض التشابه مثل الاسم والعنوان ، ولكن كل فئة لديها بعض من الصفات "attributes" الخاصة بها والعمليات "operations". فئة العميل "class Customer" هو شكل عام لفئة العملاء على حد السواء الشركة العميلة "Corporate Customer" والعميل الفردي "Personal Customer" .وهذا ما يسمح للمصممين بمجرد استخدام لفئة العملاء "Customer class" ولا يحتاجون إلى عرض لكل نوع من أنواع العملاء.
متى يكون استخدام : مخطط الفئة "Class Diagram"
وتستخدم مخططات الفئة "Class diagrams" تقريبا في جميع تصاميم برامج كائنية التوجه "Object Oriented software". و تستخدم لوصف فئات النظام "Classes of the system" وعلاقاتهم مع بعضهم البعض.
كيفية رسم : مخططات الفئة "Class Diagrams"
مخططات الفئة هي واحدة من اصعب مخططات لغة النمذجة الموحدة "UML" في الرسم. لرسم مخططات تفصيلية ومفيدة عليك أن تقوم بدراسة لغة النمذجة الموحدة "UML" ومبادئ كائنية التوجه " Object Oriented" لفترة طويلة. وبالتالي ، فإن هذه الصفحة تعطيك لمحة على مستوى عال جدا لهذه العملية.
قبل رسم مخطط الفئة “Class Diagram“ يجب ان تاخذ بعين الاعتبار وجهات النظر الثلاثة المختلفة للنظام التى سيقدمها المخطط ؛منظور المفاهيمي "conceptual" ، و منظور المواصفات "specification"، و منظور التطبيق "implementation". حاول عدم التركيز على منظور واحد ، ومحاولة معرفة كيفية عملهم جميعا مع بعضهم البعض.
عند تصميم الفئات خذ بعين الاعتبار ما هم الصفات "attributes" والعمليات "operations" التي لديهم. ثم حاول تحديد حالات الفئات "instances of the classe" التي سوف تتفاعل مع بعضها البعض. هذه هي الخطوات الأولى لكثير من الخطوات ستكوّن مخطط الفئة "class diagram". ومع ذلك ، فقط باستخدام هذه التقنيات الأساسية يمكن لأي احد أن يضع رؤية شاملة لمنظومة البرمجيات "software system".
ويهدف هذا المثال فقط الى تقديم لغة النمذجة الموحدة "UML" وحالات الاستخدام "use cases".
----------------------------------------------------------------------------------------------------------------------------
مخطط التفاعل "Interaction Diagrams"
نموذج مخططات التفاعل "Interaction Diagrams" هو سلوك حالات الاستخدام "use cases" مع وصف طريقة تفاعل مجموعات من الكائنات "objects" لإكمال المهمة. يوجد نوعين من مخططات التفاعل وهم مخططات التسلسل "sequence diagrams" و مخططات التعاون "collaboration diagrams". ويهدف هذا المثال فقط الى اعطاء مقدمة للغة النمذجة الموحدة “Unified Modeling Language — UML” و مخططات التفاعل "Interaction Diagrams".
متى تستخدم مخططات التفاعل Interaction Diagrams
وتستخدم مخططات التفاعل "Interaction Diagrams" عندما تريد وضع نموذج لسلوك كائنات متعددة "several objects" في حالة استخدامها "use case". وهي تبين كيف يمكن للكائنات "objects" ان تتعاون لتحقيق سلوك معين. مخططات التفاعل "Interaction Diagrams" لا يمكنها ان تعطي وصف عميق للسلوك. إذا كنت تريد أن ترى ما تقوم به كائنات معينة للعديد من حالات الاستخدام فعليك باستخدام مخطط الحالة "state diagram".
كيفية رسم مخططات التفاعل Interaction Diagrams
مخططات تسلسل "sequence diagrams" و مخططات التعاون "collaboration diagrams" يمكن استخدامهما على حد سواء لوصف التفاعل بين الكائنات "objects" في حالة استخدامهم "use case". مخططات التسلسل "sequence diagrams" يظهرون بشكل عام تسلسل الأحداث التي تحدث. مخططات التعاون "collaboration diagrams" تصف كيفية ترابط الكائنات بشكل ثابت. كل من المخططات بسيطة نسبيا للاستخلاص وتحتوي على عناصر مماثلة.
مخططات تسلسل sequence diagrams
مخططات التسلسل "Sequence diagrams" تشرح سلوك الكائنات "objects" في حالة استخدامها "use case" مع وصف الكائنات "objects" والرسائل المُمررة بينهم. تتم قراءة المخططات من اليسار إلى اليمين وتنازليا. يوضح المثال التالي كائن الفئة "object of class" يبداء سلوكه عن طريق إرسال رسالة إلى كائن الفئة الاخر. تُمرر الرسائل بين الكائنات المختلفة الى ان يتلقى كائن الفئة "object of class" الرسالة النهائية.
أدناه هو مثال أكثر تعقيدا. تمثل المستطيلات العمودية الزرقاء المضيئة نشاط الكائنات "objects" بينما تمثل الخطوط المتقطعة الخضراء العمودية حياة الكائن " the life of the object". المستطيلات الخضراء العمودية تمثل متى يتحصل كائن معين على السيطرة. و يمثيل هدا المربع
عملية إتلاف الكائن. كما تبين هذه المخططات حالات الرسائل التي يتم إرسالها إلى كائن آخر. يتم سرد الحالة "[condition]" بين معقفين [] بجانب الرسالة. على سبيل المثال الحالة "[condition]" لابد ان يتم تغطيتها قبل ان يقوم كائن الفئة 2 "object:class2" من إرسال الرسالة "message()" لكائن الفئة 3 "object:class3".
an Order يقوم بإنشاء و إرسال رسالة إلى an Order Entry Window لوضع الأمر. الكائن "Sequence diagra" المخطط التالي يبين بداية مخطط التسلسل
فسيقوم بإرسال رسالة ليتم خلق تسليم جديد لهذا البند[InStock] من معرفة ما اذا كان هذا البند هو في التخزين و إذا كان تحقق من وجود الشرط Order بعد ما يتحقق الكائن