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 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
Adaptive Methodologies using Agile Modeling
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 Simplicity Feedback Courage 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 Release-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 Scrum master Scrum team or teams 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 Parts of a 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 Management and Methodologies 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
Summary Slide Adaptive Approaches to Development The Agile Development Philosophy and Modeling Extreme Programming Scrum