1: Introduction to Software Development 2: Software Process Models 2.5: Iterative Models 2.6: Evolving the Iterative Model 2.7: Risk: The Problem with Plan-Driven Models 2.8: Agile Methodologies 2.9: Agile Values and Principles 2.10: eXtreme Programming (XP) 2.11: XP Overview 2.12: The Four Basic Activities 2.13: Implementing XP: The 12 Practices 2.14: Scrum 2.15: Scrum Roles 2.16: The Sprint 2.17: Scrum Artifacts 2.18: Sprint Flow 2.19: Lean Software Development 2.20: Kanban 2.21: Kanban Board, WIP, and Flow 2.22: Lead Time 3: Project Management Essentials 3.1: Project Planning 3.2: Project Organization 3.3: Risk Analysis 3.4: Resource Requirements 3.5: Task Estimates 3.6: Project Schedule 3.7: Velocity 3.8: Project Oversight 3.9: Status Reviews and Presentations 3.10: Defects 3.11: The Retrospective 3.12: Conclusion 4: Requirements 4.1: What Types of Requirements Are We Talking About? 4.2: User Requirements 4.3: Domain Requirements 4.4: Non-Functional Requirements 4.5: Non-Requirements 4.6: Requirements Gathering in a Plan-Driven Project 4.7: But I Don't Like Writing! 4.8: Outline of a Functional Specification 4.9: Overview 4.10: Disclaimer 4.11: Author's Name 4.12: Scenarios of Typical Usage 4.13: Open Issues 4.14: Design and New Feature Ideas 4.15: One More Thing 4.16: Requirements Gathering in an Agile Project 4.17: The Three Cs 4.18: Card 4.19: Conversation 4.20: Confirmation 4.21: INVEST in Stories 4.22: Independent 4.23: Negotiable 4.24: Valuable 4.25: Estimable 4.26: Small 4.27: Testable 4.28: Product Backlog 4.29: SMART Tasks 4.34: Time-Boxed 4.36: Requirements Digging 4.39: Problems of Understanding 4.42: Analyzing the Requirements Display: Summaries Questions References
Iterative models are an software engineering model that takes a problem and creates a solution one step at a time. A team will take the known requirements and prioritize them based on the most important features to the customer. Each iteration of this process is viewed as a small project that brings constant small updates to a system. This model is implemented through evolutionary prototyping which prioritizes requirements as they are received. Hence allows for products to contain many new features as time progresses. A downside to evolutionary prototyping is the overly optimistic views about time, money, and progress. This model becomes sort of inefficient as more requirements are added. Although the downsides may weigh upon this implementation, it tends to work well with small, close teams. Although plan-driven models have worked well in the past, the main issue with them is risk. Risk can be in the form of schedule slips, project cancellation, etc. Agile Methodologies on the other hand recognize this and minimizes the risk. In the mid 90's a new lightweight-plan-driven model was created. This differed from the heavyweight-plan-driven because it required less documentation and few process controls for small to medium sized projects. The projects generated by the lightweight model tend to be used as smaller projects that provide services toward a bigger project. In early 2001 the Agile Manifesto was written. This was a description of values and 12 principles. The values will be lists at the bottom of the summary*. Another way to develop software is the eXtreme Programming(XP) method. It was created around 1995 and is described as a "lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software." The four fundamental ideas of this method is Heavy customer involvement, Continuous unit testing, Pair programming, and Short iteration cycles and frequent releases. The ideas around XP programming are what they say they are. There are a total of four main activities in XP: designing, coding, testing, and listening. Designing is creating structure that organizes the logic for the system. Coding is the main activity, and testing is very important for debugging. Listening involves gaining knowledge from your partner or the customer. XP is full of many standards, including its 12 practices(list below). The second agile methodology is Scrum, named after rugby, which means restarting the play after a rule is broken. Scrum is older than XP but the main difference is that scrum dev team typically consist of no more than 10 programmers. Similarly to other agile methods, Scrum puts an emphasis on small team efficacy and collective ownership.