Non-functional requirements (NFR), which include performance, availability, and maintainability, are vitally important to overall software quality. However, research has shown NFRs are, in practice, poorly defined and difficult to verify. Continuous software engineering practices, which extend agile practices, emphasize fast paced, automated, and rapid release of software that poses additional challenges to handling NFRs. In this multi-case study we empirically investigated how three organizations, for which NFRs are paramount to their business survival, manage NFRs in their continuous practices. We describe four practices these companies use to manage NFRs, such as offloading NFRs to cloud providers or the use of metrics and continuous monitoring, both of which enable almost real-time feedback on managing the NFRs. However, managing NFRs comes at a cost as we also identified a number of challenges these organizations face while managing NFRs in their continuous software engineering practices. For example, the organizations in our study were able to realize an NFR by strategically and heavily investing in configuration management and infrastructure as code, in order to offload the responsibility of NFRs; however, this offloading implied potential loss of control. Our discussion and key research implications show the opportunities, trade-offs, and importance of the unique give-and-take relationship between continuous software engineering and NFRs. Research artifacts may be found at https://doi.org/10.5281/zenodo.3376342.
翻译:非功能要求(NFR)包括性能、可得性和可维持性,对软件的整体质量至关重要,然而,研究表明,非功能要求在实践中并不十分明确,而且难以核实。持续的软件工程做法,推广灵活做法,强调快速步调、自动化和迅速发布对处理非功能要求构成额外挑战的软件。在这项多案例研究中,我们根据经验调查了三个组织(NFR对其业务生存至关重要)如何管理非功能要求的持续做法。我们描述了这些公司管理非功能要求管理非功能要求(NFRs)的四种做法,例如向云源供应商卸载NFRs,或使用计量和持续监测,这两种做法都几乎能够实时反馈管理非功能要求。然而,管理NFRs(NFR)需要付出一定的代价,因为我们还查明了这些组织在持续软件工程实践中面临的一些挑战。例如,我们研究中的组织能够通过战略性和大量投资,在配置管理和基础设施方面实现NFRs(NFRs) 251) 。我们的研究发现,在NFRS(NFRs) 30) 和(NFRS) 之间进行这一潜在的贸易关系和潜在风险。