خصوصیات کیفی نرم افزار و انواع مدل های آن
امروزه سیستمهای کامپیوتری در بسیاری از کاربردهای حساس و بحرانی انسان نقش دارند، به طوریکه یک خطای کوچک میتواند منجر به بروز مشکلات جدی و خطرناکی شود. این خطا ها میتواند به صورت یک خطا در طراحی نادرست واسط کاربر تا خطای موجود در کد برنامه باشد.
کاربردهای بحرانی خصوصیات زیر را دارا میباشند:
- چرخه عمر طولانی دارند و نیازمند بهبود تکاملی میباشند.
- کاربردها نیاز به اجرای پیوسته هستند.
- کاربردها نیاز به تعامل با دستگاههای سخت افزاری هستند.
- عملکرد کاربرد بستگی به ویژگیهای کیفی مانند دقت بالا، قابلیت اطمینان، ایمنی، قابلیت همکاری با بخشهای دیگر دارد.
سیستمها دارای نیازمندیهای گوناگون میباشند که در واقع توسعه دهندگان مسئول تشخیص و تعیین این نیازمندیها و همچنین ایجاد سیستمی برای محقق سازی آن میباشد.
این نیازمندیها در حالت کلی به دو دسته نیازمندیهای کارکردی و نیازمندیهای غیر کارکردی، تقسیم میشوند. نیازمندیهای کارکردی توانایی سیستم برای انجام کاری است که برای آن بوجود آمده است. باید بسیاری از عناصر سیستم با هم هماهنگ عمل کنند تا یک کار تکمیل شود .
نیازمندیهای غیر کارکردی همان مشخصههای کیفیتی (Quality Attribute) میباشند و عموماً به صورت ضمنی بیان میشوند و هر آنچه که غیر از هدف بررسی اجمالی چند مدل موجود برای نیازمندیهای کیفی و بررسی تعدادی از خصوصیات کیفی است.
- Functional
- Non Functional
- Quality Attribute
دلایل اهمیت خصوصیات کیفی به قرار زیر است:
- خصوصیات سیستم را توصیف میکند.
- شرایط کاری سیستم را بیان میکند.
- عامل و محرك طراحی معماری میباشد.
معماری اولین قدم تولید نرم افزار بوده که ویژگیهای کیفیتی در آن قابل ردیابی است. صفات کیفیتی در تمام مراحل طراحی، پیاده سازی و انتقال مطرح میباشند و در نتیجه اگر توسط معماری پشتیبانی شوند، راحت تر قابل ردیابی خواهند بود.
مشخصات یک محصول نرم افزاری
انجام خصوصیات کیفی باید در مراحل طراحی، پیاده سازی و توسعه مورد توجه قرار گیرد. خصوصیات کیفی نه کاملاً به مرحله طراحی و نه کاملاً به مرحله پیاده سازی وابسته است بلکه به تمام این مراحل بستگی دارد. یک مجموعه سه تایی از خصوصیات یک نرم افزاری از دیدگاه مشتری عبارت است از:
- کیفیت
- هزینه
- زمانبندی
هزینه و زمان قابل پیشبینی میباشد و با یک فرایند کامل سازماندهی شده قابل کنترل است ولی کیفیت اینگونه نمیباشد. طبق استاندارد IEEE کیفیت نرم افزار درجهای است که نرم افزار ترکیبی از خصوصیات مطلوب را دارا میباشد. همچنین در استاندارد ISO 8402 کیفیت، توانایی برآوردن نیازهای تعیین شده میباشد. کیفیت پائین به جهت امکان نیاز به پیکربندی، کدنویسی مجدد و حتی طراحی دوباره، بر روی هزینه و زمانبندی تأثیر میگذارد. کشف سریعتر مشکلات کیفی در نرم افزار مقرون به صرفهتر است زیرا با افزایش زمان نقص در نرم افزار با توجه به بزرگتر شدن پروژه هزینه لازم برای حل مشکل نیز بیشتر میشود.

دست یافتن به خصوصیات کیفی تنها وابسته به شیوه کد برنامه (مانند انتخاب زبان، الگوریتم و ساختمان داده و. . . ) نیست بلکه وابسته به معماری نرم افزار نیز میباشد.
مدلهای کیفیتی در نرم افزار
از آنجائیکه کیفیت نرم افزار نمودهای متعددی در زندگی روزانه ما دارد، رویکردهای متعددی در ارتباط با مدلهای کیفی منتشر شده است. مدلهای کیفی دسته بندی از صفات کیفیتی و ارتباطات میان آنها میباشد که برای مشخص نمودن و ارزیابی نیازمندیهای غیر وظیفهای بکار میروند. در ادامه چند مدل کیفی مختصراً ارائه شده است.
مدل کیفی نرم افزار McCall
در دهه 1970 McCall چارچوبی کیفی برای کیفیت محصولات ارائه نمود. این مدل برای نیروی هوایی آمریکا و با هدف از بین بردن فاصله بین کاربران و توسعه دهندگان ایجاد شد.
خصوصیات نرم افزار دلالت دارد. این خصوصیات عبارتند از:
- Correctness: صحت و درستی نرم افزار میباشد و اینکه عملکرد با خصوصیات ومشخصات تطبیق داشته باشد.
- Reliability: معیاری است که سیستم چقدر fail میکند.
- Efficiency: کاربرد و استفاده از منابع سیستم (شامل Memory ،Disk ،CPU و . . . )
- Integrity: حفاظت در مقابل انجام اعمالهای غیر مجاز
- Usability: سادگی استفاده
- Maintainability: توانایی جهت ساخت / تعمیر یک عیب / نقص میباشد.
- Flexibility: توانایی جهت اعمال تغییر درخواست شده در راستای business نرم افزار
- Reusability: راحتی استفاده از مؤلفههای نرم افزاری موجود در زمینهها و فضاهای مختلف.
- Interoperability: توسعه و راحتی مؤلفههای نرم افزاری جهت کار با یکدیگر (قابلیت تعامل).
- Portability: توانایی انتقال نرم افزار از یک محیط به محیط دیگر

این مدل از آن جهت مورد انتقاد قرار گرفت که خصوصیات کیفی در آن به صورت ذهنی مورد قضاوت قرار میگیرد و پاسخها کاملاً بستگی به نظر شخصی دارد. مدل McCall دارای 11 فاکتور میباشد که دید خارجی سیستم یعنی همان چیزی که توسط کاربران دیده میشود را توصیف میکند. همچنین این مدل دارای 23 فاکتور دیگر میباشد که دید داخلی یعنی همان دیدی را که توسط توسعه دهندگان دیده میشود را توصیف میکند.
مدل کیفی نرم افزار Boehm
در سال 1978، Boehm مدل کیفیتی جدیدی را ارائه نمود. وی یک مدل سلسله مراتبی از خصوصیات کیفی را تعریف نمود و تلاش داشت تا کیفیت نرم افزار را بصورت مجموعهای از خصوصیات و معیارها تعریف کند. در بالاترین سطح مدل، او سه نیازمندی اساسی نرم افزار را تعریف میکند که عبارتند از:
- کاربر نهایی: (فضایی که نرم افزار موجود میتواند استفاده شود)
- Reliability : نرم افزار وظایف خود را به صورت رضایتبخش انجام دهد.
- Efficiency: آیا وظایف خود را بصورتی انجام میدهد که از به هدر رفتن منابع جلوگیری شود.
- Human Engineering: زمانی که تغییری داده میشود، این تغییرات به آسانی قابل اعمال باشد.
- کاربران در مکانهای مختلف (قابلیت حمل) : راحتی تغییر نرم افزار جهت تطبیق با محیط جدید
- کاربران در زمانهای مختلف (نگهداشت پذیری): راحتی تعریف اینکه چه چیزی نیاز به تغییر دارد همراه با راحتی اصلاح و بازآزمایی (retesting)
- Testability: راحتی ایجاد شرایط تصدیق.
- Understandability: کد به راحتی قابل فهم باشد.
- Modifiability: کدبه راحتی قابل تغییر و اصلاح باشد.
بزرگترین تفاوت بین Boehm و McCall این است که مدل Boehm بر مبنای بازه وسیعی از خصوصیات کیفی با یک دید اصولی روی “نگهداشت پذیری” میباشد. از طرفی McCall تمرکز دقیق تری روی اندازه گیری خصوصیت سطح بالای As is Utility دارد.

مدل کیفی نرم افزار ISO 9126
توسعه بیشتر مدلهای کیفی منجر به ارائه یک مدل استاندارد توسط ISO شده است 9126 ISO مدل استاندارد است که در دو سطح (به صورت خصوصیات و زیر خصوصیات) ارائه شد. این خصوصیات عبارتند از:
Functionality:
- مجموعهای از خصوصیات که مربوط به وجود مجموعه عملکردها و خصوصیات مشخص آنها میباشد.
- Suitability: خصوصیت عملکردی مناسب باشد. به تناسب و سازگاری کارکردهای سیستم بر میگردد.
- Accurateness: این خصوصیت مربوط به درستی عملکرد میباشد. مثلا دستگاه ATM میتواند عملکرد توزیع پول نقد را داشته باشد ولی آیا این عملکرد نتیجه درستی دارد؟
- Interoperability: عموما یک سیستم یا مؤلفه نرم افزاری بصورت ایزوله عمل نمیکند. این خصوصیت توانایی و قابلیت تعامل مؤلفهها با یکدیگر را بیان میکند.
- Compliance: بر توانایی تطابق و مطلوبیت نرم افزار نظارت دارد. (اینکه نرم افزار مطابق با قواعد و راهبردهای آن صنعت یا مؤسسه باشد).
- Security: این خصوصیت به دسترسی غیرمجاز از عملکردهای سیستم بر میگردد.
Reliability:
- مجموعهای از خصوصیات که مربوط به توانایی نرم افزار به حفظ سطح کارایی تحت شرایط تعیین شده و در پریود زمانی تعیین شده میباشد.
- Maturity: این خصوصیت بر فراوانی خطاهای موجود در نرم افزار دلالت دارد.
- Fault tolerance: توانایی نرم افزار در تحمل و ترمیم خطاهای سیستمی و محیطی میباشد.
- Recoverability: توانایی برگرداندن سیستم به زمان قبل از خطا و بازآوری کلیه ارتباطات شبکهای و دادهها.
Usability:
- مجموعهای از خصوصیات که مربوط به استفاده از نرم افزار میباشد.
- Understandability: تعیین سهولت اینکه عملکرد سیستم به راحتی قابل فهم باشد. به مدلهای ذهنی کاربر در روشهای تعامل کاربر و کامپیوتر بر میگردد.
- Learnability: به میزان کوشش برای یادگیری برای کاربران مختلف اشاره دارد. مانند کاربران مبتدی،حرفه ای و …
- Operability: توانایی نرم افزار در کار کردن با یک کاربر تعیین شده و در یک محیط تعیین شده میباشد.
Efficiency:
- مجموعهای از خصوصیات که مربوط به ارتباط بین سطح کارایی و مقدار منابع استفاده شده تحت شرایط تعیین شده است.
- Time behavior: زمان پاسخ برای یک محصول معین را مشخص میکند. مانند سرعت اجرای تراکنش
- Resource behavior: منابع استفاده شده را مشخص میکند. مانند حافظه، پردازنده، دیسک شبکه
- Portability: مجموعهای از خصوصیات که مربوط به توانایی نرم افزار جهت انتقال از یک محیط به محیط دیگر است.
- Adaptability: مشخص کردن توانایی سیستم جهت تغییر خصوصیات یا تغییر به یک محیط عملیاتی جدید.
- Installability: مشخص کردن تلاش مورد نیاز برای نصب و راه اندازی نرم افزار.
- Conformance: مانند خصوصیت compliance برای unctionality میباشد. منتها در مبحث قابلیت جابجایی.
- Replaceability: جنبههای plug and play را در مؤلفههای نرم افزاری تعیین میکند و اینکه چقدر راحت است که مؤلفههای نرم افزاری مطابق با محیط عوض شوند.
Maintainability:
- مجموعهای از خصوصیات که مربوط به توانایی نرم افزار جهت اعمال تغییرات و اصلاحات درخواست شده میباشد.
- Analyzability: توانایی تشخیص دلیل اصلی خرابی در یک نرم افزار را تعیین میکند.
- Changeability: میزان تلاش جهت تغییر یک سیستم میباشد.
- Stability: حساسیت یک سیستم در مقابل تغییر میباشد. ( که ممکن است تغییر، تأثیرات منفی و ناخواستهای را به همراه داشته باشد).
- Testability: تلاش مورد نیاز برای بررسی و تست سیستم تغییر داده شده میباشد.
یکی از تفاوتهای کلیدی و اصلی این مدل کیفیتی با سایر مدلها در این بود که در آن هر زیر خصوصیت تنها توسط یک خصوصیت در سطح بالاتر تحت تأثیر قرار میگرفت، در حالیکه در سایر مدلها اینگونه نبود.

مدل کیفی نرم افزار FURPS
از دیگر مدلهای کیفی ارائه شده میتوان به مدل پیشنهادی Grady که FURPS نامیده میشود اشاره نمود.
تعاریف آن عبارتند از Functionality Usability, Reliability, Performance Supportability
- قابلیت عملکرد: شامل امکانات ،قابلیتها و امنیت باشد.
- قابلیت استفاده: شامل فاکتورهای انسانی، زیبایی، توافق و سازگاری در واسط کاربر، راهنمای برخط و حساس به متن، مستندات کاربر و اصول آموزش باشد.
- قابلیت اطمینان: شامل تکرار و شدت خطاها، قابلیت ترمیم، قابلیت پیشبینی، صحت، درستی و متوسط زمان رخداد خطا میباشد.
- کارایی: شرایطی را از قبیل سرعت، کارایی، در دسترس بودن، صحت و درستی، توان عملیاتی، زمان پاسخ، زمان ترمیم و بهرهوری منابع را بر نیازمندیهای کیفی تحمیل میکند.
- قابلیت پشتیبانی: شامل قابلیت تست، قابلیت توسعه پذیری، قابلیت انطباق، قابلیت نگهداری، سازگاری، قابلیت تعمیرپذیری، قابلیت نصب
مدل کیفی نرم افزار Kazman ،Clements
در این دستهبندی صفات کیفی بر اساس اینکه در زمان اجرا قابل مشاهده هستند یا خیر، در دو دسته قرار میگیرند:
- 1. صفات کیفیتی قابل مشاهده در زمان اجرا: این صفات نشان میدهند که در طول مدت اجرا، یک سیستم چقدر خوب میتواند نیازمندیهای رفتاری خودش را تأمین کند. یعنی به لحاظ رفتاری معین میکند که آیا سیستم نتایج را برآورده میکند و آیا این نتایج را در زمان درست برآورده میسازد یا خیر؟ در واقع این صفات کیفیتی مربوط به ویژگیهای قابل مشاهده در حین اجرا هستند. یعنی نرم افزار را باید اجرا کرد تا مشخص شود که در اثر اجرای آن، چنین ویژگیهایی فراهم میشوند یا خیر؟
این صفات عبارتند از: کارایی، امنیت، در دسترس بودن، قابلیت عملکرد یا و ظیفهمندی، قابلیت کاربرد و استفاده
- 2. صفات کیفیتی غیر قابل مشاهده در زمان اجرا: این صفات به گونهای هستند که در زمان اجرا نمیتوان تشخیص داد که به آنها دست یافتهایم یا خیر، البته باید به این موضوع توجه شود که ممکن است بعضی صفات در مرحله تحلیل، بعضی در مرحله طراحی و. . . خود را نشان دهند.
این صفات عبارتند از: قابلیت حمل، قابلیت استفاده مجدد، اصلاح پذیری، تجمیع پذیری و…


































