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آزمايش درستي محصول نهايي و در محيط و شرايط واقعي و نهايي
كار