Transcript فصل16

‫تضمين کيفيت نرم افزار‬
‫فصل ‪ 16‬کتاب پرسمن‬
‫ابوالحسن عزیزی‪،‬رهام رنجبر‪،‬نقی همت پور‬
‫آبانماه ‪1392‬‬
‫‪1‬‬
‫کيفيت‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫رابرت پرسینگ‪:‬کیفیت می دانید چیست ولی در عین حال نمی دانید چیست ولی‬
‫بعضی از چیزها بهتر از بقیه اند یعنی کیفیت آنها بیشتر است‪.‬‬
‫دیوید گاروین‪:‬کیفیت مفهومی پیچیده و چند وجهی است که از پنج دیدگاه متفاوت‬
‫قابل توصیف است‪:‬‬
‫دیدگاه متعالی‪:‬همانند پرسینگ استدالل می کند که کیفیت چیزی است که‬‫بالفاصله آن را تشخیص می دهید ولی نمی توانید آن را بصراحت توضیح‬
‫دهید‪.‬‬
‫دیدگاه کاربری ‪-‬دیدگاه سازندگان ‪-‬دیدگاه محصولی ‪-‬دیدگاه ارزش محور‬‫در مورد نرم افزار ‪ 2‬نوع کیفیت مطرح می باشد‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪2‬‬
‫کیفیت طراحی که شامل نیازمندیها‪ ،‬توصیفات ‪ ،‬و طراحی سیستم می باشد‪.‬‬
‫کیفیت همنوایي که بیشتر بر پیاده سازی تاکید دارد‪.‬‬
‫رضایت مشتری = تولید محصول ‪ +‬کیفیت باال ‪ +‬تحویل طبق برنامه با بودجه پیش بینی‬
‫شده‬
‫کيفيت نرم افزار در مفهوم عام‬
‫یک فرایند نرم افزاری مناسب‪،‬که به شیوه ای بکار برده می شود که‬
‫محصولی مفید ایجاد می کند تا ارزش ی قابل سنجش برای سازندگان‬
‫این محصول و استفاده کنندگان از آن ایجاد کند‪ .‬این شامل‬
‫کارکردهای مورد انتظار سیستم‪ ،‬کارایي مورد انتظار‪،‬‬
‫مستندات استاندارد توسعه و کلیه انتظاراتی که در داخل تیم‬
‫توسعه وجود دارد‬
‫‪3‬‬
‫تضمين کيفيت نرم افزار‬
‫‪‬‬
‫چرا تضمین کیفیت اهمیت دارد‪:‬‬
‫‪‬‬
‫‪‬‬
‫مقدار دوباره کاری ها کاهش می یابد‪.‬این منجر به کاهش هزینه ها و مهم تر از آن بهبود زمان ارائه به‬
‫بازار می شود‪.‬‬
‫مراحل کار کدام است‪:‬‬
‫هنگامی دانستید کیفیت چیست‪،‬تیم نرم افزار باید یک مجموعه فعالیت های ‪ SQA‬را شناسایی کند که خطاها را‬
‫پیش از تحویل محصوالت کاری را از آنها جدا کند‪.‬‬
‫‪‬‬
‫مسئولیت تضمین کیفیت نرم افزار بر عهده افراد متفاوتی است‪:‬‬
‫مهندسین نرم افزار‪،‬مدیران ‪،‬مشتریان‪،‬فروشندگان و افرادی که در گروه ‪ SQA‬خدمت می کنند‪.‬‬
‫‪4‬‬
‫عناصر تضمين کيفيت نرم افزار‬
‫استانداردها‬
‫اندازه گیری‬
‫مدیریت‬
‫‪-1‬مدیریت تغییرات‬
‫‪-2‬مدیریت منابع‬
‫خرید‬
‫‪-3‬مدیریت امنیت‬
‫‪-4‬مدیریت ریسک‬
‫آزمون نرم افزار‬
‫(آزمایش)‬
‫جمع آوری و تحليل‬
‫و‬
‫خطاها‬
‫آموزش‬
‫ایمنی‬
‫‪5‬‬
‫مرورها و‬
‫ممیزی ها‬
‫وظايف‪،‬اهداف و معيارهای ‪SQA‬‬
‫‪‬‬
‫تضمین کیفیت نرم افزار از چند وظیفه مرتبط با دو گروه متفاوت تشکیل می‬
‫شود‪:‬‬
‫مهندسان نرم افزار‪:‬‬‫کارهای فنی را انجام می دهند‪،‬با اعمال روش های فنی و موازین منسجم‪،‬اجرای باز‬
‫بینی های فنی رسمی و اجرای آزمون های نرم افزاری برنامه ریزی شده کیفیت را‬
‫کنترل می کنند‪.‬‬
‫‪-‬گروه ‪: SQA‬‬
‫‪‬‬
‫‪6‬‬
‫مسئولیت برنامه ریزی برای تضمین کیفیت‪،‬ثبت وقایع‪،‬تحلیل و گزارش دهی بر عهده‬
‫آنان است‪.‬‬
‫وظیفه گروه ‪ SQA‬کمک به تیم نرم افزاری‪،‬جهت دستیابی به یک محصول‬
‫نهایی با کیفیت باالست‪.‬‬
‫وظايف گروه ‪SQA‬‬
‫‪‬‬
‫تهيه يک طرح ‪ SQA‬برای پروژه‬
‫‪‬‬
‫در این طرح موارد زیر مشخص می شود‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫شرکت در توسعه توصيف فرآيند نرم افزاری پروژه‬
‫‪‬‬
‫‪7‬‬
‫ارزیابی هایي که باید انجام شوند‪.‬‬
‫بازرسی ها و بازبینی هایی که باید اجرا گردند‪.‬‬
‫استانداردهایي که باید در پروژه مورد توجه قرار گیرند‪.‬‬
‫روال هایی برای گزارش و پیگیری خطا‪.‬‬
‫مستنداتی که باید توسط گروه ‪ SQA‬تولید شوند‪.‬‬
‫مقدار بازخوردی که به تیم نرم افزار منتقل می گردد‪.‬‬
‫تیم نرم افزاری‪،‬فرایندی برای انجام کار انتخاب می کند‪.‬گروه ‪SQA‬توصیف فرآیند را‬
‫برای مطابقت با سیاست سازمانی‪،‬استانداردهای داخلی‪،‬استانداردهای تحمیل شده از خارج‬
‫سازمان(مثل ‪) ISO 9001‬وبخش های دیگر برنامه پروژه نرم افزار‪،‬مورد بازبینی قرار‬
‫می دهد‪.‬‬
‫وظايف گروه‪SQA‬‬
‫‪‬‬
‫بازبينی ومرور فعاليتهای مهندسی نرم افزار برای وارسی مطابقت با فرآيند‬
‫نرم افزاری مشخص واطمينان از پيروی اصول‬
‫‪‬‬
‫‪‬‬
‫بازرسی محصوالت کاری برای وارسی مطابقت با اصول و محصوالت از پيش‬
‫تعيين شده بعنوان بخشی از فرايند نرم افزار‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪8‬‬
‫گروه ‪ SQA‬انحرافات از فرایند را شناسایی‪،‬مستند سازی و پیگیری کرده‪ ،‬انجام‬
‫تصحیحات را مورد وارسی قرار می دهد‪.‬‬
‫انحرافات را شناسایی ‪،‬به صورت ‪ Random‬یک سری از مستندات مورد بررسی قرار‬
‫می گیرند‪.‬‬
‫به صورت ادواری نتایج و گزارشاتی را به مدیریت پروژه ارائه می نماید‪.‬‬
‫حصول اطبه مينان ازاينکه انحرافات موجود در فرآيند و همچنين مقابله و‬
‫رسيدگی آنهابراساس يک رويه مستند سازی گرديده است‪.‬‬
‫ثبت هرگونه عدم تطابق و مواردی که به آنها رسيدگی نشده است و گزارش‬
‫آنها به مديريت ارشد‪.‬‬
‫‪‬‬
‫موارد عدم تطابق آنقدر پیگیری شوند تا برطرف شوند‪.‬‬
‫اهداف ‪ ،‬صفات و معيارها‬
‫‪‬‬
‫‪9‬‬
‫وظایف و کنش های ‪ SQA‬که در اسالید قبل شرح داده شد برای دستیابی به‬
‫اهداف عملی زیر اجرا می شوند‪:‬‬
‫کیفیت خواسته ها‪ SQA:‬باید مطمئن شودکه تیم نرم افزاری بطور مناسب مدل‬‫خواسته ها را مرور کرده است تا به سطح باالیی از کیفیت دست پیدا کند‪.‬‬
‫کیفیت طراحی‪:‬هرعنصر ازمدل طراحی باید توسط تیم نرم افزاری ارزیابی‬‫شود تا اطمنیان حاصل گرددکه کیفیت باالیی ازخود نشان دهد و خود طراحی با‬
‫خواسته ها مطابقت دارد‪.‬‬
‫کیفیت کدها‬‫‪-‬اثر بخشی کنترل کیفیت‬
‫تضمين کيفيت آماری نرم افزار‬
‫‪‬‬
‫تضمین کیفیت آماری شامل مراحل زیر می باشد‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪10‬‬
‫اطالعات مربوط به نقایص نرم افزار جمع آوری و گروه بندی می شود‪.‬‬
‫کوشش می شود رد هر نقص تا علت اصلی آن پیگیری شود‬
‫با استفاده از اصل پارتو آن ‪ 20%‬علل جدا شود‪.‬‬
‫هنگامی که چند علت حیاتی شناسایی شدند‪،‬حرکت برای تصحیح مشکالتی که باعث این‬
‫نقایص شده اند‪،‬آعاز می شود‪.‬‬
‫شش سيگما‬
‫‪‬‬
‫پرکاربرد ترین راهبرد برای تضمین کیفیت آماری در صنایع کنونی است‪.‬یک‬
‫روش شناسی منضبط است که از داده ها و تحلیل آماری برای اندازه گیری‬
‫عملکرد شرکت و بهبود بخشیدن به آن از طریق شناسایی و حذف نقایص در‬
‫فرایندهای تولیدی و خدماتی بهره می برد‪.‬در روش شناسی شش سیگما سه‬
‫مرحله اصلی وجود دارد‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪11‬‬
‫تعریف خواسته های مشتری‪،‬محصوالت قابل تحویل و اهداف پروژه از طریق روش های‬
‫کامال مشخص برای برقراری ارتباط با مشتری‪.‬‬
‫اندازه گیری فرایند موجود و خروجی آن برای تعیین کیفیت فعلی(جمع آوری معیارهای‬
‫نقص)‬
‫تحلیل معیارهای نقص و تعیین چند علت حیاتی‪.‬‬
‫شش سيگما‬
‫‪‬‬
‫اگر یک فرایند نرم افزار موجود‪،‬در جای خود باشد ولی به بهبود نیاز داشته‬
‫باشد‪،‬شش سیگما دو مرحله اضافی برای آن پیشنهاد می کند‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪12‬‬
‫بهبود بخشیدن به فرایند با حذف علل ریشه ای نقایص‪.‬‬
‫کنترل فرایند برای حصول اطمنیان از اینکه کارهای آینده باعث ورود دوباره ی علل این‬
‫نقایص نخواهد شد‪.‬‬
‫این مراحل اصلی و اضافی را گاهی روش ‪(DMAIC‬تعریف‪،‬اندازه‬
‫گیری‪،‬تحلیل‪،‬بهبودبخشی‪،‬و کنترل )می نامند‪.‬‬
‫قابليت اطمنيان نرم افزار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪13‬‬
‫بدون تردید قابلیت اطمنیان یک برنامه کامپیوتری‪،‬عنصر مهمی از کیفیت کلی‬
‫آن به شمار می رود‪.‬اگر برنامه ای به کرات از اجرا باز بماند‪،‬عوامل کیفیتی‬
‫دیگر نرم افزار‪،‬اهمیت خود را از دست خواهند داد‪.‬‬
‫قابلیت اطمنیان احتمال عملکرد بدون شکست یک برنامه کامپیوتری در محیطی‬
‫مشخص برای یک زمان معین می باشد‪.‬‬
‫هر گاه قابلیت اطمنیان مورد بحث قرار می گیرد یک سوال محوری مطرح می‬
‫شود‪:‬شکست یا ‪ Failure‬چیست؟در حیطه کیفیت نرم افزار و قابلیت‬
‫اطمنیان‪،‬شکست عبارت از عدم همخوانی با خواسته های نرم افزار است‪ .‬در‬
‫همین حیطه نیز درجات مختلفی از شکست وجود دارد‪.‬‬
‫موازين مرتبط با قابليت اطمنيان‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪14‬‬
‫ریشه مسائل قابلیت اطمینان نرم افزار را تقریبا همیشه می توان در نقایص‬
‫طراحی یا پیاده سازی یافت‪.‬‬
‫میزان ساده ای از قابلیت اطمینان‪،‬زمان میانگین بین دو شکست می باشد‪.‬‬
‫‪MTBF=MTTF+MTTR‬‬
‫‪MTBF: Mean Time Between Failures‬‬
‫‪MTTF: Mean Time to Failure‬‬
‫‪MTTR: Mean Time to Repair‬‬
‫=‪A‬‬
‫‪MTTF‬‬
‫‪MTTF+MTTR‬‬
‫‪ MTBF‬و موازین مرتبط با آن مبتنی بر زمان‪ CPU‬می باشد‪.‬‬
‫ايمنی نرم افزار‬
‫‪‬‬
‫‪15‬‬
‫ایمنی نرم افزار یکی از فعالیت های تضمین کیفیت است که بر شناسایی و‬
‫سنجش ریسک های بالقوه ای تاکید دارد که ممکن است تاثیری منفی بر نرم‬
‫افزار داشته ‪،‬منجر به شکست کل سیستم شود‪.‬اگر بتوان ریسک ها را در همان‬
‫ابتدای فرایند نرم افزار شناسایی کرد‪،‬می توان ویژگیهایی را در طراحی نرم‬
‫افزار مشخص کرد که ریسک های بالقوه را حذف یا کنترل کند‪.‬‬
‫طرح ‪SQA‬‬
‫‪‬‬
‫‪‬‬
‫طرح ‪ SQA‬راهنمایی برای نهادینه کردن تضمین کیفیت نرم افزار فراهم می‬
‫آورد‪،‬به عنوان الگویی برای فعالیت های ‪ SQA‬عمل می کند که برای هر‬
‫پروژه نرم افزاری نهادینه می شوند‪.‬‬
‫‪ IEEE‬استانداردی برای طرح های ‪ SQA‬پیشنهاد کرده است]‪.[IEEE93‬این‬
‫استاندارد ساختاری را پیشنهاد می کند که در آن موارد زیر باید مشخص گردد‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪16‬‬
‫‪‬‬
‫هدف و دامنه کاربرد طرح‬
‫توصیفی از همه ی محصوالت کاری مهندسی نرم افزار‬
‫همه استانداردهای قابل استفادهدر طول فرایند نرم افزار‬
‫وظایف و کنش های ‪(SQA‬از جمله مرورها و ممیزی ها) و محل قرار گرفتن آنها‬
‫ابزارها و روش هایی که از وظایف و کنش های‪ SQA‬پشتیبانی می کنند‬
‫رویه های مدیریت پیکربندی نرم افزار‬
‫روش های مونتاژ‪،‬ایمن سازی و نگهداری از کلیه سوابق مرتبط با ‪SQA‬‬
‫نقش ها و مسوولیت های سازمانی در قبال کیفیت محصول‬
‫خالصه‬
‫‪‬‬
‫‪‬‬
‫‪17‬‬
‫تضمین کیفیت یکی از فعالیت هایی است که در هر مرحله فرایند نرم افزار‬
‫اجرا می شود‪ SQA .‬شامل روال هایی برای بکارگیری موثر روش ها و‬
‫ابزارها‪،‬بازبینی های فنی رسمی‪،‬راهبردها و تکنیک های آزمون‪،‬روال هایی‬
‫برای کنترل تغییرات‪،‬روال هایی برای حصول اطمنیان از مطابقت با‬
‫استانداردها و ساز و کارهای اندازه گیری و گزارش دهی می شود‪.‬‬
‫بطور خالصه باید به سخنان دان و اولمان توجه داشته باشید که تضمین کیفیت‬
‫نرم افزار نقشی است که ادراک های مدیریتی و شاخه های طراحی تضمین‬
‫کیفیت بر فضای مدیریتی و فناوری مهندسی نرم افزار می زنند‪.‬‬