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

هوش نرم افزاری  دیدگاهی از شرایط ساختاری دارایی‌های نرم افزاری است که توسط نرم افزاری طراحی شده‌است که برای تجزیه و تحلیل ساختار پایگاه داده، چارچوب نرم افزار و کد منبع برای درک و کنترل بهتر سیستم‌های نرم افزاری پیچیده در محیط‌های فناوری اطلاعات طراحی شده است.Dąbrowski R. (2012) On Architecture Warehouses and Software Intelligence. In: Kim T. , Lee Y. , Fang W. (eds) Future Generation Information Technology. FGIT 2012. Lecture Notes in Computer Science, vol 7709. Springer, Berlin, Heidelberg مشابه هوش تجاری (BI)، هوش نرم افزاری توسط مجموعه ای از ابزارها و تکنیک‌های نرم افزاری برای استخراج داده‌ها و ساختار داخلی نرم افزار تولید می‌شود. نتایج نهایی اطلاعاتی است که ذینفعان مشاغل و نرم افزارها برای تصمیم‌گیری آگاهانه از آنها استفاده کردهBamizadeh, Lida, et al. "Actionable Analytics on Software Requirement Specifications." International Journal of Recent Technology and Engineering. Volume-8 Issue5, January 2020  و میزان کارایی سازمان‌های توسعه دهنده نرم افزارBamizadeh, Lida, et al. "Actionable Analytics on Software Requirement Specifications." International Journal of Recent Technology and Engineering. Volume-8 Issue5, January 2020  اندازه‌گیری می‌کنند و در مورد سلامت نرم افزار ارتباط برقرار می‌کنند تا از فجایع نرم افزاری جلوگیری کنند.Ahmed E. Hassan and Tao Xie. 2010. Software intelligence: the future of mining software engineering data. In Proceedings of the FSE/SDP workshop on Future of software engineering research (FoSER '10). ACM, New York, NY, USA, 161–166

 توانایی‌ها 
به دلیل پیچیدگی و طیف گسترده‌ای از مولفه‌ها و موضوعات ضمنی در نرم افزار، هوش نرم افزاری از جنبه‌های مختلف نرم افزار گرفته شده‌است:
 ترکیب یک نرم افزار در حقیقت ساخت اجزای نرم افزار است.Nierstrasz, Oscar, and Theo Dirk Meijler. "Research directions in software composition." ACM Computing Surveys 27.2 (1995): 262-264  مولفه‌ها از کدگذاری نرم افزار و همچنین ادغام کد منبع از اجزای خارجی حاصل می‌شوند: منبع باز، اجزای شخص ثالث یا چارچوب‌ها. سایر اجزا را می‌توان با استفاده از رابط برنامه‌نویسی برنامه به کتابخانه‌ها یا خدمات تلفیق کرد.
 معماری نرم افزار به ساختار و سازماندهی عناصر یک سیستم، روابط و خصوصیات موجود در آن اشاره دارد.
 نقص نرم افزار مشکلاتی را مشخص می‌کند که می‌تواند باعث امنیت، ثبات، انعطاف‌پذیری و نتایج غیرمنتظره شود. هیچ تعریف استانداردی از نقص نرم افزار وجود ندارد اما بیشترین مورد پذیرفته شده مربوط به شرکت MITER است که در آن ایرادات رایج به عنوان شمارش ضعف مشترک ذکر شده‌است.Kanashiro, L. , et al. "Predicting software flaws with low complexity models based on static analysis data." Journal of Information Systems Engineering & Management 3.2 (2018): 17 
 نمرات نرم افزار ویژگی‌های نرم افزار را ارزیابی می‌کند. از لحاظ تاریخی، طبقه‌بندی و اصطلاحات ویژگی‌ها از مدل کیفیت ISO 9126-3 و مدل بعدی ISO 25000: 2005 است.
 اقتصاد نرم افزار به ارزیابی منابع نرم افزار در گذشته، حال یا آینده برای تصمیم‌گیری و حاکمیت گفته می‌شود.Boehm, Barry W. , and Kevin J. Sullivan. "Software economics: a roadmap." Proceedings of the conference on The future of Software engineering. 2000. 

 اجزاء 
قابلیت‌های هوش نرم افزاری تعداد بیشتری از اجزا را تولید می‌کند از جمله:
 تجزیه و تحلیل کد به عنوان مبنای اطلاعاتی برای سایر مولفه‌های هوش نرم افزاری که اشیا ایجاد شده توسط زبان برنامه‌نویسی، اشیا from خارجی از منبع باز، اشیا اشخاص ثالث، چارچوب‌ها، API یا خدمات را شناسایی می‌کند.
 تجسم گرافیکی و نقشه‌برداری از ساختار درونی محصول نرم افزاری یا برنامه در نظر گرفته شدهRenato Novais, José Amancio Santos, Manoel Mendonça,
Experimentally assessing the combination of multiple visualization strategies for software evolution analysis, Journal of Systems and Software, Volume 128, 2017, pp. 56–71, , . شامل وابستگی‌ها، از جمع‌آوری داده‌ها (خودکار و گرفتن داده‌های لحظه ای، ورودی‌های سمت کاربر) تا ذخیره داده‌ها، لایه‌های مختلفRolia, Jerome A. , and Kenneth C. Sevcik. "The method of layers." IEEE transactions on software engineering 21.8,1995, 689-700, در داخل نرم افزار و اتصال بین تمام عناصر.
 قابلیت‌های پیمایش درون اجزا و ویژگی‌های تحلیل تأثیر
 لیست نقص، نقض معماری و کدگذاری، در برابر بهترین شیوه‌های استاندارد شده،Software Engineering Rules on code quality. http://it-cisq.org/standards/code-quality-standards/ مسدود کننده ابری از مهاجرت به محیط Cloud جلوگیری می‌کند،Balalaie, Armin,, Abbas Heydarnoori, and Pooyan Jamshidi. "Microservices architecture enables devops: Migration to a cloud-native architecture." Ieee Software 33.3 ,May–June 2016, 42-52, و تماس داده‌های سرکش منجر به امنیت و یکپارچگی نرم افزار می‌شودQ. Feng, R. Kazman, Y. Cai, R. Mo and L. Xiao, "Towards an Architecture-Centric Approach to Security Analysis," 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), Venice, 2016, pp. 221-230, 
 نمرات یا امتیازات کیفیت ساختاری و نرم‌افزاری مطابق با استاندارد صنعت مانند OMG , CISQ یا SEI ارزیابی قابلیت اطمینان، امنیت، کارایی، قابلیت نگهداری و مقیاس پذیری ابر یا سیستم‌های دیگر.
 معیارها کمی سازی و برآورد اقتصاد نرم افزار از جمله تلاش کار، اندازه و بدهی فنیR. Haas, R. Niedermayr and E. Juergens, "Teamscale: Tackle Technical Debt and Control the Quality of Your Software," 2019 IEEE/ACM International Conference on Technical Debt (TechDebt), Montreal, QC, Canada, 2019, pp. 55-56, 
 مراجع و معیارهای صنعت اجازه مقایسه بین نتایج تجزیه و تحلیل و استانداردهای صنعت را می‌دهد

 جنبه کاربر 
برای ادغام موفقیت‌آمیز در استفاده از سیستم‌های هوش نرم افزاری در یک شرکت، باید برخی ملاحظات در نظر گرفته شود. در نهایت سیستم هوش نرم افزاری باید توسط کاربران پذیرفته و مورد استفاده قرار گیرد تا بتواند به سازمان ارزش افزوده دهد. اگر سیستم به مأموریت کاربران ارزشی قائل نشود، آنها به سادگی از آن استفاده نمی‌کنند همان‌طور که M. Storey در سال ۲۰۰۳ بیان کرده‌است.Storey MA. (2003) Designing a Software Exploration Tool Using a Cognitive Framework. In: Zhang K. (eds) Software Visualization. The Springer International Series in Engineering and Computer Science, vol 734. Springer, Boston, MA.

در سطح کد و نمایش سیستم، سیستم‌های هوش نرم افزاری باید سطح متفاوتی از انتزاعات را ارائه دهند: یک دیدگاه انتزاعی برای طراحی، توضیح و مستندسازی و یک دیدگاه دقیق برای درک و تجزیه و تحلیل سیستم نرم افزار.Seonah Lee, Sungwon Kang, What situational information would help developers when using a graphical code recommender?, Journal of Systems and Software, Volume 117, 2016, pp. 199–217, , .

در سطح حاکمیت، پذیرش کاربر برای نرم افزار هوشمند زمینه‌های مختلف مربوط به عملکرد داخلی سیستم و همچنین خروجی سیستم را پوشش می‌دهد؛ که این الزامات را در بر می‌گیرد:
 جامع: اطلاعات از دست رفته ممکن است منجر به تصمیمی نادرست یا نامناسب شود، همچنین عاملی است که بر پذیرش کاربر از سیستم تأثیر می‌گذارد.Linda G. Wallace, Steven D. Sheetz, The adoption of software measures: A technology acceptance model (TAM) perspective, Information & Management, Volume 51, Issue 2, 2014, pp. 249–259, , 
 دقیق: دقت به چگونگی جمع‌آوری داده‌ها بستگی دارد تا از نظر و قضاوت منصفانه و غیرقابل انکار اطمینان حاصل شود.Lippert, S.K. , & Forman, H. (2005). Utilization of information technology: examining cognitive and experiential factors of post-adoption behavior. IEEE Transactions on Engineering Management, 52, 363–381.
 دقیق: معمولاً با مقایسه چندین اندازه‌گیری از منابع یکسان یا متفاوت، دقت کار قضاوت می‌شود.Rajiv D. Banker and Chris F. Kemerer (1992). Performance Evaluation Metrics for Information Systems Development: A Principal-Agent Model. Information Systems Research, volume 3, number 4, 379–400.
 مقیاس پذیر: عدم مقیاس پذیری در صنعت نرم افزار عامل مهمی است که منجر به شکست می‌شود.M. Crowne, "Why software product startups fail and what to do about it. Evolution of software product development in startup companies," IEEE International Engineering Management Conference, 2002, pp. 338–343 vol.1. 
 معتبر: به خروجی‌ها باید اعتماد کرد و اعتقاد داشت.
 قابل پیاده‌سازی و قابل استفاده

 برنامه‌های کاربردی 
هوش نرم افزاری در کلیه مشاغل مربوط به محیط نرم افزار کاربردهای بسیاری دارد، خواه نرم افزاری برای افراد حرفه ای باشد، یا نرم افزارهای جاسازی شده. بسته به ارتباط و استفاده از اجزا، برنامه‌ها به موارد زیر مربوط می‌شوند:
 تغییر و نوسازی: اسناد و مدارک یکنواخت و خدمات برنامه‌ریزی در تمام اجزاء درونی، کد خارجی یکپارچه، یا تماس به اجزای داخلی و خارجی از نرم افزارParnas, David Lorge, Precise Documentation: The Key to Better Software, The Future of Software Engineering, 2011, 125–148, 
 انعطاف‌پذیری و امنیت: اندازه‌گیری بر اساس استانداردهای صنعت برای تشخیص نقص ساختاری در یک محیط IT.https://www.bcg.com/capabilities/technology-digital/software-intelligence.aspx اعتبار سنجی در مورد امنیت، مقررات خاص یا موارد فنی.
 تصمیم‌گیری و حاکمیت: ارائه تجزیه و تحلیل در مورد خود نرم افزار یا ذینفعانی که در توسعه نرم افزار نقش دارند، به عنوان مثال اندازه‌گیری بهره‌وری برای آگاهی رهبران تجارت و فناوری اطلاعات در مورد پیشرفت به سمت اهداف تجاری.LaValle S, Lesser E, Shockley R, Hopkins MS and Kruschwitz N (2011) Big data, analytics and the path from insights to value. MIT Sloan Management Review 52 (2), 21–32. ارزیابی و معیار برای کمک به رهبران تجارت و فناوری اطلاعات در تصمیم‌گیری آگاهانه و مبتنی بر واقعیت در مورد نرم افزار.Janez Prašnikar, Žiga Debeljak,Aleš Ahčan (2005) Benchmarking as a tool of strategic management, Total Quality Management & Business Excellence, volume 16, number 2, 257–275, 

 بازار 
هوش نرم افزاری یک نظم سطح بالا است و به تدریج در حال گسترش برنامه‌های کاربردی ای است که در بالا ذکر شده‌است. چندین بازار مختلف هستند که نیاز به آن را ایجاد می‌کنند:
 تجزیه و تحلیل نمونه کارها (APA) با هدف بهبود عملکرد شرکتhttps://www.gartner.com/it-glossary/application-portfolio-analysis
 ارزیابی نرم افزار برای تولید نرم افزار KPIhttps://www.omg.org/spec/AFP و بهبود کیفیت و بهره‌وری
 اقدامات و اعتبارسنجی امنیت و انعطاف‌پذیری نرم افزار
 تکامل نرم افزار یا نوسازی میراث، که برای آن نیاز به برنامه‌ریزی سیستم‌های نرم افزاری است و نه ابزاری برای اصلاح و تسهیل تغییرات

 منابع 

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