软体智能
软体智能是对软件资产内部结构状态的了解,是透过专用软体来分析数据库结构、软体框架及源代码后的产物,目的是了解并管理复杂的软体系统[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]。
在管理的层面上,客户对软体智能的接受度和系统的内在功能有关,也和系统的输出有关。包括了以下的需求:
应用
软体智能已应用在许多和软体环境有关的企业中,可能是针对专业软体、个人用软体或是嵌入式软体。 依照元件的用途以及企业应用的原因,软体智能可能和以下事务有关:
- 软体更改以及现代化:可以针对所有内部元件、外部整合的程式、对内部或外在元件的呼叫产生一致性的文件,以及软体的蓝图[18]。
- 软体复原性及安全性:针对产业标准进行度量,并且诊断IT环境下的结构性缺陷[19]。并且确认有关安全性、特殊法及技术要求的相容性。
- 决策及治理:提供有关软体的分析,可能和组织本身,或是和软体开发有关的人士
。软体智能可以量测软体开发的生产力,和企业目标之间的差距,相关资料可以给企业以及IT部门的主管[20]。评估以及基准测试可以帮助企业以及IT部门主管针对软体进行正式、以事实为基础的决策[21]。
行销观点
软体智能已逐渐的用在上述的应用中。以下是行销层面需要此一技术的原因:
参考资料
- ^ 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
- ^ ISO 25000:2005 (PDF). [2013-10-18]. (原始内容存档 (PDF)于2013-04-14).
- ^ 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
- ^ Software Engineering Rules on code quality. http://it-cisq.org/standards/code-quality-standards/ (页面存档备份,存于互联网档案馆)
- ^ 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).