جایگاه کیفیت در صنعت نرمافزار
نرمافزارها دارای دو نوع نیاز هستند: نیازهای عملیاتی و غیر عملیاتی. نیازهای عملیاتی تواناییها سیستم در انجام وظایف مختلف را توصیف میکنند و نیازمندیهای غیرعملیاتی سیستم، نیازهایی هستند که به طور مشخص با عملیات سیستم در ارتباط نیستند. به عبارت دیگر نیازهای غیر عملیاتی، ویژگیهای کیفی سیستم میباشند که بر روی عملکرد نهایی سیستم اثرگذار خواهند بود و برای برآورده کردن آنها باید از ساختارهای خاصی در تولید نرمافزار استفاده نمود.
نیازمندیهای کیفی دارای جنبههای گوناگون هستند. باید در مراحل طراحی، پیادهسازی و استقرار سیستم مدنظر قرار گیرند. باید توجه داشت که برآورده ساختن یک نیاز کیفی، بر روی دیگر نیازهای کیفی اثرگذار است. اگر نیازمندیهای کیفی نرمافزار به روشنی بیان نشود ممکن است افراد مختلف آنها را به شکلهای متفاوتی ببینند، تفسیر کنند، پیاده-سازی کنند و ارزشیابی کنند. نتیجه آن، نرمافزاری است که با انتظارات کاربر هم خوانی ندارد و از کیفیت ضعیفی برخوردار است، کاربران، کارفرما و اعضای تیم توسعه ناراضی هستند و انحراف زمان و هزینه در اثر بازکاریها وجود دارد.کیفیت یک محصول نرم افزاری بر اساس کیفیت معیارهای زیر سنجیده میشود :
- نیازمندیها:
نمیتوان از یک نرم افزار انتظار خروجی با کیفیت داشت زمانی که توسعهدهندگان آن، نیازمندیهای پروژه را به خوبی درک نکرده باشند. شناخت نیازمندیهای یک نرمافزار، کلیدیترین بخش تضمین کیفیت نرمافزار است. با شناخت درست نیازمندیها میتوان به یک خروجی با کیفیت دست پیدا کرد. برای مطالعه بیشتر مطلب “مستندات نیازمندیها و نقش آن در موفقیت یک پروژه نرمافزاری” را بخوانید.
- طراحی:
در حالی که نیازمندیها مشخص میکنند که نرمافزار چه کاری باید انجام دهد، طراحی میگوید که چطور نرمافزار باید این کار را انجام دهد. طراحی باید بتواند راه حلهایی برای نیازمندیهای مشخص شده نرمافزار ارائه کند. طراحی در مهندسی نرمافزار بسیار مهم است، این در حالی است که بعضی از شرکتها و تیمهای نرمافزاری مرحله طراحی را انجام نمیدهند و یک راست سراغ برنامهنویسی میروند و انتظار خروجی با کیفیت را هم دارند. فاز طراحی اگر جدی گرفته شود و بر اساس استانداردهای مهندسی نرمافزار و ابزارهای آن انجام شود، میتواند کیفیت نرمافزار را تضمین کند و کار بخشهای دیگر و مخصوصاً پیادهسازی را آسان کند.
- پیادهسازی:
توسعهدهندگان بر اساس مستندات نیازمندیها و راهحلهای ارائه شده توسط مستندات طراحی، شروع به پیادهسازی نرمافزار میکنند. اگر مستندات نیازمندیها و مستندات طراحی به صورت دقیق و به درستی تهیه شده باشند، معمولاً مشکل جدیای در پیادهسازی پیش نخواهد آمد. تغییر در نیازمندیها یا تغییر در طراحی در هنگام پیادهسازی برای کیفیت نرمافزار سم مهلکی است که تا جایی که میشود باید از آن اجتناب کرد. بر اساس تعریفهای ارائه شده در بالا، اگر نرمافزار با کیفیت میخواهید باید در پیادهسازی، به طراحی تا جایی که میتوانید وفادار باشید. البته چگونگی پیادهسازی نرمافزار هم بسیار اهمیت دارد. ممکن است یک پیادهسازی تمام نیازمندیهای مشخص شده را برطرف کند اما پیادهسازی با کیفیتی نباشد. کیفیت در پیادهسازی نرمافزار مباحث زیادی دارد که در یک مطلب جداگانه به آن پرداخته خواهد شد.
- تست:
تست نرمافزار پس از پیادهسازی، اگر به درستی انجام شود، کیفیت خروجی نرمافزار را به طرز شگرفی افزایش میدهد. در تست مشخص میشود که چه مشکلاتی در پیادهسازی وجود دارند که باید حل شوند. کیفیت نرمافزار با تعداد انجام تستهای درست رابطه مستقیم دارد. هر چقدر بیشتر نرمافزار را تست کنیم، در انتها نرمافزارمان کیفیت بهتری خواهد داشت. با انجام تستهای مکرر میتوانید خروجی نهایی با کیفیتتری ارائه کنید و در نتیجه مشتریان راضیتری داشته باشید. در حال حاضر روشهای بسیاری برای تست نرمافزار وجود دارند که همگی سعی میکنند تا کیفیت نرمافزار را بالا ببرند. چندی از متدولوژیهای Agile در سیکل توسعه خود به صورت جدی از روشهای تست نرمافزار استفاده میکنند تا از کیفیت محصولات نرمافزاری تولید شده اطمینان پیدا کنند
- توزیع و استقرار:
پس از پیادهسازی نرمافزار، باید بتوان به خوبی خروجی آن را بین مشتریان (یا کاربران) توزیع کرد. توزیع در اینجا به معنی Deployment است که میزان رضایت کاربران از نحوه نصب و استقرار سیستم نرمافزاری مورد نظر است. خیلیها توزیع و استقرار را در تعیین کیفیت نرمافزار بی اهمیت میدانند اما در واقع اینطور نیست و نرمافزاری از دید مشتری با کیفیت است که به خوبی نصب و مستقر شود.
- آموزش و پشتیبانی:
نرمافزاری که کاربر نتواند از آن استفاده کند، بیکیفیت است. کیفیت برای نرمافزاری که از آن استفاده نشود بیمعناست. باید برای استفاده از نرمافزار آموزشهای لازم و کافی به کاربران داده شود و در هنگام بروز مشکل، هر چه سریعتر حل شود. ناقص بودن کیفیت هر یک از موارد بالا می تواند کیفیت کل نرمافزار را تحت تاثیر قرار دهد.