Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 14

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

‫‪ ‬ما هي الهندسة ؟‬
‫هي التطبيق النظامي للمعرفة العلمية لخلق وبناء حلول مجدية فنيا واقتصاديا لمشاكل علمية لخدمة البشرية ‪.‬‬
‫‪ ‬ما هي هندسة البرمجيات ؟‬
‫هي مجموعة من ثالثة عناصر هامة متفاعلة مع بعضها البعض تستخدم لتطوير البرمجيات وهي ‪:‬‬
‫‪ /1‬الطرق ‪Methods‬‬
‫‪ /2‬األدوات ‪Tools‬‬
‫‪ ‬ماهو تعريف البرمجيات ؟‬
‫‪ /1‬هي مجموعة من برامج الكمبيوتر التي تكون نظام ما‬
‫‪ /3‬اإلجراءات النظامية ‪Procedures‬‬
‫‪ /2‬البرمجيات هي أشياء غير ملموسة أي ليس لها وزن وال حجم طبيعي وال خواص طبيعية‬
‫أنواع البرمجيات ؟‬ ‫‪‬‬
‫أساسا ً تنقسم البرمجيات لثالثة أنواع هي ‪:‬‬
‫‪ .1‬برمجيات النظم ‪system s/w‬‬
‫‪ .2‬برمجيات االستخدام ‪utility program‬‬
‫‪ .3‬برمجيات التطبيقات ‪application s/w‬‬
‫ماهى خواص ومواصفات البرمجيات ؟‬ ‫‪‬‬
‫‪ /1‬أن البرمجيات ليست لها خواص طبيعية ال تخضع لقوانين الطبيعة لتطويرها ذلك حدا من عددية المؤشرات الرئيسية والقيود‬
‫األساسية لتصميم وتنفيذ منتج البرمجيات‬
‫‪ /2‬البرمجيات ال تتقادم وال تتناقص قيمتها بمرور الزمن مثل األجهزة‬
‫‪ /3‬سبب فشل البرمجيات دائما ً هو أخطأ في المتطلبات وأخطأ في التصميم و أخطأ في التنفيذ وليس النظام‬
‫‪ /4‬البرمجيات تطور وتهندس وال تنتج بالمعنى التقليدي كما هو في األجهزة فمعظم البرمجيات تبنى للزبون أكثر من تجميعها من مكونات‬
‫موجودة ‪.‬‬
‫‪ /5‬البرمجيات هي عنصر منطقي في النظام وليست عنصر طبيعي‬
‫‪ /6‬البرمجيات قد تتدهور نتيجة للتغيرات المستمرة في المتطلبات ‪.‬‬
‫ماهى مشاكل البرمجيات ؟‬ ‫‪‬‬
‫هنالك عدد من المشاكل تعيق عملية تطوير البرمجيات نذكر منها ‪:‬‬
‫‪ /1‬تقديرات التكلفة والجدولة دائما ً غير دقيقة وغير مضبوطة مثل(‪)price – to – win‬‬
‫‪ /2‬إنتاجية مطوري البرمجيات عادة ال تتماشى مع متطلبات الزبون (مثال ‪ :‬عدم وجود معيار دقيق لقياس قدرة المبرمجين )‬
‫‪ /3‬نوعية البرمجيات المنتجة دائما ً غير مالئمة وغير مطابقة لمتطلبات الزبون ومن هنا ظهرت ما يسمي بازمات البرمجيات (‪s/w‬‬
‫‪)crisis‬وهي التي تعني تخطي المشروع التكلفة الموضوعة والزمن الموضوع لتنفيذ المشروع وعدم اإليفاء بمتطلبات الزبون ‪.‬‬
‫ماهي ازمات البرمجيات (‪ )s/w crisis‬؟‬ ‫‪‬‬
‫تعني تخطي مشروع البرمجيات التكلفة الموضوعة والزمن الموضوع لتنفيذ المشروع وعدم اإليفاء بمتطلبات الزبون ‪.‬‬
‫ماهى أسباب فشل معظم نظم البرمجيات ؟‬ ‫‪‬‬
‫‪ /1‬تخطي التكلفة بأضعاف ما هو مقدر لها قد تم ممارسته بكثرة حتى صار شيء عادي‬
‫‪ /2‬تخطي الجدولة الزمنية إلكمال المشروع بشهور و أحيانا بسنوات صار أيضا شيء مألوفا ً‬
‫‪ /3‬لم يبذل جهد مقدر لتطوير إنتاجية مطوري البرمجيات‬
‫‪ /4‬معدل األخطاء المتزايد في نظم البرمجيات أدي لعدم رضا الزبون واقتناعه بمنتج البرمجيات ‪.‬‬
‫‪/5‬عدم توفر الوقت الكافي لجمع البيانات المطلوبة لعملية تطوير البرمجيات أي شح البيانات التاريخية ‪.‬‬
‫‪ /6‬عدم وضوح متطلبات الزبون وعدم تعريفها بوضوح‬
‫‪ /7‬عدم الوصول إلي إنتاجية محددة لم تمكن من تقييم األدوات أو الطرق والمعايير المطلوبة ‪.‬‬
‫اسباب فشل معظم نظم البرمجيات كيف يمكن تصحيحها ومعالجتها؟‬ ‫‪‬‬
‫باستخدام تقنيات هندسة البرمجيات التى تساهم تطور البرمجيات كذلك أنه صار هنالك‬
‫‪ /1‬تضافر شامل للطرق بكل مراحل تطوير البرمجيات ‪.‬‬
‫‪ /2‬صارت هنالك أدوات جيدة ألتمتة هذه الطرق‬
‫‪ /3‬كما أنه هنالك تقنيات ممتازة لضمان جودة البرمجيات‬
‫‪ /4‬أيضا هنالك تنسيق تام للرقابة واإلدارة العلمية علي مشاريع البرمجيات‬
‫‪1‬‬
‫هندسة البرمجيات هى مجموعة من ثالث عناصر متفاعلة مع بعضها ‪ ,‬هى الطرق واالدوات واالجراءات تحدث عن‬ ‫‪‬‬
‫الطرق ؟ مبينا أمثلة لها‬
‫‪ ‬الطرق في هندسة البرمجيات هي توفير الكيفية التقنية لبناء البرمجيات والطرق تشمل اآلتي ‪:‬‬
‫‪ /1‬تخطيط مشروع البرمجيات‬
‫‪ /2‬تقدير تكلفة و جدولة المشروع‬
‫‪ /3‬تعريف وتحليل متطلبات برمجيات النظام‬
‫‪ /4‬تصميم هياكل البيانات ‪data structures‬‬
‫‪ /5‬معمارية البرامج وطرق الخوارزميات‬
‫‪ /6‬الترميز ‪Coding‬‬
‫‪ /7‬االختبارات ‪testing‬‬
‫‪ /8‬الصيانة ‪Maintenance‬‬
‫هذه الطرق عادة تفرض مجموعة من المعايير لضمان نوعية البرمجيات ‪.‬‬
‫ماهى اهمية التخطيط لمشاريع البرمجيات؟‬ ‫‪‬‬
‫توضيح األهداف‬ ‫‪/1‬‬
‫توضيح االحتياجات والمتطلبات للمشروع‬ ‫‪/2‬‬
‫توضيح القيود علي المنتج والمخاطرة‬ ‫‪/3‬‬
‫تحديد حجم المشروع‬ ‫‪/4‬‬
‫تعريف المنتجات الرئيسية والنتائج‬ ‫‪/5‬‬
‫كيف يتم تقدير حجم مشروع برمجيات ولماذا؟‬ ‫‪‬‬
‫يتم قياس حجم البرمجيات عادة ب ‪:‬‬
‫‪.Line of codes (LOC) ‬‬
‫‪Function point (FP) ‬‬
‫‪‬الن الجهد والتكلفة والزمن المطلوبين لتطوير مشاريع البرمجيات تعتمد كلها علي حجم منتج البرمجيات ‪.‬‬
‫‪ ‬ألن أغلب خوارزميات تقديرات التكلفة تستخدم الحجم كمدخل والخطأ في تقديرات الحجم ينتج عنه الخطأ في تقدير التكلفة ‪.‬‬
‫‪ -‬توجد صعوبة في تقدير الحجم المناسب وذلك لعدم وجود حجم محدد لكل تطبيق إلنجاز متطلب معين ‪ .‬ومن هنا جاءت استخدامات‬
‫خوارزميات تقدير الحجم فمعرفة الحجم تمكن من تقدير التكلفة والجدولة والتوظيف المطلوب ‪.‬‬
‫التقدير اإلحصائي للحجم‬ ‫‪‬‬
‫ليس هنالك مقياس محدد ومضبوط في حجم البرمجيات ولكن تستخدم بكثرة السطور المصدرية )‪ line of codes(loc‬والنقاط الوظيفية‬
‫)‪Function point (FP‬‬
‫يعتمد تقدير الحجم اإلحصائي علي تفكيك النظام إلي عدة وظائف والنظر في كل وظيفة منها بالتالي للحصول إحصائيا ً علي التقديرات‬
‫اإلجمالية لحجم كل وظيفة واالنحراف المعياري للتقدير وبهذه الطريقة يمكن تحديد عدم التأكد من األحجام المقدرة في المكونات الفردية‬
‫للنظام والحصول علي تقدير مناسب لكل نظام‬
‫ماهى مصادر المعلومات لتقدير الحجم ؟‬ ‫‪‬‬
‫‪ / 1‬مجموع احجام المكونات‬
‫‪ /2‬وحدات في وظائف مماثلة تم عملها من قبل ‪ ،‬يتم النظر الي احجام منتجات البرمجيات من قواعد منتجات البرمجيات الخبيرة فلكل‬
‫مكون (‪ )i‬والتي هي الوظيفة المراد تقدير حجمها توجد ثالثة تقديرات هي ‪-:‬‬
‫اقل عدد من االسطر ونرمز له ب ‪ ai‬واكبر عدد من االسطر ونرمز له ب ‪ bi‬والعدد االكثر احتماال“ ونرمز له ب ‪ mi‬ومن هنا يمكن‬
‫تقدير الحجم المتوقع ‪ai+4mi+bi/6‬‬
‫واالنحراف المعياري هو ‪bi-ai/6‬‬
‫حيث ‪ i‬عدد المكونات للنظام ‪i=1,2,3,….n‬‬
‫ماهى أهمية تقدير التكلفة لمشروع البرمجيات ؟‬ ‫‪‬‬
‫تساعد في تخطيط المشروع‬ ‫‪.1‬‬
‫زيادة التكلفة وتخطي الزمن المقدر يسيران جنبا“ الي جنب‬ ‫‪.2‬‬
‫كل مشروع يجب ان تكون له تكلفة وزمن محدد‬ ‫‪.3‬‬
‫التكلفة المتفائلة تؤدي الي صعوبة منافسة والتواضعة لها مشاكلها‬ ‫‪.4‬‬
‫ماهى الصعوبات التى تواجة تقدير التكلفة وكيف يمكن حلها؟‬ ‫‪‬‬
‫‪ ‬من الصعب تقدير تكلفة حقيقة ومضبوطه وذلك لوجود عدد كبير من العوامل الغير معروفه وغير مرئية في مرحلة التخطيط ‪ .‬بعض‬
‫بيوتات البرمجة تستخدم سلسة لتقديرات التكلفة ‪-:‬‬
‫‪ /1‬تقدير اولي في مرحلة التخطيط‬
‫‪2‬‬
‫‪ /2‬تقديم تقدير محسن لمراجة المتطلبات ‪ /3‬تقديم تقدير نهائي عن مراجعة التصميم االولي‬
‫كل تقدير يكون مبني علي معلومات اضافية في بعض االحيان يمول الزبون مرحلة التحليل ومرحلة التصميم االولية تكون هناك عقودات منفصلة‬
‫وذلك للحصول بقدر االمكان علي تكلفة وجدولة زمنية دقيقة ومضبوطه ‪.‬‬
‫ماهى طرق تقدير التكلفة والموارد مبينا مثال لذلك؟‬ ‫‪‬‬
‫‪ /1‬بنية تجزئة العمل ‪WORK BREAKDOWN STRUCTURE‬‬
‫وهي تعتمد علي مخطط هرمي يوضح االجزاء الضروية في النظام ‪ ،‬وهذه الطريقة يمكن ان تبين شيئين ‪-:‬‬
‫‪ ‬اما الترتيب الهرمي للمنتج (يعرف مكونات المنتج وبوضوح الطريقة التي يتم عن طريقها ربط هذه المكونات)‬
‫‪ ‬الترتيب الهرمي للمعالجة (يوضح نشاطات العمل او العالقات بين هذه النشاطات ‪ ،‬وتقدير الكلفة يتم بتحديد التكاليف والمكونات الفردية‬
‫للمخطط وبعد ذلك تجمع تلك التكاليف العطاء التكلفة الكلية للنظام ‪ .‬ويمكن استخدام كال المخططين الخاص بالمنتج والمعالجه)‬
‫‪ /2‬الطريقة التحتية الفوقية ‪DOWN/UP APPROACH‬‬
‫تركز علي تقديرات تكلفة كل جزء من النظام علي حدة أو النظم الفرعية وبعد ذلك تجمع هذه التقديرات أي تركز علي التكلفة المرتبطة‬
‫بتطوير مكونات النظم الفرعية لكنها تفشل في وضع اختبار للتكاليف اإلدارية وتكاليف ضبط الجودة ‪.‬‬
‫‪ / 3‬طريقة دلفي ‪DELPHI TECHNIQUE‬‬
‫يعطي المنسق كل فرد وثيقة تعريف النظام ويدون كل فرد التقديرات التي وصل اليها ‪ .‬يلخص المنسق ما تم عمله ويوزع مره اخري المقدرين ‪،‬‬
‫يجري المقدرين تقديراتهم مرة واخري ويتم تكرار العملية عدة مرات حتي الوصول الي تقدير متفق عليه ‪.‬‬
‫‪ /4‬طريقة دلفي القياسية ‪STANDARD DELPH‬‬
‫اختالفها عن الطريقة السابقة ان هناك اتصال بين اعضاء الفريق فيما بينهم ‪ ،‬بعد دراسة وثيقة تعريف النظام ‪ ،‬يجتمع اعضاء الفريق مع بعضهم‬
‫لمناقشة مهام التقدير ‪ ،‬يكمل المقدرين تقديراتهم بدون ذكر اسماءؤهم ‪ .‬بعد اعداد ملخص التقديرات يتم اجتماع لمناقشة نقاط الخالف ‪ .‬ويكرر‬
‫المقدرين هذه العملية عدة مرات حتي الوصول الي تقدير متفق علية ‪.‬‬
‫‪ /5‬نمازج التكلفة الكلية ()‪COCOMO (CONSTRUCTIVE COST MODEL‬‬
‫وهي تقنية تحتية فوقية لتقدير التكلفة ‪ ،‬هومجموع تكلفة الوحدات القياسية والنظم الفرعية التي تكون النظام واشهر هذه الخوارزميات هي طرقة‬
‫‪constructive cost model‬‬
‫‪ /6‬طريقة تقدير التكلفة بالقياس ‪estimation by analogy‬‬
‫هي تقدير التكلفة المشروع الجديد بقياسه مع مشروع او مشاريع تم تطويرها من قبل في نفس المجال‬

‫‪ /7‬تقدير التكلفة للكسب ‪price to win‬‬


‫وهي تحسيب التكلفة التي يعتقد أنها ضرورية لكسب العطاء‬
‫‪ /8‬تقديرات باركنسون ‪Parkinson‬‬
‫هذا يعني تقدير التكلفة بناء علي تكلفة المواد الموجودة أي إذا كانت تكلفة الموارد ‪60‬مليون في الشهر وقدر لهذا المشروع ‪ 6‬أشهر تقدير‬
‫التكلفة = ‪60*6‬‬
‫ماهى أهمية تقدير الجدولة الزمنية لمشروع البرمجيات ؟‬ ‫‪‬‬
‫أهمية الجدول الزمني هي لعمل موازنة بين الجدولة والتطوير فالصعوبة تكمن في عدم التأكد دائما‪ .‬ونتيجة لعملية التكامل بين الوظائف‬
‫والنشاطات يتم في البداية عمل جدوله أولية وعند التقدم في المشروع يتم إدخال المعلومات الجديدة لتعديل الجدولة فجدولة المشروع هي متى‬
‫تبدأ النشاطات أو المهام ومتى تنتهي والتنسيق بين المهام المتوازية‬
‫فالجدولة تعتمد على‬
‫‪ -1‬حجم المشروع‬
‫‪ -2‬كم من الجهد مطلوب لتطوير المشروع‬
‫‪ -3‬الموازنة بين طول جدول التطوير والجهد المطلوب لتطوير المنتج‬
‫ماهى تقنيات الجدولة ؟‬ ‫‪‬‬
‫‪ /1‬طريقة المعالم األساسية وهي طريقة بسيطة ومناسبة للمشاريع الصغيرة وليس هنالك موانع للتداخالت بين النشاطات‬
‫‪ /2‬طريقة ‪ Gantt‬وهي للمشاريع الصغيرة وتوضح بسهولة تطابق النشاطات ويمكن أن تستخدم لتقدير الموارد ومتطلبات الميزانية مقابل‬
‫الزمن‬
‫‪ /3‬طريقة ‪PERT CPM Prpject Evalution and Review Techniques /Critcal Path Method‬‬
‫هندسة البرمجيات هى مجموعة من ثالث عناصر متفاعلة مع بعضها ‪ ,‬هى الطرق واالدوات واالجراءات تحدث عن‬ ‫‪‬‬
‫االدوات ؟ مبينا أمثلة لها‬
‫أدوات هندسة البرمجيات توفر األتمتة أو شبه األتمتة لهذه الطرق توجد األن مجموعة من األدوات التي تصاحب كل واحدة منها واحدة من الطرق‬
‫المذكورة أعاله فعملية تكامل هذه األدوات أدت إلي نظام سمي ‪ Computer Aided Soft ware Engineering CASE‬والتي تحوي قواعد‬
‫البيانات لهذه األدوات وهي المادة التي تضبط بعض الطرق واألدوات والتي تمكن من التطوير المنطقي للبرمجيات مثال ذلك ‪:‬‬
‫‪ /1‬تعريف تسلسل تطبيق الطرق‬
‫‪ /2‬المعالم األساسية التي تساعد مدير المشروع من تتبع التقدم في المشروع (بداية معلم ‪ ،‬نهاية معلم ‪Milestones )...‬‬
‫‪3‬‬
‫‪ /3‬الرقابة التي تساعد في ضمان النوعية للبرمجيات‬
‫ماهو تعريف المشروع ؟‬ ‫‪‬‬
‫المشروع في مجال األعمال والعلوم هو مؤسسة تعاونية‪ ،‬كثيرا ما ينطوي على بحث أو تصميم‪ ،‬وهو مخطط بعناية لتحقيق هدف معين‪.‬‬
‫ماهو مشروع البرمجيات ؟‬ ‫‪‬‬
‫هو نشاط مؤقت يتصف بأنه له ‪:‬‬
‫‪ /3‬ضوابط محددة‬ ‫‪ /2‬أهداف محددة‬ ‫‪ /1‬تاريخ بداية محددة‬
‫‪ /6‬جدولة محددة‬ ‫‪ /5‬ميزانية محددة‬ ‫‪ /4‬مهام محددة‬
‫‪ /7‬تاريخ نهاية محددة‬
‫كيف يتم تخطيط وادارة مشاريع البرمجيات ؟‬ ‫‪‬‬
‫يتم التخطيط واالدراة فى ثالث مراحل كاالتى ‪-:‬‬
‫المرحلة االولى‬
‫‪ /3‬ادارة مشروع البرمجيات‬ ‫‪ /2‬مدير المشروع‬ ‫‪ /1‬ماهو المشروع‬
‫‪ /4‬التخطيط وعدم التخطيط للمشروع ‪ /5‬المهام االدارية لمشروع ‪ /6‬المشاكل االدارية في مشاريع البرمجيات‬
‫المرحلة الثانية (النشاطات الرئيسية للتخطيط)‬
‫‪ / 3‬تخطيط لبنية المشروع التنظيمية واالشكال االدارية‬ ‫‪ /2‬تعريف النشاطات‬ ‫‪ /1‬تعريف المنتج‬
‫‪ /5‬تقدير حجم المشروع ‪ /6‬تقدير مستوي التوظيف في المشروع‬ ‫‪ /4‬تقديرات التكلفة‬
‫‪ /8‬تقدير تكلفة العناصر االخري‬ ‫‪ /7‬تقدير الجدول الزمني للمشروع‬
‫المرحلة الثالثة (بعض العوامل التي يجب ان توضع في االعتبار عند تخطيط مشروع البرمجيات)‬
‫‪ /2‬مخاطر في مشروع البرمجيات‬ ‫‪ /1‬تخطيط لعملية تطوير البرمجيات‬
‫‪ /4‬كتابة تقارير التقدم في المشروع‬ ‫‪ /3‬ضبط المشروع‬
‫ماهى مهام مدير مشروع البرمجيات؟‬ ‫‪‬‬
‫‪ /1‬يقوم بتحضير خطة المشروع‬
‫‪ /2‬يحدد االدوار في المشروع ويعين االشخاص لتلك االدوار‬
‫‪ /3‬يضع الوصف الوظيفي لكل العاملين‬
‫‪ /4‬مراقبة سير عمل المشروع لقياس التقدم في تنفيذ المشروع‬
‫‪ /5‬كتابة تقرير دوري للتقدم في المشروع لالدارة العليا‬
‫‪ /6‬اتخاذ القرارات الفنية والرئيسية‬
‫كيف يتم تقدير االفراد فى مشروع البرمجيات؟‬ ‫‪‬‬
‫تقديرات مستوى التوظيف للمشروع تعتمد‬
‫‪ /1‬عددية ونوعية األفراد المطلوبين خالل فترة تطوير المشروع غير ثابتة‬
‫‪ /2‬التخطيط والتحليل يتم بواسطة مجموعة صغيرة والتصميم المعماري يتم بواسطة مجموعة أكبر من ذلك و التصميم التفصيلي يتم‬
‫بواسطة مجموعة أكبر من ذلك والتنفيذ واالختبار يتم بواسطة مجموعة أكبر‬
‫‪ /3‬المرحلة األولى من الصيانة يمكن أن تتطلب مجموعة كبيرة تتناقص بعد فترة قصيرة في غياب التحسين الرئيسي والتكييف تظل عددية‬
‫مهندسي البرمجيات صغيرة أما اختبار النظم الكبيرة فيحتاج إلي زمن وجهد كبير وهنالك إشكالية تعرف بإشكالية الرجل الشهر ‪Man /‬‬
‫‪Month‬‬
‫ماهى تقنيات تقدير التوظيف ؟‬ ‫‪‬‬
‫هنالك عدة تقنيات لتقدير التوظيف أهمها طريقة تحليل النظام فيها يتم تفكيك النظام إلي أدنى حد من النظم الفرعية وبعد ذلك يتم إرجاع‬
‫التشابه لكل نظام فرعي مع نظام فرعي مشابه إليه في مشروع برمجيات مشابه تم إنجازه من قبل يتم بعد ذلك جمع تقنيات ثم بعد ذلك تجميع‬
‫تقديرات الوحدات المختلفة وإيجاد الحجم الكلي لمشروع البرمجيات ويتم استخدام الخبرات الشخصية لتلك النظم الفرعية التي ليس لها‬
‫تشابه للمشاريع السابقة ومن التجارب وجدت نسب التوظيف أو الجهد‬
‫فيما تنحصر المشاكل اإلدارية؟‬ ‫‪‬‬
‫‪ /1‬مشاكل تخطيط‬
‫‪ /2‬مشاكل تنظيم (تنظيم العاملين بالمشروع)‬
‫‪ /3‬مشاكل إدارة وتوجيه (توجيه وادارة العاملين)‬
‫‪ /4‬مشاكل مراقبة وتحقق‬
‫‪ /5‬مشاكل توظيف‬
‫ماهى حلول هندسة البرمجيات للمشاكل االدارية التى تواجة مشاريع البرمجيات؟‬ ‫‪‬‬
‫تدريب وتعليم اإلدارة العليا ومدراء المشاريع ومهندسي البرمجيات‬ ‫‪1/‬‬
‫‪ /2‬العمل علي استخدام مواصفات ومعايير هندسة البرمجيات واإلجراءات والتوثيق‬
‫‪ /3‬تحليل المشاريع السابقة واستنباط الطرق الفعالة منها‬
‫‪4‬‬
‫‪ /4‬التركيز علي تطوير تكلفة دقيقة وتقديرات جدولة مقبولة لإلدارة والزبائن‬
‫‪ /5‬اختيار مدراء المشاريع يجب أن يبنى على القدرات اإلدارية أكثر من القدرات الفنية‬
‫‪ /6‬تعريف األهداف النوعية المطلوبة (من مرحلة تعريف المتطلبات (‬
‫‪ /7‬تطبيق معايير األداء الوظيفي علي مدراء مشاريع البرمجيات‬
‫كيف يتم تخطيط بنية المشروع التنظيمية والشكل اإلداري للمشروع؟‬ ‫‪‬‬
‫كل مشروع برمجيات يتكون من ‪:‬‬
‫‪ /1‬بنية تنظيمية للمشروع (الشكل التنظيمى لمشاريع البرمجيات)‬
‫‪ /2‬بنية تنظيمية للفريق‬
‫‪ /3‬آلية لتحديد وتقييم ومتابعة نشاطات العمل‬
‫ماهوالشكل التنظيمى لمشاريع البرمجيات؟‬ ‫‪‬‬
‫هنالك ثالثة اشكال او بنيات تنظيمية لمشاريع البرمجيات وهي ‪:‬‬
‫‪ /1‬الشكل المشروعي (‪ )PORJECT FORMAT‬وهو التكوين الذي يعني تكوين فرق مهندسي البرمجيات لتنفيذ المشروع من‬
‫البداية حتى النهاية اي كل مراحل تطوير النظام ‪.‬‬
‫‪ /2‬الشكل الوظيفي (‪ )FUNCTIONAL FORMAT‬والوظيفة هي شكل رئيسي أو مجموعة من النشاطات المستمرة مثال ذلك في اإلدارة‬
‫الوظائف الرئيسية وهي ‪ :‬التخطيط والتنظيم والتوجيه والرقابة‬
‫‪ ‬إدارة المشاريع هي مجموعة الوظائف التي تغطي كل مدة المشروع مثال ذلك حساب تكلفة المشروع أو تأمين قدرة البرمجيات ‪....‬الخ‪d‬‬
‫‪ ‬التنظيم الوظيفي للمشروع إذن هو تكوين المشروع الذي يبنى حول التنظيم الوظيفي للمشروع أو مجموعة مماثلة لتنظيمات الوظيفية‬
‫والمشروعية يتم تنفيذها خالل مروره من تنظيم وظيفي إلي آخر خالل مرور المشروع من مراحل دورة حياة النظام ‪.‬‬
‫‪ ‬وكل وظيفة أو مرحلة من مراحل المشروع ينفذها فريق من المبرمجين ونتائج العمل تمر من فريق إلي آخر والشكل الوظيفي يحتوي‬
‫عادة علي ثالثة فرق عمل وهي ‪:‬‬
‫‪ /3‬فريق االختبارات والصيانة‬ ‫‪ /2‬فريق التصميم والتنفيذ‬ ‫‪ /1‬فريق التحليل‬
‫‪ /3‬الشكل المصفوفي (‪ : )MATRIX FORMAT‬كل وظيفة من الوظائف يكون لها فريق إدارة خاص بها ومجموعة متخصصين لهذه‬
‫الوظيفة والعاملين في تنظيمات وظيفية مختلفة يتم دمجهم مع بعضهم مؤقتا ً تحت إشراف مدير واحد وهو تكوين وسطي بين التكوينين‬
‫السابقين ‪.‬‬
‫ماهى البنية التنظيمية للفريق (أشكال تكوينات فرق مهندسي البرمجيات)؟‬ ‫‪‬‬
‫كل فريق من فرق مهندسي البرمجيات البد أن يكون له تكوين داخلي والتكوين األمثل يعتمد علي األتي ‪:‬‬
‫‪ /1‬طبيعة المشروع‬
‫‪ /2‬طبيعة المنتج‬
‫‪ /3‬مواصفات أعضاء الفريق‬
‫التكوينات األساسية تشمل األتي ‪:‬‬
‫‪ /1‬الفريق الديموقراطي ‪ :DEMOGRATEC TEAM‬كل عضو في الفريق يشارك في القرارات ورئاسة الفريق تكون بالتناوب والخطوات يتم‬
‫مناقشتها بوضوح وهذا التكوين يناسب المشروعات الطويلة‬
‫‪ /2‬فريق مهندسي البرمجيات ‪:CHIEF PROGRAMMER‬يمتاز بالتكوين العالي ويقسم العمل بواسطة رئيس المبرمجين والرئيس يصمم المنتج‬
‫ويتخذ القرارات و الفريق يتكون عادة من ‪ 5-2‬مبرمجين‬
‫‪ /3‬الفريق الهرمي ‪ :HIERACHICAL TEAM‬هو تكوين وسط بين التكوينين السابقين ويناسب منتج برمجيات هرمي مثل نظم المعلومات‬
‫اإلدارية ‪.‬‬

‫‪5‬‬
‫كيف يتم وضع خطة إدارة ورقابة نشاطات األفراد (آلية لتحديد وتقييم ومتابعة نشاطات العمل) ؟‬ ‫‪‬‬
‫أحسن طريقة لالدارة هي اإلدارة باألهداف تنحصر في األتي ‪:‬‬
‫‪ /1‬يتم وضع وصف محدد وظيفي لكل فرد من أفراد المجموعة‬
‫‪ /2‬كل فرد يضع هدف محدد له والمدة الزمنية التي يستوفي فيها هذا الهدف‬
‫‪ /3‬تكتب هذه األهداف المختلفة وتسلم لرئيس المجموعة ويكون زمن تنفيذ هذه األهداف في فترة من شهر إلي شهرين وفي نهاية المدة يتم‬
‫محاسبة كل فرد بإنجازه وهذه تسمى اإلدارة باألهداف ‪.‬‬
‫تعريف وتحليل المتطلبات‬
‫دورة حياة تطوير نظم البرمجيات‬ ‫‪‬‬
‫تنقسم دورة حياة تطوير نظم البرمجيات إلى مراحل متتالية وليست متطابقة والمراحل هي ‪:‬‬
‫‪ .1‬مرحلة تعريف المتطلبات ‪s/w requirement definition‬‬
‫‪ .2‬مرحلة تحليل المتطلبات ‪s/w requirements analysis‬‬
‫‪ .3‬مرحلة التصميم المعماري ‪Architectural design‬‬
‫‪ .4‬مرحلة التصميم التفصيلي ‪Detail design‬‬
‫‪ .5‬مرحلة التنفيذ أي كتابة البرامج ‪Implementation‬‬
‫‪ .6‬مرحلة االختبارات ‪Test phase‬‬
‫‪ .7‬مرحلة التشغيل ‪Transfer phase‬‬
‫‪ .8‬مرحلة الصيانة ‪Maintenance‬‬
‫مرحلة المتطلبات‬
‫وهي أصعب وأهم جزء في بناء النظام إذ تركز عليها كل عملية بناء النظام فالبد من وضع متطلبات دقيقة للنظام ومفصلة ألن أي خطأ‬ ‫•‬
‫في المتطلبات سينتج عنه خطأ كبير في بناء النظام يصعب معالجته ‪.‬‬
‫ما هي المتطلبات‬
‫ماذا يجب أن يعمل النظام والقيود التي يجب أن يعمل تحتها‬ ‫•‬
‫بيان بدقة ماذا سيتم بناؤه وتوثيق النتيجة‬ ‫•‬
‫بيان بخدمات النظام وقيوده‬ ‫•‬
‫هي حالة النظام المطلوب من قبل المستخدم لحل مشكلة ما او الوصول الي هدف معين‬ ‫•‬
‫أهمية واهداف المتطلبات‬
‫هي أهم مرحلة من مراحل تطوير نظام البرمجيات ويجب تنفيذها بدقة ألنها تعرف الفكرة المطلوبة من النظام فهي تجيب علي ماذا يجب‬ ‫•‬
‫أن نفعل (‪)what are we going to do‬وليس كيف يجب أن نفعل ذلك (‪ )not how are we going to do this‬اي الهدف هو‬
‫تحديد المشاكل التي يجب حلها وليست ايجاد طريقة لكيفية حلها ‪.‬‬
‫دور المتطلبات في عملية تطوير النظم‬
‫في نظم البرمجيات خاصة النظم الكبيرة تلعب مواصفات المتطلبات دوراً كبيراً‬ ‫‪.1‬‬
‫بالنسبة للزبون ألنها توثق ماذا يجب أن يسلم له‬ ‫‪.2‬‬
‫وبالنسبة لمدراء المشاريع ألنها هي األساس في الجدولة وقياس التقدم‬ ‫‪.3‬‬
‫وبالنسبة لمصممي البرمجيات فهي توفر مواصفات تصميم كاملة‬ ‫‪.4‬‬
‫وبالنسبة للمبرمجين توضح مدي التنفيذ والقبول والسيطرة النهائية علي المخرجات التي سوف تنتج ‪.‬‬ ‫‪.5‬‬
‫وبالنسبة ألخصائي تأمين جودة البرمجيات فهي أساس للمراجعة وخطة االختبارات والتأكد من صحة البرمجيات‬ ‫‪.6‬‬
‫أنواع مستويات المتطلبات‬
‫‪ .1‬متطلبات عامة ‪ :general requirements‬وهي تصاغ في عبارات عريضة تصف ماذا يجب أن يعمل النظام أي تمثل أهداف الزبون‬
‫خارج النظام‬
‫‪ .2‬متطلبات وظيفية‪ : functional requirements‬هي تعريف وظائف البرمجيات التي سيبنيها المطور في المنتج مما يمكن المستخدم‬
‫من الوصول إلي أهدافه‬
‫‪ .3‬المتطلبات غير الوظيفية ‪ : non-functional requirements‬وهي التي ترمز لكل القيود األخرى مثل األداء و االعتمادية والصيانة‬
‫أخطاء المتطلبات‬
‫أساسا ً أغلب أخطاء المتطلبات هو الفشل في الوصول إلي أحد هذه األهداف التالية ‪:‬‬ ‫‪.1‬‬
‫فشل مهندس البرمجيات في فهم ماذا يطلب الزبون من نظام البرمجيات‬ ‫‪.2‬‬
‫فشل مهندسي البرمجيات في وصف المتطلبات كاملة وبدقة أي عدم استطاعتهم توصيل المتطلبات بدقة لجهات أخرى معنية بالتطوير‬ ‫‪.3‬‬
‫عدم استطاعته تأمين مطابقة متطلبات النظام مع التصميم والتنفيذ واالختبار والصيانة‪ .‬نتيجة لما سبق نجد أن‬ ‫‪.4‬‬
‫‪6‬‬
‫‪ .5‬أن هذه البرمجيات سوف ال تعمل كما هو متوقع منها‬
‫‪ .6‬سوف تزيد الميزانية والجدولة في مرحلة التطوير‬
‫‪ .7‬أو كما في معظم األحوال فشل في التسليم المنتج في زمنه‬
‫صعوبات المتطلبات‬
‫الصعوبات التالية نابعة من أهداف وخصائص المتطلبات‬
‫‪ .1‬القدرة علي الفهم ففي أغلب األحيان الزبون ال يفهم ماذا يريد‬
‫‪ .2‬االتصال أي صعوبة توصيل متطلبات البرمجيات‬
‫‪ .3‬الضوابط أي التغيرات المستمرة في المتطلبات يجعل من الصعوبة عمل مواصفات متطلبات مستقرة‬
‫لذلك التخطيط بفاعلية وضبط الجدولة والتكلفة وضبط التقديرات من أصعب المشاكل‬
‫خواص المتطلبات‬
‫‪ .1‬االكتمال ‪completeness‬‬
‫‪ .2‬الصحة ‪correctness‬‬
‫‪ .3‬الجدوي ‪feasibility‬‬
‫‪ .4‬األهمية ‪import‬‬
‫‪ .5‬ذات أولوية ‪priority‬‬
‫‪ .6‬غير غامضة ‪unable pious‬‬
‫‪ .7‬قابلة للمراجعة ‪verifiable‬‬
‫‪ .8‬قابلة للتعديل ‪modifiable‬‬
‫‪ .9‬متوافقة ومنسجمة ‪consistent‬‬
‫‪ .10‬يمكن تتبعها ‪traceable‬‬
‫مرحلة تعريف متطلبات البرمجيات‬
‫هي مرحلة تحليل المشكلة ومتطلبات المستخدم يتم تحليلها بإنتاج مجموعة من مواصفات متطلبات البرمجيات خالف الخواص سالفة الذكر‬
‫تحليل المتطلبات يشمل تقنية فحص المتطلبات التي تم جمعها وذلك إليجاد أخطاء ونواقص وعمل تقنيات لكل مواصفة لتحليل المتطلبات التي‬
‫تم جمعها فالتحليل يقيم ما إذا كانت كل المتطلبات توضح خواص المتطلبات المرغوبة من أن الهدف هو تطوير متطلبات ذات نوعية عالية‬
‫وتفاصيل كافية للتطوير تقديرات مشروع حقيقية يمكنه بعدها تصميم وتنفيذ واختبار النظام وفي هذه المرحلة يتم األتي‬
‫‪ .1‬النظر في كل المفاهيم األساسية للنظام ومراجعة وثيقة النظام‬
‫‪ .2‬النظر في المفاهيم المعمارية للنظام‬
‫‪ .3‬النظر في المواصفات الوظيفية للنظام‬
‫‪ .4‬استخدام بدقة قيود النظام في االجهزة وفي البرمجيات وقيود نظام التشغيل والبرمجيات الداعمة وافتراضات التطوير والمخاطرات‬
‫المالية والزمنية وتدفق البيانات وقاموس البيانات ‪ .‬ويتم كل ذلك تقدير تحليل المتطلبات الذي يضع القاعدة للتصميم المعماري ‪.‬والهدف‬
‫هو فهم بدقة ماهي طبيعة وحدود المشكلة ‪.‬‬
‫هنالك عدة طرق لتحليل مواصفات متطلبات البرمجيات نذكر منها‬
‫‪ .1‬التحليل البنيوي ‪structured analysis‬‬
‫هذه الطريقة تحلل المشكلة بتكوين مخططات انسياب البيانات ‪( data flow diagram‬وهي عبارة عن مخططات هرمية تشمل معالجات‬
‫وانسياب البيانات )‪.‬‬
‫‪ .2‬التحليل الموجه نحو الكائنات ‪object oriented analysis‬‬
‫‪ .3‬الطرق االصطالحية ‪formal method‬‬
‫‪ .4‬وضع النمازج االولية السريعة ‪rapid prototyping‬‬
‫شكل مواصفات متطلبات البرمجيات ‪s/w Requirements specification format‬‬
‫‪ )1‬نظرة شاملة وملخص لمعالم المنتج‬
‫‪ )2‬بيئة التطوير والتشغيل والصيانة‬
‫‪ )3‬مصادر البيانات والتداخالت الخارجية‬
‫‪ )4‬المتطلبات الوظيفية وتشمل ‪:‬‬
‫خالئط التدفق للتسلسل الوظيفي‬ ‫•‬
‫• مخططات انسياب البيانات والوحدات الناتجة‬
‫• الجداول وقاموس البيانات‬
‫‪ )5‬متطلبات االداء وتشمل ‪:‬‬
‫• وقت االستجابة لمختلف النشاطات‬
‫• زمن المعالجة‬
‫‪7‬‬
‫• قيود الذاكرة‬
‫• امكانية االتصاالت‬
‫‪ )6‬معالجة االستشارات ‪ Exception handling‬مثل ‪:‬‬
‫• الفشل الموقت للموارد‬
‫• بيانات ادخال غير صحيحة‬
‫• مخالفات حدود السعة التخزينية‬
‫‪ )7‬اولويات تنفيذ النظام ‪ :‬يخطط النظام بثالث مراحل ‪:‬‬
‫النموذج االولي ‪prototype version‬‬ ‫•‬
‫• النموذج المقتدر ‪modest version‬‬
‫• النموذج المحسن ‪enhanced version‬‬
‫‪ )8‬التعديالت والتحسينات المعرفة مسبقا“ ‪:‬‬
‫تغيرات متوقعة في الميزانية او في مهمة محددة في المشروع او في اقتناء اجهزة جديدة‬
‫‪ )9‬معايير القبول ‪ :‬وهي تحديد االختبارات الوظيفية واختبارات االداء والمعايير والمقاييس والوثائق الداخلية والخارجية ‪.‬‬
‫‪ )10‬ارشادات التصميم ‪ design hints‬عن كيفية تصميم المنتج‬
‫‪)11‬مصادر البيانات ‪:‬‬
‫تنسب متطلبات المنتج لمصادر البيانات التي استخدمت الستنتاج المتطلبات منها ‪.‬‬
‫مخرجات مرحلة تعريف متطلبات البرمجيات‬
‫وثيقة مواصفات متطلبات البرمجيات التي تحوي نموذج منطقي لمتطلبات النظام والبرمجيات‬ ‫‪.1‬‬
‫خطة إدارة مشروع البرمجيات في مرحلة التصميم المعماري‬ ‫‪.2‬‬
‫خطة التشكيل االداري للبرمجيات لمرحلة التصميم المعماري‬ ‫‪.3‬‬
‫خطة التحقق والتاكد من صحة البرمجيات‬ ‫‪.4‬‬
‫خطة تأمين جودة البرمجيات‬ ‫‪.5‬‬
‫خطة اختبار النظام‬ ‫‪.6‬‬
‫ماهو التصميم ؟‬ ‫‪‬‬
‫التصميم هو الجسر بين متطلبات الزبون والتنفيذ الذي يستوفي المتطلبات ‪ ،‬والتصميم الجيد يجب أن يكون ‪:‬‬
‫‪ /1‬مالئم ‪ adaptable‬اي انه سهل الصيانة وسهل التعديل‬
‫‪ /2‬فعال ‪ efficient‬بمعني انه يستخدم اقل جزء من الموارد المتاحة‬
‫‪ /3‬وسهل الفهم ‪understandable‬‬
‫ماهى المفاهيم االساسية للتصميم ؟‬ ‫‪‬‬
‫الهيكيلة ‪ structures‬وهي تفكيك النظام الكبير الي نظم فرعية اصغر ‪.‬‬ ‫‪.1‬‬
‫قابلية التجميع ‪modularity‬‬ ‫‪.2‬‬
‫هي ضمان تناسق البيانات المشتركة بين الوحدات القياسية المتزامنة في التنفيذ‬ ‫التزامن ‪concurrency‬‬ ‫‪.3‬‬
‫اخفاء البيانات ‪ :data hiding‬الوحدات القياسية تخفي التفاصيل‬ ‫‪.4‬‬
‫ماهو التصميم الجيد ؟‬ ‫‪‬‬
‫هو تصميم نسقي(‪ )moduler‬وفيه تكون المكونات بسيطة ومستقلة عن بعضها البعض ويمكن النظر للتصميم علي أنه عملية يتم فيها‬
‫وصف المعمارية من خالل خطوات فيها تفاصيل أكثر وكل خطوة جديدة تنفذ المتطلبات التي عرفت في السابق والخطوة األخيرة هي التنفيذ الذي‬
‫يكمل معمارية البرمجيات إلي برامج‬
‫ماذا نعنى ب قابلية التجميع ؟‬ ‫‪‬‬
‫هي من المفاهيم األساسية للتصميم وهي قابلية التجميع أو الترتيب النسقي فهي مهمة جداً لتصميم البرمجيات فالتصميم الجيد هو تصميم‬
‫نسقي ويطلق علي مكونات النظام الجيد الوحدات القياسية‬
‫ماهى الوحدات القياسية ‪modules‬؟‬ ‫‪‬‬
‫هي الجزء المعرف جيداً في برنامج مثال ذلك برنامج ‪ sub program‬أخرى أو دالة هي مكونات بسيطة مستقلة عن بعضها البعض‬
‫وتحتوي هياكل البيانات ويمكن تضمينها في البرامج ويمكن تخزينها في مكتبات البرامج وتفكيك النظام إلي وحدات قياسية يمكن تنفيذه بعدة‬
‫طرق وعدة خطوات مثال ذلك تفكيك النظام ‪ Black box‬بوحدات قياسية عالية المستوى أي إلي نظم فرعية ثم تفكيك كل نظام فرعي لوحدات‬
‫حتى الوصول إلي نقطة كافية من الصغر وهذه هي عملية تحليل تحتية فوقية‬
‫كيف تتم عملية التصميم (على ماذا تحتوي عملية التصميم ) ؟‬ ‫‪‬‬
‫‪ /1‬التصميم الخارجي ‪External design‬‬
‫‪ /2‬التصميم الداخلي ‪internal design‬‬
‫‪ /3‬التصميم المعماري ‪architectural design‬‬
‫‪8‬‬
‫‪ /4‬التصميم التفصيلي ‪details design‬‬
‫ملحوظة‬
‫• يطلق علي التصميم المعماري والتفصيلي التصميم الداخلي‬
‫ماهو التصميم الخارجي ؟‬ ‫‪‬‬
‫هو صورة هيكلية للنظام ويعتبر ‪-:‬‬
‫‪ /1‬صورة عامة و كاملة لفكرة النظام‬
‫‪ /2‬صورة لهيكلة النظام (ادخال ‪ ،‬معالجة ‪ ،‬اخراج)‬
‫‪ /3‬التخطيط النهائي لهذه الفكرة‬
‫‪ /4‬تحديد وتفصيل لمواصفات منتج البرمجيات التي يمكن توقعها وهذه المواصفات هي‪-:‬‬
‫‪ .1‬تحديد أشكال التقارير التي يرغب فيها المستخدم‬
‫‪ .2‬تحديد مصادر البيانات الخارجية و أوعيتها‬
‫‪ .3‬تحديد المواصفات الوظيفية‬
‫‪ .4‬تحديد المواصفات البرمجية التي توصل إلي األهداف وبذلك توفي بالمتطلبات‬
‫‪ .5‬تحديد متطلبات األداء‬
‫‪ .6‬تحديد هيكلية و بيئة المعالجة‬
‫من اين يبدأ التصميم الخارجي ؟‬ ‫‪‬‬
‫يبدأ التصميم الخارجي خالل مرحلة التحليل ويستمر حتى مرحلة التصميم ‪.‬وهو تنقيح المتطلبات ووضع صورة ذهنية أولية لهيكلية‬ ‫‪‬‬
‫للنظام‬
‫ملحوظة‬
‫في الواقع ليس من الممكن عمل تعريفات للمتطلبات بدون أجراء بعض التصميمات األولية فتعريف المتطلبات يعنى بتحديد المتطلبات‬
‫الوظيفية ومتطلبات األداء ومعالجة االستشارات الي ‪ ..‬الخ ‪ ، .‬لهذا فالفرق بين تعريف المتطلبات والتصميم الخارجي ليس فرق قاطع انما هو‬
‫االنتقال التدريجي من مرحلة ماذا سنبني ‪ What‬إلي مرحلة كيف سنبني ‪.How‬‬
‫ماهو التصميم الداخلي ؟‬
‫‪ /1‬التصور الفعلي لمنتج البرمجيات‬
‫‪ /2‬التخطيط الفعلي لمنتج البرمجيات‬
‫‪ /3‬وصف الهيكل الداخلي لمنتج البرمجيات‬
‫‪ /4‬وصف تفاصيل معالجة منتج البرمجيات‬
‫ماهى أهداف التصميم الداخلي ؟‬
‫‪ /1‬توصيف الهيكل الداخلي للمنتج‬
‫‪ /2‬وصف تفاصيل المعالجة‬
‫ماهى نشاطات التصميم الداخلي ؟‬
‫‪ /1‬وضع مواصفات البنية المعمارية لمواصفات البرمجيات (تسلسل النظام)‬
‫‪ /2‬وضع مواصفات تفاصيل الخوارزميات (من اين تبدأ وكيف تعالج واين تذهب)‬
‫‪ /3‬وضع مواصفات هياكل البيانات‬
‫‪ /4‬وضع خطة االستثناءات ‪exceptional handling‬‬
‫ماهو التصميم المعماري؟‬
‫هو الوصلة ما بين المتطلبات وعمليات التصميم‬
‫فتصميم البرمجيات هو تفكيك النظام إلي وحدات قياسية ووصف ماذا يجب أن تعمل كل وحدة والصالت بين هذه الوحدات هذا يسمى‬
‫بالتصميم المعماري أو بنية البرمجيات وهدف نشاطات هذه المرحلة هو تعريف معمارية البرمجيات‬
‫‪ ‬ماهى مراحل التصميم المعماري ؟‬
‫‪ .1‬تعريف البرمجيات في شكل مكونات وبنياتها (‪)interfaces‬‬
‫‪ .2‬تغطية متطلبات البرمجيات ‪ ،‬فالوصول لتصميم جيد فالبد من تعريف جيد للتكوين النسقي للنظام (هو تقسيم النظام الي وحدات‬
‫قياسية ‪ modules‬وتحديد الوصالت بينها )‬
‫ماهو مفهوم التصميم المعماري( ماذا يعنى) ؟‬ ‫‪‬‬
‫المفهوم الشامل لفكرة النظام‬ ‫‪.1‬‬
‫تحديد وظائف المعالجة الداخلية للنظام‬ ‫‪.2‬‬
‫تفكيك الوظائف العليا إلي وظائف فرعية‬ ‫‪.3‬‬
‫تعريف تدفق البيانات الداخلية ومخازن البيانات‬ ‫‪.4‬‬
‫إنشاء عالقات وتداخالت بين الوظائف وتدفق البيانات‬ ‫‪.5‬‬
‫‪9‬‬
‫ماهو التصميم المعمارى (أهدافة) ؟‬ ‫‪‬‬
‫‪ .1‬يركز علي الخواص الهيكلية الوظيفية للنظام‬
‫‪ .2‬إنتاج برمجيات عالية التكوين‬
‫ماهى مخرجات التصميم المعماري ؟‬ ‫‪‬‬
‫وثيقة التصميم المعماري‬ ‫‪.1‬‬
‫خطة إدارة مشروع البرمجيات لمرحلة التصميم التفصيلي‬ ‫‪.2‬‬
‫خطة التشكيل اإلداري للبرمجيات لمرحلة التصميم التفصيلي‬ ‫‪.3‬‬
‫خطة التدقيق والتحقق من صحة البرمجيات لمرحلة التصميم التفصيلي‬ ‫‪.4‬‬
‫خطة تأمين جودة البرمجيات لمرحلة التصميم التفصيلي‬ ‫‪.5‬‬
‫ماهو التصميم التفصيلي (مرحلة اإلنتاج والتنفيذ) ؟‬ ‫‪‬‬
‫‪ .1‬تنقيح البنية المعمارية إلي تفاصيل تنفيذ دقيقه‬
‫‪ .2‬نقطة البداية للتصميم التفصيلي هي هيكل معماري للنظام مزود بتفاصيل خوارزميات‬
‫ماهى أهم نشاطات مرحلة التصميم التفصيلى ؟‬ ‫‪‬‬
‫‪ .1‬وصف تفاصيل الخوارزميات التي تنفذ النظام‬
‫‪ .2‬تحديد للترابطات الداخلية الحقيقية بين الوظائف وهياكل البيانات‬
‫‪ .3‬وضع منتج البرمجيات بشكل ملموس‬
‫ماهى مخرجات التصميم التفصيلي ؟‬ ‫‪‬‬
‫‪ .1‬الوثائق التي سيتم تسليمها عند نهاية المرحلة‬
‫‪ .2‬توثيق التصميم المعماري في تفاصيل متسلسلة حتى الوصول إلي النظم الفرعية‬
‫‪ .3‬وصف مدخالت المستخدم‬
‫‪ .4‬وصف مخرجات النظام‬
‫‪ .5‬تحديد ملفات اإلدخال واإلخراج‬
‫‪ .6‬تحديد تدخالت الوحدات القياسية فيما بينها‬
‫‪ .7‬تحديد خطة إدارة مشروع البرمجيات في مرحلة االختبار والمراجعة‬
‫‪ .8‬تحديد خطة إدارة التشغيل‬
‫‪ .9‬تحديد خطة تأمين جودة البرمجيات‬
‫‪ .10‬البدء بعمل كتيب المستخدم‬
‫ماهو التربط والتماسك ؟‬ ‫‪‬‬
‫هدف تصميم البرمجيات هو انتاج نظام يكون فيه هناك تقليل في الترابط بين المكونات بمعني تقليل عدد المفردات التي تمر بين‬
‫المكونات وفقط تمرير البيانات ذات الحوجه وفي نفس الوقت تعظيم او تكبير التماسك داخل المكونات بوضع الوحدات داخل المكونات التي لها‬
‫صالت مع بعضها البعض‬

‫مراحل التنفيذ ‪ ،‬واالختبار ‪،‬والصيانة‬


‫دورة حياة تطوير البرمجيات‬
‫مرحلة تنفيذ النظام‬ ‫‪‬‬
‫هي المرحلة التي تلي مرحلة التصميم التفصيلي وهي في نفس الوقت بداية مرحلة اإلنتاج فالترميز ينتج وحدات قياسية معرفة‬ ‫‪‬‬
‫للمراجع(االختبار) ولمبرمج الصيانة ‪ ،‬الترميز هو ترجمة مواصفات التصميم إلي شفرة المصدر وهي مجموعة تعليمات التي كتبت‬
‫بشفرة عالية المستوى والتي ستترجم بواسطة المترجم إلي لغة اآللة‬
‫مواصفات البرامج الجيدة‬ ‫‪‬‬
‫البساطة‬ ‫‪‬‬
‫الوضوح‬ ‫‪‬‬
‫الترتيب‬ ‫‪‬‬
‫ووضوح شفرة المصدر تتم عن طريق ‪:‬‬ ‫‪‬‬
‫الترميز الجيد‬ ‫‪.1‬‬
‫الوثائق المساندة القياسية‬ ‫‪.2‬‬
‫الوثائق الداخلية الجيدة‬ ‫‪.3‬‬
‫المميزات التي توفرها لغات البرمجة الجيدة‬ ‫‪.4‬‬
‫‪10‬‬
‫وضوح شفرة المصدر أي الترميز المالئم‬ ‫‪‬‬
‫‪ .1‬يسهل عملية تصحيح األخطاء‬
‫‪ .2‬يسهل عملية االختبار‬
‫‪ .3‬يسهل عملية التعديل‬
‫أسلوب التنفيذ المالئم‬ ‫‪‬‬
‫‪ .1‬يحسن اتصاالت المشروع‬
‫‪ .2‬يسهل عملية تصحيح األخطاء‬
‫‪ .3‬يسهل عملية االختبار والتعديل‬
‫المؤشرات األولية لصحة وجودة منتج البرمجيات هي ‪:‬‬ ‫‪‬‬
‫النوعية‬ ‫‪.1‬‬
‫الكمية‬ ‫‪.2‬‬
‫الوقتية‬ ‫‪.3‬‬
‫استخدام الوثائق المساندة‬ ‫‪.4‬‬
‫الوثائق المطلوبة أثناء تطوير منتج البرمجيات وهي ‪:‬‬ ‫‪‬‬
‫وثيقة مواصفات متطلبات منتج البرمجيات‬ ‫‪.1‬‬
‫وثيقة التصميم المعماري‬ ‫‪.2‬‬
‫وثيقة التصميم التفصيلي‬ ‫‪.3‬‬
‫وثيقة خطة االختبارات‬ ‫‪.4‬‬
‫وثيقة ارشادات التنفيذ‬ ‫‪.5‬‬
‫وثيقة معايير الصيانة‬ ‫‪.6‬‬
‫وثيقة دليل المستخدم‬ ‫‪.7‬‬
‫كمية ونوعية ووقتية استخدام هذه الوثائق هي مؤشرات لنوعية وصالحية مشروع البرمجيات‬ ‫‪‬‬
‫وحدة البرامج ‪program unit‬‬
‫وحدة شفرة مصدر تم تطويرها أو صيانتها بواسطة شخص واحد وهو برنامج فرعي أو مجموعة برامج فرعية يكون برنامج فرعي آخر معرف‬
‫جيداً ‪.‬‬
‫الخواص النوعية التي يجب توفرها في نظام البرمجيات‬
‫الصحة أو الضبط ‪Correctness‬‬ ‫‪.1‬‬
‫االكتمال ‪Completeness‬‬ ‫‪.2‬‬
‫المالئمة ‪Consistency‬‬ ‫‪.3‬‬
‫االعتمادية ‪Reliability‬‬ ‫‪.4‬‬
‫االستفادة منه ‪Usefulness‬‬ ‫‪.5‬‬
‫االستخدام ‪Usability‬‬ ‫‪.6‬‬
‫الفعالية ‪Efficiency‬‬ ‫‪.7‬‬
‫التوافق مع المعايير ‪Conformance to Standards‬‬ ‫‪.8‬‬
‫فعالية التكلفة الكلية ‪Over all Cost Effectiveness‬‬ ‫‪.9‬‬
‫صعوبة تنفيذ منتج البرمجيات‬
‫نتيجة للتحليل والتصميم غير المالئم فاالتجاه النظامي نحو تطوير منتج البرمجيات يسهل من مهمة التنفيذ ويسمح للمبرمجين التركيز نحو‬
‫تحسين وضوح وبساطة وجودة البرمجيات وجعلها سهله في التصحيح واالختبار والتحليل وتظهر األخطاء عندما يكون هنالك أي وجهة من‬
‫وجهات منتج البرمجيات غير مكتملة وغير مالئمة وغير صحيحة وهنالك أخطاء في البرمجيات ومن أنواعها التالي‪:‬‬
‫‪ .1‬أخطاء المتطلبات‬
‫‪ .2‬أخطاء التصميم‬
‫‪ .3‬أخطاء التنفيذ‬
‫أخطاء المتطلبات هي نتيجة اآلتي‪:‬‬
‫األوصاف غير السليمة لبعض المتطلبات‬ ‫‪.1‬‬
‫الفشل في تحديد المتطلبات الوظيفية ومتطلبات األداء‬ ‫‪.2‬‬
‫عدم التناسق بين المتطلبات المختلفة‬ ‫‪.3‬‬
‫وجود متطلبات غير مجدية‬ ‫‪.4‬‬
‫أخطاء التصميم‪:‬‬
‫‪11‬‬
‫‪ .1‬فشل في ترجمة المتطلبات في أشكال وتكوينات حل كاملة وصحيحة‬
‫‪ .2‬وجود عدم تناسق بين المتطلبات ومواصفات التصميم‬
‫اخطاء التنفيذ‬
‫هي أخطاء تنتج عن ترجمة متطلبات التصميم الي رمز مصدري‬
‫بعض التقنيات التي تستخدم لتقييم وتحسين نوعية البرمجيات منها‪:‬‬
‫إجراءات ضمان جودة البرمجيات‬ ‫‪.1‬‬
‫تصحيح األخطاء‬ ‫‪.2‬‬
‫اختبار الوحدة‬ ‫‪.3‬‬
‫اختبار التكامل‬ ‫‪.4‬‬
‫اختبار القبول‬ ‫‪.5‬‬
‫التنفيذ الرمزي (اختبار هيكل البرامج بواسطة بعض االدوات)‬ ‫‪.6‬‬
‫التحليل الساكن ‪ :‬هي تقنية لتقييم الصفات الهيكيلة لرمز المصدر ‪.‬‬ ‫‪.7‬‬
‫التدقيق االصطالحي ‪:‬هو برهان دقيق لبيان ان الرمز المصدري يطابق مواصفاته اي صحة البرنامج (من الناحية المنطقية)اما الخطاء‬ ‫‪.8‬‬
‫اللغوي فان البرنامج يعطيك عبارة ‪error‬‬
‫النوعية العالية من البرمجيات يمكن تحقيقها باالهتمام والتفصيالت المنظمة في اآلتي‪:‬‬
‫‪ .1‬التخطيط‬
‫‪ .2‬التحليل‬
‫‪ .3‬التصميم‬
‫‪ .4‬التنفيذ‬
‫التخلص من األخطاء خالل مرحلة التحليل والتصميم يقلل من األخطاء في البرنامج ويمكن حل هذه المشاكل بتبني اآلتي‪:‬‬
‫‪ .1‬طرق مبتكرة واحسن واحدث للتحليل والتصميم‬
‫‪ .2‬تقنيات ضمان جودة البرمجيات الشاملة‬
‫‪ .3‬اختبار فعال للبرمجيات‬

‫مرحلة اختبار النظام ‪test phase‬‬


‫هي مجموعة اختبارات تم تصميمها بغرض اكتشاف األخطاء في نظام البرمجيات التي لم تكتشف المرات السابقة ‪.‬‬
‫فاالختبارات توضح االخطاء والعيوب ‪.‬‬
‫أهداف االختبارات‬
‫‪ .1‬الهدف هو تصميم طرق اختبارات مختلفة للكشف عن األخطاء بأقل وقت ‪.‬‬
‫‪ .2‬لتوضيح أن وظائف النظام تعمل طبقا َ للمواصفات و ان متطلبات األداء قد تم استيفائها ‪.‬‬
‫إستراتيجيات االختبار‬
‫تبدأ االختبارات من‪:‬‬
‫• اختبارات الوحدة ‪Unit Test‬‬
‫وهى للتحقق من أن الوحدات القياسية تعمل بطريقة صحيحة بمعزل عن الوحدات األخرى وتجرى عليها االختبارات األربعة‬

‫• اختبارات التكامل ‪Integration Test‬‬


‫وهى للتحقق من أن الوحدات القياسية تعمل بطريقة صحيحة متكاملة مع بعضها البعض لتكامل نظام البرمجيات في نظام واحد‬
‫• اختبار النظام ‪System Test‬‬
‫وذلك للتحقق من أن نظام البرمجيات يتوافق مع متطلبات البرمجيات‬
‫• اختبار القبول ‪Acceptances test‬‬
‫هو للتحقق من أن نظام البرمجيات يتوافق مع متطلبات المستخدم‬
‫مستويات إستراتيجية االختبارات‬
‫• اختبارات ذات المستوى األدنى‬
‫وهى للتحقق من قطاع صغير من الرمز المصدري قد تم تنفيذه بدقة‬
‫• اختبارات ذات المستوى الوسطى‬
‫وهى تصمم للكشف عن األخطاء في البيانات بين الوحدات القياسية‬
‫• اختبارات ذات المستوى العالي‬
‫وهى لمراجعة وظائف النظام الرئيسية مقابل متطلبات الزبون‬
‫انواع االختبارات‬
‫‪12‬‬
‫هنالك أربعة أنواع لالختبارات هي‪:‬‬
‫‪ .1‬االختبارات الوظيفية ‪functional test‬‬
‫‪ .2‬اختبارات األداء ‪performance test‬‬
‫‪ .3‬اختبارات التحميل واإلجهاد ‪stress test‬‬
‫‪ .4‬اختبارات الهيكيلة ‪structure test‬‬
‫االختبارات الوظيفية‬
‫• وهى للتحقق من أن المتطلبات الوظيفية للنظام تعمل بصورة جيدة ‪ .‬ان المتطلب الوظيفي يصف ماذا يجب ان يعمل وليس كيف يعمل ‪،‬‬
‫و المتطلب الوظيفي يعرف التحويل الذي يجب ان يعمل علي المدخالت النتاج المخرجات‬
‫اختبارات األداء‬
‫‪ .1‬وهى للتحقق من متطلبات األداء وهي قيم رقمية لقياس التغيرات‬
‫‪ .2‬لمراجعة متطلبات زمن االستجابة ((الزمن طلب المعلومة واعطائها )) وقت االستجابة‬
‫‪ .3‬لمراجعة وقت التنفيذ‬
‫‪ .4‬انتاجية الحاسوب‬
‫‪ .5‬معدالت الحركة بين قنوات االتصال‬
‫اختبارات التحميل واإلجهاد‬
‫• هو تحميل النظام اكثر من طاقته إليجاد حدود النظام الممكنة أي متى يجهد النظام او يفشل النظام ‪ ،‬وتوضيح الطرق التي تم بها الفشل‬
‫مثل وضع عدد اكثر من الوحدات الطرفية وهذا االختبار يوضح قوة وضعف النظام ‪ ،‬يتم استنباطها من متطلبات النظام والتصميم وخبره‬
‫المصممين ‪ ،‬اختبارات التحميل يمكن تساعدنا في معالجات داخلية للنظام ‪.‬‬
‫اختبارات البنيوية او الهيكلية‬
‫• تعنى بتجربة المنطق الداخل للبرنامج وما هي المسارات التي يجب أن تستخدم ويتم تصميمها بعد تنفيذ النظام (اي تعني بالبنية‬
‫التنظيمية للبرامج )‬
‫مرحلة صيانةالمنتج ‪:‬‬
‫عند تسليم المنتج هنالك ‪:‬‬
‫• أن المنتج غير مرض بدرجة معقولة بالنسبة للزبون وفي هذه الحالة تتم عملية تحسينات تدريجية للمنتج من النسخة األولية للمنتج‬
‫للنسخة المحسنة وسطيا ً إلي النسخة المحسنة كليا ً أما إذا كان عدم الرضا كبير جداً من جانب الزبون فيتم إعادة تطوير بعض أجزاء‬
‫النظام وتسمي هذه بإعادة تأهيل المتطلبات وإعادة التصميم المعماري وإعادة التصميم التفصيلي وإعادة كتابة البرنامج وإعادة‬
‫االختبارات ثم بعد ذلك نجد مرحلة الصيانة ‪.‬‬
‫نشاطات الصيانة‬
‫الصيانة تستهلك موارد أكثر من التطوير ونشاطات الصيانة هي ‪:‬‬
‫‪ .1‬عمل تحسينات في المنتج ‪ ENHANCEMENT‬وتستهلك ‪ %60‬من تكلفة الصيانة الكلية‬
‫‪ .2‬تهيئة المنتج لبيئة معالجة جديدة ‪ ADAPTATIONS‬وتستهلك ‪ %20‬من تكلفة الصيانة‬
‫‪ .3‬تصحيح األخطاء ‪ CORRECTION‬وتستهلك حوالي ‪ %20‬من تكلفة الصيانة‬
‫تحسين قدرات منتج البرمجيات‬
‫ً‬
‫• تعني تحسين منتج البرمجيات بدون تغيير وظائفه مثال ذلك إضافة مقدرات جديدة للمنتج أو زيادة وتحسين خواص المنتج ‪.‬‬
‫تهيئة المنتج لبيئة عمل جديدة‬
‫‪ ‬تهيئة المنتج لبيئة عمل جديدة تعني تحديث النظام وجعله مواكب مع بيئة األجهزة ويشمل ذلك نقل البرمجيات الجهزة اخري أو تحديث‬
‫البرمجيات لكي تتالءم مع برتوكوالت االتصاالت الجديدة أو إضافة مكون جديد لألجهزة ‪.‬‬
‫تصحيح األخطاء‬
‫‪ ‬تصحيح أخطاء وهي تعديل وإعادة التدقيق في البرمجيات وتصحيح األخطاء إما عاجالً أو وفقا ً للجدولة‬
‫‪ ‬الهدف األول لتطوير البرمجيات هو إنتاج برمجيات قابلة للصيانة فخواص منتج البرمجيات التي تساعد في الصيانة هي الوضوح‬
‫وقابلية التجميع والتوثيق الداخلي للربط المصدري والوثائق المساندة المناسبة وكل األدوات والتقنيات المستخدمة لتطوير البرمجيات‬
‫يمكن االستفادة منها لصيانة البرمجيات فالصيانة هي صورة مصغرة من عالم تطوير البرمجيات ‪.‬‬
‫صعوبات خالل مرحلة الصيانة‬
‫‪ .1‬هي نتيجة للقصور في التخطيط المنظم لصيانة البرمجيات‬
‫‪ .2‬فشل المدراء في تنظيم نشاطات الصيانة بدقة‬
‫‪ .3‬الفشل في توفير األدوات والتقنيات الهامة للصيانة‬
‫ويمكن أن تطرأ تحسينات كثيرة لماهية البرمجيات وإنتاجية المبرمجين نتيجة لألتي ‪:‬‬
‫‪ .1‬تطوير لمرحلة الصيانة‬
‫‪ .2‬تطوير المنتج لتحسين عملية الصيانة‬

‫‪13‬‬
‫‪ .3‬التنظيم الدقيق لنشاطات الصيانة ومبرمجي الصيانة‬
‫‪ .4‬توفير أدوات الصيانة‬
‫فالصيانة هي عملية مصغرة لعملية تطوير البرمجيات ألن تعديل المنتج يمكن أن يشمل ‪:‬‬
‫‪RE REQURIMENT DEFINTION‬‬ ‫تعريف مرة أخرى للمتطلبات‬ ‫‪.1‬‬
‫تحليل مرة أخرى‪RE ANALYSIS‬‬ ‫‪.2‬‬
‫تصميم مرة أخرى‪RE DESIGN‬‬ ‫‪.3‬‬
‫‪RE IMPLEMENTATION‬‬ ‫تنفيذ مرة أخرى‬ ‫‪.4‬‬
‫‪RE TSETING‬‬ ‫التحقق من الصحة مرة أخرى‬ ‫‪.5‬‬
‫تعديل وتحديث الوسائل‬ ‫‪.6‬‬

‫‪14‬‬

You might also like