Agile development Flashcards

1
Q

what is agile SW development

A

put software being developed first
acknowledge that use requirements change
respond to changing needs quickly
advocates for regular software releases - users respond to these releases

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Agile manifesto key points

A

individuals and interactions over process and tools
working software over hella documentation
customer collaboration over contract negotiation
responding to change vs following a plan

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

12 agile principles

A
satisfy the customer
give workers the support they need and trust them
technical excellence
welcome changing requirements
face=to=face conversation
simplicity
self-organizing teams
working software
deliver frequently
business peolpe and devs work together
maintain constant pace
reflect on how to be more effective and adjust behavior
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explain the 80/20 rule (Pareto’s Law)

A

80% of results come from 20% of your effor and focus on the important 20%

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

how to deal with requirements in agile

A

capture requirements at a high level and on a piecemeal basis
- just in time for each feature to be developed
-the minimum to enable development and testing
understand enough to determine the scope and for high level budget estimates
captured in collaborative workshops so taht all team members understand the requirements - allows everyone to contribute

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

what are user stories

A

represent each user requirement as a user story
- more light weight and simpler than use cases
simple statement about what the user wants to do with a feature
business language and understandable to everyone

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

form of user stories

A

As a (user role)
I want to (goal)
so i can (reason)

focus on who what and why NOT HOW

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

How long should requirements (tasks) take

A

less than 16 hours

preferably 8 hours so progress can be measured daily

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

three basic steps in agile life cycle

A

analyse
develop
test

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

benefits of agile approach

A

reduced risk
increased value
more flexibility
better cost management

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What does DONE mean in agile

A

shippable

  • unit tests passed
  • code reviewed
  • acceptance criteria passed
  • non-functional requirements met
  • functional tests passed
  • product owner accepts user story
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

two main classes of prototypes

A

true prototype - test implementation to understand a problem before it is implemented for real
tracer bullets - intended to gradually turn into the final solution

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

continuous integration

A

continuously integrate changes - ensure that modules will fit together - product continues to work with all the changes
ensure that problems or regressions are caught early on

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

nightly builds

A

software should be rebuilt from scratch daily
and the result of the build should be an installable product image
build should include as many automated tests as possible to catch integration problems early
- if tests/build fail - fix first thing
- dont let anyone integrate changes after build succeeds again
- risk of bad changes accumulating

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

what is pair programming

A
programmers work in pairs, sit together to write every line of code
- 2 coders and 1 computer
- 1 person at keyboard and one suporting
- pairs created dynamically
egoless development
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Advantages of pair programming

A
informal review process
common ownership of code
share responsibility
spread knowledge
motivates refactoring
17
Q

how does pair programming affect productivity

A

similar productivity to two devs working independently - fewer false starts and less rework, less debugging
can help train inexperienced devs
pair for complex tasks

18
Q

challenges of pair programming

A
scheduling
constant communication
different skill levels
power dynamics
no time for self 
rotation lead to context switching
19
Q

challenge of code review

A

sloppy or superficial reviews
over reliance of developer on reviewer to catch minor issues
sunk cost - reluctant to tell devs to change something that they thought was already done

20
Q

test driven development

A

programming technique that ensure that code is thoroughly unit tested
if a test fails - you know what is causing the problem and what to fix
increased confidence that system meets requirements

21
Q

side effect of TDD

A

achieve 100% coverage test - every single line of code is tested
resulting tests are working examples for invoking the code - provides working spec for the code

22
Q

how is testing done in agile

A

testing is integrated throughout the life cycle
does not have separate test phase
devs write automated repeatable unit tests - testing done as part of the build
these actions keep the software in a releasable condition throughout development

23
Q

What is test first development

A

writing tests before code clarifies requirements that need to be implemented
tests are programs rather than data - executed automatically like Junit

24
Q

what is the customer’s involvement in testing

A

help develop acceptance tests for the stories implemented int the next release of the system
all new code is therefore validated to ensure that it is what the customer needs
customers have limited time available:
- cannot work full-time with dev team
- may feel that providing requirements was enough
- may be reluctant to get involved in the testing phase

25
Q

Test first development process

A

quickly add test for new feature - just enough for code to fail
run tests
update the functional code to make it pass new tests
run tests again
once tests are passed, start over

26
Q

What is test driven development

A

TDD = TFD + refactoring
write tests before functional code
small steps and a small bit of code at a time
devs refuse to write new function unless there is a test that fails because the function isn’t present

27
Q

TDD cycle steps

A

Think, test, code, refactor (code and refactor loop)

28
Q

The rules of test driven development

A

write new code only when an automated test fails
eliminate any duplication
-

29
Q

what makes good unit tests

A

run fast
run in isolation
use data to make them easy to read and understand
use real data when they need to - copies of production data
represent one step towards overall goal

30
Q

what is refactoring

A

systematic process of improving code without creating new functionality that can transform a mess into clean code and simple design

31
Q

benefits of refactoring code

A

improves design of the software
makes software easier to understand
helps find bugs
help you to program faster

32
Q

categories of refactoring

A
composing methods
moving features between objects
organizing data
simplifying conditional expressions
making method calls simpler
dealing with generalization