软件智能是对软件资产内部结构状态的了解,是透过专用软件来分析数据库结构、软件框架及源代码后的产物,目的是了解并管理复杂的软件系统[1]。软件智能和商业智能(BI)类似,都是用数据挖掘及探究软件内部架构的软件工具及相关技术所产生。分析结果可以用在商业上,提供给和软件有关的人士,以便进行决策、讨论软件的健康情形、量度软件开发组织的效率,并且预防大型的软件灾难[2]。
软件元件及主题既有复杂性,范围又很广,软件智能和以下的软件层面有关:
- 软件组成是指建构软件应用元件的过程[3]。元件是从撰写软件程式码而来,也包括整合程式码以及外部元件:开源程式、第三方元件或是框架。其他的元件可能是由应用程序接口呼叫函式库或是服务而来。
- 软件架构是指系统各元件的结构及组织、彼此之间关系、以及元件的性质。
- 软件缺陷是指会造成安全性、稳定性、恢复性相关问题的错误,或是会产生非预期结果的错误。有关软件缺陷,还没有一个标准的定义,不过最多人接受的定义是来自非营利组织MITRE的定义,其中会用通用缺陷列表将软件缺陷进行分类[4]。
- 软件等级是评估软件的属性。以往的分类以及词语是源自ISO/IEC 9126以及后续的ISO 25000:2005[5]品质模型。
- 软件经济学是指过去、现在及未来有关软件开发需要资源的评估,目的是为了决策以及管理[6]。
软件智能有以下的组成内容:
- 程式码分析器,可以识别编程语言产生的物件、开源软件产生的外部物件、第三方物件、框架、应用程序界面(API)或是服务,作为其他软件智能分析的资讯基础。
- 软件产品或是应用程序内在架构的图形视觉化,以及相关蓝图[7],其中包括相依性,从资料取得(自动化实时的资料撷取,或是终端用户输入)到资料的储存、软件中不同的层次[8]、以及各元件之间的耦合。
- 在元件和影响分析特征之间浏览及切换的能力
- 软件缺陷列表,在架构或是程式撰写上违反标准最佳实务的部分[9],防范不正常的资料调用,避免影响软件的安全性及整合性[10]。
- 软件结构及软件质量的评级或评分,对应标准可能是工业标准,像是OMG、IT软件品质协会(CISQ)或软件工程学院(SEI),会针对软件可靠度、安全性、效率、可维护性、是否可以扩展到云端或是其他系统等。
- 量化及评估软件经济学(包括工作量、程式大小及技术负债)的度量[11]。
- 产业参考以及基准测试,可以在产业标准及各分析的输出上比较。
若希望软件智能系统顺利的在企业内导入,就需要有使用者相关的考量。最终的目的是软件智能系统可以被使用者接受,在日常作业中应用,为组织加值。若系统无法完成使用者的任务,依照M. Storey在2003年所述的,使用者就不会使用此一系统了[12]。
在程式码以及系统呈现的层面上,软件智能系统需要可以提供不同程度的抽象化:为了了解并且分析软件系统,在设计、解释、文件化上都需要抽象的观点,也需要另一个详细的观点[13]。
在管理的层面上,客户对软件智能的接受度和系统的内在功能有关,也和系统的输出有关。包括了以下的需求:
- 全面:缺少资讯有可能让管理者作出错误或是不适当的决策,这也是影响系统接受度的因素之一[14]。
- 准确:准确性和资料的搜集方式有关,以确保公正以及没有争议的意见以及判断[15]。
- 精确:精确可以透过针对同一来源(或不同来源)多次量测来判断[16]。
- 可扩展性:在软件产业中,缺乏可扩展性往往是导致失败的关键因素之一[17]。
- 可信:结果必须让人可以信赖。
- 可以布署,并且可用。
软件智能已应用在许多和软件环境有关的企业中,可能是针对专业软件、个人用软件或是嵌入式软件。
依照元件的用途以及企业应用的原因,软件智能可能和以下事务有关:
- 软件更改以及现代化:可以针对所有内部元件、外部整合的程式、对内部或外在元件的呼叫产生一致性的文件,以及软件的蓝图[18]。
- 软件复原性及安全性:针对产业标准进行度量,并且诊断IT环境下的结构性缺陷[19]。并且确认有关安全性、特殊法及技术要求的相容性。
- 决策及治理:提供有关软件的分析,可能和组织本身,或是和软件开发有关的人士
。软件智能可以量测软件开发的生产力,和企业目标之间的差距,相关资料可以给企业以及IT部门的主管[20]。评估以及基准测试可以帮助企业以及IT部门主管针对软件进行正式、以事实为基础的决策[21]。
软件智能已逐渐的用在上述的应用中。以下是行销层面需要此一技术的原因:
- 应用软件组合分析(Application Portfolio Analysis、APA):目的在提升企业的效能[22][23]
- 软件评估,以产生软件的KPI[24],提升品质及生产力
- 软件开发安全以及其恢复力(resiliency)的评估及确认
- 软件演进或是旧软件的现代化,需要软件系统的蓝图,或是工具提升、机能修改之类的议题
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
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 doi:10.1145/210376.210389
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
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
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.
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
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.
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.
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, ISSN 0164-1212, doi:10.1016/j.jss.2016.02.050.
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
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. doi:10.1109/IEMC.2002.1038454
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
存档副本. [2020-08-12]. (原始内容存档于2018-06-15).
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, doi:10.1080/14783360500054400
存档副本. [2020-08-12]. (原始内容存档于2018-06-15).
存档副本. [2020-08-12]. (原始内容存档于2018-11-30).
存档副本. [2020-08-12]. (原始内容存档于2021-02-28).