160 likes | 177 Views
Explore the principles and methodologies of adaptive approaches in agile development, including Agile Modeling, Extreme Programming, Scrum, and more. Learn how to navigate uncertainty, prioritize user collaboration, and effectively manage project time, scope, cost, and communication.
E N D
Current Trends in Systems Develpment Satzinger, Jackson, and Burd Object-Orieneted Analsys & Design Chapter 14
Adaptive Approaches to Development • Allow for uncertainty • Use empirical controls • Describe processes that are variable and unpredictable • Monitor progress and make corrections on the fly • Share the following characteristics • Less emphasis on up-front analysis, design, and documentation • More focus on incremental development • More user involvement in project teams • Reduced detailed planning (used for near-term work phases only) • Tightly controlled schedules by fitting work into discrete time boxes • More use of small work teams that are self-organizing
The Agile Development Philosophy and Modeling • Agile Development • A philosophy and set of guidelines for developing software in an unknown, rapidly changing environment • Requires agility - being able to change direction rapidly, even in the middle of a project • Agile Modeling • A philosophy about how to build models, some of which are formal and detailed and others sketchy and minimal
The Agile Development Philosophy and Values • Responding to change over following a plan • An agile project is chaordic - both chaotic and ordered • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation
Agile Modeling Principles • AM is about doing the right kind of modeling at the right level of detail for the right purposes • Use models as a means to an end instead of building models as end deliverables • Does not dictate which models to build or how formal to make those models • Has basic principles to express attitude that developers should have as they develop software
Extreme Programming • An adaptive, agile development methodology created in the mid-1990s • Extreme programming • Takes proven industry best practices and focuses on them intensely • Combines those best practices (in their intense form) in a new way to produce a result that is greater than the sum of the parts
XP Core Values • Communication • In open, frequent verbal discussions • Simplicity • In designing and implementing solutions • Feedback • On functionality, requirements, designs, and code • Courage • In facing choices such as throwing away bad code or standing up to a too-tight schedule
Some XP Practices • Planning • Users develop a set of stories to describe what the system needs to do • Testing • Tests are written before solutions are implemented • Pair programming • Two programmers work together on designing, coding, and testing • Refactoring • Improving code without changing what it does • Owning the code collectively • Anyone can modify any piece of code • Continuous integration • Small pieces of code are integrated into the system daily or more often • System metaphor • Guides members towards a vision of the system
XP Project Activities • System-level activities • Occur once during each development project • Involve creating user stories to planning releases • Release-level activities • Cycle multiple times - once for each release • Are developed and tested in a period of no more than a few weeks or months • Iteration-level activities • Code and test a specific functional subset in a few days or weeks
Scrum • A quick, adaptive, and self-organizing development methodology • Responds to a current situation as rapidly and positively as possible • A truly empirical process control approach to developing software
Scrum Philosophy • Responsive to a highly changing, dynamic environment • Focuses primarily on the team level • Team exerts total control over its own organization and work processes • Uses a product backlog as the basic control mechanism • Prioritized list of user requirements used to choose work to be done during a Scrum project
Scrum Organization • Product owner • The client stakeholder for whom a system is being built • Maintains the product backlog list • Scrum master • Person in charge of a Scrum project • Scrum team or teams • Small group of developers • Set their own goals and distribute work among themselves
Scrum Practices • Sprint • The basic work process in Scrum • A time-controlled miniproject • Firm 30-day time box with a specific goal or deliverable • Parts of a sprint • Begins with a one-day planning session • A short daily Scrum meeting to report progress • Ends with a final half-day review
Project time management Smaller scope and focused on each iteration Realistic work schedules Project scope management Users and clients are responsible for the scope Scope control consists of controlling the number of iterations Project cost management More difficult to predict because of unknowns Project communication management Critical because of open verbal communication and collaborative work Project quality management Continual testing and refactoring must be scheduled Project risk management High-risk aspects addresses in early iterations Project human resource management Teams organize themselves Project procurement management Integrating purchased elements into the overall project Verifying quality or components Satisfying contractual commitments Project Management and Methodologies
Summary Slide • Adaptive Approaches to Development • The Agile Development Philosophy and Modeling • Extreme Programming • Scrum