بسم الله الرحمن الرحیم
اهلا وسهلا بكم في كورس
ھندسة البرمجیات
Software Engineering
سوف يحتوي علي
الدرس الأول: ماذا نعني بھندسة البرمجیات؟
الدرس الثاني: دورة حیاة تطوير المشروع
الدرس الثالث: دراسة المتطلبات
الدرس الرابع: تصمیم النظام
الدرس الخامس: كتابة البرنامج واختباره
الدرس الخامس _ الحزء الثانى : كتابة البرنامج واختباره
جميع الحقوق محفوظة ل
أسماء المنقوش
الدرس الأول: ماذا نعني بھندسة البرمجیات؟
أھداف الدرس الأول:
سوف نحاول خلال ھذا الدرس الإجابة على ھذه الأسئلة:
ما ھي ھندسة البرمجیات؟ ·
من يشارك بھا؟ ·
ما ھي مكونات النظم البرمجیة؟ ·
وكیف يتم بنائھا؟ ·
مقدمة:
في حیاتنا الیومیة سواء في البیت أو المصنع أو Software لم يعد خافیا على أي منا أھمیة البرمجیات
المستشفى أو ... الخ، فنحن نتعامل يومیا مع العديد من الأجھزة والمعدات التي تعتمد في عملھا على
البرمجیات ومن المھم لنا أن تعمل ھذه الأجھزة وبرامجھا بالشكل والكفاءة التي نتوقعھا منھا. لذا فإن
ھندسة البرمجیات أصبحت الیوم أكثر أھمیة من أي وقت مضى.
المرجع:
1- Shari Pfleeger, "Software Engineering - Theory and Practice", 2nd Edition
ما ھي ھندسة البرمجیات؟
لنفھم معا علاقة ھندسة البرمجیات بعلوم الكومبیوتر، دعونا نأخذ ھذا المثال عن علم الكیمیاء واستخدامه
في حل المشاكل التي نقابلھا في حیاتنا الیومیة.
يھتم الكیمیائي بدراسة المواد الكیمیائیة (تركیبھا، تفاعلاتھا، والنظريات التي تحكم سلوكھا.(
بینما المھندس الكیمیائي يستخدم النتائج التي توصل إلیھا الكمیائي لحل المشاكل التي يطلب منه إيجاد
حل لھا.
من وجھه نظر الكیمیائي الكمیاء ھي موضوع الدراسة بحد ذاتھا.
تستخدم لأيجاد الحلول لمشاكل عامة) وقد لا tool ومن وجھه نظر المھندسالكمیائي الكیمیاء ھي أداة
تكون ھذه المشكلة ذات طبیعة كیمیائیة بحد ذاتھا.(
حیث يكون تركیزنا على الحواسیب ولغات computer science وبنفسالفكرة يمكن النظر إلى علم الحوسبة
البرمجة لدرستھا وتطويرھا في حد ذاتھا.
أو يمكن النظر إلیھا والتعامل بھا على أنھا أدوات نستخدمھا عند تصمیم وتطوير حل لمشكلة ما تواجھنا أو
الآخرين.
problem-solving tool. يعتبر أن الكمبیوتر ھو أداة لحل المشاكل Software Engineer مھندس البرمجیات
وعلیه أن يستخدم معلوماته حول الحاسوب وعلم الحوسبة للمساعدة في حل المشكلة التي يطلب منه
إيجاد حل لھا.

(1- شكل ( 1
بقدر ما ھي علم، لماذا؟ Art ولكن ومن المھم أن نتذكر أن عملیة كتابة البرامج تعد فن
أن يكتب برنامج لیؤدي مھمة hacker لأنه يمكن لأي شخصلديه معرفة كافیة بأحد لغات برمجة الحاسوب
محددة، لكن الامر يتطلب مھارة ومعرفة مھندسبرمجیات محترف لكتابة برنامج أكثر تناسقا ووضوحا ،وأسھل
في الصیانة، ويقوم بالمھمة المطلوبة منه بفعالیة ودقة أكبر.
أي أن، ھندسة البرمجیات تعنى بتصمیم وتطوير برامج ذات جودة عالیة.
من يشارك فيھذه العملیة؟
المشاركون في عملیة صناعة البرنامج، عادة ما يندرجون تحت ثلاث مجموعات:
وھو الشركة (أو الشخص) الممولة لمشر وع تطوير البرنامج المطلوب Customer: الزبون ·
الشخص (أو مجموعة الاشخاص ) الذي سوف يقوم فعلا باستعمال البرنامج، User: المستخدم ·
والتعامل معه مباشرة.
وھو الشركة (أو الشخص) الذي سوف يقوم بتطوير البرنامج لصالح الزبون. Developer: المطور ·
الشكل التالي يظھر العلاقة بین الفئات الثلاثة السابقة

(2- شكل ( 1
مكونات النظام
مشاريعنا التي نطورھا لن تعمل في الفراغ، فعلیھا أن تتفاعل مع مستخدمین، أجھزة ومعدات متنوعة، نظم
تشغیل وبرامج وملفات وقواعد بیانات .... إلخ و ربما حتى أنظمة حواسیب آخرى. لھذا يجب تعريف حدود
النظام ومكوناته جیدا .أي يجب تعريف ما الذي يشتمل علیه النظام وما الذي لا يشتمل علیه.
بالإضافة إلى وصف للعلاقات activities والنشاطات objects أي نظام ھو عبارة عن مجموعة من الكائنات
التي تربط تلك الكائنات والنشاطات معا. مع تعريف قائمة المدخلات المطلوبة والخطوات المتبعة والمخرجات
الناتجة لكل نشاط.
أول خطوات تحلیل المشكلة ھو فھم ماھیة المشكلة وتعريفھا بوضوح، لذا علینا أولا أن نصف النظام بتحديد
مكوناته والعلاقات التي تربط بین ھذه المكونات.
1النشاطات والكائنات: النشاط ھو عمیلة تحدث بالنظام وعادة ما يوصف كحدث يتم من خلال حافز. النشاط .
يغیر شئ ما إلى آخر بتغیر خواصه (صفاته(
ھذا التغیر يمكن أن يعنى تحويل أحد عناصر البیانات من موقع إلى آخر، أو تعديل قیمته إلى قیمة مختلفة.
وھي عادة ماتكون مرتبطة ببعضھا البعضبشكل أو بأخر. مثلا الكائنات objects ھذه العناصر تسمى كائنات
يمكن أن تكون مرتبة في مصفوفة أو سجل) قید.(
وصف ھذه الكائنات نوعھا، النشاطات التي يمكن إجرائھا علیھا ... يجب وضعھا بدقة ھي ايضا.
Relationships and System Boundary 2العلاقات وحدود النظام .
بعد تعريف الكائنات والنشاطات جیدا، يمكن أن نربط بین كل كائن والنشاطات المتعلقة به بدقة. تعريف الكائن
يتضمن الموقع الذي سوف ينشأ به(نعض العناصر يمكن أن تكون موجودة بملف سبق انشاءه، والبعضقد يتم
انشاءه خلال حدث ما(، والھدف من انشاءه(بعضالكائنات تستخدم من قبل نشاط واحد فقط والبعضيمكن
بعض boundary لذا يمكن أن نعتبر أن لنظامنا حدود Input) , أن يستعمل من قبل نظم آخرى كمدخلات
الكائنات بمكن أن تعبر ھذه الحدود إلى داخل النظام، والبعضالآخر ھي مخرجات من نظامنا ويمكن أن ترحل
إلى نظم آخرى.
على أنه تجمع من: A System بھذا يمكن أن نعرف النظام
entities. مجموعة من الكائنات ·
activities. مجموعة من الانشطة ·
Relationship. وصف للعلاقات بین الكائنات والانشطة ·
boundary. تعريف لحدود النظام ·
كیف نبي نظام؟
إذا طلب منا عمیل تطوير نظام (برنامج) له، لحل مشكلة معینة تواجھه في عمله. فمثلا يحتاج نظام حماية
لشركته، أو نظام صرف آلي لبنك، أو ممكن أن يكون صاحب مكتبة أو متجر و يريد تغیر نظام البیع و الشراء أو
العرض لیتم بشكل آلي. علینا اتباع الخطوات التالیة لبناء ھذا النظام:
1عقد اجتماع مع العمیل لتحديد متطلباته، ھذه المتطلبات تشمل وصف النظام بجمیع مكوناته التي .
شرحنا.
2وضع تصمیم عام للنظام يحقق المتطلبات التي حددھا العمیل، وعرضه على العمیل لیوضح له الشكل .
الذي سیظھر علیه النظام عند الانتھاء، و ومراجعته معه لأخذ موافقته علیه.
3بعد موافقة العمیل على التصمیم يتم العمل على وضع التصامیم التفصیلیة لأجزاء المشروع. .
4كتابة البرنامج .
5اختباره، واعادة مراجعة المتطلبات التي وضعھا العمیل للتأكد من تحققھا في البرنامج. .
6تسلیم النظام إلى العمیل. .
7بعد تسلم العمیل للنظام قد تظھر بعض المشاكل أو الاخطاء التي لم تظھر خلال عملیة الاختبار، والتي .
تجب على المطور اصلاحھا فیما يعرف بصیانة النظام.
خلال الدروسالتالیة من الدورة سنتعرف على كل خطوة من ھذه الخطوات وكیف تتم بشكل مبسط، وسوف
نخوض في مزيد من التفاصیل في دروسلاحقة بإذن الله.
) •·.·´¯`·.·• نھا ية الدرس الأول •·.·´¯`·.·• (
) •·.·´¯`·.·• نقاش الدرسالأول •·.·´¯`·.·• (
س 1 - ھل المقصود بھذي الجملة ان المبرمج لا يستطیع حل المشكله فقط مھندسالبرمجیات
ھو الذييستطیع؟؟؟؟
ممكن أن يوجد شخصتعلم البرمجة دون أن يدرس ھندسة برمجیات و شخص آخر درسھندسة البرمجیات
وبالطبع علوم الحاسوب .. لو اعطیت ھذين الشخصین مشكلة ما .. سیكون حل مھندسالبرمجیات
للمشلكة أفضل من حل المبرمج الذي لم يدرس ھندسة البرمجیات
"تستطیع أن تقول أن كل مھندسبرمجیات ھو مبرمج بینما لیس كل مبرمج ھو مھندس برمجیات"
نعم ھذا ھو المقصود، ھندسة البرمجات لا تھتم فقط بكتابة برنامج يؤدي مھمة محددة فحسب، بل أنھا
تھتم بما ھو أكثر من ذلك "جودة البرنامج"
تطلق على كل من يعرف كیف يكتب برنامج للقیام بأداء عمل ما.. Hacker كلمة مبرمج أو
ولكن كلمة مھندس برمجیات لا تطلق إلا على من يكتب ھذه البرمجیات باسلوب علمي يسعى من خلاله
إلى أن تكون برامجه ذات جودة عالیة.
؟ Art س 2 - ما المقصود فيفن
بالانجلیزي = Art ھو الفن .. لأن كلمة الفن Art المقصود بكلمة
واما المقصود بالدرس..
ھو ان البرمجة فن وتذوق اكثر من ان تكون علم فقط أي انه يمكن كتابة نفسالبرنامج باسلوب مختلف من
شخصیین مختلفیین ويودي نفسالمھام...
وھذا كله يعتمد علي اسلوب المبرمج وكیفیة حله للمشكلة وطريقة صیغته للبرنامج .
س 3 - ھل يوجد فرق بین مھندسبرمجیات و محلل نظم ؟
نعم ھناك فرق بین مھندس البرمجیات ومحلل النظم فمثلا في الدول المتقدمة يقوم محلل النظام بدراسة
المشروع المراد تنفیذه وكیفیة حل المشاكل التي توجه كما ويقوم بدراسة الجدوى ومعرفة متطلبات
النظام ...الخ
أي انه يقوم بتحلیل النظام المراد بنائه تحلیل دقیق .
اما مھندسالبرمجیات فیقوم ببرمجة النظام وتھیئته كي يظھر في الصورة النھائیة..
أي يحتاج على الاقل الي شخصین كي يتم بناء النظام او البرنامج المطلوب.
اهلا وسهلا بكم في كورس
ھندسة البرمجیات
Software Engineering
سوف يحتوي علي
الدرس الأول: ماذا نعني بھندسة البرمجیات؟
الدرس الثاني: دورة حیاة تطوير المشروع
الدرس الثالث: دراسة المتطلبات
الدرس الرابع: تصمیم النظام
الدرس الخامس: كتابة البرنامج واختباره
الدرس الخامس _ الحزء الثانى : كتابة البرنامج واختباره
جميع الحقوق محفوظة ل
أسماء المنقوش
الدرس الأول: ماذا نعني بھندسة البرمجیات؟
أھداف الدرس الأول:
سوف نحاول خلال ھذا الدرس الإجابة على ھذه الأسئلة:
ما ھي ھندسة البرمجیات؟ ·
من يشارك بھا؟ ·
ما ھي مكونات النظم البرمجیة؟ ·
وكیف يتم بنائھا؟ ·
مقدمة:
في حیاتنا الیومیة سواء في البیت أو المصنع أو Software لم يعد خافیا على أي منا أھمیة البرمجیات
المستشفى أو ... الخ، فنحن نتعامل يومیا مع العديد من الأجھزة والمعدات التي تعتمد في عملھا على
البرمجیات ومن المھم لنا أن تعمل ھذه الأجھزة وبرامجھا بالشكل والكفاءة التي نتوقعھا منھا. لذا فإن
ھندسة البرمجیات أصبحت الیوم أكثر أھمیة من أي وقت مضى.
المرجع:
1- Shari Pfleeger, "Software Engineering - Theory and Practice", 2nd Edition
ما ھي ھندسة البرمجیات؟
لنفھم معا علاقة ھندسة البرمجیات بعلوم الكومبیوتر، دعونا نأخذ ھذا المثال عن علم الكیمیاء واستخدامه
في حل المشاكل التي نقابلھا في حیاتنا الیومیة.
يھتم الكیمیائي بدراسة المواد الكیمیائیة (تركیبھا، تفاعلاتھا، والنظريات التي تحكم سلوكھا.(
بینما المھندس الكیمیائي يستخدم النتائج التي توصل إلیھا الكمیائي لحل المشاكل التي يطلب منه إيجاد
حل لھا.
من وجھه نظر الكیمیائي الكمیاء ھي موضوع الدراسة بحد ذاتھا.
تستخدم لأيجاد الحلول لمشاكل عامة) وقد لا tool ومن وجھه نظر المھندسالكمیائي الكیمیاء ھي أداة
تكون ھذه المشكلة ذات طبیعة كیمیائیة بحد ذاتھا.(
حیث يكون تركیزنا على الحواسیب ولغات computer science وبنفسالفكرة يمكن النظر إلى علم الحوسبة
البرمجة لدرستھا وتطويرھا في حد ذاتھا.
أو يمكن النظر إلیھا والتعامل بھا على أنھا أدوات نستخدمھا عند تصمیم وتطوير حل لمشكلة ما تواجھنا أو
الآخرين.
problem-solving tool. يعتبر أن الكمبیوتر ھو أداة لحل المشاكل Software Engineer مھندس البرمجیات
وعلیه أن يستخدم معلوماته حول الحاسوب وعلم الحوسبة للمساعدة في حل المشكلة التي يطلب منه
إيجاد حل لھا.

(1- شكل ( 1
بقدر ما ھي علم، لماذا؟ Art ولكن ومن المھم أن نتذكر أن عملیة كتابة البرامج تعد فن
أن يكتب برنامج لیؤدي مھمة hacker لأنه يمكن لأي شخصلديه معرفة كافیة بأحد لغات برمجة الحاسوب
محددة، لكن الامر يتطلب مھارة ومعرفة مھندسبرمجیات محترف لكتابة برنامج أكثر تناسقا ووضوحا ،وأسھل
في الصیانة، ويقوم بالمھمة المطلوبة منه بفعالیة ودقة أكبر.
أي أن، ھندسة البرمجیات تعنى بتصمیم وتطوير برامج ذات جودة عالیة.
من يشارك فيھذه العملیة؟
المشاركون في عملیة صناعة البرنامج، عادة ما يندرجون تحت ثلاث مجموعات:
وھو الشركة (أو الشخص) الممولة لمشر وع تطوير البرنامج المطلوب Customer: الزبون ·
الشخص (أو مجموعة الاشخاص ) الذي سوف يقوم فعلا باستعمال البرنامج، User: المستخدم ·
والتعامل معه مباشرة.
وھو الشركة (أو الشخص) الذي سوف يقوم بتطوير البرنامج لصالح الزبون. Developer: المطور ·
الشكل التالي يظھر العلاقة بین الفئات الثلاثة السابقة

(2- شكل ( 1
مكونات النظام
مشاريعنا التي نطورھا لن تعمل في الفراغ، فعلیھا أن تتفاعل مع مستخدمین، أجھزة ومعدات متنوعة، نظم
تشغیل وبرامج وملفات وقواعد بیانات .... إلخ و ربما حتى أنظمة حواسیب آخرى. لھذا يجب تعريف حدود
النظام ومكوناته جیدا .أي يجب تعريف ما الذي يشتمل علیه النظام وما الذي لا يشتمل علیه.
بالإضافة إلى وصف للعلاقات activities والنشاطات objects أي نظام ھو عبارة عن مجموعة من الكائنات
التي تربط تلك الكائنات والنشاطات معا. مع تعريف قائمة المدخلات المطلوبة والخطوات المتبعة والمخرجات
الناتجة لكل نشاط.
أول خطوات تحلیل المشكلة ھو فھم ماھیة المشكلة وتعريفھا بوضوح، لذا علینا أولا أن نصف النظام بتحديد
مكوناته والعلاقات التي تربط بین ھذه المكونات.
1النشاطات والكائنات: النشاط ھو عمیلة تحدث بالنظام وعادة ما يوصف كحدث يتم من خلال حافز. النشاط .
يغیر شئ ما إلى آخر بتغیر خواصه (صفاته(
ھذا التغیر يمكن أن يعنى تحويل أحد عناصر البیانات من موقع إلى آخر، أو تعديل قیمته إلى قیمة مختلفة.
وھي عادة ماتكون مرتبطة ببعضھا البعضبشكل أو بأخر. مثلا الكائنات objects ھذه العناصر تسمى كائنات
يمكن أن تكون مرتبة في مصفوفة أو سجل) قید.(
وصف ھذه الكائنات نوعھا، النشاطات التي يمكن إجرائھا علیھا ... يجب وضعھا بدقة ھي ايضا.
Relationships and System Boundary 2العلاقات وحدود النظام .
بعد تعريف الكائنات والنشاطات جیدا، يمكن أن نربط بین كل كائن والنشاطات المتعلقة به بدقة. تعريف الكائن
يتضمن الموقع الذي سوف ينشأ به(نعض العناصر يمكن أن تكون موجودة بملف سبق انشاءه، والبعضقد يتم
انشاءه خلال حدث ما(، والھدف من انشاءه(بعضالكائنات تستخدم من قبل نشاط واحد فقط والبعضيمكن
بعض boundary لذا يمكن أن نعتبر أن لنظامنا حدود Input) , أن يستعمل من قبل نظم آخرى كمدخلات
الكائنات بمكن أن تعبر ھذه الحدود إلى داخل النظام، والبعضالآخر ھي مخرجات من نظامنا ويمكن أن ترحل
إلى نظم آخرى.
على أنه تجمع من: A System بھذا يمكن أن نعرف النظام
entities. مجموعة من الكائنات ·
activities. مجموعة من الانشطة ·
Relationship. وصف للعلاقات بین الكائنات والانشطة ·
boundary. تعريف لحدود النظام ·
كیف نبي نظام؟
إذا طلب منا عمیل تطوير نظام (برنامج) له، لحل مشكلة معینة تواجھه في عمله. فمثلا يحتاج نظام حماية
لشركته، أو نظام صرف آلي لبنك، أو ممكن أن يكون صاحب مكتبة أو متجر و يريد تغیر نظام البیع و الشراء أو
العرض لیتم بشكل آلي. علینا اتباع الخطوات التالیة لبناء ھذا النظام:
1عقد اجتماع مع العمیل لتحديد متطلباته، ھذه المتطلبات تشمل وصف النظام بجمیع مكوناته التي .
شرحنا.
2وضع تصمیم عام للنظام يحقق المتطلبات التي حددھا العمیل، وعرضه على العمیل لیوضح له الشكل .
الذي سیظھر علیه النظام عند الانتھاء، و ومراجعته معه لأخذ موافقته علیه.
3بعد موافقة العمیل على التصمیم يتم العمل على وضع التصامیم التفصیلیة لأجزاء المشروع. .
4كتابة البرنامج .
5اختباره، واعادة مراجعة المتطلبات التي وضعھا العمیل للتأكد من تحققھا في البرنامج. .
6تسلیم النظام إلى العمیل. .
7بعد تسلم العمیل للنظام قد تظھر بعض المشاكل أو الاخطاء التي لم تظھر خلال عملیة الاختبار، والتي .
تجب على المطور اصلاحھا فیما يعرف بصیانة النظام.
خلال الدروسالتالیة من الدورة سنتعرف على كل خطوة من ھذه الخطوات وكیف تتم بشكل مبسط، وسوف
نخوض في مزيد من التفاصیل في دروسلاحقة بإذن الله.
) •·.·´¯`·.·• نھا ية الدرس الأول •·.·´¯`·.·• (
) •·.·´¯`·.·• نقاش الدرسالأول •·.·´¯`·.·• (
س 1 - ھل المقصود بھذي الجملة ان المبرمج لا يستطیع حل المشكله فقط مھندسالبرمجیات
ھو الذييستطیع؟؟؟؟
ممكن أن يوجد شخصتعلم البرمجة دون أن يدرس ھندسة برمجیات و شخص آخر درسھندسة البرمجیات
وبالطبع علوم الحاسوب .. لو اعطیت ھذين الشخصین مشكلة ما .. سیكون حل مھندسالبرمجیات
للمشلكة أفضل من حل المبرمج الذي لم يدرس ھندسة البرمجیات
"تستطیع أن تقول أن كل مھندسبرمجیات ھو مبرمج بینما لیس كل مبرمج ھو مھندس برمجیات"
نعم ھذا ھو المقصود، ھندسة البرمجات لا تھتم فقط بكتابة برنامج يؤدي مھمة محددة فحسب، بل أنھا
تھتم بما ھو أكثر من ذلك "جودة البرنامج"
تطلق على كل من يعرف كیف يكتب برنامج للقیام بأداء عمل ما.. Hacker كلمة مبرمج أو
ولكن كلمة مھندس برمجیات لا تطلق إلا على من يكتب ھذه البرمجیات باسلوب علمي يسعى من خلاله
إلى أن تكون برامجه ذات جودة عالیة.
؟ Art س 2 - ما المقصود فيفن
بالانجلیزي = Art ھو الفن .. لأن كلمة الفن Art المقصود بكلمة
واما المقصود بالدرس..
ھو ان البرمجة فن وتذوق اكثر من ان تكون علم فقط أي انه يمكن كتابة نفسالبرنامج باسلوب مختلف من
شخصیین مختلفیین ويودي نفسالمھام...
وھذا كله يعتمد علي اسلوب المبرمج وكیفیة حله للمشكلة وطريقة صیغته للبرنامج .
س 3 - ھل يوجد فرق بین مھندسبرمجیات و محلل نظم ؟
نعم ھناك فرق بین مھندس البرمجیات ومحلل النظم فمثلا في الدول المتقدمة يقوم محلل النظام بدراسة
المشروع المراد تنفیذه وكیفیة حل المشاكل التي توجه كما ويقوم بدراسة الجدوى ومعرفة متطلبات
النظام ...الخ
أي انه يقوم بتحلیل النظام المراد بنائه تحلیل دقیق .
اما مھندسالبرمجیات فیقوم ببرمجة النظام وتھیئته كي يظھر في الصورة النھائیة..
أي يحتاج على الاقل الي شخصین كي يتم بناء النظام او البرنامج المطلوب.
انتظرونا في بقيت الدروس
