agile web development c. daniel chase university of colorado at boulder
TRANSCRIPT
Agile Web DevelopmentAgile Web DevelopmentC. Daniel ChaseC. Daniel ChaseUniversity of Colorado at BoulderUniversity of Colorado at Boulder
Manifesto for Agile Manifesto for Agile Software DevelopmentSoftware Development
We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:Individuals and interactionsIndividuals and interactions over processes and toolsover processes and toolsWorking softwareWorking software over comprehensive documentation over comprehensive documentationCustomer collaborationCustomer collaboration over contract negotiation over contract negotiationResponding to Responding to
changechange over following a plan over following a planThat is, while there is value in the items onthe right, we value the items on the left more.That is, while there is value in the items onthe right, we value the items on the left more.
http://agilemanifesto.org//February 11-13, February 11-13,
20012001
Principles behind the Principles behind the Agile ManifestoAgile ManifestoWe follow these principles:We follow these principles:
Our highest priority is to satisfy the customer Our highest priority is to satisfy the customer through early and continuous delivery of through early and continuous delivery of valuable software.valuable software.
Welcome changing requirements, even late in Welcome changing requirements, even late in development. Agile processes harness change development. Agile processes harness change for the customer's competitive advantage.for the customer's competitive advantage.
Deliver working software frequently, from a Deliver working software frequently, from a couple of weeks to a couple of months, with a couple of weeks to a couple of months, with a preference to the shorter timescale. preference to the shorter timescale.
Principles behind the Principles behind the Agile ManifestoAgile Manifesto
Business people and developers must work Business people and developers must work together daily throughout the project.together daily throughout the project.
Build projects around motivated individuals. Build projects around motivated individuals. Give them the environment and support they Give them the environment and support they need, and trust them to get the job done.need, and trust them to get the job done.
The most efficient and effective method of The most efficient and effective method of conveying information to and within a conveying information to and within a development team is face-to-face development team is face-to-face conversation.conversation.
Working software is the primary measure of Working software is the primary measure of progress. progress.
Principles behind the Principles behind the Agile ManifestoAgile Manifesto
Agile processes promote sustainable Agile processes promote sustainable development. The sponsors, developers, and development. The sponsors, developers, and users should be able to maintain a constant users should be able to maintain a constant pace indefinitely.pace indefinitely.
Continuous attention to technical excellence Continuous attention to technical excellence and good design enhances agility.and good design enhances agility.
Simplicity--the art of maximizing the amount of Simplicity--the art of maximizing the amount of work not done--is essential. work not done--is essential.
Principles behind the Principles behind the Agile ManifestoAgile Manifesto
The best architectures, requirements, and The best architectures, requirements, and designs emerge from self-organizing teams.designs emerge from self-organizing teams.
At regular intervals, the team reflects on how At regular intervals, the team reflects on how to become more effective, then tunes and to become more effective, then tunes and adjusts its behavior accordingly. adjusts its behavior accordingly.
AuthorsAuthorsAgile AllianceAgile Alliance
Kent BeckKent Beck
Mike BeedleMike Beedle
Arie van BennekumArie van Bennekum
Alistair CockburnAlistair Cockburn
Ward CunninghamWard Cunningham
Martin FowlerMartin Fowler
James GrenningJames Grenning
Jim HighsmithJim Highsmith
Andrew HuntAndrew Hunt
Ron JeffriesRon Jeffries
Jon KernJon Kern
Brian MarickBrian Marick
Robert C. MartinRobert C. Martin
Steve MellorSteve Mellor
Ken SchwaberKen Schwaber
Jeff SutherlandJeff Sutherland
Dave ThomasDave Thomas
Agile MethodologiesAgile Methodologies
Agile ModelingAgile Modeling
Agile Unified Process (AUP)Agile Unified Process (AUP)
Agile Data MethodAgile Data Method
Dynamic Systems Development Method (DSDM)Dynamic Systems Development Method (DSDM)
Essential Unified Process (EssUP)Essential Unified Process (EssUP)
Extreme programming (XP)Extreme programming (XP)
Feature Driven Development (FDD)Feature Driven Development (FDD)
ScrumScrum
Agile Web TechniquesAgile Web Techniques
Source Code ManagementSource Code Management
Test Driven DevelopmentTest Driven Development
Unit TestingUnit Testing
Functional TestingFunctional Testing
Continuous IntegrationContinuous Integration
Design PatternsDesign Patterns
RefactoringRefactoring
Source Code Source Code ManagementManagement
Version ControlVersion Control
Release trackingRelease tracking
Development vs Production code linesDevelopment vs Production code lines
Test Driven Test Driven DevelopmentDevelopment
1.1. What does this section of code do?What does this section of code do?
2.2. Write the Test first!Write the Test first!
3.3. Write code to pass the testWrite code to pass the test
4.4. Repeat 1-3 as you add more operationsRepeat 1-3 as you add more operations
Test Driven Test Driven DevelopmentDevelopment
Unit TestingUnit Testing
Component levelComponent level
Finds basic logic & syntax errorsFinds basic logic & syntax errors
Functional TestingFunctional Testing
Application levelApplication level
Finds business rule & systemic problemsFinds business rule & systemic problems
Continuous IntegrationContinuous Integration
Automated Check-outAutomated Check-out
Automated BuildAutomated Build
Automated TestingAutomated Testing
Immediate Feedback for failuresImmediate Feedback for failures
RefactoringRefactoring
Refactoring improves the readability of codeRefactoring improves the readability of code
Does not fix bugs or add new functionality!Does not fix bugs or add new functionality!
Code smells (Duplicate code, large class or Code smells (Duplicate code, large class or method...)method...)
Test first!Test first!
Refactor codeRefactor code
Retest--should pass!Retest--should pass!
Design PatternsDesign Patterns
Most problems have been solved before and Most problems have been solved before and solutions optimizedsolutions optimized
Using standard constructs makes it easier for Using standard constructs makes it easier for both you & others to maintain codeboth you & others to maintain code
Object Oriented Programming (OOP)Object Oriented Programming (OOP)