مقدمه
تولید نرمافزارهای کاربردی روزبهروز گسترش مییابد و لزوم به کارگیری روشها و اصول مهندسی نرمافزار، در مراحل توسعه، مدیریت و پشتیبانی آنها بیشتر نمود پیدا میکند. کیفیت نرمافزار(Software Quality) ، شاخص حیاتی برای تولید نرمافزارهای با کیفیت بالا است که ضمن بالا بردن بهرهوری در تولید نرمافزارها، به ایجاد نرمافزارهای قدرتمند و شکستناپذیر منجر میگردد.
مدلسازی نرمافزار، به کارگیری فنون پیشرفته آزمایش نرمافزار، مدیریت ریسک نرمافزار، تضمین کیفیت نرمافزار، مهندسی محصول و....، تنها عناوینی از فهرست گسترده زیرساختهای مرتبط با توسعه نرمافزارهای قوی و مهندسی ساز است. در اینجا به طور خاص به بررسی علمی و فنی یکی از این زیر ساختها با عنوان کیفیت نرمافزار و روشهای تعیین شاخص پرداخته شده است.
مهندسی نرمافزار و تولید نرمافزاری با کیفیت بالا
مهندسی نرمافزار، یک روش علمی، ریاضی و اقتصادی برای تولید نرمافزارها است که بر اساس آن، نرمافزار در طی یک فرایند علمی، تجزیه و تحلیل، طراحی، پیادهسازی، آزمایش و پشتیبانی میشود. به کارگیری مهندسی نرمافزار برای پیادهسازی نرمافزارهایی که اهداف مهم و حیاتی دارند، یک ضرورت است.
در مهندسی نرمافزار برای ساخت یک سیستم نرمافزاری، سه فرآیند مهم تأثیرگذار است:
- فرآیند توسعه(Development Process) : سازماندهی فعالیتها برای ساخت یک سیستم است.
- فرآیند مدیریت (Management Process): انتخاب افراد، تجهیزات و فرآیندها برای توسعه یک سیستم و کنترل و نظارت بر روند اجرای پروژه است.
- فرآیند پشتیبانی (Maintenance Process): کنترل و پشتیبانی نرمافزار پس از تولید آن.
در فرآیند توسعه، هدف آن است که یک سیستم با مشخصاتِ خواستهشده تولید شود. فرآیند توسعه، از مرحله طرح یک راه حل مفهومی برای مسأله خواستهشده (مطالعه امکانسنجی) آغاز شده، پس از دریافت خواستهها و بررسی سیستم، طراحی صورت گرفته و در نهایت، این طراحی با کمک ابزارهای پیادهسازی، به یک سیستم واقعی تبدیل میشود. هدف این فرآیند، آن است که از یک سو، برآورده ساختن نیازهای کاربران، و از سوی دیگر، کیفیت مناسب عملکرد سیستم تضمین گردد. بنابراین، باید مشتمل بر مکانیسمهایی برای اعتبارسنجی نرمافزار (خروجی مطابق با خواستهها(Validation) ) و وارسیپذیری نرمافزار (صحت عملکرد خروجی(Verification) ) باشد.
کیفیت
کیفیت در مفهوم عام آن، به معنای خصوصیت یا صفتی از یک شیء است. در مورد یک شیء، کیفیت، به خصوصیاتی از قبیل: رنگ، شکل، اندازه و... اشاره دارد و در مورد یک نرمافزار شامل: درجه پیچیدگی درونی الگوریتمهای آن، تعداد خطوط برنامه نرمافزاری، ارتباطات داخلی زیر برنامهها و... میشود.
کیفیت نرمافزار
کیفیت بالای محصول نرمافزاری، به صرفهجویی در هزینه و ارتقای همیشگی سطح نرمافزار میانجامد. تمامی توسعهدهندگان نرمافزاری توافق دارند که دستیابی به نرمافزارهای با کیفیت، بالاترین هدف در ایجاد و ساخت سیستمهای نرمافزاری است؛ اما کیفیت نرمافزار چگونه تعریف میشود؟
کیفیت نرمافزار مطابق با نیازهای عملیاتی و استانداردهای توسعه نرمافزار تعریف و تدوین میگردد و در این میان، توجه به سه اصل زیر اهمیت دارد:
- استانداردها، مجموعهای از معیارهای توسعه را تعریف میکنند و چنانچه این معیارها به درستی دنبال نشوند، نتیجه آن فقدان کیفیت خواهد بود.
- چنانچه یک نرمافزار بر نیازهای اصلی خود منطبق باشد، اما نیازهای جانبی خود مانند سهولت کاربری و پشتیبانی مناسب را برآورده نسازد، کیفینت نرمافزار حاصل نگردیده است.
- نیازمندیهای نرمافزار و آنچه نرمافزار برای آن طراحی و پیادهسازی گردیده، مبنای اندازهگیری کیفیت است. عدم تطبق نرمافزار با نیازمندیهای آن، موجب عدم کیفیت نرمافزار خواهد شد.
استانداردISO 9001 و تضمین کیفیت نرمافزار
ISO 9001، یک استاندارد تضمین کیفیت است که در مهندسی نرمافزار نیز کاربرد دارد. این استاندارد، دربردارنده نیازمندیهای لازم برای تضمین کیفیت یک سیستم نرمافزاری است. کنترل طراحی، کنترل مستندات، شناسایی محصول نرمافزاری، کیفیت، امکانسنجی و نیازمندیهای وظیفهای و غیر وظیفهای، بازبینی و آزمایش نرمافزار و بررسی کیفیتهای داخلی، از عناوینی است که در این استاندارد مورد توجه قرار میگیرد.
استانداردهای توسعه
این بخش، کلیات چرخه حیات نرمافزار را تشریح میکند. در این استانداردها غالباً از عبارت «پروژه نرمافزاری» استفاده میشود. واضح است که تولید نرمافزار، جنبههای سختافزاری رایانه را نیز در بر میگیرد. محصولات نرمافزاری لازم است با روش معینی طراحی و اجرا گردند. یک مدل چرخه حیات، فعالیتهای پروژه را در قالب مراحل مشخص سازماندهی میکند و تعیین مینماید کدام یک از فعالیتها باید در کدام مرحله انجام گیرد. بر اساس این استاندارد، باید شش مرحله در چرخه حیات یک نرمافزار طی شود که عبارتاند از:
مرحله UR: تعیین نیازهای کاربر (User Requirements)؛
مرحله SR: تعیین نیازهای نرمافزار (Software Requirements)؛
مرحله AD: طراحی معماری (Architectural Design)؛
مرحله DD: طراحی تفصیلی و تولید برنامه (Detailed Design)؛
مرحله TR: انتقال و واگذاری نرمافزار برای بهرهبرداری (Transfer of the Software)؛
مرحلهOM: بهرهبرداری و نگهداری (Operation & Maintenance)؛
مدلهای ارزیابی کیفیت نرمافزار
اینک مدلهای کیفیت نرمافزاری که تاکنون ارائه شده است را مورد بررسی قرار میدهیم و نقاط قوت و ضعف آنها را با یکدیگر مقایسه میکنیم. ارتباط بین اجزای سطوح یک مدل کیفیت میتواند یک به چند یا چند به چند باشد. در ارتباط یک به چند، هر فاکتور یا خصوصیت کیفی، فقط با ویژگیهای فرعی خود در سطح پایینتر مرتبط است؛ ولی در ارتباط چند به چند، هر فاکتور میتواند با ویژگیهای فرعی دیگر نیز مرتبط باشد. کیفیت نرمافزار، از ارزیابی این ویژگیهای فرعی توسط معیارهای اندازهگیری حاصل میشود.
• مدل McCall
این مدل در سال 7-1976م توسط نیروی هوایی آمریکا، جنرال الکتریک و مرکز توسعه هوایی روم با هدف بهبود کیفیت محصولات نرمافزاری ارائه شد. در ایالات متحده آمریکا از این مدل برای پروژههای با مقیاس بزرگ نظامی و فضایی استفاده شده است. سطح اول مدل McCall شامل 11 ویژگی کیفی: صحت، قابلیت اطمینان، کارایی، قابلیت استفاده، قابلیت نگهداری، آزمایشپذیری، انعطافپذیری، انتقالپذیری، قابلیت استفاده مجدد و قابلیت همکاری است. در سطح دوم مدل نیز، 23 معیار کیفی ارائه شده است که ارتباط چند به چند با ویژگیهای اصلی سطح اول دارد. ایده اصلی مدل، تعیین ارتباط بین عوامل کیفی و معیارهای ارزیابی محصول است. هرچند انتقادهایی به این مدل وارد است، ولی مزیت عمده این مدل، ارتباط بین ویژگیهای کیفی و معیارها است.
• مدل Boehm
این مدل در سال 1978م برخی ویژگیها را با تأکید بر قابلیت نگهداری نرمافزار به مدل McCall اضافه کرد. همچنین این مدل، ملاحظاتی در خصوص ارزیابی نرمافزار با توجه به نوع کاربرد آن و ویژگیهایی مرتبط با سختافزار اضافه کرد. عیب اصلی این مدل، عدم ارائه راهکاری به منظور ارزیابی و اندازهگیری ویژگیهای کیفی است.
• مدل FURPS
این مدل که توسط دو شرکت HP و Robert Grady در سال 1987م ارائه شده، شامل دو گروه متفاوت از نیازمندیهای نرمافزار است:
-
- نیازمندیهای عملیاتی که با ورودی و خروجی مورد نیاز تعریف میشود.(F)
- نیازمندیهای غیرعملیاتی که شامل چهار ویژگی: قابلیت استفاده، قابلیت اطمینان، کارایی و قابلیت پشتیبانی است. (URPS)
عیب این مدل، عدم وجود معیاری برای سنجش میزان انتقالپذیری نرمافزار است.
• مدل Dromey
این مدل که در سال 1995م ارائه شد، این بود که بتواند به طور وسیعی انواع سیستمها را با کاربردهای مختلف پوشش دهد؛ چون به عقیده وی، ارزیابی نرمافزارها با هم متفاوت است و مسائل پویایی بیشتری برای مدلسازی فرایندها لازم است. مراحل طراحی این مدل را میتوان در پنج مرحله زیر خلاصه نمود:
- انتخاب مجموعهای از صفات سطح بالا که برای ارزیابی لازم است؛
- تهیه فهرستی از اجزای سیستم؛
- تشخیص ویژگیهای دارای کیفیت برای هر جزء سیستم (کیفیتهایی از اجزای مرحله قبل که بیشترین تأثیر را در ویژگیهای محصول نهایی دارند)؛
- تصمیم راجع به اینکه هر ویژگی چگونه بر صفات کیفیت تأثیر میگذارد؛
- ارزیابی مدل.
• مدل ISO/IEC-9126
این مدل، با توجه به نیاز شدید صنعت نرمافزار به استاندارد شدن ارزیابی نرمافزار، توسط مؤسسه بینالمللی استاندارد ISO انتشار یافت و در سال 2001 توسط متخصصان ISO اصلاح و تکمیل شد. این استاندارد بینالمللی، در سطح اول مدل، کیفیت محصول نرمافزاری را به شش ویژگی کیفی اصلی تقسیم میکند که هر یک از آنها از چند ویژگی فرعی تشکیل شدهاند. ارتباط ویژگیهای سطح اول مدل با 21 ویژگی فرعی مدل با سطح دوم، به صورت یک به چند است؛ به طوریکه در این مدل، کمترین همپوشانی وجود دارد. علاوه بر این دو سطح، مدل دارای معیارهایی برای ارزیابی کیفیت نرمافزار نیز میباشد. مهمترین مزیت این مدل این است که ویژگیهای کیفی داخلی و خارجی یک نرمافزار در آن تفکیک شده است.
در واقع، این مدل، شکلی کلی برای ارزیابی کیفیت نرمافزار ارائه میکند. یکی از نقاط قوت این استاندارد این است که قابلیت تطابق با بسیاری از سیستمها را دارد؛ اما کاستی آن این است که شامل نکات جزئیتر نمیشود؛ البته با روشی که مرکز تحقیقات کامپیوتری علوم اسلامی در پیش گرفته است، این مسئله حل شده است.
مدل اصلی این استاندارد که در زیر نمایش داده شده، شامل 6 ویژگی یا شاخص است و شامل زیر شاخصهایی است که بیشتر به آنها خواهیم پرداخت:
جدول شاخصها و زیر شاخصهای استاندارد ISO 9126
شاخص |
زیرشاخص |
توضیحات |
عملیاتی |
مناسب بودن صحیح بودن قابلیت تعامل امنیت |
آیا میتوان وظیفههای مورد نیاز را اجرا کرد؟ آیا نتایج صحیح هستند؟ آیا سیستم میتواند با دیگر سیستمها تعامل داشته باشد؟ آیا سیستم از دسترسی غیرمجاز جلوگیری میکند؟ |
قابلیت اطمینان |
تکمیل شدن تولرانس خطا قابلیت بازیابی |
آیا با گذشت زمان خطاها حذف شدهاند؟ آیا نرمافزار قادر به مدیریت خطاها است؟ آیا نرمافزار بعد از اینکه مشکلی برای آن به وجود آمد، اطلاعات ذخیره نشده را نگهداری میکند و امکان ادامه کار با نرمافزار وجود دارد؟ |
کاربری |
قابلیت فهم قابلیت یادگیری قابلیت عملیاتی قابلیت جذب کردن |
آیا کاربر میفهمد که چگونه از سیستم به راحتی استفاده کند؟ آیا کاربر میتواند کار کردن با سیستم را یاد بگیرد؟ آیا کاربر میتواند بدون تلاش زیاد از سیستم استفاده کند؟ آیا ظاهر برنامه زیبا و جذاب است؟ |
کارآمدی |
رفتار زمان کاربرد منبع |
آیا سیستم به سرعت به درخواست پاسخ میدهد؟ آیا سیستم از منابع به صورت کاربردی استفاده میکند؟ |
قابلیت نگهداری |
قابلیت تحلیل قابلیت تغییر قابلیت پایداری قابلیت آزمایش |
آیا خطاها بهراحتی شناخته شده و رفع میشوند؟ آیا نرمافزار بهراحتی تغییر مییابد؟ در صورت ایجاد تغییر، آیا نرمافزار به کارش ادامه میدهد؟ آیا بهراحتی قابل آزمایش است؟ |
قابلیت حمل |
قابلیت سازگاری قابلیت نصب قابلیت تطبیق قابلیت جایگزینی |
آیا میتوان نرمافزار را به محیطهای دیگر انتقال داد؟ آیا نرمافزار بهآسانی نصب میشود؟ آیا نرمافزار با استانداردهای حمل سازگار است؟ آیا میتوان بهآسانی نرمافزار را به جای نرمافزارهای دیگر جایگزین کرد؟ |
قابلیت کلی |
پذیرش |
آیا نرمافزار با قوانین و مقررات سازگار است؟ |
مدل بومیشده
روشی که در ارزیابی نرمافزارهای پژوهشی در پیش گرفتیم، مبتنی بر استاندارد ISO/IEC 9126 است که به روش ابداعی، یک شاخص اصلی و هفت زیرشاخص به آن اضافه شده است؛ به عبارت دیگر، در ابتدا ویژگیهای اصلی مورد نیاز جهت ارزیابی به عنوان هدف یا Goal تعیین شدهاند که به دلیل اهمیت موضوع محتوا از نگاه فرهنگی یک شاخص ویژهای به نام «محتوایی» اضافه گردید. در مرحله بعد، سؤالات (Questions) تدوین شد و بر مبنای آن سنجهها (Metrics) تعیین گردید. بر این اساس، مجموعه شاخصهایی که در کمیته فنی ارزیابی شاخصهای نرمافزار در مرکز تحقیقات کامپیوتری علوم اسلامی شناسایی شده است، به یکایک زیرشاخصها نسبت داده شد و جایگاه آنها تعیین گردید. این امر، مسیر پژوهشهای بعدی و ارزیابی نهایی محصولات پژوهشی را هموار کرده است.
در ادامه، به بیان هر یک از شاخصها، زیرشاخصها، حوزه بررسی و توضیحات مربوط به نرمافزارهای پژوهشی میپردازیم:
•شاخص عملیاتی
زیرشاخص |
حوزه بررسی |
توضیحات |
|
امنیت |
امنیت |
1. درصد امنیت اطلاعات برنامه و استفاده از الگوریتمهای رمزگذاری دادهها |
|
صحت |
معماری نرمافزار |
توان و دقت عملیات جستجو |
|
قابلیت همکاری |
معماری نرمافزار |
ارتباط یک نرمافزار با نرمافزارهای مرتبط پژوهشی و دفتری |
|
امکانات فنی |
به اشتراکگذاری اطلاعات کاربران و محققان |
||
مناسب بودن |
معماری نرمافزار |
1. میزان دامنه جستجوی مفهومی |
|
امکانات فنی |
برخورداری از یک موتور جستجوی قوی و سریع دارای امکانات رتبهبندی جوابها، نمایشهای مختلف جواب، جستجو در تمام محتواها، ساماندهی Stop Words، امکان جستجوی کلمات با اِعراب، امکان جستجو بر اساس ریشه کلمات و یا ریشه و کلمه خاص |
||
متفرقه |
درصد مقبولیت نزد کاربران |
•شاخص قابلیت اطمینان
زیرشاخص |
حوزه بررسی |
توضیحات |
|
رواداری خطا |
امکانات فنی |
توانایی در مدیریت خطا و تضمین عملکرد صحیح نرمافزار |
|
بررسی کیفیت |
حداقلی باگهای برنامه |
||
قابلیت بازیابی |
معماری نرمافزار |
بازگشت به وضعیت امن در هنگام بروز اشکال |
|
قابلیت بلوغ |
امکانات فنی |
رفع اشکالات سیستم به مرور زمان |
|
معماری نرمافزار |
امکان رفع باگها و نواقص و اضافه کردن قابلیت به آن از طریق patchها و dllهای الحاقی |
•شاخص قابلیت حمل
زیرشاخص |
حوزه بررسی |
توضیحات |
|
سازگاری |
معماری نرمافزار |
قابلیت انعطاف برنامهها با انواع محیطها |
|
قابلیت تطبیق |
معماری نرمافزار |
میزان استعداد تبدیل به قالبهای استاندارد مانند XML |
|
امکانات فنی |
تنوع در حامل برنامه به منظور استفاده از استانداردها و مزیتهای حامل( گویایی - استاندارد ) |
||
قابلیت جایگزینی |
امکانات فنی |
امکان جایگزینی برنامههای دیگر با این برنامه |
|
قابلیت نصب |
معماری نرمافزار |
سهولت مراحل نصب و فعالسازی نرمافزارها و استفاده (عدم وابستگی به نوع سیستم عاملها و نرمافزارهای جانبی یا مدیریت آن در صورت وابستگی) |
•شاخص قابلیت نگهداری
زیرشاخص |
حوزه بررسی |
توضیحات |
|
آزمونپذیری |
امکانات فنی |
دارا بودن امکان آزمایش برنامه |
|
قابلیت پایداری |
معماری نرمافزار |
1. نسخهپذیری و پشتیبانی از نسخههای مختلف |
|
قابلیت تغییر |
معماری نرمافزار |
1. میزان توسعهپذیری برنامه (مانند امکان اضافه شدن Add-Ins) |
|
امکانات فنی |
1. ارائه راهکارهای مناسب و متنوع جهت به روزرسانی نرمافزار |
||
قابلیت تحلیل |
امکانات فنی |
شناسایی صحیح خطاهای احتمالی و اطلاعرسانی مناسب به کاربر |
•شاخص کارآمدی
زیرشاخص |
حوزه بررسی |
توضیحات |
|
رفتار زمان |
معماری نرمافزار |
پاسخگویی سریع به جستجوی کاربر |
|
کاربرد منابع |
رابط کاربران |
میزان پیکربندی رابط کاربری از خارج برنامه به صورت منبع (Resource) |
|
امنیت |
1. میزان استفاده صحیح و مناسب از... (Buffering & cashing) |
||
امکانات فنی |
ممانعت از توقف اجرا به دلیل پردازش خاص |
||
معماری نرمافزار |
استفاده بهینه از تمام محیط میز کار |
•شاخص کاربری
زیرشاخص |
حوزه بررسی |
توضیحات |
|
قابلیت استفاده |
امکانات فنی |
1. پشتیبانی برنامه از زبان فارسی |
|
معماری نرمافزار |
امکانات اصلی برنامه در معرض دید کاربر |
||
رابط کاربران |
1. میزان تسهیلات ویژه برای افراد ناتوان 6. سهولت دسترسی کاربر به پاسخهای مورد نظر 7. تعداد کلیک مورد نیاز تا رفع نیازهای اطلاعاتی مخاطب 8. مناسب بودن چگونگی عملکرد TAB |
||
معماری نرمافزار |
1. حفظ آخرین وضعیت برنامه جهت بارگذاری در اجرای بعدی 6. امکانات اصلی برنامه در معرض دید کاربر |
||
محتوا |
1. استفاده از سیستمهای علمی، مثل: مرتبطات، مترادفات، وابستهها |
||
رابط کاربران ـ معماری نرمافزار |
ارائه امکانات برنامه در چند سطح |
||
رابط کاربران |
1. سهولت دسترسی کاربر به پاسخهای مورد نظر |
||
قابلیت جذب کاربر |
رابط کاربران |
1. تنوع و استفاده درست و مناسب از کنترلها (لیست، چک لیست، رادیوباتن و...) |
|
قابلیت فهم |
رابط کاربران |
1. ارائه پیامها یا رفتار مناسب بر اساس کارکرد کاربر |
|
آموزش |
اطلاعرسانی مناسب راجع به امکانات سیستم با استفاده از منوها، hintها و... |
||
معماری نرمافزار |
میزان تبعیت برنامه از عرف سایر نرمافزارها (راهبری کاربر در صفحات برنامه، کلیدهای میانبر و...) |
||
محتوا |
معین بودن سطح دانش مخاطبان برنامه (عمومی، نیمهتخصصی، تخصصی) |
||
قابلیت یادگیری |
آموزش |
1. دارا بودن راهنمای موضوعی |
|
قابلیت استفاده |
رابط کاربران |
تعداد زبانهای پشتیبانیشده در برنامه |
•شاخص محتوایی
زیرشاخص |
حوزه بررسی |
توضیحات |
|
دقت |
محتوا |
1. هماهنگی شکلی نسخه دیجیتال و چاپی هر کتاب |
|
صحت |
محتوا |
صحت اطلاعات ارائهشده در برنامهها (بهترین نسخه منبع، بدون غلط بودن، تصحیح فونت) |
|
غنیسازی |
محتوا |
میزان غنیسازی محتوا (تنوع و فراوانی فرمتهای موجود در متن (چندتا از چه فرمتی)، اعراب، اتصال به متون مرتبط) |
|
قابلیت همکاری |
محتوا |
ارتباط با سیستمهای جانبی مرتبط، مانند: لغتنامهها و فرهنگنامهها |
|
گستره |
محتوا |
استفاده از منابع دیگر مذاهب و یا استفاده از منابع دیگر ادیان در کتب دینی |
|
مناسب بودن |
محتوا |
1. تعداد کتب و حجم اطلاعات ارائهشده در برنامهها |
منابع: