Context: Start-up companies have become an important supplier of innovation and software-intensive products. The flexibility and reactiveness of start-ups enables fast development and launch of innovative products. However, a majority of software start-up companies fail before achieving any success. Among other factors, poor software engineering could be a significant contributor to the challenges experienced by start-ups. However, the state-of-practice of software engineering in start-ups, as well as the utilization of state-of-the-art is largely an unexplored area. Objective: In this study we investigate how software engineering is applied in start-up context with a focus to identify key knowledge areas and opportunities for further research. Method: We perform a multi-vocal exploratory study of 88 start-up experience reports. We develop a custom taxonomy to categorize the reported software engineering practices and their interrelation with business aspects, and apply qualitative data analysis to explore influences and dependencies between the knowledge areas. Results: We identify the most frequently reported software engineering (requirements engineering, software design and quality) and business aspect (vision and strategy development) knowledge areas, and illustrate their relationships. We also present a summary of how relevant software engineering knowledge areas are implemented in start-ups and identify potentially useful practices for adoption in start-ups. Conclusions: The results enable a more focused research on engineering practices in start-ups. We conclude that most engineering challenges in start-ups stem from inadequacies in requirements engineering. Many promising practices to address specific engineering challenges exists, however more research on adaptation of established practices, and validation of new start-up specific practices is needed.
翻译:背景:初创公司已成为创新和软件密集型产品的重要供应方。初创公司的灵活性和快速响应能力使其能够快速开发和推出创新产品。然而,大多数软件初创公司在取得任何成功之前便遭遇失败。在众多因素中,糟糕的软件工程可能是导致初创公司面临挑战的重要原因。尽管如此,初创公司中软件工程的实践现状以及对最新技术的应用在很大程度上仍是未探索的领域。目的:在本研究中,我们调查软件工程如何在初创公司背景下应用,重点识别关键知识领域及未来研究机会。方法:我们对88份初创公司经验报告进行多声部探索性研究。我们制定了一个自定义分类法,用于对报告中的软件工程实践及其与业务方面的相互关系进行分类,并应用定性数据分析来探究各知识领域之间的影响和依赖关系。结果:我们识别出最常被报告的软件工程(需求工程、软件设计及质量)和业务方面(愿景与战略开发)知识领域,并阐明了它们之间的关系。我们还总结了相关软件工程知识领域在初创公司中的实施情况,并指出了可能适合初创公司采纳的有用实践。结论:研究结果使得对初创公司工程实践的研究更具针对性。我们得出结论,初创公司中大多数工程挑战源于需求工程方面的不足。存在许多针对具体工程挑战的有前景的实践,但需要更多关于成熟实践适应性的研究以及针对初创公司特有实践验证的研究。