کیفیت مفهومی است که شاید در نگاه اول ساده به نظر برسد، اما تعریف دقیق آن همیشه آسان نیست. کیفیت چیزی است که وقتی آن را میبینید، میشناسید، اما ارائه یک تعریف صریح و کامل از آن دشوار است. با این حال، در نرمافزارهای کامپیوتری، تعریف کیفیت ضروری و حیاتی است، زیرا بدون آن نمیتوان نرمافزاری قابل اعتماد و ارزشمند تولید کرد.

برای ارائه کیفیت ما باید به دنبال درد واقعی مشتری باشیم، چه چیزی زندگی و کار مشتری را سخت کرده است، ممکنه ما چندین درد را شناسایی کنیم، از بین مشکلات مختلف، کدام ها آنقدر مهم هستند که مشتری حاضر باشد برای حلشان وقت یا پول بدهد. اولویت بندی را نباید دست کم گرفت، یک محصول نرمافزاری زمانی واقعاً با کیفیت است که بر اساس شناخت دقیق دردهای مشتری و اولویتبندی درست آنها ساخته شود. در این صورت از نظر مشتری ما توانسته ایم محصول با کیفیتی ارائه بدهیم.
تیمهای نرم افزاری میتوانند کار را به درستی انجام دهند یا بارها همان کار را تکرار کنند. تمرکز بر کیفیت باعث کاهش دوبارهکاریها میشود، هزینهها کاهش مییابد و زمان ارائه محصول به بازار بهبود پیدا میکند. برای دستیابی به نرم افزار با کیفیت بالا، چهار فعالیت کلیدی باید رخ دهد:
فرآیند و کار مهندسی نرم افزار اثبات شده که زیرساخت مناسبی برای توسعه محصول فراهم کند.
مدیریت منسجم پروژه برای هماهنگی تیم و کنترل پیشرفت.
کنترل کیفیت جامع که هر مرحله از توسعه را تحت بررسی قرار دهد.
وجود زیرساخت برای تضمین کیفیت که استانداردها و رویههای مشخصی برای حفظ کیفیت فراهم کند.
نرم افزاری که نیازهای مشتریاش را برآورده میسازد، به طور صحیح و با قابلیت اطمینان کار میکند و برای کسانی که از آن استفاده میکنند، ایجاد ارزش میکند.
امروزه، کیفیت نرم افزار همچنان به عنوان یک مشکل باقی است، ولی چه کسی را باید ملامت کرد؟ مشتریان، توسعه دهندگان را سرزنش میکنند و استدلال میکنند که شیوههای نامنظم منجر به نرم افزارهایی با کیفیت پایین میشود. توسعه دهندگان، مشتریان (و سایر ذینفعها) را ملامت میکنند و استدلال آنها هم این است که تاریخ تحویلهای غیر موجه و جریان پیوستهی تغییرات، آنها را وادار میسازد تا نرم افزار را پیش از اعتبارسنجی کامل تحویل دهند. حق با کیست؟ هر دو - و مسأله همین است
دیوید گاروین، استاد هاروارد، کیفیت را یک مفهوم چندوجهی و پیچیده میداند و آن را از پنج دیدگاه بررسی میکند:
دیدگاه متعالی: کیفیت چیزی است که فوراً آن را تشخیص میدهید، اما تعریف صریحی برای آن وجود ندارد.
دیدگاه کاربری: کیفیت بر اساس اهداف و نیازهای کاربر نهایی سنجیده میشود. اگر محصول بتواند نیازهای کاربر را برآورده کند، کیفیت بالایی دارد.
دیدگاه سازندگان: کیفیت بر اساس انطباق محصول با مشخصات طراحی شده سنجیده میشود.
دیدگاه محصولی: کیفیت به ویژگیها و قابلیتهای ذاتی محصول مربوط میشود، مانند کارایی، قابلیت اطمینان و امنیت.
دیدگاه ارزشمحور: کیفیت بر اساس ارزش پولی که مشتری حاضر به پرداخت آن است، سنجیده میشود.
می توان اینگونه هم تعریف کرد اگر کاربر رضایت نداشته باشد، هیچ چیز دیگری اهمیت ندارد.دومارکو نیز بر این باور است که «کیفیت یک محصول، تابعی است از این که چقدر میتواند زندگی کاربران را بهتر کند». بنابراین حتی اگر نرم افزار گاه به گاه خطا داشته باشد، مادامی که ارزش واقعی ایجاد کند، کیفیت آن قابل قبول است. . دیدگاه نوین دربارهی کیفیت نرم افزار مستلزم توجه به رضایت مشتری و نیز پیروی از نیازمندیهای محصول است.
حتی بی حالترین توسعه دهندگان نرمافزار نیز قبول دارند که تولید نرم افزارهای با کیفیت بالا، هدفی مهم است. ولی کیفیت نرم افزار را چگونه تعریف کنیم؟کیفیت نرم افزار به معنای تولید نرمافزاری مفید، قابل اعتماد و ارزشآفرین است. برای دستیابی به این هدف، سه بخش کلیدی وجود دارد:
فرآیند نرم افزار اثربخش، زیرساختی را بنا میکند که هرگونه تلاش برای ساخت یک محصول نرم افزاری با کیفیت بالا را پشتیبانی میکند. جنبههای مدیریتی فرآیند، موازنهها و نقاطی برای بررسی ایجاد میکنند که به پروژه کمک میکند تا از آشوب - یک عامل کلیدی در ضعف کیفیت - در امان بمانند. کار مهندسی نرم افزار به سازنده امکان میدهد تا مسأله را تحلیل کرده راهکاری مستحکم طراحی کند که هر دوی اینها در ساخت نرم افزار با کیفیت بالا، اهمیت حیاتی دارند. سرانجام، فعالیتهای چتری نظیر مدیریت تغییر و بازبینیهای فنی به اندازهی هر بخش دیگری در کار مهندس نرم افزار با کیفیت در ارتباط هستند.
محصول مفید، محتوا، قابلیتها و ویژگیهایی را تحویل میدهد که مطلوب کاربر نهایی هستند، ولی تحویل این موارد به شیوهای مطمئن و عاری از خطا نیز به همان اندازه دارای اهمیت است. یک محصول مفید همواره نیازمندیهایی را که به صراحت توسط طرفهای ذینفع بیان شده است، پاسخ میدهد. به علاوه، مجموعه نیازمندیهای ناگفتهای را که از همهی نرم افزارهای با کیفیت بالا انتظار میرود (نظیر سهولت استفاده) پاسخ میدهد.
یک نرم افزار با کیفیت بالا با افزودن ارزش برای تولید کننده و کاربر، هم برای سازمان نرمافزاری و هم برای جامعهی کاربران نهایی مزیت فراهم میکند. سازمان نرم افزاری از آن رو ارزش افزوده کسب میکند که نرم افزار با کیفیت بالا به تلاش کمتر برای نگهداری، اشکال زدایی کمتر و پشتیبانی کمتر برای مشتری نیاز دارد. این موضوع به مهندسان نرم افزار امکان میدهد تا وقت بیشتری را صرف ایجاد اپلیکیشنهای جدید کنند و کمتر به دوباره کاری بپردازند. جامعهی کاربران از آن رو ارزش افزوده کسب میکنند که اپلیکیشن یک قابلیت مفید فراهم میسازد، به طوری که یک فرآیند تجاری خاص با سرعت بیشتری انجام شود.
در سال ۱۹۸۷، دیوید گاروین مدل خود را معرفی کرد تا کسبوکارها و توسعهدهندگان به جای تمرکز صرف بر اجتناب از خطا، بر رضایت واقعی مشتری تمرکز کنند.
مککال و والترز نیز عوامل کیفیت نرم افزار را در سه دسته اصلی ارائه کردند:
ویژگیهای عملیاتی: عملکرد روزمره نرم افزار و تجربه کاربری.
توانایی تغییرپذیری: قابلیت نگهداری و تطبیق نرم افزار با تغییرات نیازمندیها.
تطبیقپذیری با محیطهای جدید: قابلیت حمل و استفاده در محیطها و شرایط مختلف.
این مدلها به مهندسان نرم افزار کمک میکنند تا رضایت کاربر را از طریق کیفیت واقعی محصول تضمین کنند.
برای انجام ارزیابی، شما و تیم شما باید ویژگیهای خاص و قابل اندازهگیری (با حداقل قابل تشخیص) از واسط را اداره کنید. ممکن است وظایف شما بر پاسخ به سوالات زیر متمرکز باشد:
·کاربران با چه سرعتی میتوانند تعیین کنند آیا محصول میتواند برای کمک به انجام وظیفهی آنها استفاده شود یا خیر (مناسب بودن)؟
·چقدر طول میکشد تا کاربران یاد بگیرند از عملکردهای مورد نیاز سیستم برای تکمیل کار خود استفاده کنند (قابلیت یادگیری)؟
·آیا کاربر میتواند نحوهی استفاده از سیستم را در نشستهای آزمون بعدی بدون نیاز به یادگیری مجدد به خاطر آورد (قابلیت یادگیری)؟
·چقدر طول میکشد تا کاربران وظایف را با استفاده از سیستم کامل کنند (عملیاتی بودن)؟
·آیا سیستم سعی میکند از خطای کاربران جلوگیری کند (محافظت از خطا)؟
·آیا سیستم به کاربران اجازه میدهد اعمالی را خنثی کنند که ممکن است منجر به خطا شوند (محافظت از خطا)؟
·آیا پاسخها به سوالات مربوط به ظاهر واسط کاربری پاسخهای مطلوبی هستند (زیبایی شناختی)؟
·آیا واسط با انتظاراتی که در قوانین طلایی( در مطلبی جدا به قوانین طلایی خواهیم پرداخت ) بیان شده است مطابقت دارد (دسترس پذیری)؟
·آیا واسط کاربری با اقلام چک لیست مورد نیاز برای کاربران هدف مطابقت دارد (دسترس پذیری)؟
به موازات توسعهی طراحی واسط، تیم نرم افزار، نمونهی اولیهی طراحی را مرور میکند و سوالات مذکور را میپرسد. اگر پاسخ به اغلب این سوالات مثبت باشد، احتمالاً واسط کاربری کیفیت بالایی از خود نشان میدهد.
پرتران مایر در مصاحبهای به معضل کیفیت اشاره میکند: اگر نرم افزاری بیکیفیت ساخته شود، خریداری نخواهد داشت و اگر بیش از حد برای بینقصی تلاش شود، زمان و هزینه از دست میرود و بازار از دست خواهد رفت. بنابراین باید به تعادلی رسید که نرم افزار «به قدر کافی خوب» باشد؛ یعنی کیفیتی داشته باشد که در ارزیابی اولیه رد نشود و در عین حال تکمیل آن مستلزم هزینه و زمان بینهایت نباشد.
بسیاری از شرکتهای بزرگ همین کار را میکنند: نسخه 1.0 را با اشکالات شناختهشده عرضه میکنند و در نسخههای بعدی کیفیت را بهبود میدهند. آنها میدانند که مشتریان اعتراض خواهند کرد، اما سرعت ورود به بازار را مهمتر میدانند.
نرم افزار «به قدر کافی خوب» یعنی محصولی که ویژگیهای اصلی را با کیفیت بالا ارائه میدهد، هرچند در بخشهای فرعی خطا داشته باشد. فروشنده امیدوار است کاربران از این خطاها چشمپوشی کنند.
با این حال، این رویکرد ریسکبرانگیز است. برای شرکتهای کوچک، عرضه نرم افزار ناقص میتواند باعث از بین رفتن اعتبار و ورشکستگی شود. در برخی حوزههای حساس (مانند نرم افزار خودرو، مخابرات) این کار حتی میتواند خطرناک یا غیرقانونی باشد.
هر فرآیند نرم افزاری باید معیارهایی روشن برای تعیین مفهوم «واقعاً خوب» در دامنه خاص داشته باشد. بنابراین، فلسفه «به قدر کافی خوب» تنها در برخی زمینههای محدود کاربرد دارد و باید با احتیاط به کار گرفته شود.
منابع: Software Engineering :Bruce Maxim , Roger S. Pressman، گفتگو با برتراند مایر