Midterm Flashcards
What does bad Software engineer procatices create?
- failed projects
- lost money
- stressed employees
- poor customer value
Name 5 items of a user story.
1) Role-Goal-Benefit
2) Notes
3) Definitions of Done
4) Tasks
5) Effort Estimate
Name 6 properties of a good user story.
Independent Negotiable Valuable to users or customers Estimable Small Testable
What does it mean for a user story to be independent?
- Little dependence between stories
- Keeps development flexible
- Makes estimation easier
What does it mean for a user story to be negotiable?
- Details are negotiated between developers and users
- Stories become reminders of what has been negotiated
What does it mean for a user story to be valuable to user/customer?
- Make sure customer can estimate value of a story
- Not intended to be valuable only yo developers
Who is a customer?
Purchaser: person who pays for the software.
User: person who uses the software.
What does it mean for a user story to be estimable?
- a developer should be able to estimate how lind a story should take to complete
- helps in planning
- problems:
lack of domain knowledge -> ask customer
lack of technocal knowledge -> burst up on tech
story is too big -> break it up
What does it mean for a user story to be small?
- stories should be “just the right size”
- rule-of-thumb: half a day to several days to implement
- too big:
- > estimate inacccurate + no value delivered until story is complete
- > compound suggests break it up
- too small:
- > writing down the story may take longer than implementing it
- > combine if too small
What does it mean for a user story to be testable?
- the story should have a test that goes with it to demonstrate that the story is implemented
- two types:
1) Automated
2) Manual
Describe the process of decomposing a user story.
- Look for “entities” and “responsibilities”.
- Relate the entities
- Identify veebs
- Build a diagram
Name and describe two common phases of Software Design.
1) Architectural Design
- determining which sub-system you need
2) Detailed design
- looking at the statistics and dynamic of your system
What is a aequence diagram?
Sequenced diagram is a diagram used to describe sequences of invocations between the objects that comprise the system.
Name 6 steps of refactoring.
1) Make sure all your tests pass
2) Identify the code smell
3) Determine how to refactor this code
4) Apply the refactoring
5) Run tests to make sure you didn’t break anything
6) Repeat until the smell gone
How to refactor magic numbers?
To refactor magic numbers replace it with a symbolic constant.
How to refactor repeated lines of code?
To refactor repeated lines of code extract method.
How to refactor same method in two classes?
To refactor same method in two classes, pull up method.
How to refactor almost duplicated code?
To refactor almost duplicated code, move to template method.
How to refactor long method?
To refactor ling method, do one of : Extract Method Replace Temp with Query Replace Method with Method Object Decompose Conditional Consolidate Conditional Expression
How to refactor complicated conditionals?
To refactor complicated conditionals, decompose conditional.
How to refactor switch statement/typed conditional?
To refactor switch statement/typed conditional, replace conditional with polymorphism.
How to refactor one class doing the work of two?
To refactor one class doing the work of two, extract class.
How to refactor data clump?
To refactor data clump, introduce parameter object.
How to refactor divergent changes?
To extract divergent changes, extract class.