Roundtable: Research Opportunities and Challenges for Emerging Software Systems
Journal of Computer Science amp; Technology
Abstract For this special section on software systems, several research leaders in software systems, as guest editors for this special section, discuss important issues that will shape this fieldrsquo;s future directions. The essays included in this roundtable article cover research opportunities and challenges for emerging software systems such as data processing programs (Xiangyu Zhang) and online services (Dongmei Zhang), with new directions of technologies such as unifications in software testing(Yves Le Traon), data-driven and evidence-based software engineering (Qing Wang), and dynamic analysis of multiple traces(Lu Zhang). — Tao Xie, Leading Editor of Special Section on Software System.
Keywords data processing program, software analytics, online service, software testing, data-driven software engineering, evidence-based software engineering
1 Engineering Stable Data Processing Programs (Xiangyu Zhang)
In this Big Data era, data processing is becoming one of the most prevalent computing tasks. In the mean time, errors pose a serious threat to output validity for modern data processing, which is often performed by computer programs. Raw inputs may be acquired by physical instruments that have precision limitations,leading to input errors. Parameters used in data processing may be provided by human scientists based on their experience, leading to uncertainty. Data may not be precisely represented due to the limited precision of the machine used, leading to representation errors.Once these errors get into computation, they may get propagated and magnified by the operations conducted,producing unreliable output. It is called the instability problem. Instability problems have substantial impact in various aspects. For instance, it could lead to bogus scientific findings that are costly down the road, inaccurate long-term weather forecast resulting in substantial lost, and inaccurate perception of battle field situation causing casualties. Traditionally, error analysis is conducted on mathematical models. However, modern data processing uses more complex models and relies on computers and programs, rendering mathematical analysis difficult. As such, developing stable data processing programs is becoming a prominent challenge for software engineers and software engineering researchers.
Instability problems have unique characteristics,compared to the traditional functional bugs. They cannot be completely evaded as such problems are usually rooted at the underlying data processing algorithms or even the requirements. Using higher precision in computing or changing implementation may mitigate the problems, but cannot completely evade them. Instabilities are highly input dependent. They only occur at specific input ranges which are usually very very small,despite that the consequence of such problems may be devastating. In practice, people are willing to live with these unstable problems and the entailed risks.Some recent study has shown that even the widely used data processing programs in the SPEC-FP benchmark set have instability problems while people still feel comfortable using those programs due to the low probabilities of the instability problems.
In order to help engineers to build stable data processing programs, I foresee that our research community needs to address the following challenges.
bull; Develop cost-effective runtime predictors that can effectively predict if a specific execution is stable. In most cases, the predictor will report no instability has occurred and the outcome can be trusted. In the very rare scenarios where instability does occur, the predictor shall be able to report the output variations in the presence of errors.
bull; Develop testing tools that can identify the input ranges in which instabilities occurs. This would help users/developers to avoid such ranges or use a higher precision for such inputs.
bull; Develop techniques that can statically choose the right precision for a given data processing problem or use compiler to inject support for multiple precisions in the program such that the selection of the right decision can be performed at runtime.
bull; Develop verification techniques that prove small numerical functions are free from instability.
Errors in computing could cause severe problems in scientific discovery, economy, society, and military operations. However, people are lacking effective and effcient automated tools to help them address these problems. More importantly, due to the nature of these problems, I foresee many of them can be addressed by building upon existing software engineering techniques such as program analysis, testing, and verification.
2 Software Analytics for Online Services(Dongmei Zhang)
Software services are now widely available impacting various aspects of peoplersquo;s lives. Due to the enormous user base and highly frequent use, a huge wealth
of different types of data are generated at every moment throughout the lifecycle of these services. Hidden in the data is information about the service quality, user experience, as well as the development dynamics. With various analytical and computing technologies, such as machine learning, data mining, information visualization, program analysis, and large-scale data computing, Software Analytics enables software practitioners to perform effective and effcient data exploration and analysis, in order to obtain insightful and actionable information for data-driven tasks in engineering online services.
Data sources are vital to ensuring service quality and user experience. Service monitoring systems usually collect huge amount of runtime data including system states and
剩余内容已隐藏,支付完成后下载完整资料
圆桌会议:对新兴软件遇到的机会和挑战的研究
计算机科学技术学报(英文版)
摘要 在软件系统领域中的一些研究领导者 (如在这个特殊领域的特邀编辑),对于软件系统中的这一特殊部分,讨论了将影响这一领域未来方向的重要问题。这篇文章主要讲述对新兴软件遇到的机会和挑战的研究状况,例如数据处理程序(张翔宇)、在线服务(张冬梅)、在软件测试方面的统一这类新的技术方向(Yves Le Traon)、数据驱动的和以证据为基础的软件工程(王清)以及多轨迹动态分析(张路)。谢涛担任软件系统中特殊部分的主编。
关键词 数据处理程序 软件分析 在线服务 软件测试 数据驱动的软件工程 以证据为基础的软件工程
- 稳定的工程类数据处理程序(张翔宇)
在这个大数据处理时代,数据处理已经成为了一个最普遍的计算任务。与此同时,由于现代数据处理过程中通常是计算机进行有效输出,错误则会造成严重的威胁。原始输入可能被物理仪器精度所限制,导致输入错误。在数据处理中使用的参数可能是由人类科学家根据他们的经验所给出,会导致不确定性。数据可能由于机器的精度有限而不能准确表示,导致表示错误。一旦这些错误进入计算过程之中,它们可能在各类操作中进行传播并被放大,而产生不可靠的输出结果。这些合称为不稳定性的问题。不稳定的问题已经在各方面产生重大影响。例如,它可能会导致虚假的科学发现,而且这段不正确的科学发现的研究经费是昂贵的;也会导致不准确的长期天气预报造成大量损失;还会导致由于不准确的战场感知情况而造成人员伤亡。在传统技术上,通常使用在数学模型上进行误差分析的方式。然而,现代数据处理使用更为复杂的模型并依赖计算机和程序,使得数学分析变得困难。因此,开发稳定的数据处理程序正在成为一个软件工程师和研究人员面临的巨大挑战。
与传统的功能性错误相比不稳定问题更具有独特的特点。它们无法完全被回避,因为这些问题通常扎根于底层的数据处理算法甚至是在数据请求之中。使用更高的精度计算或改变实现方式可能减轻这些问题,但无法做到完全避免。不稳定性是高度依赖于输入的。这些只会发生在一些特定的输入范围中(这种输入范围会非常非常小),尽管这样,这些问题所产生的后果却是毁灭性的。在实践中,人们却愿意接受这些不稳定问题所带来的风险。最近的一些研究表明,即使在SPEC-FP基准设定中广泛使用的数据处理程序有一些不稳定的问题,但人们仍然在使用时感到舒适,这是因为产生不稳定的概率较低。
为了帮助工程师构建稳定的数据处理程序,我预见了我们的研究团队需要面对以下挑战。
·开发一个划算的运行时间预报器,能够在稳定的特定执行情况下有效预测运行时间。大部分情况下,如果预测报告没有检测到不稳定发生,那么结果被认定为可信。在极其罕见的不稳定情况下,预报器能够发出输出存在的错误的报告。
·开发测试工具,此工具可以自动识别将发生不稳定的输入范围。这将有助于用户/开发人员避免这样的范围,或对于在这个范围内的输入使用一个更高的精度。
·开发一个新技术,此技术可以静态地选择一个给定的数据处理问题的正确精度或使用编译器程序给以多种精度的支持,这样可以在运行时提供正确的选择和决定。
·开发验证技术,证明小数值函数可以摆脱不稳定。
在科学发现、经济、社会以及军事行动中,计算的错误会导致严重的问题。然而,人们缺乏有效和适当的自动化工具来帮助他们解决这些问题。更重要的是,由于这些问题的本质原因,我预见到他们中的许多人可以通过建立在现有的软件工程技术上(如程序分析技术、测试和验证技术),能够解决这类问题。
- 关于在线服务的软件分析学(张冬梅)
现在广泛使用的各种软件服务影响着人们的生活的各个方面。由于巨大的用户群和高度频繁的使用,在这些服务的整个生命周期每一时刻产生不同类型的数据是一笔巨大的财富。这些财富隐藏在数据信息服务质量、用户体验,以及发展动态下。随着各种分析和计算技术的产生,如机器学习、数据挖掘、信息可视化、程序分析和大规模数据计算,软件分析使软件从业者进行有效和高效的数据探索和分析,从而获得有见地、可在工程中操作的在线服务数据驱动任务的信息。
为了确保服务质量和用户体验,数据来源非常重要。服务监控系统通常收集包括了系统状态和服务日志等大量运行时数据。用户请求和用户如何使用各项服务的数据将会被记录。此外,部署和配置信息以及服务事件也会被记录下来。从用户角度来看,客户资料及其支持的历史伴随着电子商务的数据进一步丰富了数据源。在线服务的公共数据来源在表1中做出了总结。
表1. 在线服务中常用的数据源
种类 |
数据来源 |
系统运行时间 |
性能计数器,事件日志,网络日志,服务组件日志 |
用法 |
用户请求,用户交互日志 |
部署 |
网络拓扑结构、服务拓扑中,服务配置 |
客户 |
租户资料、用户资料、客户支持 |
贸易 |
签约信息 |
一般情况下,两种类型的数据分析管道,实时和离线,虽然目的不同,但是都建立了服务的服务质量管理体系。今后的挑战往往是建立在这种分析与观察功能之下。
- 服务监督主要依赖于主动监控,往往限制了覆盖范围;
- 大量从真实的用户获取的遥测数据没有得到充分利用;
- 主要是利用手工检测;
- 有关服务,诊断,过去的事件等知识是分散的,没有良好的组织和积累;
- 客户支持并没有很好的连接到服务质量管理,导致不满意的客户体验和高成本的支持;
- 用户和用户行为的认识是有限的,这反过来又限制了服务质量、客户体验和对商业成功的贡献。
需要建立牢固的两大支柱来应对上述挑战。一个是集成,另一个是情报。
集成支柱是指在一个精心设计的基础设施中存储不同的数据源,以此达到简单和易于控制的访问以及高效的计算。更重要的是,数据源应该适当与启用深度和到跨源分析相关联。统一仪表,一致的模式,以及数据模型应当在不同的服务中被分别使用来减少数据收集、访问和分析中的摩擦。
情报支柱是指在数据源上进行了丰富而深刻的分析。此外,知识库也应建立和发展,以打破专家的瓶颈,加快数据的洞察过程。
基于质量管理的不同服务的情况下,一组常用的分析问题方式可以被分为三种:异常检测、定位和诊断问题,问题分类。对于每一类的问题,都可以开发和应用不同的数据分析技术。
异常检测能够检测数据正常行为模型中不符合此模型的那些数据模型。它是在服务监控中十分需要被检测的意外行为,如,关键绩效指标的突然变化,还有很少见到的使用模式。
鉴于服务问题的症状和一组服务监控数据,问题定位有助于服务问题范围的缩小,例如:服务器节点,服务组件,和某些日志模式。问题诊断提供有用的信息以确定底层服务的根源问题。这些技术在事件管理方面对于减少MTTR(平均恢复时间)非常重要,而且在对问题进行根源分析的方面能做更有效的管理。
对于质量管理的在线服务方面,许多遥测信号反映出相同或相似的服务问题是很常见的。为了正确理解和优先考虑实际的服务问题,需要在实践中使用问题分类技术正确的对服务问题进行分组。报告和优先级分类不仅提供了一个基础,也有助于诊断工作的可控性。它使产品团队回答这样的问题“有多少服务问题被发现”和“多少问题还没有被解决”。
近年来,有越来越多的关于在线服务的数据驱动和质量管理的研究被发表,包括数据分析技术以及被应用于经验报告中的这些技术在现实实践中的表现。在不远的将来,软件分析在线服务将继续是软件工程的一个重要焦点研究和技术转让。
3.统一软件测试(Yves Le Traon)
从根本上说,软件测试是检测软件产品中包含的最大的缺陷的工作。尽管该领域的历史数据表明软件测试是一个持续的战斗, 但是它也显示,自早期的计算机科学以来大量的知识已经被积累了下来。当今我们感兴趣的问题是:我们有充分受益于这些知识来构建更便宜,更安全、更好的软件吗?
作为一个通用的研究领域,软件测试似乎注定是多种选择和被约束测试的科目。的确,软件测试方向可能被软件的性质和复杂性影响,从嵌入式或移动端到云软件,从桌面或集中式web或分布式软件。软件测试在软件生命周期中的不同阶段也有不同的应用,涉及到的技术的发展,设计设置和编程语言。考虑这些变化的目标,在过去三十年里已经产生了很显著的成就,例如,测试覆盖率和充分性的定义和应用标准,自动测试生成和执行环境,基于代码的测试生成(例如:混合执行方法),基于模型的测试(MBT),测试技术资格的变化和许多相关的成就。在其他领域的计算机科学和工程、软件测试的研究特别是相关联和相互依存的行业,一些公司和他们的开发人员有了软件测试的主要成就。不幸的是, 通过观察,由于所有这些积极评价因为关于甲骨文的问题没有明确的进展,绝大多数的贡献局限于功能测试、确定结果是否正确并修复故障检测的连续性这一严重问题所抵消。
展望一个新的技术挑战,很难预见这个新技术会实现,因此这可能在一定程度上修改软件测试的方式。在许多国家,我提到过Bluk,这是一个分析工具也是一个推荐系统,新的非ACID数据库的出现,极大规模分布式系统(物联网,网络物理系统),“云”软件,非物质化和动态迁移变得更加通用,越来越多的动荡市场的发展随着时间对市场对垃圾进行服务和软件的加速。下一年通过迫使进化测试流程、测试技术规模和适应快速验证、或者削弱正确性的概念来处理不确定性和近似这些方面将会是压倒性的,连基本的概念,如缺陷/故障/错误可能完全由于与这些新的视角而被重新定义。将不会有休息的测试团队出现,而是都会在一个巨大的领域继续进行探索,因此会出现许多可以从新不可预见的错误中学习到的经验教训。
4. 数据驱动和以证据为基础的软件工程(王清)
如今,软件系统的开发和应用的范围日益广泛。有各种新兴类型的软件系统产生,如社交软件服务系统和软件生态系统。另一方面,开放和自主软件环境已经改变了软件开发方法和过程。这些最近的趋势,主要有三个重要的挑战需要研究者和实践者解决。
- 如何处理、理解和利用软件开发过程中产生的数据? 有许多数据,例如软件文档,流程管理数据,用户的反馈和评论,bug报告,问题和特性请求。这些数据存在一段时间但大多数这些数据没有被利用。特别是在开放的开发环境, 海量数据是由各个利益相关者自愿与不同的质量水平提供。为了协助生产力和质量改进,从这些数据中找到有价值的信息是十分重要的。
- 如何管理软件的质量? 基于合同的传统软件项目管理日益取代了以社区为基础的项目管理,比如为开源项目管理和众包。大多数项目的开发人员和测试人员加入该项目基于他们的兴趣和意愿,愿意无限制的贡献他们的时间和精力。此外,大量用户反馈他们的感受和喜好。管理软件的质量已经越来越有挑战性,如收集、阐述,形式化软件质量的证据。
- 如何刺激软件社区的集体智慧? 在日益开放的自主软件社区,合作和竞争共存。在某种程度上,数据和知识的群体智慧应该被集体激发。培养和鼓励积极的集体智慧去建设一个活跃的、兴旺的、健康的社区并让软件有效且高效发展是非常重要的。
5.多轨迹动态分析(张路)
传统上,动态分析技术重点分析一个单一的执行轨迹获得各种属性的执行轨迹。因为一个单一的执行轨迹可能在分析中不够演示软件的一些重要性质, 在软件工程中已经有越来越多的关于分析多个执行轨迹的需求。现有两种范例用于分析多个轨迹。
bull;批量分析。在这一范例中,分析器首先面临着一系列的轨迹。分析器的目标是在每个轨迹的分析基础上总结或整合出特定的属性。一个典型的例子是动态的规范矿业。
bull;一个一个的分析。在这一范例中,分析器开始于一个单一的轨迹。基于该轨迹分析,分析器应该分析确定哪些轨迹(通常通过确定输入生成下一个轨迹)。一个典型的例子是动态符号执行。
动态分析的多个轨迹通常需要结合程序分析和智能数据处理(如:数据挖掘和人工智能)。在第一个范例中,总结过程主要依赖于一些智能挖掘技术。在第二个范例中,确定下一个跟踪分析实际上是一个决策过程。
显然,如何结合这两种类型的技术是很重要的。在现有的研究中,常用于使用粗糙类型组合。也就是说,使用程序分析和智能数据处理作为不同的途径是典型的做法,尽管会有若干次的迭代,所有内容都会被传递。
基于搜索的动态分析是一个能够结合两种技术的有趣的新方法, 采用基于搜索优化智能数据处理技术和组合框架。使用元启发式搜索技术,在分析下的软件执行可以被看作搜索过程中的一个完整的步骤。这种组合方式是更好的,因为这里的智能数据处理不再是通过独立于分析轨迹的传递。下面我列举两个例子,每个属于一个范例: 第一个研究使用搜索优化推断出一种特殊的规范(即:变质的关系);而第二个研究使用基于搜索
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[146393],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。