ASD-Notes

My notes on Advanced-Software-Development

View the Project on GitHub angus-mackenzie/ASD-Notes

Agile Development

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

If you can dodge a wrench you can dodge a requirement

Pareto’s Law - 80/20 Rule

  • Typically 80% of your results may actually come from only 20% of your efforts!
    • Try to apply the 80/20 rule, and focus on the important 20% of effort that gets the majority of the results
  • The difficult question is can you see initially which 20% is the important 20%?
    • The 20% that will deliver 80% of the results
    • In very many cases, the answer is NO

Fixed Timescale

Time Waits for No-one

Agile Development Cycle

How Frequent is Frequent enough?

Done Means Done

Working Product at All Times

Prototypes

Continuous Integration

Nightly Builds

Extreme Programming

Principles

| Principle | Description| | — | — | | Incremental planning | Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development ‘Tasks’. | | Small releases | The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release. | | Simple Design | Enough design is carried out to meet the current requirements and no more. | | Test-First Development | An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented | | Refactoring | All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable | | Pair programming | Developers work in pairs, checking each other’s work and providing the support to always do a good job. | | | Collective ownership | The pairs of developers work on all areas of the system, so no islands of expertise develop and all the developers take responsibility for all of the code: anyone can change anything. | | Continuous integration | As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass. | | Sustainable pace | Large amounts of overtime are not acceptable as the net effect is often to reduce code quality & medium term productivity | | On-site customer | A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation |

System Metaphor in Extreme Programming

XP Planning Game

Stages

Phases of Release Planning Iteration Planning
Exploration Customer provides high-value requirements written as user stories Requirement translated into different tasks recorded on task cards
Commitment Developers commit to the functionality and date for next release Task assigned to programmers and time to complete estimated
Steering Plan can be adjusted, New requirements added, Existing requirements changed or removed Tasks are performed and the result is matched with the user story

Release Planning

Pair programming in XP

Testing

Testing in Agile Development

Testathon

Test First Development

  1. Quickly add test for new feature
    • Just enough code to fail
  2. Run your tests
    • The complete test suite or
    • (for speed) a subset, to ensure that new test does in fact fail
  3. Update the functional code to make it pass the new tests
  4. Run the tests again
    • If they fail update the functional code and retest
  5. Once the tests pass start over
    • Possibly refactoring any duplication duplication out of the design Test First Development

Test Driven Development

Initial Classes - Video Rental

Example

Refactored Classses Video Rental

Example

Why Refactor

Improves the Design of Software

Plan Driven

Agile specification and development

Specficiation and Dev

Architecture Change and Refactoring