概念格在软件工程中的应用研究
2019-07-16降惠
降惠
摘要:概念格作为一个知识表示、分析与处理的工具,已广泛应用于软件工程、信息检索、人工智能等。为了提高软件的质量和开发效率,概念格可以应用于软件理解、软件开发与软件测试中,可以分别在软件理解的系统配置结构中、测试用例中、模式识别设计中,软件开发的需求分析、软件设计与web中,软件测试的测试结果分析中应用概念格技术来。最后,文章提出概念格在软件工程中的研究趋势为面向超大规模、高复杂度的软件、优化重用及响应速度的提高等方面。
关键词:概念格;软件开发;软件设计;软件测试;软件工程
中图分类号: TP399 文献标识码:A
文章编号:1009-3044(2019)15-0080-03
Abstract: Concept lattice, as a tool for knowledge representation, analysis and processing, has been widely used in software engineering, information retrieval, artificial intelligence and so on. To the aim of improving the quality and the efficiency of software, concept lattice can be applied to software understanding, software development and software testing in software engineering. It can be applied to configuration structure of the system, test cases, pattern recognition designing. It is also can be used to demand analysis, software designing and web designing. Meanwhile, during the analysis of test result, concept lattice can also provide more testing data. Finally, the paper proposes that the research trend of concept lattice in software engineering is oriented towards software with very large scale and high complexity, optimizing reuse and the improving of response speed.
Key words: concept lattice; software development; software design; software testing; software engineering
1 背景
随着互联网时代的到来,基于人工智能技术的软件在人类社会生产生活中的作用愈发明显。人们依托互联网软件逐渐改变了传统的衣、食、住、行习惯,提高了效率,便利了生活。因而人们对软件的需求越来越多,要求越来越高,导致软件开发设计的难度也越来越高,软件的规模也越来越大,对现有软件后期维护过程中的人、财、物等投入也日益增高。当前的软件工程研发项目已变得非常复杂和庞大,设计开发常常需要庞大的数据库,高速的传输网络、合理的技术和工具、高效合作的团队等。如何研发更加科学高效程序开发技术、数据分析方法等已成为当前计算机领域一项重要研究课题。
2 概念格
2.1 形式背景和形式概念
形式概念理论是1982年由德国达姆科技大学的Wille教授首次提出的。在形式概念理论中,形式背景由数据集中的所有对象、对象的属性及对象与属性之间的关系构成。形式概念理论中,可以用一个由对象集子集和屬性集子集构成的结点来表示一个形式概念,对象集的子集称为形式概念的外延,属性集的子集称为形式概念的内涵。
2.2 概念格
一般概念格是由形式背景中所有形式概念及其之间的偏序关系构成,记作
3 软件工程
软件工程是一门研究如何用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它包括标准、数据库、程序设计语言、软件开发工具、设计模式、系统平台等内容[1]。一直以来,国内外学术界对软件工程缺乏一种统一规范的定义,很多计算机组织机构、专家学者都对软件工程做出了自己认可的定义,但目前公认的定义是:软件工程是人们利用工程的原理、概念、技术、手段开发和维护软件,把经过实践论证的好的管理技术和目前最优的技术手段结合,最经济地设计开发高水平的软件,并低成本、高稳定性地进行后期维护的系统理论方法[2]。
4 概念格在软件工程中的应用
概念格理论和技术经过近四十年的发展,已经具备相对完备的理论基础和技术范畴,概念格通常根据数据对象和共同属性之间的二元关系建立一种较好的概念层次结构,目前概念格是一种科学高效层次化对象分析方法,可以迅速地识别提取具有共同属性一组对象的组合。由于具有形式化表达能力,运用在软件工程领域,具有非常强的理论优势和技术强项;目前,在软件工程开发项目中,经常遇到形式属性与形式对象之间二元实体关系问题,概念格技术能够科学高效地对产生的文档和程序代码进行分析,并构建图形化的概念格,提高软件文档、代码、编码、文本的抽象层次,确保能进行经济高效软件维护,帮助程序开发人员和软件测试人员更好的理解和管理软件。目前,概念格已被广泛运用于软件理解、软件定义、软件开发、软件维护等环节。
4.1 在软件理解的应用研究
软件理解的主要任务是建立实现层到概念层的映射关系,建立低层次和高层次之间的映射集[3]。概念格在软件理解中的应用体现在配置结构发现,测试用例、设计模式识别、面向方面发现等环节。概念格可以把代码属性特征集合成形式背景,进而基于形成的形式背景识别提取出全局和部分之间的核心概念关系,动态分析与静态分析相结合,分析出特定特征数据集之间的关联,这就使得软件理解不再会对程序人员个人研发能力过高的依赖和约束,客观因素也愈发重要,形式化属性不断增强,大大提高了软件理解的效率和准确度。
4.1.1 系统配置结构中
Snelting在分析Unix C源代码系统的配置结构优化和评测问题时,设计出了基于概念格技术分析的NORA/RECS工具[4],实现了程序源代码配置结构之间高内聚和低耦合的优化和评测。在系统配置结构中,以代码为对象,以系统配置表达式为属性,在系统配置工具中构建了概念格,进而可以发现配置之间依赖关系,表现出配置之间的独立、互斥、冲突、共享等关系。
4.1.2 测试用例中
形式属性可作为测试途径,形式对象可作为程序过程,对象可以表达程序实体和程序测试之间的关联关系、概念格的偏序性可以描述过程先后的持续关系。通常采用动态分析软件表现了软件用例和结构之间的联系和关系,该技术将计算单元作形式属性,案例作形式对象,执行特征和感兴趣函数,这种技术主要考虑定位软件中的计算单元。
4.1.3 模式识别设计中
在面向对象程序识别设计模式中也经常用到概念格。一种是利用概念格技术分析发现类的设计模式, 另一种是以形式背景的对象组为形式对象,以形式对象的关系为属性构造概念格,并对概念格进行属性调整和约简,最终产生了新的概念格。
4.2 在软件开发中的应用
随着软件需求的不断提升,现代软件开发也越来越复杂,软件开发过程中使用更高效、科学、合理的分析技术成为当务之急,概念格作为一种新兴的软件分析方法,已广泛运用于软件开发过程中,如需求分析、软件设计等。
4.2.1 需求分析中
需求分析是指通过分析研究相关软件的各自应用环境,发现软件相关应用信息,即软件针对各类需求进行应用分析[5]。概念格分析方法特有的语境、共同属性及概念集在需求分析过程中作用显著。软件工程的各个传统模式对应存在相应的工作集,概念格通过分析对比工作集和共同属性对应关系,可得到特定的项目特征属性集合,进而确保相应软件的需求分析更科学合理.
4.2.2 软件设计中
软件的设计是依据软件需求分析进行,借助合理化的分析方法和工具进行分析设计,得到科学设计方法的过程,软件设计是一种软件的数据结构改革。概念格技术具有表现概念和属性之间的相关性的特点,通过分析所有的项目特征,形成形式背景,即相关的概念集,构建出概念格。概念格技术在软件设计中主要作用是构建软件系统的概念格,因此也形成了很多相对完备稳定的概念格规则算法,人们利用这些算法可以快速发现所有数据集合之间的层次关系,进而有效提升软件设计的效率和质量[6]。
4.2.3 Web中
随着互联网技术的发展,概念格已被广泛运用于语义Web检索、Web服务管理等方面。概念格不仅适用于特定语义Web领域检索,还可以在不限定领域进行检索,甚至可以通过概念格的层次结构特点,进一步演化检索对象的层次结构,优化改进检索结果;科研工作者还基于概念格理论,设计出基于语义Web服务相似度的功能匹配算法,利用这种匹配算法,可以实现一个原型系统,为语义Web服务查找匹配提供了合理解决方案。此外,概念格还被运用到Web服务管理中,通过建立描述Web服务间相互关联的概念格,分析如何对Web服务进行科学管理,并进行概念格增量维护。
4.3 在软件测试中的应用
软件测试是为了提前发现软件潜在錯误,而专门执行程序代码的过程。主要目的是努力在软件正式生产型运行之前,尽最大可能地发现并改正潜在的错误和漏洞,确保软件的可靠性和稳定性。概念格在软件测试中的运用常见于通过概念格工具,根据正确直观的形式背景对多个软件的测试结果构建概念格,最终提供软件质量评价的科学方法[7]。人们可以通过对概念格产生的大量测试结果进行分析,为以后同类软件的设计开发提供经验和参考。
软件通常分为代码和文档,软件测试就是对现有的软件代码和文档的准确性和科学性进行测试。一般要经过文档审核,代码审核、静态分析、单元检测、部件测试、配置项检测和系统检测等环节。程序人员通常通过千行缺陷率来评价某软件的质量高低。人们通常会预先确定聚准缺陷率。然后把所有需要评价的软件列入待选对象集,设置共同属性为个测试阶段千行代码缺陷率,若软件缺陷率大于基准缺陷率,则该软件具备共同属性,若小于基准缺陷率,则该软件不具备该属性.
人们可以根据该属性构建形式背景,进而生成对应的Hasse图,Hasse图越往上层表明软件的质量越高,Hasse图越往底层说明该软件在测试过程中存在的问题越多,根据Hasse图再进行知识发现和概念提取,最终构建出概念格。我们会发现,同一概念集中的对象(软件)缺陷率是相互接近的。在软件测试环节中,当人们特别关注某一阶段的缺陷率时,可以直接根据概念格中实体和属性的关系发现和提取对应的某一概念,概念格的这种技术优势非常适合于当前大规模的软件质量对比和评价,可以有效降低成本,提高效益。
5 概念格在软件工程中的研究趋势
5.1 超大规模、高复杂度软件应用
概念格应发挥好计算机和代数理论优势,更好地运用于超大规模、高复杂度软件。当前概念格在软件理解领域发挥了一定作用,但是开发的软件规模还较小,复杂度相对较低,并且人们对概念格运用仍局限在浅层次、简单化阶段,并没有真正发挥出概念格深层次计算机和代数理论优势。
5.2 软件设计研发、维护、优化重用
充分發挥概念格在类层次再造、组建重构、代码特征定位、模块结构调整、影响分析等方面的技术优势,努力提高软件设计研发、运行维护、优化重用等方面的水平[8]。
5.3 数据分析和响应速度
提高软件系统的数据分析速度和响应速度。目前,概念格常常用于分析处理大规模、复杂度很好的数据库,而现有的概念格构造算法在分析处理“海量”复杂数据时,效率还不高,充分发挥概念格技术优势。设计开发更科学高效概念格构造算法意义重大。
6 结束语
概念格是一种基于某一概念的所有对象、属性及其二元关系构成的一种概念层次结构,是一种有效的知识表示、分析与处理的工具。在软件开发、设计与测试中,使用概念格可以更好表达了软件和概念之间的关系,有效提升软件设计开发的效率和质量。随着互联网发展,软件工程开发必然需要使用新理论、新技术和新方法。如何设计更科学高效的概念格构造算法,更好地适应软件技术发展,将是一个重要而有价值的课题。
参考文献:
[1] 蒋平, 任胜兵, 林娟. 形式概念分析在软件工程中的运用[J]. 计算机技术与发展, 2008(4): 127.
[2] 张海藩. 软件工程[M]. 北京: 人民邮电出版社, 2005: 6-7.
[3] 李晟. 形式概念分析在软件理解中的研究综述[J]. 研究与开发, 2012(5): 14.
[4] Snelting G. Concept Lattices in Software Analysis[M]//Formal
Concept Analysis. Berlin: SpringER, 2005.
[5] 乌弘毅, 黄映辉. 模糊概念格构建的Bordat方法[J]. 计算机技术与发展, 2010(10): 15-21.
[6] 何丹丹. 概念格在软件工程中的应用[J]. 两化融合, 2018(7): 186.
[7] 刘树鹏, 李冠宇. 基于形式概念分析的本体合并方法[J]. 计算机工程与设计, 2011(4): 9-12.
[8] 毕强, 腾广青. 国外形式概念分析与概念格理论应用研究的前沿进展及热点分析[J]. 现代图书情报技术, 2010(11): 21.
【通联编辑:谢媛媛】