XP and Agile Flashcards
Why is Agile’s constant review process useful?
it’s more likely to produce a requirements analysis that is accurate to the customers desires
What is the Agile approach?
Put emphasis on the production of the code as opposed to creating vast amounts of documentation.
What are the 4 core values of the agile manifesto?
- Individuals and interactions over processes and tools
- People and their interactions drive success more than the strict of tools/adherence to processes. - Working software over comprehensive documentation
- Delivering functional software more valuable than producing extensive documentation that may not be directly useful. - Customer collaboration over contract negotiation
- Engaging with customers and responding to their needs is prioritised over sticking rigidly to initial agreements. - Responding to change over following a plan
- Adapting to changes, even late in the development process, is more important than adhering to a fixed plan.
What is XP?
Extreme programming (XP) is an Agile development approach that focuses on code development
What are the core features of XP?
- Requirements are expressed as ‘user stories’
- pair programming (programmers work in pairs)
- Tests are developed before code is written (test driven development)
- all tests must be successfully executed before code is released
- new code is then integrated and a new system release is built
- the new release becomes the working system
- Then you start this process again for each user story
What are the features of requirements analysis when using an Agile approach?
- User requirements are defined by user stories.
- User stories have to be independent, small, estimatable, testable and valuable to the customer.
- Independence means the stories can be developed in parallel.
- Small user stories means that progress can be measured more easily.
- Testable means that quality can be assured objectively.
What are user stories?
short descriptions of program functionality which allows the user to ‘do something’
What features should user stories have?
- Independent (should be implementable without reliance on other user stories, in practice this is difficult)
- Negotiable (Not all requirements written in original spec. always needs to be developed)
- Valuable (to the customer)
- Estimable (should be relatively easy to estimate them)
- Testable (in an objective fashion)
- Small ()
What are the advantages of user stories being independent:
- Low coupling
- Allows for concurrent development
- Scalable development (adding more developers)
What are the advantages of user stories being negotiable:
- By negotiating, a stakeholder may get
- Software at a cheaper price
- A useful working product developed on time
- Removing/changing aspects of story to make it easier quicker to implement
- Add/change functionality to make it more useful
- Something may be very difficult to implement but not very important
Why do user stories have to be valuable and how is this useful?
- Each user story needs to show value to the stakeholder, the value is visible to the customer
- It’s worth putting a metric on value
- if you give a value between 1-10 to each user story, it’s easy to decide which order to develop in.
- core essential story points can get a 10. If you run out of time, the most valuable user-stories will be completed. The value for each user story will be dependent on the customer.
What are the advantages of user stories being estimable
- Useful for scheduling
- Shorter user stories are easier to estimate
- User stories with less unknown code are easier to estimate (use popular APIs)
- User stories understood clearly by developer are easier to estimate
- Big user stories can be split to make this easier
What does agile use generally for estimation?
- Generally use poker planning to do estimation.
Why do user stories have to be small?
- Smaller modules are easier to estimate duration
- Reduces the risk
- Gives clear measure of progress
- Keep code simpler and easier to test
Why do user stories have to be testable?
Makes testing easier, as testing is not subjective but is quantifiable
- The login screen must look nice and be liked by most of the users
- hard to test whether this has been achieved as like is “subjective”
- The login screen must look nice and must score greater than 7/10 when we assess the screen using a random group of 20 patients
- Easier, as this is a quantifiable number and it’s objective if we’ve achieved this.
What are story points?
- Each user story has a defined size, measured in story points
- they help to estimate the size of user story in development time
Why are story points useful?
- They provide a relative estimation time (we can relatively measure a task by comparing it to other tasks)
- For a given team
- Using a particular programming environment
- Can be estimated using planning poker approach
- This is useful for whole project estimations
example: A user story of 10 points should take on average twice the time of one measured as 5 points but
- With the same level of developer
- Given the same conditions
- Given no dependency issues
What is the format for user story?
Give an example of a user story:
Uses format of “As a [user] i want to be able to [action] so i can [reason]”
- As a [registered patient] of the system I want to be able to [login] into the system. So I can [access my records]
What are criticisms of user stories?
- Generally capture functional instead (not non-functional requirements)
- They are too vague for a basis of contract
- Only suitable for highly experienced developers
- Size estimation ignores non functional requirements
Describe the agile XP planning process:
1) User stories are written by customers and developers
2) User stories are estimated by developers
3) User stories are prioritised
4) Project plan: When features be delivered and how often the project be iterated.
What is the XP agile development hierarchy?
- small user stories with high priority
- large user stories with high priority
- small user stories with low priority
- large user stories with low priority
What are the features of XP planning and testing?
- all high priority code needs testing properly before development of low priority code starts
- only code that has been fully tested is complete
What are the features of XP development?
- In each iteration a working copy of the code is developed for evaluation.
- software is released on a regular schedule (weekly, fortnightly)
- unit tests are developed by the development team
- acceptance tests, specified by the customer, can be script (user input, acceptable output), ideally automated
What are the issues with Agile development?
- feature creep can arise
- less documentation, meaning high communications overhead and more assumptions, more design contradictions
- onsight customers might want to keep adding functionality
- high risk of time or cost overrun