موضوع مقاله: کیفیت نرم‌افزار | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کیفیت نرم‌افزار | مقدمه: بسیاری از جنبه‌های کیفیت ساختاری نرم‌افزار تنها با تحلیل و بررسی ساختار درونی و کد آن در سطح واحد، سطح تکنولوژی و سطح سیستم بررسی می‌شود. | ## بخش 1: کیفیت نرم‌افزار | اما برخی خصوصیات ساختاری مثل قابلیت استفاده بودن فقط به صورت پویا قابل ارزیابی می‌باشند .(ارزیابی کاربران و افرادی که با نرم‌افزار سر و کار دارند حتی اگر با یک نسخهٔ پروتوتایپ روبرو باشند) جنبه‌های دیگر مثل قابلیت اطمینان ممکن است علاوه بر نرم‌افزار، سخت‌افزار را نیز در یر بگیرد. کیفیت عملیاتی نرم‌افزار معمولاً به صورت پویا بررسی می‌شود اما می‌توان بررسی‌های ایستا هم برای آن در نظر گرفت. به لحاظ تاریخی ساختار، دسته‌بندی و مطالعهٔ ویژگی‌ها و معیارهای مورد استفاده در مدیریت کیفیت نرم‌افزار از مدل‌های ISO 9126-3 و ISO 2500:2005 سرچشمه می‌گیرد. بر اساس این مدل‌ها کنسرسیوم کیفیت نرم‌افزارهای آی تی پنج خصوصیت اصلی برای یک محصول نرم‌افزاری دارای ارزش بازاری را معرفی کرد: قابلیت اطمینان، کارایی، امنیت، قابلیت نگه داری و اندازه کافی اندازه‌گیری کیفیت نرم‌افزار در اصل بررسی میزان تطابق نرم‌افزار با این پنج ویژگی است. اندازه‌گیری کیفیت نرم‌افزار در اصل یک نمرهٔ کیفی یا کمی یا ترکیبی از هر دو و سپس یک سیتم وزن‌گیری که اولویت‌ها را مشخص می‌کند می‌باشد. این روش با تجزیه و تحلیل خطاهای برنامه‌نویسی که منجر به فاجعه می‌شود خاتمه می‌یابد. برای دیدن، بررسی، آنالیز و ارتباطات اندازه‌گیری کیفیت نرم‌افزار، مفاهیم و تکنیک‌های تجسم کردن اطلاعات، بسیار مفید است به‌خصوص وقتی که چندین فاکتور مختلف با یکدیگر مرتبط باشند. به عنوان مثال نقشهٔ نرم‌افزار اطلاعات مربوط به توسعه نرم‌افزار، کیفیت نرم‌افزار و دینامیک سیستم را مورد بررسی قرار می‌دهد. مدیریت ریسک و مدیریت هزینه مدیریت ریسک: خرابی نرم‌افزار مشکلاتی بیش از ناراحتی و نگرانی ایجاد کرده‌است. این مشکلات می‌تواند از طراحی رابط کاربری ضعیف تا حطاهای اساسی نرم‌افزار در کد نویسی متغیر باشد. مثال‌هایی از از مشکلات نرم‌افزاری که به مرگ منجر شده‌اند در مقاله دکتر لوسون موجود است. این مثال‌ها شامل نرم‌افزارهایی که در دستگاه‌های پزشکی و دیگر دستگاه‌های حساس وجود دارند، می‌باشد ."[مهندسانی که نرم‌افزارهای جاسازی شده را می‌نویسند] برنامه‌های جاوارا می‌بینند که یک سوم ثانیه برای انجام جمع آوری زباله و به روزرسانی رابط کاربری، زمان صرف می‌کنند و آنها هواپیماهای در حال سقوط از آسمان را پیش بینی می‌کنند. در ایالات متحده، اداره حمل و نقل هوایی فدرال (FAA)، با ارائهٔ سرویس صدور گواهینامه هواپیما FAA، برنامه‌های نرم‌افزاری، قوانین، راهنمایی و آموزش‌هایی ارائه می‌دهد، که تأثیر آن بر روی محصولات هواپیمایی است. مدیریت هزینه: همانند زمینه‌های دیگر مهندسی، برنامه ای با کیفیت ساختاری مناسب هزینهٔ نگه داری، یادگیری و تغییر بسیار کمتری دارد. علاوه بر این، کیفیت ساختاری ضعیف به دلیل ارائهٔ داده‌های غلط، توقف برنامه‌ها و مشکلات امنیتی و پردازشی باعص ایجاد اختلال در عملکرد سازمان‌ها می‌شود. با این حال، بین اندازه‌گیری و بهبود کیفیت نرم‌افزار در یک سیستم جاسازی شده (با تأکید بر مدیریت ریسک) و کیفیت نرم‌افزار در نرم‌افزارهای تجاری (با تأکید بر هزینه و مدیریت پایداری) تفاوت وجود دارد. سیستم‌های جاسازی شده در حال حاضر اغلب شامل یک رابط کاربری هستند و طراحان آنها به همان اندازه که همتایان خودروی برنامه‌های تجاری متمرکز هستند، نگران قابلیت استفاده و بهره‌وری کاربر هستند. گروه دوم به دنبال سیستم ERP یا CRM به عنوان یک سیستم عصبی شرکتی هستند که زمان و عملکرد آن برای رفاه شرکت مهم است. این همگرایی بیشتر در پردازش‌های موبایل قابل مشاهده است: کاربری که به یک برنامه ERP در تلفن هوشمند خود دسترسی پیدا می‌کند، از بین لایه‌های نرم‌افزار به کیفیت بستگی دارد. در حال حاضر هر دو نوع نرم‌افزار از معماری چند لایه ای و پیشرفته استفاده می‌کنند، بنابراین تجزیه و تحلیل و اندازه‌گیری کیفیت نرم‌افزار باید به صورت جامع و مداوم مدیریت شود، و از هدف نهایی یا استفاده نهایی نرم‌افزار جدا شوند. در برخی تعاریف، کیفیت "توانایی یک محصول نرم‌افزاری برای مطابقت با الزامات " است. اولین تعریفی از کیفیت که تاریخ به یاد می‌آورد از شوهارت در آغاز قرن بیستم است: دو جنبه متداول از کیفیت وجود دارد: یکی به عنوان یک واقعیت عینی مستقل از وجود انسان است. دیگری با آنچه در نتیجه واقعیت عینی فکر می‌کنیم، احساس می‌کنیم یا احساس می‌شود، ارتباط دارد. در این دیدگاه، کیفیت، "چیزی است که ما به عنوان یک ایدئال برایش تلاش می‌کنیم، اما ممکن است هرگز به طور کامل اجرا نشود". دیدگاه آرمان گرایانه یک دیدگاه ذاتی است، اما دیدگاه کاربر به‌طور خاص و مشخص تر از ویژگی‌های محصول که پاسخگوی نیاز کاربران باشد برنامه‌ریزی می‌شود. این جنبه از کیفیت توسط استانداردهایی مانند ISO 9001 تأکید می‌شود، که کیفیت را "مجموعه ای از خصوصیات بالقوه " تعریف می‌کند (ISO / IEC 9001). چشم‌انداز محصول که بیان می‌کند که می‌توان با اندازه‌گیری ویژگیهای ذاتی محصول، کیفیت آن را ارزیابی کرد. این دیدگاه بیان می‌کند که دیدگاه‌های مختلف کیفیت ممکن است اهمیت یا ارزش متفاوتی را برای ذینفعان مختلف داشته باشد. کیفیت نرم‌افزار مطابق Deming این مشکل ذاتی در تعریف کیفیت یک محصول، هر نوع محصول، توسط استاد والتر شوگارت بیان شده‌است. مشکل تعیین کیفیت، مشکل تبدیل نیازهای آینده کاربر به ویژگی‌های قابل اندازه‌گیری است، به گونه ای که می‌توان محصولی را طراحی کرد که رضایت را در قبال مبلغی که کاربر پرداخت می‌کند به او هدیه بدهد. این کار آسانی نیست و به محض احساس احساس موفقیت، متوجه می‌شویم که نیازهای مصرف‌کننده تغییر کرده‌است، رقبای دیگر وارد میدان شده‌اند و … کیفیت نرم‌افزار مطابق با Feigenbaum کیفیت از دید مشتری مهم است، نه کیفیت از دید یک مهندس، نه کیفیت از دید بازاریاب و نه مدیریت. این کیفیت می‌تواند تجربه واقعی مشتری با محصول یا خدمات باشد که مطابق با خواسته‌های وی آگاهانه یا صرفاً احساسی بیان شده‌است و از لحاظ فنی عملیاتی یا کاملاً ذهنی اندازه‌گیری می‌شود و همیشه نشان دهنده یک هدف اساسی در بازار رقابتی است. دو تا از این معانی را بررسی می‌کنیم: کیفیت شامل ویژگی‌های محصول است که نیاز مشتری را برآورده می‌کند و در نتیجه رضایت مندی از محصول را فراهم می‌کند. | ## بخش 2: کیفیت نرم‌افزار | با این وجود، می‌توان به عنوان یک تعریف کوتاه از کیفیت گفت: کیفیت مناسب بودن یک محصول برای استفاده است. مدل کیفیت CISQ اگرچه "کیفیت یک ویژگی ادراکی، بسته به مورد و تا حدودی ذهنی است و ممکن است افراد مختلف برداشت‌های مختلفی از آن بکنند " (همان‌طور که در مقاله در مورد کیفیت در تجارت ذکر شده‌است)، کیفیت ساختاری نرم‌افزار به‌طور واضح توسط کنسرسیوم کیفیت نرم‌افزارهای حوزهٔ آی تی (CISQ) مشخص شده‌است. در مدل خانه کیفیت، اینها مواردی هستند که باید به آنها برسید: قابلیت اطمینان یک ویژگی برای مقاومت و استحکام ساختاری. همچنین ضعف‌های موجود را به دلیل تغییراتی که در نرم‌افزار ایجاد شده‌است ("پایداری آن" مطابق با ISO) اندازه‌گیری می‌کند. هدف از بررسی قابلیت اطمینان، کاهش و جلوگیری از خرابی برنامه، قطع برنامه‌ها و خطاهایی است که به‌طور مستقیم بر کاربران تأثیر می‌گذارد است. بهره‌وری سورس کد و ویژگی‌های معماری نرم‌افزار مواردی هستند که عملکرد برنامه در حالت اجرا را تضمین می‌کنند. بهره‌وری به ویژه برای برنامه‌های کاربردی در محیط‌های با سرعت بالا مانند پردازش الگوریتمی یا تراکنشی که مقیاس پذیری و بهره‌وری به صورت موازی مهم هستند کاربرد دارد. تجزیه و تحلیل بهره‌وری سورس کد و مقیاس پذیری، تصویر روشنی از تأثیر کاهش بهره‌وری روی رضایت کاربر ارائه می‌دهد. این موضوع، خطر روبرو شدن با آسیب‌های اساسی که به تجارت آسیب می‌رساند را کم می‌کند. قابلیت نگهداری قابلیت نگه داری، شامل مفهوم سازگاری، قابلیت حمل و انتقال (از یک تیم توسعه به تیم دیگر) است. اندازه‌گیری و نظارت بر قابلیت نگه داری، این قابلیت برای مواردی که در آن تغییرات توسط برنامه‌های زمانی محدود به بازار انجام می‌شود و در جایی که مهم است فناوری اطلاعات پاسخگو به تغییرات محور در تجارت باشد. اندازه در حالی که اندازه به خودی خود از ویژگی‌های کیفیت نیست، اما به وضوح بر حفظ آن تأثیر می‌گذارد. در کنار ویژگی‌های کیفیت که بررسی شد، اندازه نرم‌افزار می‌تواند برای ارزیابی میزان کار تولید شده توسط تیم‌ها و همچنین بهره‌وری آنها از طریق داده‌های زمانی و سایر معیارهای مرتبط با SDLC مورد استفاده قرار گیرد. کیفیت عملکردی نرم‌افزار به عنوان تطابق آن با الزامات کاربردی به صورت صریح بیان شده تعریف شده‌است، به عنوان مثال با استفاده از تجزیه و تحلیل صدای مشتری (بخشی از طراحی جعبه ابزار Six Sigma و / یا مستند از طریق موارد استفاده) و سطح رضایت کاربر نهایی استفاده می‌شود. مورد دوم قابلیت استفاده است اینکه چقدر رابط کاربری بصری و پاسخگو است، چقدر عملیات ساده و پیچیده را می‌توان انجام داد و پیام‌های خطای مفید چقدر است. به‌طور معمول، شیوه‌ها و ابزارهای آزمایش نرم‌افزار اطمینان حاصل می‌کنند که یک تکه از نرم‌افزار مطابق با طراحی اصلی، تجربه کاربری برنامه‌ریزی شده و تست پذیری مطلوب رفتار می‌کند. ویژگی ساختاری دوگانه کیفیت نرم‌افزار با مدل ارائه شده در کد کامل استیو مک کانل که ویژگی‌های نرم‌افزار را به دو قسمت تقسیم می‌کند سازگار است: ویژگی‌های کیفیت داخلی و خارجی. ویژگی‌های کیفیت خارجی آن بخش‌هایی از محصول است که با کاربران آن روبرو می‌شود و کیفیت داخلی برعکس آن است. روش‌های جایگزین یکی از مشکلات تعیین کیفیت این است که «همه احساس می‌کنند که آن را می‌فهمند» و تعاریف دیگر از کیفیت نرم‌افزار می‌تواند مبتنی بر گسترش مفهوم کیفیتی که در تجارت استفاده می‌شود باشد. دکتر تام د مارکو اظهار داشته‌است که «کیفیت محصول تابعی از تغییر جهان برای بهتر شدن» یعنی کیفیت عملکرد و رضایت کاربر در تعیین کیفیت نرم‌افزار از کیفیت ساختاری مهم‌تر است. تعریفی دیگر که توسط جرالد وینبرگ در مدیریت کیفیت نرم‌افزار ایجاد شده‌است: تفکر سیستمی این است که "کیفیت برای برخی از افراد ارزش دارد". این تعریف تأکید می‌کند که کیفیت ذاتاً ذهنی است، افراد مختلف کیفیت یک نرم‌افزار یکسان را متفاوت تجربه می‌کنند. یکی از نقاط قوت این تعریف سؤالاتی است که تیمهای نرم‌افزاری را برای بررسی آنها دعوت می‌کند، سوالاتی از قبیل: "افرادی که می‌خواهیم به نرم‌افزار ما ارزش دهند چه کسانی هستند؟" و "چه چیزی برای آنها با ارزش خواهد بود؟". اندازه‌گیری اگرچه مفاهیم ارائه شده در این بخش برای هر دو کیفیت ساختاری و کاربردی نرم‌افزار کاربرد دارد، اندازه‌گیری دومی اساساً از طریق آزمایش انجام می‌شود [به مقاله اصلی مراجعه کنید: تست نرم‌افزار ]. مقدمه اندازه‌گیری کیفیت نرم‌افزار درواقع بررسی این است که نرم‌افزار تا چه میزان خصوصیات مورد انتظار را دارد. در هر دو مورد، برای هر خصوصیت مطلوب، مجموعه ای از ویژگی‌های قابل اندازه‌گیری وجود دارد که وجود آنها در یک قطعه نرم‌افزار یا سیستم منجر به وجود ویژگی مورد نظر می‌شوند. به عنوان مثال، یک ویژگی مرتبط با قابلیت حمل، تعداد عبارات وابسته به هدف در یک برنامه است. به‌طور دقیق تر، با استفاده از رویکرد استقرار عملکرد کیفیت، این ویژگی‌های قابل اندازه‌گیری "چگونگی"‌هایی هستند که باید اجرا شوند تا بتوانند "آنچه راً در تعریف کیفیت نرم‌افزار بالا را فعال کنید. ساختار، طبقه‌بندی و اصطلاحات ویژگی‌ها و معیارهای قابل استفاده برای مدیریت کیفیت نرم‌افزار از دو مدل ISO 9126-3 و ISO / IEC 25000: 2005 گرفته شده‌است. زیر شاخه‌ها برای رسیدگی به موارد خاص مانند معماری برنامه کاربردی تجاری و خصوصیات فنی مانند دسترسی به داده‌ها و دستکاری‌ها داده‌ها ایجاد شده‌اند. ارتباط بین خطاهای برنامه‌نویسی و نقص تولید نشان می‌دهد که خطاهای کد اصلی ۹۲٪ از کل خطاهای موجود در سورس کد را تشکیل می‌دهد. این تعداد بسیار زیاد مشکلات مربوط به کد در نهایت تنها ۱۰٪ از نقص تولید را به خود اختصاص می‌دهد. روشهای بد مهندسی نرم‌افزار در سطح معماری تنها ۸٪ از نقص کل را شامل می‌شود، اما بیش از نیمی از تلاش صرف شده برای رفع مشکلات را انجام می‌دهد و منجر به ۹۰٪مشکلات جدی در مورد قابلیت اطمینان، امنیت و کارایی در تولید می‌شود. | ## بخش 3: کیفیت نرم‌افزار | تجزیه و تحلیل را می‌توان با استفاده از یک رویکرد کیفی یا کمی یا ترکیبی از هر دو انجام داد تا نمای کلی (با استفاده از میانگین (های) وزنی که نشان دهنده اهمیت نسبی بین عوامل مطرح شده می‌باشد) ارائه شود. این دیدگاه از کیفیت نرم‌افزار در یک روش قدم به قدم باید با شناسایی خطاهای برنامه‌نویسی بحرانی گسسته تکمیل شود. این خطاها ممکن است یک مورد آزمایشی را از بین نبرند، اما در شرایط خاص می‌توانند منجر به وقوع فاجعه بار، تخریب عملکرد، نقض امنیت، خراب کردن داده و مشکلات بی شمار دیگری شوند (Nygard، ۲۰۰۷). یک سیستم واقعی و آماده استفاده، بدون در نظر گرفتن امتیاز آن بر اساس اندازه‌گیری‌های کل، یک سیستم مناسب به‌شمار نمی‌آید. اندازه‌گیری ویژگی‌های مهم برنامه شامل اندازه‌گیری ویژگی‌های ساختاری معماری برنامه، برنامه‌نویسی و مستندات درون کد است؛ بنابراین، هر مشخصه تحت تأثیر ویژگی‌هایی در سطوح متعدد انتزاع در برنامه قرار دارد و همه این موارد را باید در محاسبه اندازه‌گیری خصوصیات در صورتی که پیش‌بینی کننده ارزشمندی از نتایج کیفی است که در کسب و کار تأثیر می‌گذارد، لحاظ کرد. تحلیل و اندازه‌گیری کیفیت ساختاری از طریق تجزیه و تحلیل سورس کد، معماری، چارچوب نرم‌افزار، شمای پایگاه داده در رابطه با اصول و معیارهای تشکیل دهنده معماری مفهومی و منطقی سیستم انجام می‌شود. این موضوع با تجزیه و تحلیل کدهای اساسی، محلی و مؤلفه ای سطحی که معمولاً توسط ابزارهای توسعه انجام می‌شود می‌باشد. قابلیت اطمینان علل اصلی ضعف در قابلیت اطمینان، عدم رعایت شیوه‌های خوب معماری و رمزگذاری است. ارزیابی ویژگی‌های استاتیک زیربنای قابل اطمینان بودن برنامه، تخمین سطح ریسک تجاری و احتمال بروز نقص احتمالی برنامه را در هنگام بهره‌برداری فراهم می‌کند. کارایی مانند اطمینان، علل ناکارآمدی عملکرد اغلب در موارد نقض معماری و برنامه‌نویسی خوب است که می‌توان با اندازه‌گیری خصوصیات کیفیت استاتیک یک برنامه آن هارا شناسایی کرد. این ویژگیهای استاتیکی، گلوگاه‌های عملکرد احتمالی عملیاتی و مشکلات مقیاس پذیری در آینده را پیش‌بینی می‌کنند، به ویژه برای برنامه‌هایی که به سرعت اجرای بالایی را برای دستیابی به الگوریتم‌های پیچیده یا حجم عظیم داده‌ها نیاز دارند. ارزیابی امنیت حداقل نیاز به بررسی بهترین روشها و خصوصیات فنی زیر دارد: شیوه‌های معماری کاربرد انطباق طراحی چند لایه بهترین شیوه‌های امنیتی (اعتبار سنجی ورودی، SQL Injection، فیلمبرداری متقاطع سایت و غیره) تمرین‌های برنامه‌نویسی (سطح کد) خطا و مدیریت استثنا بهترین شیوه‌های امنیتی (دسترسی به توابع سیستمی، کنترل دسترسی به برنامه‌ها) قابلیت نگه داری قابلیت نگه داری شامل مفاهیم قطعه بندی کد، قابل درک بودن، قابلیت تغییر، قابلیت آزمایش، قابلیت استفاده مجدد و قابلیت انتقال از تیم توسعه به تیم دیگر است. در عوض، قابلیت نگهداری ضعیف معمولاً نتیجه هزاران مورد نقض جزئی در مستندسازی، استراتژی اجتناب از پیچیدگی و شیوه‌های اصلی برنامه‌نویسی است که باعث می‌شود تفاوت بین کد تمیز و آسان برای خواندن و کدهای شلوغ و سخت باشد. ارزیابی قابلیت نگه داری نیاز به بررسی روشها و خصوصیات فنی زیر دارد: شیوه‌های معماری کاربرد معماری، برنامه‌ها و اسناد کد تعبیه شده در کد منبع خوانایی کد سطح پیچیدگی تبادلات پیچیدگی الگوریتم‌ها پیچیدگی شیوه‌های برنامه‌نویسی انطباق با برنامه‌نویسی شی گرا و ساختار یافته بهترین شیوه‌ها (در صورت کاربرد) نسبت استفاده مجدد از کد استفده از برنامه‌نویسی پویا نسبت اتصال برنامه‌نویسی کثیف مستندات سخت‌افزار، سیستم عامل، میان افزار، مؤلفه‌های نرم‌افزار و استقلال بانک اطلاعاتی طراحی چند لایه قابلیت حمل تمرین‌های برنامه‌نویسی (سطح کد) کد و عملکردهای تکراری کاهش یافته‌است پاکیزگی فایل سورس کد قابلیت نگه داری به مفهوم بدهی فنی Ward Cunningham است، که بیانگر هزینه‌های ناشی از عدم نگهداری صحیح است. دلایل پایین بودن قابلیت نگه داری را می‌توان به عنوان جسور در مقابل محتاطانه و عمدی در مقابل غیرعمد طبقه‌بندی کرد، و اغلب منشأ آنها در ناتوانی توسعه دهندگان، کمبود وقت، بی دقتی و اختلاف آنها در هزینه‌ها و منافع است. اندازه نرم‌افزار اندازه‌گیری اندازه نرم‌افزار مستلزم جمع‌آوری کامل کد منبع از جمله اسکریپت‌های ساختار پایگاه داده، سورس کد تغییر داده‌ها ، کامپوننت‌ها، فایل‌های پیکربندی و غیره است. در واقع دو نوع اندازه نرم‌افزار برای اندازه‌گیری وجود دارد، اندازه فنی و اندازه کاربردی: چندین روش اندازه‌گیری فنی نرم‌افزار وجود دارد که به‌طور گسترده مطرح شده‌است. متداول‌ترین روش اندازه‌گیری فنی تعداد خطوط کد در هر بخش، تعداد فایل‌ها، توابع، کلاس‌ها، جداول و غیره است که از آن می‌توان نقاط عملکرد پس زمینه را محاسبه کرد. اندازه‌گیری Function Point بر اساس نیاز کاربر انجام می‌شود و نمایش دقیقی از اندازه را برای توسعه دهنده / تخمین‌گر و مقدار (عملکردی که باید تحویل داده شود) ارائه می‌دهد و عملکرد تجاری را که به مشتری تحویل داده می‌شود، منعکس می‌کند. عدد به‌دست آمده برای استفاده در تعیین کمیت و ارزیابی تحویل نرم‌افزار و عملکرد (هزینه توسعه در هر نقطه عملکرد؛ نقص تحویل در هر نقطه عملکرد؛ نقاط عملکرد در هر ماه برای کارکنان) در دسترس است. این موضوع می‌تواند در مراحل اولیه چرخه توسعه نرم‌افزار اعمال شود و به خطوط کد وابسته نیست. با این حال، سطح تابع پذیری دارای سابقه آماری دقیق است و از آن به عنوان واحد مشترک اندازه‌گیری کار در مدیریت توسعه بیشمار برنامه (ADM) یا مشاغل برون سپاری یاد می‌شود. یکی از محدودیت‌های متداول در مورد روش Function Point این است که این یک فرایند دستی است و بنابراین می‌تواند در پروژه‌های بزرگ مانند توسعه برنامه یا مشاغل برون سپاری پرهزینه باشد. این جنبه منفی استفاده از روش‌شناسی رهبران فناوری اطلاعات را به ایجاد کنسرسیوم برای معرفی استاندارد برای خودکارسازی اندازه‌گیری کیفیت نرم‌افزار تشویق کرد، در حالی که IFPUG همچنان بر فعالیت‌های دستی تأکید دارد. شناسایی خطاهای مهم برنامه‌نویسی خطاهای برنامه‌نویسی بحرانی شیوه‌های بد معماری یا کد نویسی هستند که منجر به خطر اختلال در تجارت می‌شوند. این خطاها اغلب به فناوری وابسته هستند و به اهداف و ریسکهای کسب و کار وابستگی زیادی دارند. خطاهای برنامه‌نویسی بحرانی همچنین می‌توانند براساس مشخصات CISQ طبقه‌بندی شوند: قابلیت اطمینان از الگوهای نرم‌افزاری که منجر به رفتار غیرمنتظره شود جلوگیری کنید. روش‌ها، مراحل و عملکردهایی که درج، بروزرسانی، حذف، ایجاد جدول یا انتخاب باید انجام دهند شامل مدیریت خطا است. توابع چند نخی باید ایمن شوند، به عنوان مثال سرویس‌های دسته ای یا کلاسهای کاری نباید دارای زمینه‌های استاتیک باشند. بهره‌وری اطمینان از متمرکز کردن درخواست مشتری (ورودی و داده) برای کاهش ترافیک شبکه. از پرس و جوهای SQL که از ایندکس استفاده نمی‌کنند، خودداری کنید امنیت از دسترسی به داده بدون جلوگیری از مدیریت خطا خودداری کنید کدهای برگشتی کنترل را کنترل کرده و مکانیسم‌های مدیریت خطا را پیاده‌سازی کنید اطمینان از اعتبارسنجی ورودی برای جلوگیری از نقص برنامه‌نویسی در سطح سایت یا نقص تزریق SQL قابلیت نگهداری برای بهبود درک مطلب باید از درختان ارث عمیق و لانه سازی جلوگیری کرد برای جلوگیری از انتشار اصلاحات، ماژول‌ها باید بهم پیوسته (fanout، واسطه‌ها) وصل شوند قراردادهای نامگذاری همگن را اجرا کنید مدل‌های عملیاتی تر پیشنهادهای جدیدتر برای مدل‌های کیفیت مانند Squale و Quamoco از یکپارچه سازی در تعریف ویژگی‌های کیفیت و اندازه‌گیری کیفیت استفاده می‌کنند. با تجزیه ویژگی‌های کیفیتی یا حتی تعریف لایه‌های اضافی، ویژگی‌های پیچیده و انتزاعی کیفیت (مانند قابلیت اطمینان یا قابلیت نگهداری) قابل کنترل تر و قابل اندازه‌گیری می‌شوند. | ## جمع‌بندی | این مدل‌های جدید کیفیت در زمینه‌های صنعتی استفاده شده‌اند اما تا کنون به صورت گسترده و عمومی مورد توجه قرار نگرفته‌اند.