هوش نرم‌افزاری

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

توانایی‌ها 
به دلیل پیچیدگی و طیف گسترده‌ای از مولفه‌ها و موضوعات ضمنی در نرم افزار، هوش نرم افزاری از جنبه‌های مختلف نرم افزار گرفته شده‌است:
 ترکیب یک نرم افزار در حقیقت ساخت اجزای نرم افزار است. مولفه‌ها از کدگذاری نرم افزار و همچنین ادغام کد منبع از اجزای خارجی حاصل می‌شوند: منبع باز، اجزای شخص ثالث یا چارچوب‌ها. سایر اجزا را می‌توان با استفاده از رابط برنامه‌نویسی برنامه به کتابخانه‌ها یا خدمات تلفیق کرد.
 معماری نرم افزار به ساختار و سازماندهی عناصر یک سیستم، روابط و خصوصیات موجود در آن اشاره دارد.
 نقص نرم افزار مشکلاتی را مشخص می‌کند که می‌تواند باعث امنیت، ثبات، انعطاف‌پذیری و نتایج غیرمنتظره شود. هیچ تعریف استانداردی از نقص نرم افزار وجود ندارد اما بیشترین مورد پذیرفته شده مربوط به شرکت MITER است که در آن ایرادات رایج به عنوان شمارش ضعف مشترک ذکر شده‌است.
 نمرات نرم افزار ویژگی‌های نرم افزار را ارزیابی می‌کند. از لحاظ تاریخی، طبقه‌بندی و اصطلاحات ویژگی‌ها از مدل کیفیت ISO 9126-3 و مدل بعدی ISO 25000: 2005 است.
 اقتصاد نرم افزار به ارزیابی منابع نرم افزار در گذشته، حال یا آینده برای تصمیم‌گیری و حاکمیت گفته می‌شود.

اجزاء 
قابلیت‌های هوش نرم افزاری تعداد بیشتری از اجزا را تولید می‌کند از جمله:
 تجزیه و تحلیل کد به عنوان مبنای اطلاعاتی برای سایر مولفه‌های هوش نرم افزاری که اشیا ایجاد شده توسط زبان برنامه‌نویسی، اشیا from خارجی از منبع باز، اشیا اشخاص ثالث، چارچوب‌ها، API یا خدمات را شناسایی می‌کند.
 تجسم گرافیکی و نقشه‌برداری از ساختار درونی محصول نرم افزاری یا برنامه در نظر گرفته شده شامل وابستگی‌ها، از جمع‌آوری داده‌ها (خودکار و گرفتن داده‌های لحظه ای، ورودی‌های سمت کاربر) تا ذخیره داده‌ها، لایه‌های مختلف در داخل نرم افزار و اتصال بین تمام عناصر.
 قابلیت‌های پیمایش درون اجزا و ویژگی‌های تحلیل تأثیر
 لیست نقص، نقض معماری و کدگذاری، در برابر بهترین شیوه‌های استاندارد شده، مسدود کننده ابری از مهاجرت به محیط Cloud جلوگیری می‌کند، و تماس داده‌های سرکش منجر به امنیت و یکپارچگی نرم افزار می‌شود
 نمرات یا امتیازات کیفیت ساختاری و نرم‌افزاری مطابق با استاندارد صنعت مانند OMG , CISQ یا SEI ارزیابی قابلیت اطمینان، امنیت، کارایی، قابلیت نگهداری و مقیاس پذیری ابر یا سیستم‌های دیگر.
 معیارها کمی سازی و برآورد اقتصاد نرم افزار از جمله تلاش کار، اندازه و بدهی فنی
 مراجع و معیارهای صنعت اجازه مقایسه بین نتایج تجزیه و تحلیل و استانداردهای صنعت را می‌دهد

جنبه کاربر 
برای ادغام موفقیت‌آمیز در استفاده از سیستم‌های هوش نرم افزاری در یک شرکت، باید برخی ملاحظات در نظر گرفته شود. در نهایت سیستم هوش نرم افزاری باید توسط کاربران پذیرفته و مورد استفاده قرار گیرد تا بتواند به سازمان ارزش افزوده دهد. اگر سیستم به مأموریت کاربران ارزشی قائل نشود، آنها به سادگی از آن استفاده نمی‌کنند همان‌طور که M. Storey در سال ۲۰۰۳ بیان کرده‌است.

در سطح کد و نمایش سیستم، سیستم‌های هوش نرم افزاری باید سطح متفاوتی از انتزاعات را ارائه دهند: یک دیدگاه انتزاعی برای طراحی، توضیح و مستندسازی و یک دیدگاه دقیق برای درک و تجزیه و تحلیل سیستم نرم افزار.

در سطح حاکمیت، پذیرش کاربر برای نرم افزار هوشمند زمینه‌های مختلف مربوط به عملکرد داخلی سیستم و همچنین خروجی سیستم را پوشش می‌دهد؛ که این الزامات را در بر می‌گیرد:
 جامع: اطلاعات از دست رفته ممکن است منجر به تصمیمی نادرست یا نامناسب شود، همچنین عاملی است که بر پذیرش کاربر از سیستم تأثیر می‌گذارد.
 دقیق: دقت به چگونگی جمع‌آوری داده‌ها بستگی دارد تا از نظر و قضاوت منصفانه و غیرقابل انکار اطمینان حاصل شود.
 دقیق: معمولاً با مقایسه چندین اندازه‌گیری از منابع یکسان یا متفاوت، دقت کار قضاوت می‌شود.
 مقیاس پذیر: عدم مقیاس پذیری در صنعت نرم افزار عامل مهمی است که منجر به شکست می‌شود.
 معتبر: به خروجی‌ها باید اعتماد کرد و اعتقاد داشت.
 قابل پیاده‌سازی و قابل استفاده

برنامه‌های کاربردی 
هوش نرم افزاری در کلیه مشاغل مربوط به محیط نرم افزار کاربردهای بسیاری دارد، خواه نرم افزاری برای افراد حرفه ای باشد، یا نرم افزارهای جاسازی شده. بسته به ارتباط و استفاده از اجزا، برنامه‌ها به موارد زیر مربوط می‌شوند:
 تغییر و نوسازی: اسناد و مدارک یکنواخت و خدمات برنامه‌ریزی در تمام اجزاء درونی، کد خارجی یکپارچه، یا تماس به اجزای داخلی و خارجی از نرم افزار
 انعطاف‌پذیری و امنیت: اندازه‌گیری بر اساس استانداردهای صنعت برای تشخیص نقص ساختاری در یک محیط IT. اعتبار سنجی در مورد امنیت، مقررات خاص یا موارد فنی.
 تصمیم‌گیری و حاکمیت: ارائه تجزیه و تحلیل در مورد خود نرم افزار یا ذینفعانی که در توسعه نرم افزار نقش دارند، به عنوان مثال اندازه‌گیری بهره‌وری برای آگاهی رهبران تجارت و فناوری اطلاعات در مورد پیشرفت به سمت اهداف تجاری. ارزیابی و معیار برای کمک به رهبران تجارت و فناوری اطلاعات در تصمیم‌گیری آگاهانه و مبتنی بر واقعیت در مورد نرم افزار.

بازار 
هوش نرم افزاری یک نظم سطح بالا است و به تدریج در حال گسترش برنامه‌های کاربردی ای است که در بالا ذکر شده‌است. چندین بازار مختلف هستند که نیاز به آن را ایجاد می‌کنند:
 تجزیه و تحلیل نمونه کارها (APA) با هدف بهبود عملکرد شرکت
 ارزیابی نرم افزار برای تولید نرم افزار KPI و بهبود کیفیت و بهره‌وری
 اقدامات و اعتبارسنجی امنیت و انعطاف‌پذیری نرم افزار
 تکامل نرم افزار یا نوسازی میراث، که برای آن نیاز به برنامه‌ریزی سیستم‌های نرم افزاری است و نه ابزاری برای اصلاح و تسهیل تغییرات

منابع 

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