بر اساس تعریف ارائه شده از كیفیت در ، كیفیت نرم افزار بصورت زیر تعریف می گردد:
مجموعة خصوصیات یك محصول نرم افزاری، كه در توانایی آن برای برآورده نمودن نیازهای تصریح شده[4] در مستندات نیازمندیها و نیازهای ضمنی[5] مؤثر است.
از خصوصیاتی كه در تعریف فوق به آنها اشاره شده است با عنوان خصوصیات كیفیت یاد می شود. خصوصیات كیفیت نرم افزار بصورت زیر تعریف می شود:
مجموعه ای از ویژگیهای مرتبط با محصولات نرم افزاری، كه پایه و اساس لازم برای تشریح كیفیت، ایجاد و ارزیابی آن را فراهم می آورد.
كیفیت در بر گیرنده مجموعه ای از خصوصیات كیفیت می باشد، اما در تعیین درجة كیفیت و مرغوبیت یك محصول، میزان و اندازة این خصوصیات از دیدگاه عموم، لزوماً یكسان نیست.
هر یك از این خصوصیات كیفیت، با چندین ویژگی قابل حصول از طریق مهندسی نرم افزار مرتبط است، بعبارتی دیگر با بهره گیری از روشهای مهندسی نرم افزار برای حصول یا تأثیرگذاری بر هر یك از ویژگیها، محصول نرم افزاری از نظر خصوصیات كیفیت مرتبط با آن ویژگی، تحت الشعاع قرار می گیرد.
میان برخی از خصوصیات كیفیت، روابط تضاد(معكوس[6]) و یا توافق(همراستایی[7]) وجود دارد. بعبارتی دیگر، در شرایط معین(برای مثال از نظر بودجه و امكانات)، افزایش نسبی یك خصوصیت، به كاهش یا افزایش نسبی خصوصیات دیگر منجر می شود. خصوصیات كیفیت نرم افزار از دیدگاه كاربر عام عبارتند از:
1_ میزان پوشش دهی وظایف تعیین شده در مستندات نیازمندیها و موارد ضمنیFunctionality))
2_ قابلیت اطمینان یا قابل اطمینان بودن(Reliability)
3_ قابلیت استفاده یا قابل استفاده بودن(Usability)
4_ كارآیی یا بعبارتی دیگر پربازده و مؤثر بودن(Efficiency)
5_ قابلیت نگهداشت(Maintenance)
6_ قابلیت حمل یا بعبارتی دیگر قابل انتقال بودن(Portability)
استفاده كنندگان از این استاندارد، بسته به شناخت، سلیقه و توان خود، یك زیر مجموعه از این خصوصیات را بعنوان عوامل تعیین كننده كیفیت محصول مدنظر قرارداده، و پس از اولویت بندی و ارزش گذاری از نظر علمی، تجربی، شورایی و یا بر حسب سلیقه، با تلاش در آزمایش و سنجش این خصوصیات و جمع بندی نتایج حاصل، به تولید یا ارزیابی كیفیت كلی محصول موردنظر از دیدگاه خود می پردازند[8].
1_ میزان پوشش دهی وظایف(Functionality)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر وجود مجموعه ای از وظایف(كاركردها) در محصول دلالت دارد. این مجموعه وظایف، مواردی هستند كه در مستندات نیازمندیها تصریح گردیده و یا بصورت ضمنی در وظایف مورد نیاز كاربر قرار دارند.
2_ قابلیت اطمینان(Reliability)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر توانایی نرم افزار در حفظ سطح كارایی خود، تحت شرایط تصریح شده و در یك محدودة زمانی مشخص دلالت دارد. شرایط و محدودة زمانی موردنظر، مواردی هستند كه در مستندات نیازمندیها تصریح گردیده است.
3_ قابلیت استفاده(Usability)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر تلاش موردنیاز و برآورد فردی مجموعه ای از كاربران در امر استفاده از محصول دلالت دارد. كاربران، مجموعه افراد یا گروههایی هستند كه صراحتاً در مستندات نیازمندیها عنوان گردیده اند و یا بصورت ضمنی در این مجموعه قرار دارند.
4_ كارآیی(Efficiency)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر ارتباط بین بازدهی نرم افزار، نسبت به مقدار منابع مورد استفاده، تحت شرایط تصریح شده در مستندات نیازمندیها یا موارد ضمنی دلالت دارد.
5_ قابلیت نگهداشت(Mintainability)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر تلاش موردنیاز برای ایجاد تغییرات تعیین شده در نرم افزار دلالت دارد.
6_ قابلیت حمل(Portability)
عبارت است از مجموعه ای از مشخصه ها و ویژگیهای فرعی، كه بر توانایی انتقال نرم افزار از یك محیط به محیط دیگر دلالت دارد.
ویژگیهای قابل حصول از طریق مهندسی نرم افزار
ویژگیهای قابل حصول از طریق مهندسی نرم افزاربصورت زیر تعریف می شود:
مجموعه ای از صفات و مشخصه های مرتبط با محصولات نرم افزاری، كه زمینة تشریح، ایجاد و ارزیابی خصوصیات كیفیت محصول را از طریق مهندسی نرم افزار فراهم می آورند.
كیفیت در بر گیرنده مجموعه ای از خصوصیات كیفیت بوده، و هر یك از این خصوصیات كیفیت، با چندین ویژگی قابل حصول از طریق مهندسی نرم افزار مرتبط است. بعبارتی دیگر با بهره گیری از روشهای مهندسی نرم افزار برای ایجاد هر یك از ویژگیها، محصول نرم افزاری از نظر خصوصیات كیفیت مرتبط با آن ویژگی، تحت الشعاع قرار می گیرد.
ویژگیهای قابل حصول از طریق مهندسی نرم افزار عبارتند از:
1_ مناسبت(ٍSuitability)
2- درستی و دقت در ارائة نتایج و تأثیرات(ِAccuracy)
3_ توانایی برقراری روابط موردنظر با دیگر سیستمهای تعیین شده(Interoperability)
4_ رعایت استانداردهای مرتبط با كاربرد(Compatibility)
5_ امنیت(Security)
6_ پختگی یا بلوغ(Maturity)
7_ تحمل خرابی(Fault Tolerance)
8- قابلیت بازگرداندن(Recoverability)
9_ قابل فهم بودن(Understandability)
10_ قابلیت یادگیری(Learnability)
11_ قابلیت اجرا(Operability)
12_ كارایی از نظر زمان (Time Efficiency)
13_ كارایی از نظر منابع(Resource Efficiency)
14_ قابل تحلیل بودن(Analysability)
15_ قابلیت تغییر(Changeability)
16_ ثبات یا پایداری(Stability)
17_ آزمون پذیری(Testability)
18_ تطبیق پذیری محیطی(Adaptability)
19_ قابلیت نصب(Installability)
20_ رعایت استانداردهای مرتبط با قابلیت حمل(Compliance)
[1]Quality Assurance
[2]Evaluation
[3]Quality Charactristics
[4]Stated or explicit
[5]Implied
[6]Reverse
[7]Direct
[8] قابلیت اطمینان و كارآیی از خصوصیاتی هستند كه در نرمافزارهای حساس مانند نرم افزار پرواز از اهمیت بالایی برخوردار هستند. اگر الحاق نمودن نرمافزار اصلاح شده به نرم افزار بلادرنگ، در حین اجرا، جزء نیازهای تعیین شده باشد، مقوله قابلیت نگهداشت مطرح میگردد، درصورتی كه قابلیت حمل در طراحی یا پیادهسازی این نرمافزار نقشی نخواهد داشت. از سوی دیگر، در بكارگیری یك نرمافزار محاسبات و تحلیل علمی و عددی، وجود سهولت در ایجاد تغییرات، و حفظ و نگهداری با در نظر گرفتن قابلیت اطمینان و كارآیی، ضروری است.(NASA Quality Assurance Guidelines)
منبع : استاندارد مهندسی نرم افزار_رهنمود عمومی در تعریف كیفیت محصولات نرم افزاری شورای عالی انفورماتیک