Journal of Database Management · 2005 · 218 citations · 0 references
Software MaintenanceEngineeringProject ManagementSoftware-development Process ModelsSoftware EngineeringSoftware ProcessWaterfall ModelScrumAgile Software DevelopmentManagementCore AssumptionsSoftware PracticeAgile MethodologiesSoftware Development ProcessAgile DevelopmentDesignAgile ProcessesAgile Software-development ProcessesSoftware DesignDevelopment MethodologySoftware TestingBusiness
Agile software‑development emphasizes rapid, iterative code production, yet its suitability for specific environments remains largely anecdotal and depends on underlying assumptions that may not always hold. The article aims to examine agile principles and practices to uncover their underlying assumptions, thereby clarifying when agile methods are applicable. The authors analyze agile principles and practices to uncover assumptions, identify resulting limitations, and propose integrating complementary techniques to mitigate these constraints. They find that unmet assumptions can limit agile applicability, but these constraints can be alleviated by integrating additional development techniques and practices.
Agile processes focus on the early facilitation and fast production of working code, and are based on software-development process models that support iterative, incremental development of software. Although agile methods have existed for a number of years now, answers to questions concerning the suitability of agile processes to particular software-development environments are still often based on anecdotal accounts of experiences. An appreciation of the (often unstated) assumptions underlying agile processes can lead to a better understanding of the applicability of agile processes to particular situations. Agile processes are less likely to be applicable in situations in which core assumptions do not hold. This article examines the principles and advocated practices of agile processes to identify underlying assumptions. It also identifies limitations that may arise from these assumptions and outlines how the limitations can be addressed by incorporating other software-development techniques and practices into agile development environments.