A reference conceptual model for agile software development, lean startup, and user-centered design - Zorzetti, Maximilian Nicholas Schmidt (2021)
[Context] The extensive use of Agile Software Development in the past two decades has unearthed its shortcomings, with some studies suggesting it as lackluster when tack- ling business-level issues and in addressing user needs. Recent industry cases show that combining Agile Software Development with Lean Startup and User-Centered Design is an effective way to remedy these failings, as the latter two focus on adding value to business stakeholders and fostering empathy towards the user, respectively. However, these three methods have considerable overlap, raising concerns on how each method stands apart from the others and making integration efforts difficult. A sound theoretical foundation of an integration of these methods could remedy such concerns. [Objective] This study develops such a foundation, by means of developing a conceptual model that illustrates what makes each method unique and what they have in common. [Method] We conducted a systematic literature review to select a metamodel that could best illustrate how each method comple- ments and supplements one another. We then instantiated a conceptual model from it using data acquired from analyzing core literature from the three methods and from a case study on two software development teams that use a combined approach of Extreme Program- ming, Lean Startup, and User-Centered Design. Finally, we evaluated our model with the case study participants with a thorough workshop. [Results] The model identifies the prin- ciples, features, and practices of each method, showcasing which elements are unique to and shared between them. In total, the model comprises 12 principles for Agile Software Development, 5 for Lean Startup, and 6 for User-Centered Design; which are derived into 35 distinct features, each supported by a subset of a total of 55 practices. [Conclusion] Our findings provide insight on how these pillars support one another, serving as a foundation that will support new software development approaches, justify existing ones, and enable the development of supplementary instruments and resources to such approaches.