非功能性需求(NFR)是软件系统的重要方面,但开发人员经常忽视它们,因为它们不是用户直接与之交互的程序方面。一项新研究深入探讨了开发人员如何处理NFR,并概述了解决NFR的六种最佳实践,这些实践有助于确保程序在短期和长期的安全性和性能。
NFR在软件运行过程中发挥着重要作用。NFR的示例包括:系统的安全性;性能,例如系统执行用户命令所需的时间;稳健性,指系统在发生错误后恢复的能力;以及可维护性,指开发人员随着时间的推移更新系统的难易程度。
“NFR是任何软件的基本元素,”该主题论文的共同作者、北卡罗来纳州立大学计算机科学副教授WesleyKGAssunção表示。
“在这项研究中,我们想回答一些有关NFR的基本问题。负责这些需求的专家是谁?软件工程师如何讨论和管理这些类型的需求?”
为此,研究人员查看了GitHub上与NFR相关的1,533个拉取请求,以了解开发人员如何讨论和解决与NFR相关的问题。研究人员还对63名在NFR相关问题上特别活跃的开发人员进行了深入分析,并对44名开发人员进行了调查,以更深入地了解他们对NFR的看法。
“也许这并不奇怪,我们发现开发人员在出现问题之前和出现问题之后都会积极和被动地讨论NFR,”Assunção说。“而且,最积极讨论NFR的开发人员大多在软件项目中扮演着关键角色。这表明NFR是软件维护和发展过程中的主要关注点。这项研究强调了NFR在软件质量和软件系统成功中发挥的作用。”
根据他们的分析和与开发人员的讨论,研究人员确定了开发和维护NFR至关重要的六个关键点,这些关键点将有助于系统蓬勃发展:
优先排序和规划:NFR应与其他要求同等优先处理。应提前规划并在整个开发项目中进行审查。
识别和讨论:应在开发过程的早期识别和讨论NFR,最好是在设计阶段。在软件演进过程中,如有必要,应重新审视这些NFR。
使用与测试相关的技术:可以通过市场已经认可的技术来验证NFR的充分性,其中与这些项目相关的NFR满足项目的复杂性。
基准:建议使用基准来模拟不同条件下一段代码或算法的行为,因为它允许开发人员在代码不符合项目指定的NFR时审查和重构代码。
最佳实践的记录:通过对NFR进行良好的记录,开发人员将有一个起点来处理出现的任何NFR问题。
长远思维:妥善处理NFR可使软件拥有更长的使用寿命。为了保证这一点,系统应具有良好的用户体验、可扩展的设计,并且易于未来开发人员维护。