Sei sulla pagina 1di 27

Agile Methods (part 1)

CSE300 Advanced Software Engineering

Objectives of the Session


By the end of this session students should have: A critical understanding of agile methods and their proposed benefits An understanding of techniques such as Dynamic System Development method (DSDM) and Adaptive Software Development An appreciation of Lean techniques and their application to Software Development

Manifesto for Agile Software Development


Statement of shared development values.

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Principles
1. Active user involvement is imperative - collaborative & cooperative approach by all
2. Requirements evolve but the timescale is fixed

3. Capture requirements at a high level - lightweight & visual


4. Develop small, incremental releases and iterate (frequent product delivery) 5. Complete each feature before moving on to the next 6. Apply the 80/20 rule - nothing is ever built right first time 7. Test throughout the project lifecycle test early and often

http://www.agilemanifesto.org/principles.html

Agile Alliance
To satisfy the customer through early and continuous delivery of valuable software http://www.agilealliance.org/home The Agile Alliance exists to help more Agile projects succeed and to help the enthusiasts start more Agile projects. user groups:

http://www.agilealliance.org/show/1641

What is Agile Software Development?


several methodologies - each a different combination of old and new ideas XP, Scrum, DSDM, ASD, FDD, etc
close collaboration between the programmer team and business experts frequent delivery of new product with clear business value methods for developing code and organising the team so that requirements change is acceptable

face-to-face communication during development (more efficient than documentation)


general information see http://www.agilealliance.org/library

Agile Modelling
effective modelling and documentation of software-based systems more effective than traditional models because they are just barely good enough, they don't have to be perfect apply the 80/20 rule a collection of values, principles, and practices for modelling software that can be applied to requirements, analysis, architecture, and design in a light-weight manner for more, see
http://www.agilealliance.org/article/articles_by_category/20

The Dynamic System Development Method - Principles


1. 2. 3. 4. Fitness for business purpose is the essential criterion for acceptance of deliverables (frequent delivery) Iterative and incremental development is necessary to converge on an accurate business solution All changes during development are reversible Scope and requirements are baselined before start

5.
6.

Testing is integrated throughout the life-cycle


Collaboration and cooperation between all stakeholders is essential
http://www.agilealliance.org/article/articles_by_category/54

DSDM
DSDM - more a framework than a method
Phase 1: The Pre-Project Phase 2: The Project life-cycle Stage 1: The Feasibility Study Stage 2: The Business Study

Stage 3: Functional Model Iteration (FMI)


3.1 Meta-data Model of Functional Model Iteration 3.2 Process-data Diagram of Functional Model Iteration Stage 4: Design and Build Iteration Stage 5: Implementation Phase 3: Post-project

DSDM
Pre-Project phase
project is identified, funding is worked out and set up, commitment is sought and ensured

Feasibility Study
assessment of whether DSDM is the right approach for the project definition of the problem assessment of the risks assessment of the technical feasibility of delivering a system.

DSDM
Business Study
- attention on the business processes affected and their information needs - use workshops to gain consensus of the priorities of the development.

Functional Model Iteration


- refining the business-based aspects of the system.

Design and Build Iteration


- the design prototype is built, tested and refined by users, user documentation produced

DSDM
Implementation
deliver tested system and documentation train implement review the business

Post-Project
keeps the solution operating effectively maintenance, fixes and enhancements using DSDM principles

XP - eXtreme Programming
eXtreme Programming is a discipline of software development based on principles of : communication simple designs, shared views simplicity of solution, then refactor feedback system , customer, team courage to refactor, throw away, persist respect from other four, from striving for quality
http://www.agilealliance.org/article/articles_by_category/12

XP - activities
XP describes four basic activities that are performed within the software development process Listening Designing Coding Testing significant points continuous testing, refactoring, pair programming, continuous integration, shared code ownership

Test-Driven Development
producing automated tests for production code, and using that process to drive design and programming. for every tiny bit of functionality in the production code, first develop a test that specifies and validates what the code will do. then produce exactly as much code as will enable that test to pass - then re-factor (simplify and clarify) both the production code and the test code.

TDD The Steps


1.
2.

3. 4. 5.

first step is to quickly add a test, basically just enough code to fail next, run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail then update your functional code to make it pass the new tests run your tests again - if they fail you need to update your functional code and retest look for and remove duplication - clean up the test code

The Steps - continued


6. the above sequence is repeated continuously throughout the programming process 7. each cycle has a duration of minutes, if you're not capable to fix a failing test within minutes, then throw away the test and the code that you wrote to satisfy the test and design a simpler test
http://www.agilealliance.org/article/articles_by_category/31

Adaptive Software Development


ASD practices driven by a belief in continuous adaptation a different philosophy and a different life cyclegeared to accepting continuous change as the norm. The static plan-design-build life cycle is replaced by a dynamic Speculate-Collaborate-Learn life cycle. A life cycle dedicated to continuous learning and oriented to change, re-evaluation, peering into an uncertain future, and intense collaboration among developers, management, and customers.

Speculate
project initiation to set the project's mission establish the time-box for the entire project

decide on the number of iterations and assign a time-box to each one


develop a theme or objective for each of the iterations developers and customers assign features to each iteration

Collaborate
technical team delivers working software project managers enable and support collaboration and concurrent development activities.

Learn
four general categories of things to learn about at the end of each development iteration:
quality from the customer's perspective quality from a technical perspective the functioning of the delivery team and the practices team members are using project status

Lean Software Development


In the last 25 years, lean thinking has had a tremendous global economic impact transformed how many industries operate by changing the way they think about their work and their people. Lean thinking works because it aims to: try and eliminate waste,

maximise the value of any given investment of people and productive resources by providing more meaningful, fulfilling work for the participants.
Lean Software Development applies lean thinking to the field of software development

Lean Software Development


not about what a team does practices it is about how a team decides what to do and when to do it. starts at the level of principles derived from Deming the application of lean thinking principles is different in each domain - it also maps differently to different software development contexts

practices appropriate to lean manufacturing or lean construction will not necessarily be appropriate to software development.

Lean Principles (adapted to software context)


1. Eliminate Waste - If the customer does not value it or if it slows down rapid delivery to the customer, it is waste. Don't do it. 2. Amplify Learning - Development is about discovery and feedback. Deliver in small batches to minimize uncertainty and permit the customer to steer. 3. Decide as Late as Possible - Delay commitment. Keep options open as long as possible to base decisions on the best possible information.

Lean Principles (Continued)


Deliver as Fast as Possible - The best measure of organizational maturity is the speed with which it can repeatedly and consistently deliver value. 6. Empower the Team - Teams should design their own processes. Provide the training and leadership they need. 7. Build Integrity In - Concurrent development enables rich communication, the essential ingredient for system integrity. 8. See the Whole - Decomposition leads to suboptimization. Focus on overall results.
5.

Lean Software Development


Lean Software Development is not a development methodology but rather a way to think about whatever approach a team uses. Lean Software Development thinking tools support team decisions about which practices are appropriate in their unique context. Agile methods, including Extreme Programming, Scrum, DSDM, and Adaptive Software Development, are all consistent with the way Lean Software Development applies lean thinking to developing software.
http://www.agilealliance.org/article/articles_by_category/40

Review
Manifesto Agile Alliance DSDM XP Test Driven Development Adaptive Software Development Lean Software Development

Potrebbero piacerti anche