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

هوش نرم افزاری (به انگلیسی: Software intelligence) دیدگاهی از شرایط ساختاری دارایی‌های نرم افزاری است که توسط نرم افزاری طراحی شده‌است که برای تجزیه و تحلیل ساختار پایگاه داده، چارچوب نرم افزار و کد منبع برای درک و کنترل بهتر سیستم‌های نرم افزاری پیچیده در محیط‌های فناوری اطلاعات طراحی شده است.[۱] مشابه هوش تجاری (BI)، هوش نرم افزاری توسط مجموعه ای از ابزارها و تکنیک‌های نرم افزاری برای استخراج داده‌ها و ساختار داخلی نرم افزار تولید می‌شود. نتایج نهایی اطلاعاتی است که ذینفعان مشاغل و نرم افزارها برای تصمیم‌گیری آگاهانه از آنها استفاده کرده[۲] و میزان کارایی سازمان‌های توسعه دهنده نرم افزار[۳] اندازه‌گیری می‌کنند و در مورد سلامت نرم افزار ارتباط برقرار می‌کنند تا از فجایع نرم افزاری جلوگیری کنند.[۴]

توانایی‌ها ویرایش

به دلیل پیچیدگی و طیف گسترده‌ای از مولفه‌ها و موضوعات ضمنی در نرم افزار، هوش نرم افزاری از جنبه‌های مختلف نرم افزار گرفته شده‌است:

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

اجزاء ویرایش

قابلیت‌های هوش نرم افزاری تعداد بیشتری از اجزا را تولید می‌کند از جمله:

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

جنبه کاربر ویرایش

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

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

در سطح حاکمیت، پذیرش کاربر برای نرم افزار هوشمند زمینه‌های مختلف مربوط به عملکرد داخلی سیستم و همچنین خروجی سیستم را پوشش می‌دهد؛ که این الزامات را در بر می‌گیرد:

  • جامع: اطلاعات از دست رفته ممکن است منجر به تصمیمی نادرست یا نامناسب شود، همچنین عاملی است که بر پذیرش کاربر از سیستم تأثیر می‌گذارد.[۱۷]
  • دقیق: دقت به چگونگی جمع‌آوری داده‌ها بستگی دارد تا از نظر و قضاوت منصفانه و غیرقابل انکار اطمینان حاصل شود.[۱۸]
  • دقیق: معمولاً با مقایسه چندین اندازه‌گیری از منابع یکسان یا متفاوت، دقت کار قضاوت می‌شود.[۱۹]
  • مقیاس پذیر: عدم مقیاس پذیری در صنعت نرم افزار عامل مهمی است که منجر به شکست می‌شود.[۲۰]
  • معتبر: به خروجی‌ها باید اعتماد کرد و اعتقاد داشت.
  • قابل پیاده‌سازی و قابل استفاده

برنامه‌های کاربردی ویرایش

هوش نرم افزاری در کلیه مشاغل مربوط به محیط نرم افزار کاربردهای بسیاری دارد، خواه نرم افزاری برای افراد حرفه ای باشد، یا نرم افزارهای جاسازی شده. بسته به ارتباط و استفاده از اجزا، برنامه‌ها به موارد زیر مربوط می‌شوند:

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

بازار ویرایش

هوش نرم افزاری یک نظم سطح بالا است و به تدریج در حال گسترش برنامه‌های کاربردی ای است که در بالا ذکر شده‌است. چندین بازار مختلف هستند که نیاز به آن را ایجاد می‌کنند:

  • تجزیه و تحلیل نمونه کارها (APA) با هدف بهبود عملکرد شرکت[۲۵][۲۶]
  • ارزیابی نرم افزار برای تولید نرم افزار KPI[۲۷] و بهبود کیفیت و بهره‌وری
  • اقدامات و اعتبارسنجی امنیت و انعطاف‌پذیری نرم افزار
  • تکامل نرم افزار یا نوسازی میراث، که برای آن نیاز به برنامه‌ریزی سیستم‌های نرم افزاری است و نه ابزاری برای اصلاح و تسهیل تغییرات

منابع ویرایش

  1. 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
  2. Bamizadeh, Lida, et al. "Actionable Analytics on Software Requirement Specifications." International Journal of Recent Technology and Engineering. Volume-8 Issue5, January 2020 doi:10.35940/ijrte.E5849.018520
  3. Bamizadeh, Lida, et al. "Actionable Analytics on Software Requirement Specifications." International Journal of Recent Technology and Engineering. Volume-8 Issue5, January 2020 doi:10.35940/ijrte.E5849.018520
  4. 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
  5. Nierstrasz, Oscar, and Theo Dirk Meijler. "Research directions in software composition." ACM Computing Surveys 27.2 (1995): 262-264 doi:10.1145/210376.210389
  6. 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 doi:10.20897/jisem.201817
  7. "ISO 25000:2005" (PDF). Archived from the original (PDF) on 2013-04-14. Retrieved 2013-10-18.
  8. Boehm, Barry W. , and Kevin J. Sullivan. "Software economics: a roadmap." Proceedings of the conference on The future of Software engineering. 2000. doi:10.1145/336512.336584
  9. 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, ISSN 0164-1212, doi:10.1016/j.jss.2017.03.006.
  10. Rolia, Jerome A. , and Kenneth C. Sevcik. "The method of layers." IEEE transactions on software engineering 21.8,1995, 689-700,doi:10.1109/32.403785
  11. Software Engineering Rules on code quality. http://it-cisq.org/standards/code-quality-standards/
  12. 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,doi:10.1109/MS.2016.64
  13. 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, doi:10.1109/WICSA.2016.41.
  14. 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, doi:10.1109/TechDebt.2019.00016.
  15. 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.
  16. 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, ISSN 0164-1212, doi:10.1016/j.jss.2016.02.050.
  17. 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, ISSN 0378-7206, doi:10.1016/j.im.2013.12.003
  18. 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.
  19. 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.
  20. 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. doi:10.1109/IEMC.2002.1038454
  21. Parnas, David Lorge, Precise Documentation: The Key to Better Software, The Future of Software Engineering, 2011, 125–148, doi:10.1007/978-3-642-15187-3_8
  22. https://www.bcg.com/capabilities/technology-digital/software-intelligence.aspx
  23. 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.
  24. 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, doi:10.1080/14783360500054400
  25. https://www.gartner.com/it-glossary/application-portfolio-analysis
  26. https://www.gartner.com/doc/3812067/effective-strategies-deliver-sustainable-cost
  27. https://www.omg.org/spec/AFP