What are the main components of an user story?
-User requirements
-breakdown of them into implementation tasks.
What is refactoring?
What is refactoring?
What are some examples of refactoring?
re-organization of a class hierarchy to remove duplicate code
tidying up and renaming attribute to make them easier to understand
replacement of inline code with method calls.
What is test-first development?
Writing out the test cases before you start coding. This clarifies the requirements to be implemented.
What is done after every release with test-first development?
Automated test harnesses are used to run all component test each time that a new release is built.
Problems with test-first development
-Programmers prefer programming to testing
- it is difficult to judge the completeness of a set of tests. Although you may have a lot of system tests, your test set may not provide complete coverage.
- increases dev time
What is pair programming?
What are the benefits of pair programming?
This helps develop common ownership of code
serves as an informal review process (code is looked at by more than 1 person)
Sharing of knowledge
Not necessarily inefficient
What is scrum?
Agile method that focuses on managing iterative development.
What are the three phases of scrum?
What is a scrum master?
Facilitator who arranges daily meetings, tracks the backlog of work to be done, records decisions, measure progress against the backlog, and communicates with customers and managements outside of the team.
XP and Agile principles:
People,not process, are supported through pair programming, collective ownership and a process that avoids long working hours.
Maintaining simplicity through constant refactoring of code.
Customer involvement means full-time customer engagement with the team.
Change supported through regular system releases.
Incremental development is supported through small, frequent system releases
Problems with XP:
It can be difficult to keep the interest of customers who are involved in the process.
Team members may be unsuited to the intense involvement that characterizes agile methods.
Prioritizing changes can be difficult where there are multiple stakeholders.
Maintaining simplicity requires extra work.
Contracts may be a problem as with other approaches to iterative development.