نقطه عملکرد

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

## استانداردها
چندین استاندارد شناخته‌شده و/یا مشخصات عمومی برای اندازه‌گیری نرم‌افزار بر اساس نقطه عملکرد وجود دارد.

**1.** **استانداردهای ISO**

* FiSMA: استاندارد ISO/IEC 29881:2010 فناوری اطلاعات – مهندسی سیستم‌ها و نرم‌افزار – روش اندازه‌گیری اندازه عملکردی FiSMA نسخه 1.1
* IFPUG: استاندارد ISO/IEC 20926:2009 مهندسی نرم‌افزار و سیستم‌ها – اندازه‌گیری نرم‌افزار – روش اندازه‌گیری اندازه عملکردی IFPUG
* Mark-II: استاندارد ISO/IEC 20968:2002 مهندسی نرم‌افزار – تحلیل نقاط عملکردی Mk II – راهنمای شیوه‌های شمارش
* Nesma: استاندارد ISO/IEC 24570:2018 مهندسی نرم‌افزار – روش اندازه‌گیری اندازه عملکردی Nesma نسخه 2.3 – تعاریف و دستورالعمل‌های شمارش برای کاربرد تحلیل نقاط عملکردی
* COSMIC: استاندارد ISO/IEC 19761:2011 مهندسی نرم‌افزار – روشی برای اندازه‌گیری اندازه عملکردی
* OMG: استاندارد ISO/IEC 19515:2019 فناوری اطلاعات – گروه مدیریت اشیاء – نقاط عملکردی خودکار (AFP)، نسخه 1.0

پنج استاندارد اول، پیاده‌سازی‌هایی از استاندارد کلی برای اندازه‌گیری اندازه عملکردی یعنی ISO/IEC 14143 هستند.  مشخصات OMG Automated Function Point (AFP) که توسط Consortium for IT Software Quality هدایت شده، استانداردی برای خودکارسازی شمارش نقاط عملکردی بر اساس دستورالعمل‌های گروه بین‌المللی کاربران نقاط عملکردی (IFPUG) ارائه می‌دهد. با این حال، پیاده‌سازی‌های فعلی این استاندارد محدودیتی دارند؛ به‌طوری که بدون پیکربندی اولیه نمی‌توانند به‌صورت خودکار خروجی‌های خارجی (External Output یا EO) را از پرس‌وجوهای خارجی (External Inquiries یا EQ) تفکیک کنند. 

## مقدمه
نقاط عملکردی در سال 1979 توسط آلن جی. آلبرشت در شرکت IBM در مقاله‌ای تحت عنوان ندازه‌گیری بهره‌وری توسعه نرم‌افزار کاربردی تعریف شدند.  در این روش، نیازمندی‌های عملکردی کاربر نرم‌افزار شناسایی می‌شوند و هر یک در یکی از پنج دسته زیر قرار می‌گیرند: خروجی‌ها، پرس‌وجوها، ورودی‌ها، فایل‌های داخلی و رابط‌های خارجی.  

پس از شناسایی عملکرد و دسته‌بندی آن، پیچیدگی آن ارزیابی شده و تعداد مشخصی از نقاط عملکردی به آن اختصاص داده می‌شود. هر یک از این نیازمندی‌های عملکردی کاربر به یک عملکرد تجاری کاربر نهایی مانند ورود داده برای ورودی یا یک پرس‌وجوی کاربر برای پرس‌وجو (Inquiry) مربوط می‌شود.  

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

در حال حاضر، هیچ روش اندازه‌گیری عملکردی (FSM) که توسط ISO تأیید شده باشد و پیچیدگی الگوریتمی را در نتیجه اندازه‌گیری لحاظ کند، وجود ندارد. اخیراً رویکردهای مختلفی برای رفع این ضعف در محصولات نرم‌افزاری تجاری ارائه شده است. انواع روش‌های مبتنی بر مدل آلبرشت که توسط IFPUG طراحی شده‌اند تا این ضعف (و سایر ضعف‌ها) را جبران کنند، شامل موارد زیر می‌شوند:

* نقاط عملکرد اولیه و آسان – این مدل برای پیچیدگی مسئله و داده‌ها تنظیم می‌شود و از دو سوال استفاده می‌کند که یک اندازه‌گیری پیچیدگی تا حدودی ذهنی را ارائه می‌دهند. این مدل با حذف نیاز به شمارش عناصر داده، اندازه‌گیری را ساده‌تر می‌کند.
* نقاط عملکرد مهندسی – در این مدل، عناصر (نام‌های متغیر) و عملگرها (برای مثال، عملیات‌های حسابی، برابری/نابرابری، بولی) شمارش می‌شوند. این تغییر، عملکرد محاسباتی را برجسته می‌کند. هدف این مدل مشابه با اندازه‌گیری پیچیدگی هالستد مبتنی بر عملگر/عملوند است.
* معیار بنگ (Bang) – یک معیار عملکرد تعریف می‌کند که بر اساس دوازده شمارش اولیه (ساده) است که بر بنگ تأثیر می‌گذارند یا آن را نشان می‌دهند. بنگ به عنوان "معیار عملکرد واقعی که باید تحویل داده شود، به‌طور موردی توسط کاربر درک می‌شود" تعریف شده است. معیار بنگ می‌تواند در ارزیابی ارزش یک واحد نرم‌افزاری از نظر میزان عملکرد مفید آن استفاده شود، اگرچه شواهد کمی در ادبیات وجود دارد که نشان دهد چنین کاربردی دارد. استفاده از معیار بنگ ممکن است هنگام مهندسی مجدد (چه کامل یا به صورت جزئی) مورد استفاده قرار گیرد.
* نقاط ویژگی – این مدل تغییراتی را اضافه می‌کند که کاربرد آن را در سیستم‌های با پردازش داخلی قابل توجه (مثل سیستم‌های عامل و سیستم‌های ارتباطی) بهبود می‌بخشد. این امکان را می‌دهد تا عملکردهایی که برای کاربر قابل درک نیستند، اما برای عملکرد صحیح ضروری هستند، حساب شوند.
* نقاط میکرو عملکرد وزنی – یکی از مدل‌های جدیدتر (2009) که نقاط عملکرد را با استفاده از وزن‌هایی که از پیچیدگی جریان برنامه، واژگان عملوند و عملگر، استفاده از اشیاء و الگوریتم‌ها به دست می‌آید، تنظیم می‌کند.
* نقاط عملکرد فازی – این مدل انتقالی فازی و تدریجی بین پیچیدگی‌های پایین × متوسط و متوسط × بالا پیشنهاد می‌دهد.

## کنتراست
استفاده از نقاط عملکرد به جای خطوط کد به منظور رسیدگی به چندین مسئله اضافی است:

* خطر "تورم" خطوط کد ایجاد شده و در نتیجه کاهش ارزش سیستم اندازه‌گیری، در صورتی که توسعه‌دهندگان به منظور افزایش بهره‌وری تشویق شوند. طرفداران نقاط عملکرد به این موضوع اشاره می‌کنند که اندازه‌گیری باید به اندازه‌ راه‌حل اشاره داشته باشد، نه اندازه‌ مسئله.
* اندازه‌گیری خطوط کد (LOC) زبان‌های سطح پایین را پاداش می‌دهد، زیرا برای ارائه مقدار مشابهی از عملکرد، به خطوط کد بیشتری نیاز است نسبت به زبان‌های سطح بالا. C. Jones روشی برای اصلاح این موضوع در آثار خود ارائه داده است.
* اندازه‌گیری LOC در مراحل اولیه پروژه مفید نیست، جایی که برآورد تعداد خطوط کدی که ارائه خواهد شد دشوار است. با این حال، نقاط عملکرد می‌توانند از نیازمندی‌ها استخراج شوند و بنابراین در روش‌هایی مانند برآورد از طریق نماینده مفید هستند.

## نقد
آلبرشت در تحقیقات خود مشاهده کرد که نقاط عملکرد همبستگی بالایی با خطوط کد دارند، که این موضوع منجر به پرسش درباره ارزش چنین معیاری شده است، به ویژه اگر یک معیار عینی‌تر، مانند شمارش خطوط کد، در دسترس باشد[1]. علاوه بر این، تلاش‌های متعددی برای رفع کاستی‌های درک‌شده این معیار از طریق تقویت رژیم شمارش انجام شده است[2][3][4][5][6][7]. دیگران نیز راه‌حل‌هایی ارائه داده‌اند تا با توسعه روش‌های جایگزین که نماینده‌ای برای میزان عملکرد ارائه‌شده ایجاد می‌کنند، چالش‌ها را دور بزنند[8].

## جستارهای وابسته

* COCOMO (مدل هزینه سازنده)
* مقایسه نرم افزار تخمین توسعه
* روش Mark II
* نقطه شی
* تخمین تلاش توسعه نرم افزار
* اندازه نرم افزار
* خطوط منبع کد
* از Case Points استفاده کنید
* روش Simple Function Point

*
رده:معیارهای نرم‌افزارسنجی