Rethinking Software Development : The case for dynamic life cycle models
Contemporary software development is characterised by failures, runaway projects, late delivery, exceeded budgets, reduced functionality and questionable quality. Generally, as the complexity and scale of attempted projects increases, the ability to bring such projects to a successful completion decreases. Indeed, while the software engineering community is technically capable of producing software, there is a growing lack of confidence in its ability to control such undertakings. A key obstacle is that traditional software development is predicated on constraints and limitations that are either no longer valid or that pertain to well-structured situations. Many of the problems tackled by software developers are simply not of that type. Rethinking Software Development, a reprint of the original work which still maintains its relevance, challenges the dominant mindset and introduces an alternative; a more pluralistic perspective supportive of continuous delivery, learning and dynamic resolution processes. The discussion explores problem solving, decisions, wicked problems, systems, design, change, economics, complexity and knowledge as part of the search for lasting solutions.