Towards a Generic Software Architecture for IoT Systems
本文针对物联网系统复杂性带来的软件开发挑战,提出一种质量属性驱动的通用软件架构,融合边缘计算、微服务和事件驱动设计模式,将物联网视为需闭环控制的自治系统以实现稳健运行。
2024-11-16 cs.SE
Understanding the Context of IoT Software Systems in DevOps
对连接设备的需求不断增长,以及物联网(IoT)领域投资的增加,导致了该技术市场的增长。物联网渗透到个人生活的各个领域,从智能手表到整个家庭助理和不同领域的解决方案。物联网的概念正在全球范围内逐渐增加。物联网项目引发了软件工程研究的衔接,以准备在与嵌入式软件互连并托管在云中的物理对象和结构中实现的软件系统的开发和操作。物联网项目在开发和运营阶段之间有界限。这项研究在科学文献中寻找证据,通过开发和运营(DevOps)原则来支持这些边界。我们依靠系统性文献综述来研究物联网软件系统中DevOps的关系。因此,我们在文献中先前主要研究报告的知识背景下确定概念,描述受益和挑战。本文的主要贡献是:(i)讨论物联网软件系统中DevOps的好处和挑战,(ii)识别所使用的工具,概念和程序设计语言,以及(iii)这种软件开发的感知管道。
2021-05-11 cs.SE
IoT Roadmap: Support for Internet of Things Software Systems Engineering
路线图是在博士学位的背景下进行的。在里约热内卢联邦大学系统工程和计算项目实验软件工程小组(COPPE/UFRJ)和法国高等理工大学工业和人类自动化控制、机械工程和计算机科学实验室(LAMIH UMR CNRS 8201)的合作下,该研究项目已于2011年12月12日在巴黎大学完成。路线图是对物联网应用特殊性的调查结果。它是从不同实验研究中收集的概念和证据的具体组织。它支持物联网软件系统的定义,并为项目团队提供特定项目来讨论和定义与指定、设计和实施物联网应用程序相关的基本方面。
2021-07-12 cs.SE
The IoT energy challenge: A software perspective
物联网(IoT)开启了嵌入式应用的全新世界。这些应用中的大多数都是基于深度嵌入式系统,这些系统必须在有限或不可靠的能源上运行,例如电池或能量采集器。满足这些应用的能源需求是一项艰巨的挑战,这威胁着物联网的未来发展。软件拥有对硬件的最终控制权。因此,它在优化系统能耗方面的作用非常重要。目前,程序员没有关于他们的软件如何影响系统能耗的反馈。这种反馈可以通过能量透明来实现,这是一个使程序的能量消耗可见的概念,从硬件到软件。本文讨论了软件开发中对能源透明度的需求,并强调了如何实现这种透明度以帮助应对物联网能源挑战。
2017-06-27 cs.SE
Quantum Neural Network Software Testing, Analysis, and Code Optimization for Advanced IoT Systems: Design, Implementation, and Visualization
本文提出面向先进物联网QNN软件的运行时TACO方法,通过TensorBoard可视化贫瘠高原以支持实时测试、结构修改与高精度系统实现。
2024-01-12 cs.SE
Best Practices for Facing the Security Challenges of Internet of Things Devices Focusing on Software Development Life Cycle
本研究针对物联网设备日益增长的安全威胁,提出了聚焦于安全软件开发生命周期的最佳实践指南,旨在提高威胁意识并为保护物联网软件及处理漏洞提供坚实基础。
2024-02-12 cs.SE
SCENARIOTCHECK: A Checklist-based Reading Technique for the Verification of IoT Scenarios
物联网上的软件系统已经将世界带入了一场新的工业革命,带来了新的功能和关注点,例如自主性,持续的设备连接以及系统,用户和事物之间的交互。然而,由于其特定的功能,构建这些类型的系统仍然是一个有问题的活动。经验研究表明,缺乏技术来支持物联网软件系统的构建,其中应该创建不同的软件工件以确保其质量。因此,软件检查已经成为一种替代的基于证据的方法,以支持在软件开发周期中产生的工件的质量保证。然而,没有适用于物联网软件系统的检查技术的知识。因此,本研究提出了SCENARIOTSTUDIO,这是一种用于物联网场景验证的基于检查表的读取技术。通过实验研究对该清单进行了评价。这项研究表明,该技术在成本效益、效率和物联网软件系统开发效率方面具有良好的效果。
2021-07-28 cs.SE
Digital Sovereignty and Software Engineering for the IoT-laden, AI/ML-driven Era
今天的软件工程已经需要应对来自实现物联网产品所需的多学科性的挑战:许多变体由传感器/执行器驱动的系统组成,这些系统今天已经使用AI/ML系统来更好地应对其预期操作设计域(ODD)的非结构化,而与此同时,这些系统需要被监控,诊断,维护,并使用云驱动的仪表板和数据分析管道进行发展,这些管道最好是实时处理、聚合和分析无数数据点。本立场书从软件工程的角度讨论了物联网、人工智能/ML驱动时代与数字主权相关的选定方面:虽然我们可以理所当然地期望从这些解决方案中获得越来越多的好处,但应特别明确说明设计和运行时的挑战和责任,至少要为以下方面做好准备和实现,甚至更好,从软件工程的角度维护和扩展数字主权。
2022-05-27 cs.SE
Software Engineering for Internet of Things: The Practitioner's Perspective
基于物联网的系统(简称IoT系统)在不同的工业领域越来越受欢迎,并且它们的发展正在迅速增加,以向最终用户和公民提供增值服务。到目前为止,很少有研究揭示物联网系统所需的核心开发过程生命周期,因此软件工程师发现自己对这种新的系统开发类型没有准备,也不熟悉。为了弥补这一差距,我们进行了一项定量和定性相结合的研究,从现有的物联网文献中得出了一个概念性的过程框架,确定了27项关键任务,可纳入物联网系统的开发过程。该框架随后通过对来自6大洲35个国家的127名物联网系统从业者开发人员的调查进行了验证,他们具有15种不同的行业背景。我们的研究提供了对最重要的开发过程任务的理解,并告知软件工程从业者和研究人员与下一代物联网系统开发相关的挑战和建议。
2021-05-05 cs.SE
Self-Organizing Software Models for the Internet of Things
物联网(IoT)设想将物理对象集成到软件系统中,以自动化我们生活的关键方面,例如医疗保健,安全,农业和城市管理。虽然愿景很有希望,但随着硬件和通信技术的快速发展,物联网系统变得越来越动态,大型和复杂,以至于手动管理变得不可行。因此,为构建自主物联网系统提供软件工程基础至关重要。在本文中,我们介绍了一种称为自组织软件模型的新范式,其中物联网软件系统没有显式编程,而是在系统运行期间以分散的方式出现,只有最少或没有人为干预。我们特别介绍了这些模型的概述,包括它们的定义,动机,研究挑战和潜在的方向。
2021-02-25 cs.SE
Designing Privacy-aware Internet of Things Applications
物联网(IoT)应用程序通常收集和分析可用于获取有关个人的敏感信息的个人数据。然而,到目前为止,在设计物联网应用程序时,软件工程过程中尚未明确考虑隐私问题。行为驱动的安全机制的出现,未能解决物联网应用程序设计中的隐私问题,可能会产生安全影响。在本文中,我们将探讨作为一组指导方针制定的隐私设计(PbD)框架如何帮助软件工程师将数据隐私考虑因素集成到物联网应用程序的设计中。我们通过研究软件工程师如何使用它来设计物联网应用程序来研究这个PbD框架的实用性。我们还探讨了使用这套指导方针来影响物联网应用程序设计过程的挑战。除了强调PbD框架在物联网应用程序设计过程中明确隐私功能的好处外,我们的研究还提出了与该方法相关的一些挑战。我们研究的一个关键发现是,PbD框架显著提高了新手和专家软件工程师将隐私设计到物联网应用程序中的能力。
2019-04-11 cs.SE
Reflecting on Recurring Failures in IoT Development
随着物联网系统被赋予更多的责任和自主权,它们提供了更大的好处,但也带来了更大的风险。我们相信这种趋势会重新提出软件工程的一个老挑战:如何在市场压力下安全可靠地开发高风险的软件密集型系统?作为第一步,我们对最近的物联网故障进行了系统分析,以确定工程挑战。我们收集并分析了22篇新闻报道,研究了物联网系统故障的来源、影响和修复策略。我们观察了应用程序域内部和跨应用程序域的故障趋势。我们还观察到,失败主题随着时间的推移而持续存在。为了缓解这些趋势,我们概述了针对物联网开发的故障感知软件开发生存周期的研究议程。我们提出了一个百科全书的故障和经验的基础上,系统事后分析,辅以适当的自动化工具。
2022-09-19 cs.SE
State of the Software Development Life-Cycle for the Internet-of-Things
考虑到软件的成功率,它与危机状态有着长期的联系。互联网连接设备的爆炸式增长,物联网,增加了软件系统的复杂性。这些系统的特点,如大规模和异质性,提出了越来越多的新的挑战。在本文中,我们首先简要介绍了物联网范式和软件开发的现状。然后,我们深入研究了为物联网系统和系统的系统开发软件的特殊性,概述了当前用于设计,开发和测试此类系统的方法和工具。对研究结果进行了讨论,揭示了开放问题和研究方向,并揭示了当今物联网软件开发实践仍然落后于当前的最佳实践。
2018-11-09 cs.SE
Assessing the Linguistic Quality of REST APIs for IoT Applications
物联网(IoT)是一种不断发展的技术,它依赖于连接的“事物”,这些“事物”从对等设备收集数据并通过API(应用程序编程接口)将数据发送到服务器。这些API的设计质量直接影响其可理解性和可重用性。本研究重点关注面向物联网应用的REST API的语言设计质量,并通过检测面向物联网应用的REST API中的语言模式和反模式来评估其语言质量。语言反模式被认为是命名、记录和选择标识符方面的糟糕实践。相比之下,语言模式代表了API设计的最佳实践。因此,语言模式及其对应的反模式是对立的对。我们提出了SARAv 2(REST API第二版的语义分析)方法来执行IoT应用程序的REST API的语法和语义分析。基于SARAv 2方法,我们开发了REST-Ling工具,并对9个语言反模式的检测结果进行了实证验证。我们分析了物联网应用程序的19个REST API。我们的检测结果表明,语言反模式是普遍存在的,REST-Ling工具可以检测到用于物联网应用的REST API中的语言模式和反模式,平均准确率超过80%。此外,该工具平均以秒的量级执行语言反模式的检测,即,8.396秒。我们发现,API通常遵循良好的语言实践,尽管存在普遍的不良实践。
2022-05-13 cs.SE
Do users talk about the software in my product? Analyzing user reviews on IoT products
消费者产品评论是一个宝贵的数据来源,因为它们包含了广泛的信息,可以帮助需求工程师满足用户的需求。最近的研究表明,关于软件应用程序的推文和App Store上的评论包含有用的信息,这些信息可以更好地响应软件需求。然而,所有这些研究的主题仅仅是软件应用程序。有关系统软件(如嵌入式软件、操作系统和固件)的信息被忽略,除非对使用这些软件的产品进行审查。调查这些评论的挑战可能来自以下事实:存在大量可用数据,以及此类产品的评论性质多样,这意味着它们可能包含主要关于硬件组件或广泛关于整个产品的信息。受这些观察的启发,我们使用来自6个物联网(IoT)产品的7198个评论句子的数据集进行了探索性研究。我们的定性分析表明,足够数量的软件相关的信息存在于这些审查。此外,我们研究了两种监督机器学习技术(支持向量机和卷积神经网络)的性能分类的信息中包含的评论。我们的研究结果表明,在一定的设置,这两种技术可以用来自动分类的信息具有较高的精度和召回率。
2019-01-28 cs.SE
Dynamic Adaptation of Software-defined Networks for IoT Systems: A Search-based Approach
物联网(IoT)的概念导致了许多复杂和关键系统的发展,例如智能应急管理系统。支持IoT的应用程序通常依赖于通信网络,以便在不可预测和不断变化的环境中传输大量数据。这些网络在存在突发需求时易于拥塞,例如,随着紧急情况的展开,因此依赖于可配置的软件定义网络(SDN)。在本文中,我们提出了一种动态自适应SDN配置方法的物联网系统。该方法能够实时的解决拥塞,同时最大限度地减少网络利用率,数据传输延迟和适应成本。我们的方法建立在现有的工作动态自适应搜索为基础的软件工程(SBSE)重新配置SDN,同时确保多个服务质量标准。我们评估了我们在工业国家应急管理系统上的方法,该系统旨在检测灾害和紧急情况,并通过为第一响应者提供可靠的通信基础设施来促进恢复和救援行动。我们的研究结果表明,(1)我们的方法能够有效地适应SDN动态解决拥塞,(2)与静态和非自适应的两种基线数据转发算法相比,我们的方法将数据传输速率提高了至少3倍,并将数据丢失减少了至少70%。
2020-05-15 cs.SE
Testing Practices, Challenges, and Developer Perspectives in Open-Source IoT Platforms
针对开源物联网平台因多样化组成导致的测试挑战,通过挖掘分析OpenHab和HomeAssitant代码集成及调查80名开发者,揭示测试实践与认知,为有效测试提供指导。
2025-02-11 cs.SE
Incorporating Failure Knowledge into Design Decisions for IoT Systems: A Controlled Experiment on Novices
物联网(IoT)系统允许软件直接与物理世界交互。最近的物联网故障可以归因于反复出现的软件设计缺陷,这表明物联网软件工程师可能没有从过去的失败中吸取教训。我们研究了使用失败案例来改进物联网系统设计。我们进行了一项实验,以评估失败相关的学习治疗设计决策的影响。我们的实验采用了新手(计算机工程专业的学生)完成设计问卷的主题之间的比较。有三种治疗方法:对照组(N=7);考虑一组设计指南(N=8);考虑失败故事(建议治疗,N=6)。我们衡量了他们的设计决策和设计原理。所有受试者都做出了类似的决定。他们的理由因治疗而异:接受指南和失败故事治疗的受试者更多地使用关键性作为理由,而接受失败故事治疗的受试者更频繁地使用安全性作为理由。基于这些发现,我们提出了几个研究方向,以实现故障感知物联网工程过程。
2023-03-20 cs.SE
Introducing Aspect-Oriented Programming in Improving the Modularity of Middleware for Internet of Things
物联网(IoT)已成为智慧城市及其应用发展的流行语。在这种情况下,支持软件的开发构成了物联网基础设施的核心部分。中间件位于物联网设备之间,并在它们之间进行交互,以在自动化架构的组件之间交换数据。中间件服务包括握手,数据传输和安全性,其核心功能集。它还包括跨领域的功能服务,如身份验证、日志记录和缓存。能够运行这些中间件服务的软件需要仔细选择良好的软件建模技术。面向对象编程(AOP)是一种软件开发方法,可用于独立封装物联网基础设施中间件服务的核心和横切功能。在本文中,已尝试使用模拟环境,独立建模的两个正交功能的中间件的重点,以提高其模块化。此外,定量测量的核心设计属性的凝聚力已经做了推断在物联网中间件封装的模块的可重用性的改善。基于测量,它被发现,在中间件软件的功能的模块化和可重用性已提高在ANOJ版本相比,其等效的Java版本。
2020-09-23 cs.SE
Verifying Software Vulnerabilities in IoT Cryptographic Protocols
物联网(IoT)是由大量智能设备通过网络连接而成的系统。这些设备的数量正在迅速增加,这创建了一个庞大而复杂的网络,其中包含通过该网络传输的大量数据。一种在传输中保护此数据的方法,即,实现数据机密性的方法是对物联网协议使用轻量级加密算法。然而,这种协议的设计和实现是一项容易出错的任务;实现中的缺陷可能导致破坏性的安全漏洞。攻击者可以利用这些漏洞并影响用户的隐私。存在各种技术来验证软件和检测漏洞。有界模型检验(BMC)和Fuzzing是检验软件系统规范正确性的有效技术。在这里,我们描述了一个框架,称为加密BMC和Fuzzing(EBF)使用组合BMC和Fuzzing技术。我们评估了EBF验证框架的应用案例研究,即,S-MQTT协议,用于检查物联网加密协议中的安全漏洞。
2020-01-27 cs.CR cs.SE
Can Commercial Testing Automation Tools Work for IoT? A Case Study of Selenium and Node-Red
背景:由于大规模、数据量和异构性,测试物联网软件具有挑战性。测试自动化是该领域中非常需要的特性。目的:本研究的第一个目标是探索物联网测试自动化的需求和挑战。第二个目标是将商业软件中使用的测试自动化工具集成到物联网环境中。方法:进行了系统的文献综述,以引出物联网测试自动化的要求。遵循设计科学方法,使用商业测试自动化工具Selenium为Node-Red平台编写的物联网应用程序构建测试自动化工具。由此产生的框架使用Selenium Web Driver,用于物联网应用程序的基于浏览器的测试自动化。结果如下:该框架已在多个浏览器上进行了功能测试,并对可维护性、浏览器性能和全面性进行了初步评估。结论:使用商业工具进行物联网自动化测试是可行的。然而,需要全面解决大数据量和数据的并行传输和处理等主要挑战,以实现完全集成。
2021-07-09 cs.SE
Correct and Control Complex IoT Systems: Evaluation of a Classification for System Anomalies
在实践中,团队之间关于系统异常的精确沟通存在缺陷,无法在操作复杂物联网系统的不同团队中执行故障排除和事后分析。我们评估质量在使用IEEE标准的适应。1044-2009,目的是将故障检测和故障反应的处理与缺陷处理及其缺陷纠正选项区分开来。我们扩展了IEEE标准的范围。1044-2009从仅与软件相关的异常到与复杂物联网系统相关的异常。为了评价我们分类的使用质量,在Robert Bosch GmbH进行了一项研究。我们将我们的适应应用于物联网解决方案的事后分析,并通过与三个利益相关者进行访谈来评估使用质量。我们的适应得到了有效的应用,团队间的沟通以及迭代和归纳学习对产品改进的促进作用得到了加强。需要进一步的培训和实践。
2020-05-10 cs.SE
Towards the Adoption of OMG Standards in the Development of SOA-Based IoT Systems
物联网(IoT)的共同特征是关于网络协议、数据格式、硬件和软件平台的高度异构性。为了处理这种程度的异构性,一些框架已经应用模型驱动开发(MDD)来构建物联网应用程序。从软件体系结构的角度来看,文献表明,面向服务的体系结构(SOA)是一种很有前途的风格,以解决组成这些解决方案的实体的互操作性。物联网的一些特性使得分析设计决策对基于SOA的物联网应用程序行为的影响具有挑战性。因此,模拟模型以验证系统在实现之前是否按预期执行是一个关键要求。虽然文献已经确定SOA风格适合解决互操作性,但现有的建模语言在设计物联网应用程序时并不将SOA元素视为一等公民。此外,尽管现有的MDD框架提供了包括定义良好的语法的建模语言,但它们缺乏执行语义,因此不适合模型执行和分析。这项工作旨在通过引入IoTDraw来解决这些问题。该框架为基于SOA的物联网系统提供了完全符合OMG的可执行建模语言;因此,其规范可以由任何实现OMG标准的工具实现。
2020-07-03 cs.SE
Some Long-Standing Quality Practices in Software Development
几十年来,构建高质量软件系统的愿望一直是大多数软件开发人员和研究人员的焦点。这最终导致了实践的设计,提高了设计软件的质量。从传统的软件开发生存周期(SDLC)开始,到面向对象方法、迭代开发,再到现在的敏捷方法,这些实践经历了不同的时期。无论它们所处的软件开发过程的角度如何,这些实践都扮演着相同的质量角色。在本文中,我们回顾了三个软件开发方法的软件开发历史的代表,其目的是i)确定关键的质量实践,ii)确定质量的作用发挥的做法的方法,和iii)注意到这些质量的做法,坚持通过软件开发历史。在软件开发过程的整个历史中持续存在的已确定的质量实践包括原型设计、迭代开发、增量开发、风险驱动开发、阶段计划和阶段回顾。这些结果将是有用的方法工程师谁寻求设计高质量的软件开发方法,因为这些做法作为候选人列入他们的开发过程。软件开发从业员寻求设计高质量的软件也将受益于采用这些做法在开发他们的软件。
2022-09-17 cs.SE
Creating it from SCRATCh: A Practical Approach for Enhancing the Security of IoT-Systems in a DevOps-enabled Software Development Environment
DevOps描述了一种重新组织软件工程中不同学科协同工作的方式以加快软件交付的方法。然而,将DevOps方法引入组织是一项复杂的任务。一个成功的介绍会产生一组结构化的过程描述。尽管结构,这个过程留下了错误的余地:特别是安全问题是在各个阶段解决的,没有考虑相互依赖性。此外,将DevOps方法应用于分布式实体(如物联网(IoT))是困难的,因为该架构是为桌面和云资源量身定制的。在这项工作中,介绍了DevOps流程各阶段中使用的工具的概述。在安全性或对物联网的适用性方面存在差距。基于这些差距,在研究项目SCRATCh的过程中正在开发的解决方案,并在DevOps环境的好处方面进行了讨论。
2020-10-28 cs.NI cs.SE
Software Engineering Approaches for TinyML based IoT Embedded Vision: A Systematic Literature Review
Boise State University(博伊西州立大学)
物联网(IoT)通过无处不在的传感、通信、计算和驱动,使人类能够控制我们的环境。在过去的几年里,物联网与机器学习(ML)联手,在远端嵌入深度智能。TinyML(Tiny机器学习)支持在极其精简的边缘硬件上部署用于嵌入式视觉的ML模型,将物联网和ML的力量结合在一起。然而,TinyML驱动的嵌入式视觉应用仍处于初期阶段,它们刚刚开始扩展到广泛的现实世界物联网部署。为了利用物联网和机器学习的真正潜力,有必要为产品开发人员提供强大的,易于使用的软件工程(SE)框架和最佳实践,这些框架和最佳实践是针对TinyML工程所面临的独特挑战而定制的。通过这一系统的文献综述,我们汇总了TinyML开发人员报告的关键挑战,并确定了大规模计算机视觉、机器学习和嵌入式系统中最先进的SE方法,这些方法可以帮助解决基于TinyML的物联网嵌入式视觉中的关键挑战。总之,我们的研究利用了嵌入式系统开发人员和ML开发人员独立开发的SE专业知识之间的协同作用,以帮助解决基于TinyML的物联网嵌入式视觉工程中的独特挑战。
2022-04-19 cs.CV cs.LG cs.SE
A Formal Method for Mapping Software Engineering Practices to Essence
EF框架旨在解决软件工程SE及其实践的核心问题
2018-12-04 cs.SE
A Survey of Software Engineering Practices in Turkey (extended version)
背景:了解行业中使用的软件工程实践和技术的类型是很重要的。在每个软件团队和公司中进行的软件工程实践的类型和成熟度方面有很宽的范围。为了描述在软件公司中进行的软件工程实践的类型,在不同的国家和地区进行了各种调查。土耳其有一个充满活力的软件行业,重要的是要描述和了解该行业的软件工程实践的状态。目标:我们的目标是描述和掌握土耳其软件行业软件工程实践类型的高级观点。在这项研究中,我们调查的软件工程实践包括:软件需求、设计、开发、测试、维护、配置管理、发布计划和支持实践。目前的调查是在土耳其软件行业背景下进行的最全面的调查。方法:为了实现上述目标,我们系统地设计了一个在线调查46个问题,根据我们过去的经验,在加拿大和土耳其的背景下,并使用软件工程知识体系(SWEBOK)。来自土耳其软件行业的202名执业软件工程师参加了调查。我们分析和报告在本文中的问题的结果。只要有可能,我们还会将我们的调查趋势和结果与2010年在加拿大软件行业进行的类似调查结果进行比较。
2014-12-16 cs.SE
Statistical Software for Psychology: Comparing Development Practices Between CRAN and Other Communities
不同的社区严重依赖软件,但使用完全不同的软件开发实践。{ \bf目标}:我们希望衡量心理学统计软件领域的实践状况,以了解它与最佳实践的比较情况。{ \bf方法}:我们对30个软件工具进行了比较和排名,这些软件工具在最终用户可以衡量的项目上遵守了最佳软件工程实践。{ \bf Results}我们发现R软件包使用了相当好的实践,虽然商业软件包非常可用,但其开发的许多方面太不透明而无法衡量,并且研究项目在实践中有很大差异。{ \bf Conclusion}我们建议更多的组织采用类似于CRAN所使用的实践,以促进成功,即使是小型团队也是如此。我们还建议源代码和文档紧密耦合,以提高可验证性。
2018-02-20 cs.SE
Applying Software Craftsmanship Practices to a Scrum Project: an Experience Report
软件工匠宣言定义了软件开发团队应该遵循的价值观和原则,以提供满足功能和非功能需求的高质量软件,而无需处理大量的技术债务。软件开发的软件工艺方法优先考虑技术实践,以提供干净的代码库。这项工作分析了一组实践,可以应用于一个旨在纳入软件工艺价值观的SocketProject。所描述的过程实现对于那些也打算在他们的项目中实现Software Craftsman的软件开发团队来说可能是一个有用的贡献。
2016-11-17 cs.SE
Agile Practices for Quantum Software Development: Practitioners Perspectives
量子软件系统是新兴的软件工程(SE)流派,其利用量子比特(Qubit)和量子门(Qgates)的原理来解决当今经典计算机不能在合理时间内有效地完成的复杂计算问题。根据其支持者的说法,敏捷软件开发实践有可能解决量子软件开发中特有的许多问题。然而,缺乏证据证实敏捷实践是否适合并可以被软件团队采用,因为它们是在量子软件开发的背景下。为了解决这一问题,我们进行了一项实证研究,以调查使用敏捷实践开发量子软件的需求和挑战。虽然我们对10个国家的26名从业者进行了半结构化访谈,强调了敏捷实践在这一领域的适用性,但访谈结果也揭示了阻碍这些实践有效整合的新挑战。我们的研究结果为敏捷实践的进一步情境化和无缝集成与开发下一代量子软件提供了跳板。
2022-10-18 cs.SE
Pushing Software-Defined Blockchain Components onto Edge Hosts
随着区块链技术的出现,物联网网络的一些管理任务可以从中央系统转移到分布式验证机构。物联网的以云为中心的区块链实现已经显示出令人满意的性能。然而,区块链的某些功能对于物联网来说并不是必需的。例如,竞争共识。这项研究提出了将区块链的功能定制和封装到软件定义的组件中以将其托管在边缘设备上的想法。因此,区块链资源可以由边缘设备(电子矿工)以合作的方式在更接近事物层的地方一起工作来提供。该研究使用Edison SoC作为电子矿工来测试软件定义的区块链组件。
2019-09-22 cs.CR cs.SE
Interaction semantics and its implications for an interaction oriented architecture of IoT-type applications
“物联网(IoT)”一词下的几个协同趋势极大地推动了网络应用的重要性日益增加。在过去,互联网的指数增长主要是由于语义不可知的传输协议。在未来,可以预期的是,由于技术系统的自主性越来越高,有必要更好地理解这些交互网络的语义的性质,以创建适当的网络应用程序。适当意味着这些应用程序的架构允许最小化使这些应用程序适应永久变化的交互网络的工作。提出的面向交互的体系结构是基于交互语义的参考模型。它提供了如何设计网络应用程序的指导原则。交互语义的参考模型提供了:对物理、信息和人类世界中的事物的统一描述;具有直接运行时相关性的交互模型;对层次结构化组件如何松耦合协作的理解;确定有多少语义必须是共同的以使不同语义域的组件能够松耦合协作的概念;和数据类型模型。软件参考体系结构提供了:软件层的定义;表示垂直交互的方法,即划分软件层的交互;表示水平交互的方法,即同一软件层中进程之间的交互;组件的定义以及如何将其与其他实体(如系统或对象)区分开来;以及如何将应用程序功能的可重用部分与不可重用部分分离的模型。
2017-05-16 cs.SE
Integrating formal methods into traditional practices for software development: an overview
本文介绍了一个研究项目的概述,在流行的软件开发实践中集成的形式化方法在墨西哥。本文只显示了主要的调查结果的方法和做法,并概述了初步建议的做法,应用轻量级的形式化方法的需求规格说明和软件建模。
2016-03-31 cs.SE
Architectural Invariants and Correctness of IoT-based Systems
物联网应用影响越来越多的工业领域,如智能制造、智能健康监测和家庭自动化;配备传感器和执行器的物理对象或设备相互连接,然后通过软件应用程序进行控制。确保这些应用程序的正确构建、良好运行和可靠性是其中一些应用程序的重要问题,这些应用程序在功能障碍的情况下可能是至关重要的。我们提出的基础上,其共同的架构属性的形式化模型,基于物联网的应用程序的形式化建模的通用框架,其一致性属性的严格分析,其严格的建设和演变。可以逐步添加和检查特定属性。然后使用Event-B实现并实验了所提出的框架。我们利用的观察,基于物联网的物理架构和控制软件的主要要求是共同的所有基于物联网的应用程序;这导致我们的通用形式模型的定义与不变的架构和一致性属性。所提出的方法是通用的,可扩展的,并且可以有益地适应更一般的混合或网络物理系统。我们目前的实现是独立的形式化模型,它可以实现在各种其他形式化分析环境。
2019-12-18 cs.SE
Analysis of Software Engineering Practices in General Software and Machine Learning Startups
本研究通过系统文献综述对比了ML初创企业与通用软件初创企业在软件开发生命周期五个阶段的软件工程实践差异,发现ML模型的非确定性带来了额外挑战,需采用不同策略保障产品质量。
2023-04-04 cs.SE
The State of Sustainable Research Software: Results from the Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE5.1)
本文总结了2017年9月在英国曼彻斯特举行的可持续科学软件研讨会:实践和经验(WSSSPE5.1)的动机,组织和活动。WSSSPE系列通过积极影响原则和最佳实践,职业,学习和信用来促进可持续研究软件。本文讨论了行为准则、想法文件、立场文件、经验文件、演示和研讨会期间提出的闪电谈话。文章的主要部分讨论了会议期间形成的快速博客小组,以及这些会议的成果。
2018-07-19 cs.SE
Quality Assurance in the Context of Contemporary Software Practice
我们回顾文献的性质,质量保证的背景下,复杂的系统开发使用迭代和增量的方法。
2022-04-30 cs.SE
Software Startup Practices -- Software Development in Startups through the Lens of the Essence Theory of Software Engineering
软件创业公司仍然是全球经济的重要驱动力。随着云技术等技术进步,创建新软件公司所需的初始投资越来越小,越来越多的新软件初创公司诞生了。通常情况下,研究软件创业公司的主要论点是,它们在各种方面与成熟的软件组织不同,因此许多现有研究的结果并不直接适用于它们。软件创业公司与其他类型的软件组织到底有什么不同,这是一个持续的争论。在本文中,我们试图更好地理解软件创业公司在开发实践方面与成熟软件组织的不同之处。过去的研究主要研究方法的使用,相比之下,我们通过关注实践采取了更原子的方法。利用本质理论的软件工程作为一个框架,我们将这些做法分为几类进行分析,同时评估的理论适用于软件创业的背景下。基于这些结果,我们提出了对软件工程本质理论的修改,以使其更好地适应创业环境。
2021-02-11 cs.SE
Learning Self-adaptations for IoT Networks: A Genetic Programming Approach
物联网(IoT)是应用领域的关键技术,需要大量设备之间的连接和互操作性。物联网系统主要使用软件定义网络(SDN)架构作为其核心通信骨干。这种架构提供了几个优势,包括通过软件可编程性使物联网网络自适应的灵活性。一般来说,自适应解决方案需要周期性地监视、推理和适应正在运行的系统。自适应步骤包括生成自适应策略,并在出现异常时将其应用于运行的系统。在本文中,我们认为,而不是产生个人的适应策略,目标应该是适应逻辑/代码的运行系统的方式,系统本身将学习如何避开未来的异常,而不会触发自适应太频繁。我们在物联网网络的背景下实例化并实证评估了这一想法。具体而言,使用遗传编程(GP),我们提出了一种自适应解决方案,不断学习和更新基于SDN的物联网网络的数据转发逻辑中的控制结构。我们使用开源合成和工业数据进行的评估表明,与尝试生成个体适应的基线适应技术相比,我们基于GP的方法在解决网络拥塞方面更有效,并且随着时间的推移降低了适应干预的频率。此外,我们将我们的方法与网络文献中的标准数据转发算法进行比较,表明我们的方法显着减少了数据包丢失。
2022-05-09 cs.SE
AutoFirm: Automatically Identifying Reused Libraries inside IoT Firmware at Large-Scale
针对物联网固件复用库带来的安全风险,提出自动化工具AutoFirm,通过语法信息检测复用库,经大规模实证研究发现厂商普遍忽视更新过时库,漏洞威胁严峻。
2024-06-18 cs.CR cs.SE
Software Engineering Practice in the Development of Deep Learning Applications
深度学习(DL)应用程序已被广泛用于协助各种任务。它们是基于数据驱动的编程范式构建的,与传统的软件应用程序不同。鉴于深度学习应用程序的日益普及和重要性,软件工程从业者有一些专门针对它们的技术。然而,很少有研究来确定实践中的挑战和不足。为了填补这一空白,在本文中,我们调查了195从业者了解他们的见解和经验,在软件工程实践的DL应用程序。具体而言,我们要求受访者确定DL应用程序开发生存周期实践中的不足和挑战。结果提出了13个发现,为我们提供了一个更好的理解软件工程实践的DL应用程序。此外,我们将这些发现转化为7个可操作的建议,供软件工程研究人员和实践者改进深度学习应用程序的开发。
2019-10-08 cs.SE
Best practices for software maturity improvement: a GÉANT case study
软件成熟度模型指出了有助于质量改进的关键领域。他们通常将与有效软件开发相关的技术,组织和人力方面结合起来,集中精力并为优化指明方向。在本文中,我们提出了定义支持GÉANT软件成熟度模型(GSMM)的最佳实践的过程,该过程与分布式,创新驱动的泛欧组织的需求相一致。基于对与GÉANT相关的具体目标的识别和初步的成熟度评估,我们创建了一个最佳实践目录,帮助软件团队实现GSMM中定义的目标。
2020-09-03 cs.SE
Software Development Standard and Software Engineering Practice: A Case Study of Bangladesh
在软件开发组织中,改进软件过程以实现高质量是成功的关键因素。与其他国家相比,孟加拉国的软件公司在这一特定领域没有多少经验。ISO 9001和CMM标准已经成为软件开发的基本组成部分。我们研究的主要目标是:1)了解孟加拉国软件开发公司使用的软件开发过程; 2)根据既定的质量标准确定开发实践; 3)为特定项目的软件开发建立标准化和一致的过程。研究结果显示,孟加拉国的软件产业缺乏软件过程与改进的目标设定,缺乏质量控制活动的参与,缺乏标准化的业务专长实践。本文根据上述挑战对孟加拉国软件业进行了调查。
2010-08-19 cs.SE
A Comprehensive Survey on Dynamic Software Updating Techniques in IoTs
本文综述物联网(IoT)中的动态软件更新(DSU)技术,分析八篇相关论文,明确DSU工具的应用领域、程序变更类型、优缺点及未来方向,强调其在提升物联网能效、耐久性和安全性的作用,为DSU策略发展提供指导。
2024-12-01 cs.HC cs.NI cs.SE
Two case studies on implementing best practices for Software Process Improvement
软件过程改进不仅需要识别相关问题并提供适当的响应,还需要实施和采用变更。最佳实践根据积累的经验和知识,向软件团队提供关于如何在实践中实现已确定目标的建议。在本文中,我们介绍了GEANT的经验和意见,从采用最佳实践的过程中,并提出了我们一直在使用的设置。
2022-09-15 cs.SE
Software Engineering Practices for Scientific Software Development: A Systematic Mapping Study
背景资料:科学软件应用程序的开发远非微不足道,因为这些应用程序的必要复杂性不断增加,它们的规模不断增加,并且需要密集的维护和重用。目标:为此,科学软件开发人员(通常缺乏正式的计算机科学背景)需要使用适当的软件工程(SE)实践。本文介绍了一个系统的映射研究的结果,使用SE的科学应用开发和它们对软件质量的影响。方法:为了实现这一目标,我们进行了系统的映射研究的359篇论文。我们首先描述了一个目录中使用的科学软件开发的SE实践。然后,我们讨论了驱动这些实践应用的感兴趣的质量属性,以及将实践应用于质量的尝试性副作用。结果如下:主要研究结果表明,科学软件开发人员正在关注提高实现生产力的实践,如代码重用,使用第三方库,以及应用“好”的编程技术。此外,除了发现性能是许多这些应用程序的关键驱动力之外,科学软件开发人员还发现可维护性和生产力也很重要。结论:研究结果与现有文献进行了比较,解释下的软件工程棱镜,研究人员和从业人员提供的各种影响。该研究的主要发现之一,被认为是推动未来研究工作的重要因素,是缺乏在应用软件实践时需要做出权衡的证据,即,对其他质量属性的负面(间接)影响。
2020-10-19 cs.SE
Current Web Application Development and Measurement Practices for Small Software Firms
本文讨论的问题,目前的发展和衡量的做法,确定从约旦小型软件公司进行的试点研究。该研究旨在调查开发人员是否遵循Web应用程序开发中的开发和测量最佳实践。分析分两个阶段进行:第一,使用变量聚类对开发和度量实践进行分组,第二,确定接受程度。平均间隔用于确定可接受程度。层次聚类被用来对开发和测量实践进行分组。这项调查的实际结果将用于建立一个新的方法,在小型软件公司开发Web应用程序。
2012-05-28 cs.SE
Cultural Barriers to Software Productivity Practices at Los Alamos
近年来,洛斯阿拉莫斯国家实验室(LANL)的核武器计划中的代码项目越来越关注现代软件生产力实践。我们发现,采用新做法的一些最大障碍不是技术上的,而是文化上的。本文描述了几个物理和计算机科学社区在LANL的文化差异。
2015-09-25 cs.SE
Software Architecture Decision-Making Practices and Challenges: An Industrial Case Study
软件体系结构决策对于软件系统的成功至关重要,因为软件体系结构设置了系统的结构,确定了系统的质量,并在整个系统生存周期中具有深远的影响。软件开发环境的复杂性和问题的重要性促使研究界开发了一些技术、工具和过程来帮助软件架构师做出更好的决策。尽管作出了这些努力,但在实践中采用这种系统性办法似乎相当有限。此外,实践者也面临着新的挑战,因为不同的软件开发方法建议不同的方法进行架构设计。在本文中,我们研究了目前的软件架构决策的做法,在行业中使用的专业软件架构师在三个不同的公司在欧洲进行的案例研究。因此,我们确定了软件团队遵循的不同软件架构决策实践,以及遵循这些实践的原因,与之相关的挑战,以及从软件架构师的角度来看可能的改进。在此基础上,我们认识到,改进软件架构知识管理可以解决大多数已识别的挑战,并将导致更好的软件架构决策。
2016-10-28 cs.SE
Femto-Containers: DevOps on Microcontrollers with Lightweight Virtualization & Isolation for IoT Software Modules
DevOps已经彻底改变了网络软件的开发、部署和维护,这对于提高系统软件质量和实现敏捷演进至关重要。与此同时,物联网(IoT)连接了越来越多DevOps工具未涵盖的设备:低功耗,基于微处理器的设备。在本文中,我们通过设计Femto-Containers来弥补这一差距,Femto-Containers是一种新的架构,可以通过低功耗网络实现嵌入在微控制器上的软件模块的容器化,虚拟化和安全部署。作为概念验证,我们在流行的微控制器架构(Arm Cortex-M,ESP 32和RISC-V)上使用eBPF虚拟化和RIOT(该领域的常见操作系统)实现和评估了Femto-Containers。我们表明,Femto-Containers可以虚拟化和隔离多个软件模块,同时执行,与本机代码执行相比,内存占用开销非常小(低于10%)和启动时间非常短(数十微秒)。我们表明,毫微微容器可以满足低级别的调试逻辑插入在一个热代码路径的约束,和高级别的业务逻辑编码的各种常见的程序设计语言。与以前的工作相比,Femto-Containers因此在内存占用,能耗,敏捷性和安全性方面提供了一个有吸引力的权衡。
2021-11-03 cs.NI cs.OS cs.SE
Towards A Usability Model for Software Development Process and Practice
背景:过程和实践采用是现代软件过程改进计划的关键要素,其中许多都失败了。目标:本文提出了一个软件开发过程和实践的可用性模型的初步版本。方法:该模型集成了不同的观点、ISO系统和软件质量模型标准(ISO 25010)和经典的可用性文献。为了说明该模型的可行性,两位专家将其应用于Sunday。结果:评价者之间的指标值大多为正且一致。结论:我们发现该模型是可行的,并且可能有益。
2017-10-29 cs.SE
A Survey of Software Code Review Practices in Brazil
软件代码评审的目的是尽早发现代码异常,并在成本较低时进行代码改进。然而,不定期应用代码审查实践的开发人员所面临的问题和挑战尚不清楚。目标:调查开发人员在应用代码审查实践时所面临的困难,而不将目标受众限制在已经经常使用此实践的开发人员。方法:我们进行了一项基于网络的调查,350名巴西从业人员从事软件开发行业。结果:代码审查实践在巴西从业者中很普遍,他们认识到其重要性。然而,没有适用这些做法的例行程序。此外,他们还报告了在软件开发过程中使用静态分析工具的困难。从业者认识到的一个可能的原因是,这些工具中的大多数使用单一的度量阈值,这可能不足以评估所有的系统类。结论:改进指南以使代码审查实践适应软件开发过程,有助于使其广泛使用。此外,未来的研究应该调查是否考虑到源代码上下文的多个度量阈值减少了静态分析工具的假警报。最后,这些工具应该允许在软件开发过程的不同阶段使用。
2020-08-02 cs.SE
Towards Shaping the Software Lifecycle with Methods and Practices
由于软件项目非常多样化,每个软件开发过程都必须根据项目和相应开发团队的需求进行调整。通常,我们会发现不同的方法和实践结合在所谓的混合开发方法中。研究表明,这些混合方法随着时间的推移而发展,并根据经验设计。然而,在设计混合方法时,所使用的方法和实践应该覆盖整个软件项目的不同阶段,包括项目管理、需求分析、质量管理、风险管理和实现。在本文中,我们分析了在软件项目的哪个阶段使用哪些方法和实践。基于对27位从业者的初步调查,我们提供了一个方法和实践到不同项目阶段的映射,反之亦然。尽管我们的研究的初步性质和小样本量,我们观察到三个显着的方面:(1)根据文献和实际使用的方法和实践的预期用途之间存在差异,(2)实践比方法更一致地使用,(3)软件生命周期的部分,如维护和演化,几乎没有广泛分布的方法和实践。因此,当设计一个开发过程时,是否软件生命周期的所有阶段都被处理了,这是值得考虑的。
2021-03-18 cs.SE