تضمین کیفیت نرمافزار عبارتست از نظارت بر روند مهندسی نرمافزار و روش هایی که برای اطمینان یافتن از کیفیت آن مورد استفاده قرار میگیرند. روش هایی که بدین منظور ایجاد شده اند بسیار زیاد و متنوع هستند که هریک انطباق با چند مورد از استانداردها (مثل ایزو ۹۰۰۰ و یک مدل مثل CMMI) را بررسی و تضمین می کنند.
روش های تضمین کیفیت نرمافزار کل فرایند توسعه نرمافزار را دربرمیگیرند. از جمله مراحل توسعه نرمافزار می توان به تعریف نیازمندی ها، طراحی نرمافزار، کدنویسی، بازبینی کد، مدیریت پیکربندی نرمافزار، تست، مدیریت پخش، یکپارچه سازی محصول اشاره کرد. تضمین کیفیت نرمافزار به اهداف، الزامات، توانایی ها، فعالیت ها، اندازه گیری ها و ارزیابی ها سامان می بخشد.
تضمین کیفیت نرمافزار برحسب (ISO/IEC 15504 v.2.5 (SPICE یک فرایند حمایتی است که باید به وسیله طرح های از پیش تعیین شده و isO 15504 کیفیت را در تک تک محصولات، فعالیت ها و فرایندها بطور مستقل تضمین کند.
پس از مباحث مطرح در چگونگی ایجاد نرمافزار و بحث های مربوطه؛ یکی از چالش های موجود بررسی مفهوم چیستی کیفیت نرمافزار و متعاقب آن معیارهای سنجش و روش های تضمین کیفیت آن است. صحبت از کیفیت نرمافزار و بررسی و سنجش آن تنها از طریق پاسخگویی به سوالات زیر و مشخص کردن روشی برای رسیدن به این پاسخ امکانپذیر است:
1. تعریف صریح و دقیق معنا و مفهوم "کیفیت نرمافزار"
2. ایجاد مجموعه ای فعالیت هایی که ما را از بالا بودن کیفیت محصولات نرمافزاری ارائه شده مطمئن می کنند.
3. اجرا کردن فعالیت های کنترل و ضمانت کیفیت در همه پروژه های نرمافزاری
4. استفاده از ابزارها در راستای توسعه استراتژی های بهبود فرایندهای نرمافزار و درنتیجه باکیفیت شدن محصول نهایی
توجه به کیفیت نرمافزار موضوع مهمی است و هر فرد درگیر فرایندهای مهندسی نرمافزار مسئولیت دارد به آن توجه کند. از آنجایی که این توجه به این مسئله سبب کاهش اضافه کاری های متحمل شده بردوش تیم توسعه نرمافزار می شود، بسیار اهمیت داشته و ضمن کاهش زمان لازم برای توسعه محصول و ارائه به بازار، هزینه ها را نیز کاهش می دهد.
تضمین کیفیت نرمافزار شامل محدوده گسترده ای از فعالیت ها می شود که در زیر به خلاصه بعضی از آنها را بیان می کنیم:
استانداردها: IEEE و ISO و سایر سازمانهای استاندارد لیست گسترده ای از استانداردهای محصول نرمافزاری و مستندات مربوط به آن معرفی کرده اند. بطور کلی استانداردها یا توسط سازمان تولید کننده نرمافزار به طور داوطلبانه برروی محصول اعمال شده و یا اعمال آنها از جانب خریدار و سایر ذی نفعان محصول نرمافزاری، به شرکت تولیدکننده تحمیل می شود. وظیفه تیم SQA آنست که از انطباق محصولات با استانداردهایی که برای محصول به تصویب رسیده است، اطمینان حاصل کنند.
بازبینی و ممیزی: بازبینی فنی یکی از فعالیت های کنترل کیفیت صورت گرفته توسط مهندسین کامپیوتر است. هدف این بازبینی ها رفع ایرادات موجود است. ممیزی نیز نوعی بازبینی محسوب می شود. با این تفاوت که توسط کارکنان SAQ با هدف اطمینان حاصل کردن از اینکه محصول از دستورالعمل های کیفی پیروی کرده است، انجام می شود.
تست و آزمون: آزمون نرمافزار یکی از فعالیت های کنترل کیفیت است که هدف اولیه آن پیدا کردن خطاهاست. وظیفه SQA آنست که از درست برنامه ریزی شدن فرایند تست و بهینگی اجرای آن اطمینان حاصل کند.
مدیریت تغییر: تغییر یکی از مخرب ترین جنبه های یک پروژه نرمافزاری است. درصورتی که تغییرات به درستی مدیریت نشوند می توانند سبب گیجی و سردرگمی شده و این سردرگمی اغلب موارد به کم کیفیت شدن محصول خواهد انجامید. در این زمینه SQA وظیفه دارد از برقراری و اعمال روش های مناسب مدیریت تغییر اطمینان حاصل کند.
مدیریت امنیت: با افزایش جرائم اینترنتی و قوانین جدید دولت ها درمورد حریم خصوصی، هر سازمان نرمافزاری باید سیاست هایی را سازمان نهاده تا از داده های تمامی سطوح نرمافزاری کاربران محافظت کند. بطور مثال برای محافظت برنامه های وب از دیوار آتش استفاده کند و یا مطمئن شود نرمافزار مورد دستکاری داخلی قرار نگرفته باشد. وظیفه SQA در این حوزه آنست که از بکارگیری فرایندها و تکنولوژی های مناسب به منظور حفظ امنیت کاربران اطمینان حاصل کند.
مدیریت ایمنی: نرمافزار همیشه یک مولفه محوری سیستم هایی که برای کاربری انسانی استاندارد شدهاند (مثل خودرو یا برنامه های کاربردی هواپیما) می باشد، از همین رو تاثیر نقص های پنهان آن می تواند فاجعه بار باشد. مسئولیت SQA آنست که ضمن ارزیابی تاثیر خرابی نرمافزار، اقدامهای لازم برای کاهش ریسک بروز این خرابی را انجام دهد.
مدیریت ریسک: اگرچه تحلیل و مقابله با ریسک از جمله دغدغه های مهندسین نرمافزار است، سازمان SQA نیز بر اتخاذ صحیح اقدامات کاهش ریسک و برقراری طرح های مقتضی مرتبط با ریسک نظارت می کند. علاوه بر این دغدغه ها و فعالیت ها یکی از نقش های SQA، اطمینان حاصل کردن از انجام با کیفیت فعالیت های پشتیبانی نرمافزار (مثل تعمیر و نگهداری، مستندسازی، راهنمای کاربری) است.