ویرگول
ورودثبت نام
هادی شجاعیان
هادی شجاعیانمهندس نرم افزار، سئو
هادی شجاعیان
هادی شجاعیان
خواندن ۷ دقیقه·۳ ماه پیش

مفهوم کیفیت و اهمیت آن در نرم‌افزار- بخش اول

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

محصول با کیفیت بر رضایت مشتری تمرکز دارد
محصول با کیفیت بر رضایت مشتری تمرکز دارد

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

چرا کیفیت اهمیت دارد؟

تیم‌های نرم‌ افزاری می‌توانند کار را به درستی انجام دهند یا بارها همان کار را تکرار کنند. تمرکز بر کیفیت باعث کاهش دوباره‌کاری‌ها می‌شود، هزینه‌ها کاهش می‌یابد و زمان ارائه محصول به بازار بهبود پیدا می‌کند. برای دستیابی به نرم‌ افزار با کیفیت بالا، چهار فعالیت کلیدی باید رخ دهد:

  1. فرآیند و کار مهندسی نرم­ افزار اثبات شده که زیرساخت مناسبی برای توسعه محصول فراهم کند.

  2. مدیریت منسجم پروژه برای هماهنگی تیم و کنترل پیشرفت.

  3. کنترل کیفیت جامع که هر مرحله از توسعه را تحت بررسی قرار دهد.

  4. وجود زیرساخت برای تضمین کیفیت که استانداردها و رویه‌های مشخصی برای حفظ کیفیت فراهم کند.

محصول کار با کیفیت چیست؟

نرم ­افزاری که نیازهای مشتریاش را برآورده می­سازد، به طور صحیح و با قابلیت اطمینان کار می­کند و برای کسانی که از آن استفاده می­کنند، ایجاد ارزش می­کند.

 امروزه، کیفیت نرم ­افزار همچنان به عنوان یک مشکل باقی است، ولی چه کسی را باید ملامت کرد؟ مشتریان، توسعه دهندگان را سرزنش می­کنند و استدلال می­کنند که شیوه­های نامنظم منجر به نرم ­افزارهایی با کیفیت پایین می­شود. توسعه دهندگان، مشتریان (و سایر ذی­نفع­ها) را ملامت می­کنند و استدلال آن­ها هم این است که تاریخ تحویل­های غیر موجه و جریان پیوسته­ی تغییرات، آن­ها را وادار می­سازد تا نرم ­افزار را پیش از اعتبارسنجی کامل تحویل دهند. حق با کیست؟ هر دو - و مسأله همین است

دیدگاه‌های مختلف درباره کیفیت

دیوید گاروین، استاد هاروارد، کیفیت را یک مفهوم چندوجهی و پیچیده می‌داند و آن را از پنج دیدگاه بررسی می‌کند:

  1. دیدگاه متعالی: کیفیت چیزی است که فوراً آن را تشخیص می‌دهید، اما تعریف صریحی برای آن وجود ندارد.

  2. دیدگاه کاربری: کیفیت بر اساس اهداف و نیازهای کاربر نهایی سنجیده می‌شود. اگر محصول بتواند نیازهای کاربر را برآورده کند، کیفیت بالایی دارد.

  3. دیدگاه سازندگان: کیفیت بر اساس انطباق محصول با مشخصات طراحی شده سنجیده می‌شود.

  4. دیدگاه محصولی: کیفیت به ویژگی‌ها و قابلیت‌های ذاتی محصول مربوط می‌شود، مانند کارایی، قابلیت اطمینان و امنیت.

  5. دیدگاه ارزش‌محور: کیفیت بر اساس ارزش پولی که مشتری حاضر به پرداخت آن است، سنجیده می‌شود.

می توان اینگونه هم تعریف کرد اگر کاربر رضایت نداشته باشد، هیچ چیز دیگری اهمیت ندارد.دومارکو نیز بر این باور است که «کیفیت یک محصول، تابعی است از این که چقدر می‌تواند زندگی کاربران را بهتر کند». بنابراین حتی اگر نرم‌ افزار گاه به گاه خطا داشته باشد، مادامی که ارزش واقعی ایجاد کند، کیفیت آن قابل قبول است. . دیدگاه نوین درباره­ی کیفیت نرم ­افزار مستلزم توجه به رضایت مشتری و نیز پیروی از نیازمندی­های محصول است.

تعریف کیفیت نرم‌ افزار

حتی بی حال­ترین توسعه دهندگان نرم­افزار نیز قبول دارند که تولید نرم­ افزارهای با کیفیت بالا، هدفی مهم است. ولی کیفیت نرم­ افزار را چگونه تعریف کنیم؟کیفیت نرم‌ افزار به معنای تولید نرم‌افزاری مفید، قابل اعتماد و ارزش‌آفرین است. برای دستیابی به این هدف، سه بخش کلیدی وجود دارد:

  1. فرآیند نرم­ افزار اثربخش، زیرساختی را بنا می­کند که هرگونه تلاش برای ساخت یک محصول نرم ­افزاری با کیفیت بالا را پشتیبانی می­کند. جنبه­های مدیریتی فرآیند، موازنه­ها و نقاطی برای بررسی ایجاد می­کنند که به پروژه کمک می­کند تا از آشوب - یک عامل کلیدی در ضعف کیفیت - در امان بمانند. کار مهندسی نرم ­افزار به سازنده امکان می­دهد تا مسأله را تحلیل کرده راهکاری مستحکم طراحی کند که هر دوی این­ها در ساخت نرم ­افزار با کیفیت بالا، اهمیت حیاتی دارند. سرانجام، فعالیت­های چتری نظیر مدیریت تغییر و بازبینی­های فنی به اندازه­ی هر بخش دیگری در کار مهندس نرم ­افزار با کیفیت در ارتباط هستند.

  1. محصول مفید، محتوا، قابلیت­ها و ویژگی­هایی را تحویل می­دهد که مطلوب کاربر نهایی هستند، ولی تحویل این موارد به شیوه­ای مطمئن و عاری از خطا نیز به همان اندازه دارای اهمیت است. یک محصول مفید همواره نیازمندی­هایی را که به صراحت توسط طرف­های ذی­نفع بیان شده است، پاسخ می­دهد. به علاوه، مجموعه نیازمندی­های ناگفته­ای را که از همه­ی نرم ­افزارهای با کیفیت بالا انتظار می­رود (نظیر سهولت استفاده) پاسخ می­دهد.

  1. یک نرم­ افزار با کیفیت بالا با افزودن ارزش برای تولید کننده و کاربر، هم برای سازمان نرم­افزاری و هم برای جامعه­ی کاربران نهایی مزیت فراهم می­کند. سازمان نرم ­افزاری از آن رو ارزش افزوده کسب می­کند که نرم ­افزار با کیفیت بالا به تلاش کمتر برای نگهداری، اشکال زدایی کمتر و پشتیبانی کمتر برای مشتری نیاز دارد. این موضوع به مهندسان نرم­ افزار امکان می­دهد تا وقت بیشتری را صرف ایجاد اپلیکیشن­های جدید کنند و کمتر به دوباره کاری بپردازند. جامعه­ی کاربران از آن رو ارزش افزوده کسب می­کنند که اپلیکیشن یک قابلیت مفید فراهم می­سازد، به طوری که یک فرآیند تجاری خاص با سرعت بیشتری انجام شود.

ابعاد کیفی نرم‌ افزار

در سال ۱۹۸۷، دیوید گاروین مدل خود را معرفی کرد تا کسب‌وکارها و توسعه‌دهندگان به جای تمرکز صرف بر اجتناب از خطا، بر رضایت واقعی مشتری تمرکز کنند.

مک‌کال و والترز نیز عوامل کیفیت نرم‌ افزار را در سه دسته اصلی ارائه کردند:

  1. ویژگی‌های عملیاتی: عملکرد روزمره نرم‌ افزار و تجربه کاربری.

  2. توانایی تغییرپذیری: قابلیت نگهداری و تطبیق نرم‌ افزار با تغییرات نیازمندی‌ها.

  3. تطبیق‌پذیری با محیط‌های جدید: قابلیت حمل و استفاده در محیط‌ها و شرایط مختلف.

این مدل‌ها به مهندسان نرم‌ افزار کمک می‌کنند تا رضایت کاربر را از طریق کیفیت واقعی محصول تضمین کنند.

ارزیابی کیفیت نرم‌ افزار

برای انجام ارزیابی، شما و تیم شما باید ویژگی­های خاص و قابل اندازه­گیری (با حداقل قابل تشخیص) از واسط را اداره کنید. ممکن است وظایف شما بر پاسخ به سوالات زیر متمرکز باشد:

·کاربران با چه سرعتی می­توانند تعیین کنند آیا محصول می­تواند برای کمک به انجام وظیفه­ی آن­ها استفاده شود یا خیر (مناسب بودن)؟

·چقدر طول می­کشد تا کاربران یاد بگیرند از عملکردهای مورد نیاز سیستم برای تکمیل کار خود استفاده کنند (قابلیت یادگیری)؟

·آیا کاربر می­تواند نحوه­ی استفاده از سیستم را در نشست­های آزمون بعدی بدون نیاز به یادگیری مجدد به خاطر آورد (قابلیت یادگیری)؟

·چقدر طول می­کشد تا کاربران وظایف را با استفاده از سیستم کامل کنند (عملیاتی بودن)؟

·آیا سیستم سعی می­کند از خطای کاربران جلوگیری کند (محافظت از خطا)؟

·آیا سیستم به کاربران اجازه می­دهد اعمالی را خنثی کنند که ممکن است منجر به خطا شوند (محافظت از خطا)؟

·آیا پاسخ­ها به سوالات مربوط به ظاهر واسط کاربری پاسخ­های مطلوبی هستند (زیبایی شناختی)؟

·آیا واسط با انتظاراتی که در قوانین طلایی( در مطلبی جدا به قوانین طلایی خواهیم پرداخت ) بیان شده است مطابقت دارد (دسترس پذیری)؟

·آیا واسط کاربری با اقلام چک لیست مورد نیاز برای کاربران هدف مطابقت دارد (دسترس پذیری)؟

به موازات توسعه­ی طراحی واسط، تیم نرم ­افزار، نمونه­ی اولیه­ی طراحی را مرور می­کند و سوالات مذکور را می­پرسد. اگر پاسخ به اغلب این سوالات مثبت باشد، احتمالاً واسط کاربری کیفیت بالایی از خود نشان می­دهد.

معضل کیفیت نرم‌ افزار

پرتران مایر در مصاحبه‌ای به معضل کیفیت اشاره می‌کند: اگر نرم‌ افزاری بی‌کیفیت ساخته شود، خریداری نخواهد داشت و اگر بیش از حد برای بی‌نقصی تلاش شود، زمان و هزینه از دست می‌رود و بازار از دست خواهد رفت. بنابراین باید به تعادلی رسید که نرم‌ افزار «به قدر کافی خوب» باشد؛ یعنی کیفیتی داشته باشد که در ارزیابی اولیه رد نشود و در عین حال تکمیل آن مستلزم هزینه و زمان بی‌نهایت نباشد.

بسیاری از شرکت‌های بزرگ همین کار را می‌کنند: نسخه‌ 1.0 را با اشکالات شناخته‌شده عرضه می‌کنند و در نسخه‌های بعدی کیفیت را بهبود می‌دهند. آن‌ها می‌دانند که مشتریان اعتراض خواهند کرد، اما سرعت ورود به بازار را مهم‌تر می‌دانند.

نرم‌ افزار «به قدر کافی خوب» یعنی محصولی که ویژگی‌های اصلی را با کیفیت بالا ارائه می‌دهد، هرچند در بخش‌های فرعی خطا داشته باشد. فروشنده امیدوار است کاربران از این خطاها چشم‌پوشی کنند.

با این حال، این رویکرد ریسک‌برانگیز است. برای شرکت‌های کوچک، عرضه نرم‌ افزار ناقص می‌تواند باعث از بین رفتن اعتبار و ورشکستگی شود. در برخی حوزه‌های حساس (مانند نرم‌ افزار خودرو، مخابرات) این کار حتی می‌تواند خطرناک یا غیرقانونی باشد.

هر فرآیند نرم‌ افزاری باید معیارهایی روشن برای تعیین مفهوم «واقعاً خوب» در دامنه‌ خاص داشته باشد. بنابراین، فلسفه «به قدر کافی خوب» تنها در برخی زمینه‌های محدود کاربرد دارد و باید با احتیاط به کار گرفته شود.

منابع: Software Engineering :Bruce Maxim , Roger S. Pressman، گفتگو با برتراند مایر

 

نرم افزارکیفیتمهندسی نرم افزار
۰
۰
هادی شجاعیان
هادی شجاعیان
مهندس نرم افزار، سئو
شاید از این پست‌ها خوشتان بیاید