毕设选题分析

背景

10月要选题了,六个题目选一个,现在还不确定选哪个,所以先搜查一下准备一些问题联系老师。

最后决定选第二个题目

十月初就要选题了,联系了导师之后,现在可以被选的题目包括:

智能软件的故障定位和自动修复
智能软件的测试用例自动生成和优化
基于覆盖率的智能软件评价方法
基于模糊技术的语法树变异技术研究
基于深度学习的软件漏洞定位和修复
基于不确定性的案例智能选择方法


以上题目中,我先针对一些不清楚的概念做些搜查:

1.1 智能软件

涉及题目包括

  • 智能软件的故障定位和自动修复(1)
  • 智能软件的测试用例自动生成和优化(2)

==智能软件的范围?故障定位现在有很多方法的,自动修复也有很多案例,那么此题(1)可以综合上述理论写综述验证,也可以基于前人理论提出改进方法,还是说提出一套新的理论呢?==

==智能软件的测试用例是否具有特定限制条件还是说这个由我自己选定具有某一方面特征的测试用例来做自动化生成?有没有例子?优化是指提高测试用例的质量,例如覆盖率?==

百度百科对智能软件的定义如下:

智能软件(intelligence software)是指能产生人类智能行为的计算机软件。智能软件不仅可在传统的诺依曼的计算机系统上运行,而且也可在新一代的非诺依曼结构的计算机系统上运行。智能的含义很广,其本质有待进一步探索,因而,对:“智能”难于给出一个完整确切的定义,但一般可作这样的表述:智能是人类大脑的较高级活动,它至少应具备获取和应用知识的能力、思维与推理的能力、问题求解的能力和学习能力。

所以说,这个定位本身包含的范围就比较广,他的功能主要包括三个方面。

①基于知识处理

一个智能软件处理的对象,不仅有数据,而且还有知识。表示、获取、存取和处理知识的能力是智能软件与传统软件的主要区别之一。因此,一个智能软件也是一个基于知识处 理的 软件 ,它需要如下设施:知识表示语言;知识组织工具;建立、维护与查询知识库的方法与环境;支持现存知识的重用。

②基于问题求解

一个智能软件往往采用人工智能的问题求解模式来获得结果。它与传统的软件所采用的求解模式相比,有 3 个明显特征,即其问题求解算法往往是非确定型的或称启发式的;其问题求解在很大程度上依赖知识;智能软件的问题往往具有指数型的计算复杂性。智能软件通常采用的问题求解方法大致分为搜索、推理和规划3类。

③基于现场感应

智能软件与传统软件的又一个重要区别在于:智能软件具有现场感应(环境适应)的能力。所谓现场感应指它可能与所处的现实世界的抽象——现场——进行交往,并适应这种现场。这种交往包括感知、学习、推理、判断并做出相应的动作。这也就是通常人们所说的自组织性与自适应性。

可以看出,智能软件是一个相对的概念,他强调与传统软件的区别,所以在划分一个软件是否为智能软件的时候,可以观察以上三个方面的功能是否符合智能软件的特点。具体一点可以表现为运用人工智能(特别是深度学习技术)、自然语言处理、数据挖掘、程序分析等前沿技术,基于现代软件工程产生的大数据,解决大数据和云计算时代面临问题的软件

智能软件的分类划分:

按功能划分,现有的智能软件大致有以下6种类型。

①智能操作系统

也称基于知识操作系统。是支持计算机特别是新一代计算机的一类新一代操作系统。它负责管理上述计算机的资源,向用户提供友善接口,并有效地控制基于知识处理和并行处理的程序的运行。因此,它是实现上述计算机并付诸应用的关键技术之一。

智能操作系统将通过集成操作系统和人工智能与认知科学而进行研究。其主要研究内容有:操作系统结构;智能化资源调度;智能化人机接口;支持分布并行处理机制;支持知识处理机制;支持多介质处理机制。

②人工智能程序设计语言系统

为了开展人工智能和认知科学的研究,要求有一种程序设计语言,它允许在存储器中储存并处理一些复杂的、无规则的、经常变化的和无法预测的结构,这种语言即后来被称为的人工智能程序设计语言。人工智能程序设计语言及其相应的编译程序解释程序)所组成的人工智能程序设计语言系统,将有效地支持智能软件的编写与开发。与传统程序设计支持数据处理采用的固定式算法所具有的明确计算步骤和精确求解知识相比,人工智能程序设计语言的特点是 :支持符号处理 , 采用启发式搜索,包括不确定的计算步骤和不确定的求解知识。实用的人工智能程序设计语言包括函数式语言(如Lisp),逻辑式语言(如Prolog)和知识工程语言(Ops5),其中最广泛采用的是Lisp和Prolog及其变形。

Lisp语言适合于符号处理,它处理的唯一对象是符号表达式(又称S-表达式)。所有的程序与数据均由S-表达式构成,采用的主要控制结构是递归。Prolog语言以一阶谓词演算为其理论基础。它的数据结构是项,所有的程序和数据均由项组成,也采用递归为其主要控制结构。此外,Prolog能自动实现模式匹配和回溯。

③智能软件工程支撑环境

又称基于知识的软件工程辅助系统。它利 用与软件 工程领 域密切相关的大 量专门知识,对一些困难、复杂的软件开发与维护活动提供具有软件工程专家水平的意见和建议。智能软件工程支撑环境具有如下主要功能:支持软件系统的整个生命周期;支持软件产品生产的各项活动;作为软件工程代理;作为公共的环境知识库和信息库设施;从不同项目中总结和学习其中经验教训,并把它应用于其后的各项软件生产活动。

智能人机接口软件

指能使计算机向用户提供更友善的自适应好的人机交往软件。在智能接口硬件的支持下,智能人机接口软件大致包含以下功能:采用自然语言进行人机直接对话;允许声、文、图形及图像能多介质进行人机交往;自适应不同用户类型;自适应用户的不同需求;自适应不同计算机系统的支持。

⑤智能专家系统

专家系统是一类在有限但困难的现实世界领域帮助人类专家进行问题求解的计算机软件,其中具有智能的专家系统称为 智 能专家系统 。 它有如下基本特征:不仅在基于计算的任务,如数值计算或信息检索方面提供帮助,而且也可在要求推理的任务方面提供帮助。这种领域必须是人类专家才能解决问题的领域;其推理是在人类专家的推理之后模型化的;不仅有处理领域的表示,而且也保持自身的表示、内部结构和功能的表示;采用有限的自然语言交往的接口使得人类专家可直接使用;具有学习功能。

⑥智能应用软件

指利用人工智能技术或知识工程技术于某个应用领域而开发的应用软件。显然,随着人工智能或知识工程的进展,这类软件也不断增加。已有许多智能应用软件付诸实用,其中有的已成为商品软件,它是人工智能的主要进展之一。

1.2 智能软件评价方法

涉及的题目:

  • 基于覆盖率的智能软件评价方法

​ 理解这个概念的关键在于“智能”修饰词的含义,可以按照上文对智能软件的理解,对这个概念加以引申——运用人工智能(特别是深度学习技术)、自然语言处理、数据挖掘、程序分析等前沿技术,基于现代软件工程产生的大数据对大数据和云计算时代下软件进行评价的一类智能方法

==基础是覆盖率理论,如何将智能引入,定义出一个综合性强的评价系统?然后此题需要结合实际的例子给出评价方法的应用案例吗?==

1.3 模糊技术 & 语法树变异技术

涉及的题目:

  • 基于模糊技术的语法树变异技术研究

那么,模糊技术的百度百科定义:

电脑只能处理依据的传统数学方法,而不能处理非量化的模糊信息,是因为电脑依据的传统数学方法,无法描述事物的模糊概念。

==根据这个题目,明显感受到它是有具体应用场景的,语法树变异技术?这个词语解决的是什么样一个问题?==

不是很了解该题目场景,对该题目兴趣不大。

1.4 漏洞定位和修复

涉及题目:

  • 基于深度学习的软件漏洞定位和修复

此题比较容易理解,但是没有计算力,研究起来应该较困难。

==修复应该视具体情况选择人工或者自动或者二者结合?==

故障:

![image-20210925142400275](/Users/wangpei/Library/Application Support/typora-user-images/image-20210925142400275.png)

1.5 不确定性

涉及题目:

  • 基于不确定性的案例智能选择方法

不确定性(Uncertainty)是一个出现在哲学、统计学、经济学、金融学、保险学、心理学、社会学的概念。 不确定性就是指事先不能准确知道某个事件或某种决策的结果。 或者说,只要事件或决策的可能结果不止一种,就会产生不确定性。

==本题应该也是具有应用场景的。案例指的是什么?案例智能选择的目的是什么?如何利用不确定行进行选择?==

2.1 问题梳理

题目 问题 想选程度
智能软件的故障定位和自动修复 智能软件的范围?故障定位现在有很多方法的,自动修复
也有很多案例,那么此题是综合上述理论写综述验证
,或者基于前人理论提出改进方法,还是说提出一套新的理论呢?
🌟🌟🌟
智能软件的测试用例自动生成和优化 智能软件的测试用例是否具有特定限制条件还是说这个由我自己选定
具有某一方面特征的测试用例来做自动化生成?有没有例子?
优化是指提高测试用例的质量,例如base覆盖率的指标来评价?
🌟🌟🌟
基于覆盖率的智能软件评价方法 基础是覆盖率理论,如何将智能引入,定义出一个综合性强的评价系统?
然后此题需要结合实际的例子给出评价方法的应用案例吗?
🌟🌟🌟
基于模糊技术的语法树变异技术研究 根据这个题目,明显感受到它是有具体应用场景的,语法树变异技术?
这个词语解决的是什么样一个问题?
🌟
基于深度学习的软件漏洞定位和修复 修复应该视具体情况选择人工或者自动或者二者结合? 🌟🌟
基于不确定性的案例智能选择方法 本题应该也是具有应用场景的。案例指的是什么?案例智能选择的
目的是什么?如何利用不确定行进行选择?
🌟

3 神经元的覆盖率 针对智能软件的覆盖率重新定义 稳定的指标 推荐系统的?

2 鲁棒性, 有点偏差 结果得稳定 / 蜕变测试 输入输出满足关系 => 测试的结果. 测试用例加入变化 生成 优化:重复工作了 减数据 单个覆盖率

1 频谱 启发式修复:变异 改变一个 测试用例通过?

1、可疑度 频谱?需要再去搜查一下。修复是启发式的,比方是改一个权重,去掉一个,打一个表,再跑一次用例,是否成功,成功了则代表找到了该条修复路径

2、例如测试智能软件的鲁棒性,有些偏差的时候,结果得保持稳定,那么生成带点偏差的测试用;或者测试软件的正确性?(没听清)输入和输出要满足一定的逻辑关系,用这种蜕变测试的方法来生成测试用例,验证软件的功能正确性。优化方法:减少宏观数据量(激发的神经元数量一致),例如提高单个数据的覆盖率指标。

3、神经元覆盖率,一种针对智能软件的特定指标 和该指标系统的使用方式,啥时候表示稳定,啥时候表示会出问题?