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