Transcript Slide 1

‫بسم هللا الرحمن الرحيم‬
‫نام درس‪ :‬مهندسي نرمافزار ‪2‬‬
‫بر گرفته از كتاب ‪:‬‬
‫‪ -1‬به سوي توليد بهتر نرم افزار‬
‫دكتر محسن صديقي مشكناني‬
‫‪ -2‬سايت آقاي امين صفايي ‪ml.blogfa.com‬‬
‫‪ -3‬جزوه درسي آقاي فسنقري‬
‫‪ ‬نرم افزار چيست ؟‬
‫نرم افزار شامل برنامه های کامپيوتری همراه است با مستندات و داده های‬
‫پيکربندی است که برای درست کارکردن برنامه ضروری است ‪.‬‬
‫‪ ‬دو نوع محصول نرم افزاری ‪:‬‬
‫‪ -1‬محصوالت کلی‬
‫‪ -2‬محصوالت سفارشی‬
‫مهندسي نرم افزار ‪Software Enginering‬‬
‫ تعيين استاندارد براي نرم افزارهاي مختلف و تعيين ساختار دقيق و اجزاء يك نرم‬‫افزار بطوري كه در مواقع تغيير يا مشكل از آن استفاده شود‪0‬‬
‫‪ ‬ایجاد و استفاده از اصول ساده مهندسی به منظور رسيدن به یک نرم افزار‬
‫مقرون به صرفه که قابل اطمينان بوده و روی دستگاههای واقعی کارآمد باشد‬
‫‪ ‬یک نظام مهندسی است که با جنبه های نرم افزاری محصول ‪ ،‬از مراحل اوليه‬
‫تعيين مشخصات سيستم تا نگهداری سيستم ‪ ،‬سروکار دارد ‪.‬‬
‫‪-‬‬
‫ديدگاه نظامند به توليد ‪ ،‬كاركرد ‪ ،‬نگهداري و بازنشستگي نرم افزار) ‪)IEEE‬‬
‫افراد و مسئوليت هايشان در قبال نرم افزار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫كار فرمايان ‪Sponser‬‬
‫كاربران ‪User‬‬
‫متصديان ‪Operator‬‬
‫توليدكنندگان ‪Developer‬‬
‫نگهداران ‪Maintainer‬‬
‫توزيع كنندگان و فروشندگان ‪Vendor‬‬
‫نرم افزار خوب از نظر كاربر‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫نيازهاي مورد نظرش را انجام دهد‬
‫يادگيري آن آسان باشد‬
‫به خاطر سپاري نخواهد‬
‫كاركردن با آن آسان باشد‬
‫موجب افزايش بهره وري او گردد‬
‫‪ ‬قابليت اطمينان ‪Reliable‬باشد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫سامانه اي قابل اطمينان است كه درست كاركند و مطابق تعهداتي كه براي آن تعريف‬
‫شده است ‪ ،‬در دسترس باشد‬
‫اگر نرم افزاري تنها تحت شرايط بسيار نادري درست كار نميكند ‪ ،‬قابل اطمينان نيست و در‬
‫واقع يك زنجير به اندازه ضعيف ترين حلقه اش قابل اطمينان است‬
‫قابليت دسترسي ‪ Availability‬درصدي از زمان است كه محصول براي مخاطبانش قابل‬
‫استفاده بوده است ‪ 0‬براي مثال سامانه اي كه از ‪ 8‬ساعت ‪ 2‬ساعت خراب است ‪%75،‬‬
‫در دسترس است و قابليت استفاده ي آن ‪ %75‬خواهد بود‬
‫‪ ‬سامانه اي قابل اطمينان است كه درست كاركند و مطابق تعهداتي كه براي آن‬
‫تعريف شده است ‪ ،‬در دسترس باشد‬
‫‪ ‬اگر نرم افزاري تنها تحت شرايط بسيار نادري درست كار نميكند ‪ ،‬قابل اطمينان‬
‫نيست و در واقع يك زنجير به اندازه ضعيف ترين حلقه اش قابل اطمينان است‬
‫‪ ‬قابليت دسترسي ‪ Availability‬درصدي از زمان است كه محصول براي‬
‫مخاطبانش قابل استفاده بوده است ‪ 0‬براي مثال سامانه اي كه از ‪ 8‬ساعت ‪2‬‬
‫ساعت خراب است ‪ %75،‬در دسترس است و قابليت استفاده ي آن ‪%75‬‬
‫خواهد بود‬
‫نرم افزار خوب از نظر كارفرما‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫به كارگيري آن موجب افزايش توان انجام كار نيروي انساني و در مجموع موجب‬
‫ارتقاي بهره وري موسسه اش گردد‬
‫براي خريد و آموزش و نگهداري آن كمتر هزينه كند و اقتصادي باشد‬
‫محصول به موقع تحويل و بموقع عملياتي گردد‬
‫انتقال از وضعيت قبل از به كارگيري اين محصول به آرامي و با كمترين سربار و‬
‫قطع سرويس دهي انجام پذيرد‬
‫قابل اطمينان باشد (مشابه نظر كاربران)‬
‫انعطاف پذير باشد‬
‫نرم افزار خوب از نظر نگهدارنده‬
‫‪ ‬طراحي خوب‬
‫‪ ‬كمترين خطا و مشكالت كمتر‬
‫‪ ‬رفع اشكال و توسعه ساده و راحت باشد‬
‫‪ ‬مدارك و مستندات قابل قبول داشته باشد‬
‫‪ ‬كد برنامه خوانا و قابل فهم باشد‬
‫‪ ‬قابليت اطمينان باشد‬
‫نرم افزار خوب از نظر توزيع كننده و فروشنده‬
‫‪ ‬مشتري زيادي داشته باشد‬
‫‪ ‬قيمت محصول مناسب باشد‬
‫‪ ‬بموقع بودن زمان ارائه محصول‬
‫‪ ‬ناراضي نبودن خريدار‬
‫‪ ‬سهم مادي مناسب‬
‫‪ ‬دارا بودن آموزش و خدمات و پشتيباني مناسب پس از فروش‬
‫‪ ‬قابليت اطمينان‬
‫نرم افزار خوب از نظر توليد كننده‬
‫‪ ‬رضايت تمام مخاطبين‬
‫‪ ‬بموقع بودن زمان تحويل محصول‬
‫‪ ‬از جهت تخصصي بهترين ويژگي را دارا باشد‬
‫‪ ‬مطابق با فناوري روز‬
‫‪ ‬قابليت استفاده مجدد بخش هاي مختلف در ديگر سيستم ها و حتي‬
‫فروش مستقل آنها‬
‫‪ ‬ارتقاي دانش فني او و كاركنان را بدنبال داشته باشد‬
‫اثرات متقابل ويژگي هاي نرم افزار‬
‫‪ ‬نارضايتي يك گروه از افراد مرتبط با نرم افزار ‪ ،‬در نهايت موجب نارضايتي‬
‫ديگر گروهها خواهد شد‬
‫‪‬‬
‫يعني به عنوان مثال اگر كاربر نتواند كار با اين سامانه نرم افزاري را ياد‬
‫بگيرد و يا كار با آن دشوار باشد ‪ ،‬توان كاري او كاهش پيدا خواهد كرد و‬
‫اين موجب نارضايتي كارفرما ميگردد و اين قطعا“ در فروش بعدي اين‬
‫محصول ايجاد مشكل خواهد كرد‬
‫چرخه عمر نرم افزار ‪Software Life Cycle‬‬
‫‪ ‬از زماني كه ايده ي يك نرم افزار براي يك توليدكننده شكل ميگيرد ‪ ،‬تا زماني كه‬
‫حمايت از محصول توليده شده كنار گذاشته ميشود ‪ ،‬چرخه عمر نرم افزار ناميده‬
‫ميتواند و هم ارز فرايند نرم افزار تلقي ميگردد‬
‫فرايند نرم افزار ‪ :‬مجموعه فعاليت هاي است كه با هدف توليد و تكامل نرم افزار‬
‫انجام انجام ميشود و اين چرخه را ميتوان به مراحل زير تقسيم كرد ‪:‬‬
‫‪ ‬تدوين مشخصات ‪ :‬كارهايي كه محصول بايد انجام دهد و رعايت محدوديتها كه در‬
‫روند توليد يا عملكرد محصول بايد رعايت شود ‪ ،‬تدوين ميگردد‬
‫‪ ‬توليد ‪ Development‬كه شامل ‪ :‬تحليل – طراحي – پياده سازي – آزمايش‬
‫يعني توليد مطابق خواسته ها و شرايط تدوين شده‬
‫‪ ‬استقرار ‪ : Deployment‬نصب در محيط مخاطبان و زير بار واقعي و تست واقعي‬
‫‪ ‬تكامل ‪ :‬ارتقاء و بهبود محصول همزمان با بكارگيري در محيط عملياتي و توليد‬
‫نسخه هاي جديد محصول‬
‫‪ ‬بازنشستگي ‪ : Retirement‬زماني كه به داليلي ‪،‬توليد كننده ‪ ،‬دست از حمايت‬
‫محصول بردارد‬
‫مدلهاي نرم افزار ‪SoftWare Modeling‬‬
‫تجسم و تجريدي از كل فرايند توليد نرم افزار كه شامل ‪:‬‬
‫‪ ‬معرفي مراحل مختلف فرايند توليد نرم افزار و چهارچوبهاي فعاليتهاي هر‬
‫مرحله‬
‫‪ ‬معرفي محصوالت هر مرحله‬
‫‪ ‬معرفي معيارهاي گذر از يك مرحله به مرحله ديگر‬
‫‪ ‬معرفي نظام عالمت گذاري و معناي آن‬
‫‪‬‬
‫مثال ‪ :‬مدل آبشاري – مدل چرخشي – مدل توليد سريع – مدل ‪RUP‬‬
‫دو وجه اساسي توليد نرم افزار‬
‫‪‬‬
‫وجه مديريتي‬
‫مديريت و اداره كردن تخصصي فعاليت ها و تامين منابع مالي‬
‫‪‬‬
‫وجه تخصصي‬
‫مفاهيم و روش هاي نرم افزار ‪ ،‬واسط كاربر ‪ ،‬تست‬
‫البته موضوعات مديريتي و تخصصي بشدت در هم آميخته هستندو بعضي‬
‫مواقع تمايز بين آن دو مشكل ميشود و همچنين اثرات متقابل بين آنها‬
‫بايد مد نظر قرار گيرد‬
‫وجه مديريتي توليد نرم افزار‬
‫جنبه هاي اداري ‪،‬اجرائي و روش هاي است كه شرايط توليد نرم افزار را ميسر و ضابطه‬
‫مند ميسازد ‪:‬‬
‫‪ ‬انتخاب موضوع‬
‫بررسي توان فني ‪ ،‬هزينه ‪ ،‬زمان ‪ ،‬بصرفه بودن‬
‫‪ ‬انتخاب كارفرما‬
‫‪ ‬انتخاب همكار‬
‫‪ ‬انتخاب ابزار‬
‫‪ ‬برنامه ريزي و زمانبندي‬
‫‪ ‬كنترل و هدايت پروژه‬
‫‪ ‬مديريت نيروي انساني‬
‫‪ ‬قيمت گذاري‬
‫‪ ‬بازار و بازاريابي‬
‫‪ ‬امور حقوقي‬
‫وجه مديريتي توليد نرم افزار‬
‫جنبه هاي فني و روش هايي كه توليد نرم افزار خوب را ميسر و ضابطه مند‬
‫ميسازد ‪:‬‬
‫‪‬‬
‫انتخاب مدل توليد‬
‫بررسي مدل و سابق و نيروي متخصص‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫انتخاب استاندارد‬
‫تحليل نيازها‬
‫كاربر پسندي‬
‫طراحي‬
‫انتخاب ابزار‬
‫خطرات و روش هاي كنترل ايمني‬
‫انتخاب مدل آزمون‬
‫قابليت استفاده مجدد‬
‫مشكالت توليد نرم افزار‬
‫عالوه بر مشكالت توليد در ديگر صنايع مثل سرمايه گذاري ‪ ،‬بازار و برگشت سرمايه‬
‫‪ ،‬منابع و محدوديت ها ‪ ،‬ابزار و زمان مشكالت جداگانه زير را دارد‪:‬‬
‫‪ ‬تغييرات سريع در فناوري سخت افزار و نرم افزار‬
‫‪ ‬انتظار در تغيير سريع و انعظاف پذيري نرم افزار‬
‫‪ ‬هزينه هاي نامحسوس‬
‫‪ ‬قابل رويت نبودن فرايند نرم افزار‬
‫‪ ‬نبود قوانين كافي و دشواري نظارت‬
‫‪ ‬شكل گيري انتظارات جديد در حين توليد‬
‫پيگيري ايده هاي جديد كه براي انجام آن تعهدي نداريم ‪ ،‬بهتر است به نسخه‬
‫هاي بعدي موكول گردد تا موجب تاخير در ديگر تعهدات نگردد‪.‬‬
‫مشكالت توليد نرم افزار درايران‬
‫‪ ‬ورود نيروهاي غير متخصص‬
‫از جمله ورود اين اشخاص در اجراي پروژه تكفا‬
‫‪‬‬
‫نيروهاي منجمد‬
‫فارغ التحصيالن قديم و بروز نشدن آنها با پيشرفت و تغيير تكنولوژي‬
‫‪‬‬
‫نيروهاي ناپايدار‬
‫مهاجرت نيروهاي خوب به ديگر كشور ‪ ،‬شركت هاي نرم افزاري را دچار مشكل‬
‫كرده است‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫باور نداشتن هزينه هاي نرم افزار و توليد كنندگان (‪)CopyRight‬‬
‫عدم اطالع و عدم رعايت اصول مهندسي نرم افزار‬
‫آشفتگي در حمايت دولت‬
‫عدم وجود يا عدم پايبندي به استانداردها‬
‫نبود تحقيقات مناسب در زمينه نرم افزار‬
‫‪ ‬جنبه هاي مديريتي‬
‫هر توليدي عالوه بر جنبه هاي تخصصي ‪ ،‬بشدت به جنبه هاي مديريتي نيز‬
‫وابسته است البته با باور عملي به آن‬
‫‪‬‬
‫انتخاب‬
‫‪‬‬
‫سياست هاي دراز مدت‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫انتخاب پروژه ها روي زمينه تخصصي خاص يا خير ؟‬
‫انتخاب پروژه ها بر اساس اجراء در سخت افزار ‪ ،‬سيستم عامل يا محيط تخصصي خاص است يا خير؟‬
‫مهم بودن مبلغ قرارداد ؟‬
‫مدنظر بودن حمايت درازمدت از محصول‬
‫انتخاب همكار‬
‫‪‬‬
‫معيار انتخاب‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫موضوع همكاري و شرايط و ويژگي آن‬
‫ويژگي هاي مثبت اخالقي ‪ ،‬پايبندي به تعهدات و قرارها‬
‫توان تخصصي و تجربه و سابقه الزم‬
‫قدرت كار گروهي‬
‫توان ارتباط با ديگران و روابط عمومي خوب‬
‫داشتن وقت كافي ( وابستگي و انتظار براي يك متخصص كم فرصت ‪ ،‬افراد ديگر را كم اثر ميكند)‬
‫نظم ‪ ،‬تالش‬
‫داشتن سرمايه و يا ارتباطات اجتماعي قوي‬
‫عدم دخالت افراد صرفا“ بابت رفاقت‬
‫تناسب فرد با وظيفه‬
‫تقسيم منافع به نسبت فعاليت‬
‫‪‬‬
‫انتخاب پروژه ‪ :‬با انتخاب يك پروژه نامناسب موفقيت بسيار دشوار است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫وجود مخاطب مشخص يا وجود بازار مناسب ‪ :‬ممكن است موسسه با تالش بسيار محصولي با‬
‫كيفيت فني بااليي توليد كند ولي كسي حاضر به خريد آن نباشد در اين صورت مخاطب پروژه فقط‬
‫توليدكننده آن خواهد بود! و اين يعني هدر رفتن منابع‬
‫كار مشخص ‪ :‬بايد توانايي هاي محصول (خواسته هاي عملكردي) مشخص باشد‬
‫شرايط مشخص ‪ :‬شرايط تاثير گذار مثل زمان ‪ ،‬سيستم عامل‬
‫قابليت انجام ‪ :‬حسب بودجه و تالش و زمان پيش بيني شده قابل انجام باشد‬
‫ارزش ‪ :‬ارزش انجام ‪ ،‬حسب بودجه و تالش و زمان را داشته باشد‬
‫در امتداد اهداف دراز مدت‬
‫توافق رسمي ‪ :‬ويژگي هاي پروژه رسما“ مورد توافق توليد كننده و كارفرما باشد‬
‫عوامل دشوار كننده ي امور تخصصي پروژه‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫حجم بسيار زياد داده ها ‪ :‬مثال“ كار بروي داده هاي سيستم ثبت احوال كشوري يا امور بانكي‬
‫كشور با يك سيستم دانش آموزي يك مدرسه متفاوت است‪.‬‬
‫تعداد كاربران همزمان ‪ :‬به جهت مشكالت همزماني در كار با منابع مشترك‬
‫كاربران راه دور ‪ :‬مشكل مخابراتي (ارتباطي) ‪،‬امنيت ‪ ،‬بن بست ‪ ،‬پشتيباني پروتكل ها‬
‫حساسيت زمان پاسخ و عمل در زمان واقعي‬
‫اهميت ويژه ي قابليت اطمينان و قابليت دسترسي باال‬
‫اهميت ويژه ايمني‬
‫نرم افزار هاي سيستمي‬
‫محيط هاي فيزيكي خاص‬
‫تجهيزات خاص غير متداول‬
‫كار نو و جديد‬
‫‪‬‬
‫عوامل دشوار كننده ي مديريت پروژه‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫انتخاب كارفرما‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫عدم همكاري كاربران نهايي‬
‫تزلزل مديريتي كارفرمايان‬
‫عدم تجانس توليدكنندگان با محيط عملياتي‬
‫همكاران غير خودكار‬
‫همكاران منجمد‬
‫كارفرمايان دولتي‬
‫كارفرمايان خصوصي‬
‫كارفرمايان بي اطالع‬
‫كارفرمايان مطلع‬
‫كارفرمايان قابل اطمينان و سازگار‬
‫ارزيابي انتخاب‬
‫‪‬‬
‫در صورتي كه معيار براي انتخاب داشته باشيم ‪،‬ميتوانيم در طي زمان آنرا ارزيابي كنيم و بكمك‬
‫مقايسه با كارهاي مشابه يا مشورت با متخصصي مربوطه مسيرهاي اشتباه را متوجه و در اولين‬
‫فرصت آنرا تصحيح كنيم‬
‫‪‬‬
‫مديريت نيروي انساني و مديريت دانش‬
‫‪‬‬
‫‪‬‬
‫نيروي انساني مهم ترين و گران ترين عامل در روند توليد نرم افزار است زيرا بزرگترين سرمايه يك موسسه توليد‬
‫نرم افزار ‪” ،‬آگاهي ها“ يا نيروي انساني متخصص آن است‬
‫كار گروهي ‪ :‬براي كار جدي توليد نرم افزار ‪ ،‬دير يا زود ناچار به كار گروهي هستيم و در اين راستا با توجه به‬
‫ويژگي هاي پروژه وجود تخصص هاي مختلفي در در تيم كاري ضروريست ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫معمار نرم افزار‬
‫تحليل گر‬
‫طراح‬
‫برنامه ساز‬
‫واسطه ساز‬
‫متخصص كاربردهاي وب‬
‫متخصص بانك هاي اطالعاتي‬
‫متخصص هوش مصنوعي‬
‫متخصص ميان افزار‬
‫متخصص ايمني‬
‫متخصص استاندارد‬
‫بايگان (مسئول نگهداري مستندات)‬
‫ذكر تخصص هاي فوق به اين معني نيست به ازاي هر تخصص يك يا چندفرد باهمين مسئوليت در موسسه‬
‫بكارگيري ميشود بلكه ممكن است چند كار را يك نفر بعهده بگيرد‬
‫مسئول تيم ‪ :‬الزم است در هر كاري ‪ ،‬فردي مسئول تقسيم كار و هماهنگي فعاليتهاي اعضاي تيم باشد و انتخاب‬
‫فردي شايسته و مورد قبول افراد تيم باشد‬
‫‪‬‬
‫‪‬‬
‫محيط فيزيكي كار ‪ :‬محيط نامناسب توان كاري را بشدت كاهش ميدهد و محيط فيزيكي كار بايد داراي شرايط‬
‫زير باشد ‪:‬‬
‫‪ ‬درجه حرارت‬
‫‪ ‬صندلي و ميزكار راحت و مسلط‬
‫‪ ‬قفسه بندي مناسب‬
‫‪ ‬نور مناسب‬
‫‪ ‬بخش بندي مناسب‬
‫‪ ‬وسايل و خدمات پذيرايي‬
‫‪ ‬نظم محيط‬
‫‪ ‬نظافت و زيبايي محيط‬
‫محيط ذهني‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اطمينان از رعايت حقوق مادي شخصي‬
‫روشن و مدون بودن حقوق مادي‬
‫كافي بودن حقوق مادي براي نيازهاي به حق و معقول شخص‬
‫روشن و مدون بودن وظايف و اختيارات‬
‫صداقت و صميميت و خلوص متقابل‬
‫كار از راه دور‬
‫‪‬‬
‫توليد نرم افزار از كارهايي است كه به خوبي از راه دور و ازمنزل هر يك از نيروهاي همكار قابل انجام است‬
‫‪‬‬
‫‪‬‬
‫آموزش نيروها ‪ :‬اگر نيرويي بالقوه داراي توانايي هاي الزم و اماده همكاري‬
‫است ‪ ،‬با ارائه يآموزش هاي مورد نياز ميتوان براي استفاده كارآمدتر از توان‬
‫او اقدام كرد‪0‬‬
‫‪ ‬آموزش هاي محيطي ‪ ،‬شامل مجموعه آگاهي هاي الزم از محيط يا‬
‫ماوريت جديد شخص براي اطالع از اهداف و روش ها و مقررات براي كار‬
‫بهتر در محيط كار است‪.‬‬
‫جلسات هم فكري و تصميم گيري ‪ :‬جلسات تنها با حضور افراد ذيربط صورت‬
‫ميگيرد و كارهاي انجام شده مورد بحث و بررسي و ارزيابي قرارگرفته و براي‬
‫اقدامات بعدي تصميم گيري ميشود‬
‫متریک های پروژه و فرآیند نرم افزا َر ََ‬
‫متریک و اندازه گيری چيست؟‬
‫متریک های فرآیند و محصول نرم افزاری اندازه گيری های کميتی هستند که به‬
‫افرادی که با نرم افزارکار می کنند امکان می دهند تا نسبت به کارآمد بودن فرآیند و‬
‫پروژه های نرم افزاری بينش پيدا کنند‪.‬‬
‫انواع متریک های نرم افزار‬
‫‪ .1‬فرآیند‬
‫‪ .2‬پروژه‬
‫‪ .3‬متریک های محصول‬
‫دالیل اندازه گيری منابع وفرآیند های نرم افزاری‬
‫‪ .1‬مشخص کردن‬
‫‪ .2‬ارزیابی کردن‬
‫‪ .3‬پيش بينی کردن‬
‫‪ .4‬پيشرفت کردن‬
‫متریک ها در حوزه پروژه و فرآیند‬
‫نشانگرهای فرآیندی به یک سازمان مهندسی نرم افزار امکان می دهند تا‬
‫ارزیابی کنند چه چيزی موثر و چه چيزی غير موثر است‬
‫متریک پردازشی در سرتاسر پروژه ها وطی زمان های طوالنی جمع آوری‬
‫ميشود ‪.‬هدف آنها ایجاد عالمتهایی است که به بهبود طوالنی مدت در‬
‫فرآیند نرم افزاری منجر می شود‪.‬‬
‫ویژگيها ی عالمتهای پروژه‬
‫‪ .1‬خطرات بالقوه را پيدا می کند‪.‬‬
‫‪ .2‬حيطه های مشکل آفرین را چاره ميکند‪.‬‬
‫‪ .3‬جریان کار یا وظایف را تنظيم می کند‪.‬‬
‫‪ .4‬وضعيت یک پروژه در حال اجرا را ارزیابی می کند‪.‬‬
‫تحليل خرابی به چه روشهایی صورت می گيرد؟‬
‫‪ .1‬همه خطاها و معایب بسته به منشء شان طبقه بندی ميشوند‪.‬‬
‫‪ .2‬هزینه تصحيح هر خطا و عيب ثبت می شود‪.‬‬
‫‪ .3‬تعداد خطا ها و معایب در هر طبقه شمرده ميشود و آنها به ترتيب از باال به پایين‬
‫رده بندی می شوند‪.‬‬
‫‪ .4‬هزینه کلی خطاها و معایب در هر طبقه محاسبه ميشود‪.‬‬
‫هدف از متریک های شبکه دو جنبه دارد‪:‬‬
‫‪ .1‬متریک ها برای به حداقل رساندن زمان برنامه از طریق انجام تطبيق های الزم‬
‫برای پرهيز از تاخيرها و کم کردن خطرات و مشکالت بالقوه بکار می روند‪.‬‬
‫‪ .2‬متریکهای پروژه به منظور سنجش کيفيت محصول بصورت مستمر و اصالح‬
‫رهيافت فنی برای بهبود کيفيت در صورت لزوم مورد استفاده قرار می گيرد‪.‬‬
‫هر پروژه باید موارد زیر را اندازه گيری نماید‪:‬‬
‫‪ .1‬ورودی ها‪-‬اندازه منابع (یعنی افراد ومحيط) الزم برای انجام کار‬
‫‪.2‬خروجی ها‪-‬اندازه گيری های محصوالت کاری یا قابل حمل که طی فرآیند‬
‫مهندسی نرم افزار توليد ميشوند‪.‬‬
‫‪ .3‬نتایج‪-‬اندازه هایی که موثر بودن کاالهای قابل حمل و تحویل را بيان ميکنند‪.‬‬
‫اندازه گيری در دنيای نرم افزار‬
‫‪ .1‬اندازه گيری مستقيم‪:‬شامل هزینه وتالش به کار رفته می باشد‪.‬‬
‫باشد‪.‬مانند‪:‬خطوط کد توليدی –سرعت اجرا – اندازه حافظه‬
‫‪ .2‬اندازه گيری غير مستقيم عبارتند از ‪:‬عملکرد –کيفيت – پيچيدگی‪ -‬کارآیی‪-‬‬
‫قابليت اطمينان و نگهداری‬
‫مجموعه ای از متریک های ساده مبتنی بر اندازه را می توان برای هر پروژه تکميل نمود‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ .1‬خطاها در ‪(kloc‬هزار خط برنامه)‬
‫‪ .2‬تعداد عيب ها در هر هزار خط‬
‫‪ .3‬هزینه هر خط برنامه‬
‫‪ .4‬تعداد خطا ها به ازای هر نفر‪-‬ماه‬
‫‪ .5‬تعداد خطوط برنامه به ازای هر نفر –ماه‬
‫هزینه هر صفحه از مستندات‬
‫امتيازات عملکردی‬
‫‪ ‬با استفاده از یک رابطه تجربی بر اساس اندازه های قابل شمارش ( مستقيم )‬
‫دامنه اطالعات نرم افزاری و ارزیابی پيچيدگی نرم افزاری بدست می آیند‪.‬‬
‫فاکتورهای وزنی‬
‫پيچيده‬
‫‪6‬‬
‫=‬
‫‪7‬‬
‫=‬
‫‪6‬‬
‫=‬
‫‪15‬‬
‫=‬
‫‪10‬‬
‫=‬
‫متوسط‬
‫‪4‬‬
‫‪5‬‬
‫‪4‬‬
‫‪10‬‬
‫‪7‬‬
‫ساده‬
‫‪3‬‬
‫‪4‬‬
‫‪3‬‬
‫‪7‬‬
‫‪5‬‬
‫تعداد‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫پارامتر های مورد اندازه‬
‫تعداد ورودی های کاربر‬
‫تعداد خروجی های کاربر‬
‫تعداد پرس و جوها‬
‫تعداد پرونده ها‬
‫تعداد رابطهای خارجی‬
‫تعداد کل‬
‫تعداد ورودی کاربر ‪:‬‬
‫هر ورودی که داده های محوری و مورد نياز برنامه را فراهم آورد‪.‬داده های ورودی باید با سواالتی که‬
‫جداگانه پرسيده می شوند فرق داشته باشند ‪.‬‬
‫تعداد خروجی کاربر ‪:‬‬
‫هر خروجی ( به گزارشها ‪ ،‬بررسی ها ‪ ،‬پيام های خطا و ‪ ...‬اشاره دارد ) که اطالعات مبتنی بر برنامه‬
‫کاربردی نرم افزار را فراهم آورد ‪.‬‬
‫تعداد در خواستهای کاربر ‪:‬‬
‫هر ورودی مرتبط که باعث بوجود آوردن چندین پاسخ نرم افزاری فوری به شکل خروجی مرتبط می‬
‫شود‪.‬‬
‫تعداد فایلها ‪:‬‬
‫هر نوع فایل اصلی منطقی ( گروه بندی منطقی داده هایی که ممکن است یکی از بحثهای یک پایگاه‬
‫داده های بزرگ یا یک فایل جدا باشند ‪) .‬‬
‫تعداد رابطه های خارجی ‪:‬‬
‫هر رابطه قابل خوانده شدن توسط ماشين ( فایلهای داده ها بر روی نوار یا دیسک ) که برای انتقال‬
‫اطالعات به یک سيستم دیگر بکار می روند ‪.‬‬
‫تعيين پيچيدگی‬
‫وقتی داده ها جمع آوری شدند ‪ ،‬یک مقدار پيچيدگی با هر شمارش همراه می‬
‫شود ‪ ،‬که تعيين آن تا حدی ذهنی است ‪.‬‬
‫برای محاسبه امتيازات عملکردی ) ‪ ، ( FP‬رابطه ذیل به کار می رود ‪:‬‬
‫] ) ‪FP = (Count total) * [ 0.65 + 0.01 * ∑ ( Fі‬‬
‫‪і = 1 .. 14‬‬
‫‪,‬‬
‫مجموع همه مدخلهای ‪FP‬‬
‫سوالهایی برای تنظيم پيچيدگی‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫آیا‬
‫آبا‬
‫آیا‬
‫آّیا‬
‫آیا‬
‫آبا‬
‫آیا‬
‫آیا‬
‫آیا‬
‫آیا‬
‫آیا‬
‫آیا‬
‫آیا‬
‫سيستم به پشتيبان و احيا و بازیابی فایل اطمينان نياز دارد؟‬
‫ارتباطات داده ها مورد نياز است ؟‬
‫عملگردهای پردازشی توزیع شده وجود دارند ؟‬
‫عملکرد آنها ضروری و بحرانی است ؟‬
‫سيستم در یک محيط عملياتی کاربردی سنگين موجود اجرا شده است ؟‬
‫ورود داده های روی خط به تراکنش ورودی نياز دارد ؟‬
‫فایلهای اصلی بطور متصل و روی خط به هنگام سازی می شوند ؟‬
‫فرآیندهای درونی پيچيده است ؟‬
‫تبدیلها و نصب چندگانه در سازمانهای مختلف طراحی شده است ؟‬
‫کد برنامه طوری طراحی شده که مورد استفاده مجدد قرار گيرد ؟‬
‫سيستم برای نصب چندگانه در سازمانهای مختلف طراحی شده است ؟‬
‫برنامه نرم افزاری برای تسهيل تغييرات و سهولت استفاده توسط کاربر طراحی شده است ؟‬
‫ورودی ها و خروجی ها ‪ ،‬فایل ها یا درخواستها و پرس و جو ها پيچيده هستند ؟‬
‫بعد از محاسبه امتيازات عملکردی‬
‫برای نرمال کردن اندازه ها ‪ ،‬جهت کيفيت و بهره وری نرم افزار و دیگر ویژگيها مورد استفاده قرار‬
‫می گيرند‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تعدا خطاها به ازاری هر امتياز کارکردی‬
‫تعداد عيوب و نواقص به ازای هر امتياز کارکردی‬
‫تعداد صفحات مستندات به ازای هر امتياز کارکردی‬
‫تعدا امتيازات کارکردی به ازای هر نفر ماه‬
‫تطبيق رهيافتهای مختلف متریک‬
‫ميانگين تعداد خطوط‬
‫به ازای هرامتياز‬
‫کارکردی‬
‫‪LOC / FP‬‬
‫‪320‬‬
‫تعداد خطوط ‪ C++‬تقریبا ‪1.6‬‬
‫برابر خطوط ‪، FORTRAN‬‬
‫امتياز و قابليت عملکردی‬
‫را ایجاد می کند ‪.‬‬
‫زبان برنامه سازی‬
‫‪Assembly Language‬‬
‫‪128‬‬
‫‪C‬‬
‫‪106‬‬
‫‪COBOL‬‬
‫‪106‬‬
‫‪FORTRAN‬‬
‫‪90‬‬
‫‪Pascal‬‬
‫‪64‬‬
‫‪C++‬‬
‫‪53‬‬
‫‪Ada 95‬‬
‫‪32‬‬
‫‪Visual Basic‬‬
‫‪22‬‬
‫‪Smaltalk‬‬
‫‪16‬‬
‫) ‪Powerbuilder (code generator‬‬
‫‪12‬‬
‫‪SQL‬‬
‫متریکهای کيفيت نرم افزار‬
‫کيفيت برنامه کاربردی فقط با‬
‫‪ ‬مفيد بودن نيازمندیهای توصيف کننده مشکل‬
‫‪ ‬طراحی مربوط به مدل سازی راه حل‬
‫‪ ‬مفيد بودن کد برنامه قابل اجرا‬
‫‪ ‬آزمونهایی که خطاها را آشکار می کنند‬
‫بدست می آیند ‪.‬‬
‫مهندس نرم افزار خوب از اندازه گيری برای‬
‫‪ ‬ارزیابی کيفيت تحليل‬
‫‪ ‬مدلهای طراحی‬
‫‪ ‬کد منبع‬
‫‪ ‬آزمونهایی که در موقع ساخت نرم افزار بوجود آمده اند‬
‫استفاده می کند ‪.‬‬
‫متریکهایی چون‬
‫‪ ‬تعداد خطاهای محصول کاری به ازای هر امتياز کارکردی ( نيازمندیها یا طراحی )‬
‫‪ ‬خطاهای کشف شده به ازای هر ساعت بازبينی‬
‫‪ ‬تعداد خطاهای کشف شده به ازای هر ساعت آزمون‬
‫در خصوص تاثير و سودمندی فعاليتهایی که متریکهایی برایشان به کار رفته ‪ ،‬بصيرت و‬
‫آگاهی به دنبال خواهد داشت ‪.‬‬
‫نگاهی اجمالی بر فاکتورهای موثر بر کيفيت‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫راه اندازی محصول‬
‫بررسی محصول ( تغيير در آن )‬
‫انتقال محصول ( از محيطی به محيط دیگر )‬
‫بررسی رابطه بين این عوامل کيفيتی ‪:‬‬
‫ارائه چارچوب مکانيسمی برای اوليت بندی کيفيتها توسط مدیر پروژه‬
‫‪(1‬‬
‫ارائه ابزاری برای ارزیابی کميتی از نحوه توسعه و پيشرفت نسبت به اهداف کلی‬
‫‪(2‬‬
‫ارائه یک چارچوب تقابل عمل از پرسنل ‪ QA‬در تالش برای پيشرفت‬
‫‪(3‬‬
‫اندازه گيری کيفيت‬
‫اندازه های فراوانی از کيفيت نرم افزار وجود دارد ولی قابليت‬
‫‪ ‬تصحيح‬
‫‪ ‬تعمير و نگهداری‬
‫‪ ‬پيوستگی‬
‫‪ ‬قابليت استفاده‬
‫معيار های مفيدی را در اختيار تيم پروژه قرار می دهند ‪.‬‬
‫صحت ‪ :‬برنامه باید به درستی کار کند ‪ ،‬تعداد نقصها ( عدم انطباق با نيازمندیها ) در‬
‫هر هزار خط برنامه ‪ ،‬رایجترین اندازه برای قابليت اصالح می باشد ‪.‬‬
‫قابليت نگهداری ‪ :‬تالش بيشتری می طلبد که همان سهولت تصحيح برنامه در هنگام‬
‫مواجه شدن با یک خطا است که متوسط زمان تغيير یک متریک ساده مبتنی بر‬
‫زمان برای اندازه گيری آن می باشد‪.‬‬
‫جامعيت ( تماميت ) ‪ :‬توانایی یک نرم افزار را برای مقاومت در برابر دستبردها به برنامه‬
‫ها ‪ ،‬داده ها و اسناد ‪ ،‬می سنجد ‪ .‬که دو ویژگی باید بررسی شود ‪:‬‬
‫‪ ‬تهدید ‪ :‬بروز یک حمله از نوعی خاص و در محدوده زمانی مشخص‬
‫احتمال دفع نوعی خاص از حمله‬
‫‪ ‬امنيت ‪:‬‬
‫] ( امنيت ‪ ( * ) 1-‬تهدید ‪ =∑[ ( 1-‬تماميت‬
‫قابليت استفاده ( سهولت کاربرد ) ‪ :‬اگر برنامه فاقد آن باشد ‪ ،‬دچار نقص خواهد‬
‫شد ‪ ،‬حتی در صورتيکه عملکردهای آن ارزشمند باشند ‪.‬‬
‫‪(1‬‬
‫‪(2‬‬
‫‪(3‬‬
‫‪(4‬‬
‫مهارت فيزیکی یا هوشی که برای یادگيری سيستم مورد نياز است ‪.‬‬
‫زمان مورد نياز برای ماهر شدن در استفاده از سيستم ‪.‬‬
‫افزایش خالص بهره وری که موقعی اندازه گيری می شود که سيستم توسط‬
‫فردی که بطور متوسط کارایی دارد مورد استفاده قرار گيرد ‪.‬‬
‫یک ارزیابی ذهنی و معقول از دیدگاههای کاربران نسبت به سيستم ‪.‬‬
‫کارایی رفع نقص ‪DRE‬‬
‫یک اندازه از توانایی فيلتر کردن فعاليتهای کنترل و تضمين کيفيت در موقعی بشمار می‬
‫آید که در همه فعاليتهای چار چوب فرآیند به کار رفته باشد ‪.‬‬
‫به طور ایده آل مساوی ‪ 1‬است ‪.‬‬
‫) ‪DRE = E / ( E + D‬‬
‫که ‪ E‬تعداد خطاهایی است که قبل از تحویل نرم افزار به کاربر نهایی مشاهده شده‬
‫و ‪ D‬خطاهایی است که بعد از تحویل یافت شده اند و در حالت عادی بزرگتر از ‪ 0‬است ‪.‬‬
‫‪ DRE‬را می توان راهی برای ارزیابی توانایی تيم در پيدا کردن خطاها قبل از انتقال به مهندسی‬
‫نرم افزار یا فعاليت چارچوب بعدی دانست ‪.‬‬
‫فرایند جمع اوری متریک های نرم افزاری‬
‫تحليل و مدیریت مخاطرات (ريسك) چيست؟‬
‫تحليل ریسک (مخاطره) و مدیریت عبارت است از یک سری از اقدامات که یک تيم‬
‫نرم افزاری کمک می کند تا عدم قطعيت را دریافته و آنرا مدیریت نمایند‪.‬‬
‫آگاهی از اینکه چه اشكاالتی ممکن است پيش آید‪.‬‬
‫اولين گام ‪ :‬شناسایی ریسک‬
‫دومين گام ‪ :‬باید هر ریسکی تحليل گردد تا احتمال وقوع آن و ميزان خسارتی را که در‬
‫صورت وقوع به بار می آورد تعيين شود‪ .‬به محض اینکه این اطالعات سبک شدند‪،‬‬
‫خطرات بر اساس احتمال وقوع و تاثير طبقه بندی می شوند‪.‬‬
‫سومين گام ‪ :‬طرحی پياده می شود تا خطراتی که احتمال وقوع آنها زیاد است وتاثير‬
‫آنها بيشتر است مدیریت نماید‪.‬‬
‫ریسک های نرم افزار‬
‫‪ ‬عدم قطعيت‪ :‬رویدادی که مشخص می کند آیا ریسکی به وقوع خواهد پيوست یا‬
‫خير‪ :‬یعنی هيچ ریسکی که احتمال وقوع آن ‪ %100‬باشد وجود ندارد‪.‬‬
‫‪ ‬خسارت ‪ :‬اگر ریسک یک واقعيت باشد‪ ،‬پيامد ها و یا خسارات ناخواسته ای بوقوع‬
‫خواهد پيوست‪.‬‬
‫یک روش کاربردی برای شناسایی ریسک ها عبارت است از تهيه یک چک ليست‬
‫حاوی موارد ریسک از چک ليست می توان برای شناسایی ریسک و نقطه عطف‬
‫مربوط به مسائل فرعی شناخته شده و قابل پيش بينی ریسک استفاده کرد‪.‬‬
‫ساخت و توسعه یک جدول ریسک‪:‬‬
‫‪ ‬یک تيم پروژه با فهرست بندی تمام ریسک ها (صرفنظر از فاصله زمانی وقوع آن) در‬
‫اولين ستون جدول آغاز می گردد‪.‬‬
‫‪ ‬هر ریسک در ستون دوم طبقه بندی شده است‪.‬‬
‫‪ ‬احتمال وقوع هر ریسک در ستون بعدی جدول آمده است‪.‬ميزان احتمال هر ریسک‬
‫را اعضای تيم می توانند تخمين بزنند‪.‬‬
‫‪ ‬ميانگين مقوله های هر چهار جزء ریسک – عملکرد‪ ،‬پشتيبانی ‪ ،‬هزینه و برنامه‬
‫زمانی – برای تعيين ارزش کلی تاثير برآورده می گردد‪.‬‬
‫مثالی‬
‫از‬
‫مخاطرات‬
‫پيش‬
‫م‪.‬ن‪.‬ت مدیریت – نظارت – تخفيف (‪)RMMM‬‬
‫‪ CU‬مشتری و ‪ PS‬سایز پروژه ‪ TE‬کارکنان ‪BU‬‬
‫تجاری ‪ DE‬محيط توسعه ‪.‬‬
‫مقادیر تاثير ‪:‬‬
‫‪ -1‬فاجعه ‪ -2‬مرزی‬
‫‪ -3‬بحرانی ‪ -4‬قابل اغماض‬
‫از‬
‫مرتب‬
‫سازی‬
‫مدیر پروژه جدول مرتب شده حاصل را مورد بررسی قرار داده و یک خط فرضی‬
‫(برشی) تعریف می کند «خط فرضی» بيانگر این است که فقط به ریسک هایی که‬
‫در باالی خط قرار گرفته اند توجه بيشتری می شود‪ .‬ریسک هایی که در پایين خط‬
‫قرار می گيرند مجددا مورد بررسی قرار می گيرند تا اولویت بندی مرحله دوم انجام‬
‫پذیرد‪.‬‬
‫تمام ریسک هایی که در باالی خط فرضی قرار می گيرند باید کنترل گردند‪ .‬ستونی‬
‫که تحت عنوان م‪.‬ن‪.‬ت ریسک نام گرفته دارای نشانگری است به طرف تخفيف و‬
‫تعدیل ‪ ،‬کنترل و نظارت و مدیریت ریسک و یا بعبارت دیگر مجموعه ای از چند صفحه‬
‫اطالعات در خصوص ریسک که برای کليه ریسک های که در باالی خط فرضی قرار‬
‫گرفته اند در نظر گرفته شده اند ‪.‬‬
‫ارزیابی ميزان اثر‪:‬‬
‫‪.A‬‬
‫‪.B‬‬
‫‪.C‬‬
‫ماهيت ‪ :‬ماهيت ریسک بيانگر مشکالتی است که در صورت وقوع ریسک بروز خواهند نمود‪.‬‬
‫حوزه ‪ :‬سختی آن را با پراکندگی و توزیع کلی آن تلفيق می نماید‪.‬‬
‫زمان‪ :‬بيانگر این است که چه وقت و برای چه مدتی تاثير آن محسوس خواهد بود‪.‬‬
‫در بيشتر موارد یک مدیر پروژه خواهان این است که «خبر های ناخوشایند » هرچه‬
‫زودتر برسد ‪ .‬اما در برخی مواقع ترجيح می دهند که این خبرها دیرتر برسند‪.‬‬
‫در معرض ریسک قرار گرفتن کلی را ‪ RE‬ناميده می شود و می توان با استفاده از رابطه زیر‬
‫تعيين کرد‪.‬‬
‫‪RE= P* C‬‬
‫بيانگر هزينه وارده به پروژه در صورت وقوع ريسک‬
‫بيانگر احتمال وقوع يک ريسک‬
‫‪‬‬
‫چند رهيافت براي مديريت خطر‬
‫‪ ‬در زمان هر انتخاب بايد به خطرات احتمالي اين تصميم توجه داشت‬
‫‪ ‬دقت در انتخاب افراد (چه مخاطب و چه همكار)‬
‫‪ ‬رضايت مجموعه نيروهاي داخلي‬
‫‪ ‬جلوگيري از ايجاد محصول نامطلوب و بي كيفيت‬
‫‪‬‬
‫مستند سازي ‪ :‬كار ثبت ‪ ،‬توليد سند و در واقع ماندگار كردن اطالعات ‪ ،‬قرارها ‪ ،‬خواسته ‪ ،‬طرح ها ‪،‬‬
‫روش ها ‪ ،‬فرايندها ‪ ،‬وقايع و ثبت همه موضوعات مرتبط با پروژه‬
‫‪‬‬
‫كاربردهاي مستندسازي ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ايجاد زبان مشترك‬
‫كاهش بدفهمي و تبعات آن‬
‫افزايش قابليت رويت‬
‫هدايت و كنترل توليد‬
‫مقابله با مشكل تغيير‬
‫مقابله با مشكل تغيير ديدگاهها و فراموشي‬
‫كمك به استفاده مجدد‬
‫مبناي اسنتاد در دعوا هاي حقوقي‬
‫ابزار پيش گيري از خطا و اشكال زدائي و نگهداري‬
‫ابزار كاهش خطر‬
‫كمك به مديريت بهتر‬
‫رهيافت ها براي مستندسازي موثر‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫استفاده از ابزارهاي مناسب رايانه اي‬
‫داشتن الگوهاي مشخص‬
‫استفاده از الگوهاي آماده‬
‫داشتن نظام بايگاني مناسب‬
‫داشتن مسئول مشخص‬
‫توليد به موقع‬
‫ارائه رسمي و به موقع سند‬
‫گزارش عدم توفيق‬
‫مديريت نسخه هاي مختلف سند‬
‫جمع آوري زباله ها (اسناد غير مفيد)‬
‫‪‬‬
‫استاندارد و كيفيت‬
‫‪ ‬استاندارد چيست ؟‬
‫‪ ‬مجموعه اي از تعاريف يا قرارها كه از مشخصات فني يك مقوله و توسط صاحب‬
‫نظران آن مقوله ‪ ،‬بر اساس مباني مشخص ‪ ،‬تعريف و تدوين شده باشد‪.‬‬
‫‪ ‬بهترين راه دسترسي به استانداردها ‪ ،‬از طريق موسسات مولد استاندارد مثل‬
‫‪ IEEE‬و ‪ W3G‬و ‪ OMG‬و موسسات مسئول استاندارد مثل ‪ ANSI‬و ‪ ISO‬است ‪0‬‬
‫‪ ‬موسساتي مثل مثل ‪ ANSI‬و ‪ ISO‬معموال“ دسترسي به استانداردهاي مختلف از‬
‫موسسات مرتبط در كشورهاي مختلف را حمايت كرده و امكان جستجو را فراهم‬
‫ميكنند و در واقع آنها استانداردها را به عنوان محصول ميفروشند و موسسات غير‬
‫انتفاعي مثل ‪ OMG‬و همچنين موسسات تجاري مثل ‪ HP‬دريافت محدود مجاني‬
‫استاندارد هاي خود را اجازه ميدهند‪0‬‬
‫‪‬‬
‫قيمت گذاري و بازار‬
‫‪‬‬
‫هزينه ها ي توليد‬
‫‪ ‬نيروي انساني‬
‫‪ ‬محيط كار‬
‫‪ ‬تجهيزات اداري‬
‫‪ ‬سخت افزار‬
‫‪ ‬نرم افزار هاي مورد استفاده‬
‫‪ ‬ابزار هاي توليد نرم افزار‬
‫‪ ‬هزينه هاي آزمايش و كنترل توليد‬
‫‪ ‬هزينه هاي تغيير‬
‫‪ ‬هزينه هاي آموزش‬
‫‪ ‬تبليغات و بازاريابي‬
‫‪ ‬مسافرتها‬
‫‪ ‬خدمات رفاهي براي كاركنان‬
‫‪‬‬
‫‪‬‬
‫شانس تعداد نسخه هاي فروش‬
‫برنامه ريزي نوع فروش ( سفارش محدود – توليد انبوه)‬
‫‪‬‬
‫طراحي واسط كاربر‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫بخشي از يك سامانه كه به نوعي با مخاطبان اين سامانه ارتباط برقرار ميكند‪0‬‬
‫واسط كاربر همان است كه كاربران نهايي از فرايند توليد نرم افزار در انتها ببينيم‪0‬‬
‫اجزاء واسط كاربر ‪:‬‬
‫‪ ‬آنچه روي صفحه نمايش ظاهر ميشود‬
‫‪ ‬انواع فهرستها‬
‫‪ ‬انواع پيام ها‬
‫‪ ‬فرمانهايي كه در اختيار كاربر قرار ميگيرند‬
‫‪ ‬انواع فرمها‬
‫‪‬‬
‫آزمايش‬
‫‪‬‬
‫‪‬‬
‫تمام تالش هاي كشف و رفع خطا عمال“ در مقوله ي آزمايش قرار ميگيرد و يكي از آزمايشات مهم‬
‫آزمايش كد نرم افزار مورد توجه است‪0‬‬
‫آزمايش جعبه سياه‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫در اين آزمايش مولفه به صورت يك جعبه ي سياه كه عملكرد داخلي آنرا نميدانيم ‪ ،‬تلقي ميشود‪ 0‬پس در‬
‫اين آزمايش عملكرد بيروني و نتيجه اجراي اين مولفه مورد توجه خواهد بود‪ 0‬ميخواهيم اجراي اين مولفه در‬
‫مقابل ورودي هاي مختلف ‪ ،‬به خروجي هايي كه انتظار داريم منجر شود ‪ 0‬بايد توجه داشته باشيم كه ‪:‬‬
‫اگر مولفه اي براي ‪ n‬مجموعه از ورودي ها درست عمل كند هيچ ضمانتي وجود ندارد كه براي ‪ n+1‬امين‬
‫مجموعه از ورودي ها درست كار خواهد كرد‪0‬‬
‫به اين ترتيب به جز مولفه هاي بسيار كوچك و بديهي ‪ ،‬آزمايش كامل مولفه ‪ ،‬براي تمام ورودي هاي ممكن‬
‫عملي نيست ‪ 0‬به عنوان مثال براي تابع ساده اي مثل )‪ int add(int a , int b‬بايد تمام مقادير ممكن براي‬
‫پارامترهاي ‪ a‬و ‪ b‬و نتيجه ‪ add‬را در نظر گرفت‪0‬‬
‫عملكرد درست يك مولفه در مقابل وروديهاي غلط هم مهم است ‪0‬‬
‫تهيه مولفه اي كه وظيفه آن توليد داده هاي آزمايشي براي مولفه اصلي مورد آزمايش است‪0‬‬
‫در انتخاب مجموعه مقادير حتما“ مقادير لبه مرز مورد آزمايش قرار گيرند‬
‫‪‬‬
‫آزمايش جعبه سفيد‬
‫‪‬‬
‫در اين آزمايش عملكرد داخلي مولفه مورد توجه است ‪ 0‬ميخواهيم مسيرهاي مختلف اجراي‬
‫دستورات اين مولفه را دنبال كنيم ‪ 0‬به گونه اي كه مطمئن شويم تمام مسيرهاي ممكن پوشش‬
‫داده شده و همه به درستي كار ميكند‪0‬در اين جا هم بايد توجه داشته باشيم كه ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫پوشش تمام مسيرها به جزء مولفه هاي بسيار ساده عملي نيست ‪ 0‬چرا كه اگر روند اجراي حلقه ‪ ،‬تعداد‬
‫مسيرها ميتواند نامحدود باشد‪ 0‬پس اين جا هم با تعداد زياد حالت ها روبرو هستيم‪0‬‬
‫اينجا هم راه حل اصلي براي برخورد با تعداد زياد ‪ ،‬گروه بندي مسيرها و سعي در انتخاب داده هاي آزمايش‬
‫به گونه اي است كه از تمام مسيرها مثال هايي آزمايش شود‪ ،‬با اين اميد كه اين مولفه در قبال تمام‬
‫مسيرهاي مشابه درست عمل ميكند‪0‬‬
‫دستورات متوالي را ميتوان به عنوان يك بلوك در نظر گرفت ‪ ،‬با اين تعبير كه اگر يكي اجراء شود عمال“ بقيه‬
‫هم اجراء ميشوند و به اين ترتيب كا راحت ميشود‪ 0‬در اين آزمايش جعبه سفيد بايد تمام انواع ارتباط بين‬
‫بلوك ها پوشش داده شوند‬
‫پوشش شرط (‪ : )if‬تمام شاخه هاي ممكن در عبارات شرطي پوشش داده شوند و مالحظه ميشود كه‬
‫چقدر جمالت ظرطي تودرتو دردسر سازند‪0‬‬
‫پوشش حلقه (‪ : )Loop‬تمام حلقه ها بايد پوشش داده شوند‪0‬‬
‫كشف و حذف كدهايي كه هيچ وقت اجراء نميشوند ‪0‬‬
‫حلقه هايي كه شرط ورود به آن يا خروج از آن ‪ ،‬به اشتباه هيچ گاه برقرار نميشود‪0‬‬
‫هر دو آزمايش جعبه سفيد و سياه ضروريست و انجام يكي ‪ ،‬ضرورت آزمايش ديگر را نفي‬
‫نميكند‪0‬‬
‫‪‬‬
‫آزمايش ساختمان داده ها ( بررسي اقالم داده ها و مقادير مورد نظر )‬
‫‪‬‬
‫آزمايش‬
‫آزمايش‬
‫آزمايش‬
‫آزمايش‬
‫كارايي‬
‫مجدد‬
‫بحران ( وضعيت نرم افزار در بدترين شرايط مورد ارزيابي قرار گيرد)‬
‫آلفا ( آزمايش محصول در محيط كاري توليد كننده نه محيط واقعي)‬
‫‪‬‬
‫آزمايش بتا ( آزمايش محصول در محيط فيزيكي همكاران يا كاربران آزمايش ‪ ،‬يعني توسط افرادي غير از‬
‫توليد كننده و غير مشتري)‬
‫آزمايش قبول (‪ : )Acceptance test‬آزمايش درستي محصول نهايي و در محيط و شرايط واقعي و نهايي‬
‫كار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬