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

منتديات عائلة العراقي المكية الرسمي

تم إنشاء هذا الموقع ليبين تاريخ الأسرة التي تتشرف كغيرها من الأسر الكريمه في الأنتماء الى النسب الهاشمي ويعطي صورة واضحة عنها في القديم والحديث...
 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول
منتدي عائلة العراقي المكية يتمني لكم قضاء أسعد الأوقات واطيبها
جديد المنتدي تم انشاء مجلة خاصة بالمنتدي تصدر شهريا
علي جميع الأعضاء المستجدين التوجه لقسم الترحيب للتعريف بأنفسهم
رئيس المنتدي والمشرف العام يتقدمون بالشكر والتقدير لكل من ساهم في إنجاح المنتدي
رابط منتدي عائلة العراقي الأسلامي http://www.aleraqi.4t.com/
رابط منتدي بنات ال العراقي الرسمي http://www.bentaleraqi.4t.com/
مواضيع مماثلة
    ازرار التصفُّح
     البوابة
     الفهرس
     قائمة الاعضاء
     البيانات الشخصية
     اخر المواضيع
     ابحـث
    بحـث
     
     

    نتائج البحث
     
    Rechercher بحث متقدم
    المواضيع الأخيرة
    » الديوان الملكي: الأربعاء أول أيام عيد الفطر
    درس عن البرمجيات Emptyالإثنين أبريل 08, 2024 7:17 pm من طرف المتفائله

    » أجمل الأدعية
    درس عن البرمجيات Emptyالثلاثاء مارس 19, 2024 7:35 pm من طرف المتفائله

    » تهنئة بشهر الخير والبركه
    درس عن البرمجيات Emptyالأحد مارس 10, 2024 11:20 pm من طرف المتفائله

    » المؤشر ليوم الاثنين 11/ 3/ 2024م
    درس عن البرمجيات Emptyالأحد مارس 10, 2024 11:14 pm من طرف المتفائله

    » سهم نماء للكيماويات
    درس عن البرمجيات Emptyالأحد مارس 10, 2024 10:50 pm من طرف المتفائله

    » ودعي البوتوكس وعالجي التجاعيد بهذا الماسك الطبيعي!
    درس عن البرمجيات Emptyالأربعاء مارس 06, 2024 9:11 pm من طرف المتفائله

    » المؤشر ليوم الخميس 7/ 3/ 2024 م
    درس عن البرمجيات Emptyالأربعاء مارس 06, 2024 6:36 pm من طرف المتفائله

    » طريقة عمل كيكة البسبوسة الهشة
    درس عن البرمجيات Emptyالأربعاء مارس 06, 2024 6:17 pm من طرف المتفائله

    » طرق بسيطة وفعّالة لكيفية التخلّص من احتباس السوائل في الجسم
    درس عن البرمجيات Emptyالثلاثاء مارس 05, 2024 10:45 pm من طرف المتفائله

    دخول
    اسم العضو:
    كلمة السر:
    ادخلني بشكل آلي عند زيارتي مرة اخرى: 
    :: لقد نسيت كلمة السر
    تسجيل صفحاتك المفضلة في مواقع خارجية
    تسجيل صفحاتك المفضلة في مواقع خارجية reddit      

    قم بحفض و مشاطرة الرابط عائلة العراقي على موقع حفض الصفحات

    قم بحفض و مشاطرة الرابط منتديات عائلة العراقي المكية الرسمي على موقع حفض الصفحات
    احصائيات
    هذا المنتدى يتوفر على 100 عُضو.
    آخر عُضو مُسجل هو admin1 فمرحباً به.

    أعضاؤنا قدموا 32039 مساهمة في هذا المنتدى في 14959 موضوع

     

     درس عن البرمجيات

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




    ذكر
    عدد الرسائل : 3
    العمر : 40
    العمل/الترفيه : IT
    تاريخ التسجيل : 15/03/2012

    درس عن البرمجيات Empty
    مُساهمةموضوع: درس عن البرمجيات   درس عن البرمجيات Emptyالخميس مارس 15, 2012 2:41 pm

    بسم الله الرحمن الرحيم


    الدرس الأول: ماذا نعني بهندسة البرمجيات؟

    أهداف الدرس الأول:
    سوف نحاول خلال هذا الدرس الإجابة على هذه الأسئلة:

    ما هي هندسة البرمجيات؟
    من يشارك بها؟
    ما هي مكونات النظم البرمجية؟
    وكيف يتم بنائها؟


    مقدمة:

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

    المرجع :

    1- Shari Pfleeger, "Software Engineering - Theory and Practice", 2nd Edition



    ما هي هندسة البرمجيات؟

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

    يهتم الكيميائي بدراسة المواد الكيميائية (تركيبها، تفاعلاتها، والنظريات التي تحكم سلوكها).
    بينما المهندس الكيميائي يستخدم النتائج التي توصل إليها الكميائي لحل المشاكل التي يطلب منه إيجاد حل لها.

    من وجهه نظر الكيميائي الكمياء هي موضوع الدراسة بحد ذاتها.

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

    وبنفس الفكرة يمكن النظر إلى علم الحوسبة computer science حيث يكون تركيزنا على الحواسيب ولغات البرمجة لدرستها وتطويرها في حد ذاتها.
    أو يمكن النظر إليها والتعامل بها على أنها أدوات نستخدمها عند تصميم وتطوير حل لمشكلة ما تواجهنا أو الآخرين.

    مهندس البرمجيات Software Engineer يعتبر أن الكمبيوتر هو أداة لحل المشاكل problem-solving tool.
    وعليه أن يستخدم معلوماته حول الحاسوب وعلم الحوسبة للمساعدة في حل المشكلة التي يطلب منه إيجاد حل لها.



    شكل (1)



    ولكن ومن المهم أن نتذكر أن عملية كتابة البرامج تعد فن Art بقدر ما هي علم، لماذا؟

    لأنه يمكن لأي شخص لديه معرفة كافية بأحد لغات برمجة الحاسوب hacker أن يكتب برنامج ليؤدي مهمة محددة، لكن الامر يتطلب مهارة ومعرفة مهندس برمجيات محترف لكتابة برنامج أكثر تناسقا ووضوحا ،وأسهل في الصيانة، ويقوم بالمهمة المطلوبة منه بفعالية ودقة أكبر.

    أي أن، هندسة البرمجيات تعنى بتصميم وتطوير برامج ذات جودة عالية.

    من يشارك في هذه العملية؟

    المشاركون في عملية صناعة البرنامج، عادة ما يندرجون تحت ثلاث مجموعات:

    الزبون Customer: وهو الشركة (أو الشخص) الممولة لمشر وع تطوير البرنامج المطلوب

    المستخدم User: الشخص (أو مجموعة الاشخاص ) الذي سوف يقوم فعلا باستعمال البرنامج، والتعامل معه مباشرة.

    المطور Developer: وهو الشركة (أو الشخص) الذي سوف يقوم بتطوير البرنامج لصالح الزبون.

    الشكل التالي يظهر العلاقة بين الفئات الثلاثة السابقة:



    شكل (2)



    مكونات النظام:

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

    أي نظام هو عبارة عن مجموعة من الكائنات objects والنشاطات activities بالإضافة إلى وصف للعلاقات التي تربط تلك الكائنات والنشاطات معا. مع تعريف قائمة المدخلات المطلوبة والخطوات المتبعة والمخرجات الناتجة لكل نشاط.

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

    1. النشاطات والكائنات: النشاط هو عميلة تحدث بالنظام وعادة ما يوصف كحدث يتم من خلال حافز. النشاط يغير شئ ما إلى آخر بتغير خواصه (صفاته)
    هذا التغير يمكن أن يعنى تحويل أحد عناصر البيانات من موقع إلى آخر، أو تعديل قيمته إلى قيمة مختلفة.

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

    2. العلاقات وحدود النظام Relationships and System Boundary
    بعد تعريف الكائنات والنشاطات جيدا، يمكن أن نربط بين كل كائن والنشاطات المتعلقة به بدقة. تعريف الكائن يتضمن الموقع الذي سوف ينشأ به(نعض العناصر يمكن أن تكون موجودة بملف سبق انشاءه، والبعض قد يتم انشاءه خلال حدث ما)، والهدف من انشاءه(بعض الكائنات تستخدم من قبل نشاط واحد فقط والبعض يمكن أن يستعمل من قبل نظم آخرى كمدخلات Input) , لذا يمكن أن نعتبر أن لنظامنا حدود boundary بعض الكائنات بمكن أن تعبر هذه الحدود إلى داخل النظام، والبعض الآخر هي مخرجات من نظامنا ويمكن أن ترحل إلى نظم آخرى.

    بهذا يمكن أن نعرف النظام A System على أنه تجمع من:

    · مجموعة من الكائنات entities.
    · مجموعة من الانشطة activities.
    · وصف للعلاقات بين الكائنات والانشطة Relationship.
    · تعريف لحدود النظام boundary.


    كيف نبي نظام؟

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

    1. عقد اجتماع مع العميل لتحديد متطلباته، هذه المتطلبات تشمل وصف النظام بجميع مكوناته التي شرحنا.

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

    3. بعد موافقة العميل على التصميم يتم العمل على وضع التصاميم التفصيلية لأجزاء المشروع.

    4. كتابة البرنامج.

    5. اختباره، واعادة مراجعة المتطلبات التي وضعها العميل للتأكد من تحققها في البرنامج.
    6. تسليم النظام إلى العميل.

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

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


    الدرس الثاني: دورة حياة تطوير المشروع



    أهداف الدرس الثاني:

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

    مقدمة:

    عملية بناء أي منتج تمر بعدة مراحل يطلق عليها عادة "دورة الحياة" Life Cycle، ومما تعلمنا في الدرس السابق فإن دروة حياة تطوير أي نظام برمجي Software development life cycle تتضمن المراحل التالية:

    1. تحديد وتعريف المتطلبات Requirements analysis and definition
    2. تصميم النظام System design
    3. تصميم البرنامج Program design
    4. كتابة البرنامج (تطويره) Program implementation
    5. أختبار وحدات البرنامج Unit testing
    6. أختبار النظام system testing
    7. تسليم النظام system delivery
    8. الصيانة maintenance

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

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


    أنماط دورة الحياة Lifecycle Models:


    النموذج الانحداري Waterfall Model

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



    شكل (1)


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

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

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

    باختصار،النموذج الانحداري سهل الفهم و بسيط في إدارته. لكن مميزاته تبدأ في التداعي بمجرد أن يزداد تعقيد المشروع.


    التطوير على مراحل Phased Development

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

    الاجابة بالطبع لا.

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

    يوجد عدة طرق يمكن بها تنظيم عملية تطوير إصدارات البرنامج، ومن اشهرها:

    · النموذج التزايدي Incremental model

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



    · النموذج التكراري Iterative model

    هذه المرة يتم تسليم برنامج بكامل الوظائف من أول مرة، ولكن يتم تعديل وتغيير بعض تلك الوظائف مع كل إصدار من البرنامج.



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


    النموذج اللولبي Spiral Model

    وهو شبيه لدرجة كبيرة إلى النموذج التزايدي والتكراري، ولكن فيه يتم دمج فعاليات التطوير مع إدارة المخاطر risk من إجل التحكم بها وتقليلها.

    يبدأ النموذج اللولبي بمتطلبات العميل مع خطة العمل المبدئية (الميزانية، قيود النظام، والبدائل المتاحة). ثم يتقدم خطوة إلى الامام بتقدير المخاطر وتمثيل البدائل المتاحة قبل تقديم ما يعرف بـ "وثيقة العمليات" Concept of Operations التي تصف وبشكل عام (بدون الدخول في التفاصيل) كيف يجب على النظام أن يعمل. بعدها يتم تحديد وتدقيق المتطلبات للتأكد من أنها تامة ودقيقة إلى أقصى حد ممكن.

    بذلك تكون وثيقة العمليات هي المنتج من الطور الأول، و المتطلبات هي المنتج الاساسي من الطور الثاني. وفي الطور الثالث تتم عملية التصميم، أما الاختبار فيتم خلال الطور الرابع.

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

    صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
    منتديات عائلة العراقي المكية الرسمي :: المنتدى العام :: المنتدى التقني :: العـــــــــــلوم والتقنية الحــديثة-
    انتقل الى: