B345 Internet Science and Technology Week 5 lecture 1 Today's Lecture Learning Objective - Understand the foundations of the new "agile" software development methodologies. Programming by undergraduates - Code and Fix - Not scalable Software Development Methodologies - To handle complexity - Usually at least cover stages of - Requirements gathering - Analysis - Design - Implementation - Testing - Deployment Common complaint - Spend more time following process than developing software. Agile Methodologies - Light-weight - Find the most appropriate and the optimal level of process to adopt. Adaptive and People-Oriented - Adaptive vs Predictive methods - People vs Process oriented Design vs Construction - Separate design from construction. - Want the design to be at a stage where construction (code writing) is a trivial process. Unpredictable Requirements - Is it poor requirements engineering? - Features of software: can't tell until tested. - Unpredictability of customers, users, developers, environments. Appropriateness of Methodology - Boundary conditions of methodology. - Assumption of predictability. Iterative Development - Feedback for unpredictability. - Documents can always hide flaws, but not a working system. - Expose not only flaws in design and implementation, but also in requirements. Adaptive Customer - Include customer in process. - Fix budget, but not price-time-scope. - Adapt with customer involvement. - Benefits - Software closer to customer needs - No hiding project status People over Process - Adaptive methods completely depends on the specific individuals. - Contradicts process-oriented approach: predictable roles filled by predictable individuals. - Responsibilities back to the developers. Process and Management - Trust in developers. - Management and technology change. - The trouble with measurement. - Mutual dependence - close communication. Adapting Process - Changing environment. - Reviews of process. - People decide. - Is there a "methodology"?