Midterm Flashcards

1
Q

What does bad Software engineer procatices create?

A
  • failed projects
  • lost money
  • stressed employees
  • poor customer value
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Name 5 items of a user story.

A

1) Role-Goal-Benefit
2) Notes
3) Definitions of Done
4) Tasks
5) Effort Estimate

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

Name 6 properties of a good user story.

A
Independent
Negotiable
Valuable to users or customers
Estimable
Small
Testable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What does it mean for a user story to be independent?

A
  • Little dependence between stories
  • Keeps development flexible
  • Makes estimation easier
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What does it mean for a user story to be negotiable?

A
  • Details are negotiated between developers and users

- Stories become reminders of what has been negotiated

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

What does it mean for a user story to be valuable to user/customer?

A
  • Make sure customer can estimate value of a story

- Not intended to be valuable only yo developers

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

Who is a customer?

A

Purchaser: person who pays for the software.
User: person who uses the software.

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

What does it mean for a user story to be estimable?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What does it mean for a user story to be small?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What does it mean for a user story to be testable?

A
  • the story should have a test that goes with it to demonstrate that the story is implemented
  • two types:
    1) Automated
    2) Manual
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Describe the process of decomposing a user story.

A
  • Look for “entities” and “responsibilities”.
  • Relate the entities
  • Identify veebs
  • Build a diagram
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Name and describe two common phases of Software Design.

A

1) Architectural Design
- determining which sub-system you need
2) Detailed design
- looking at the statistics and dynamic of your system

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

What is a aequence diagram?

A

Sequenced diagram is a diagram used to describe sequences of invocations between the objects that comprise the system.

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

Name 6 steps of refactoring.

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

How to refactor magic numbers?

A

To refactor magic numbers replace it with a symbolic constant.

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

How to refactor repeated lines of code?

A

To refactor repeated lines of code extract method.

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

How to refactor same method in two classes?

A

To refactor same method in two classes, pull up method.

18
Q

How to refactor almost duplicated code?

A

To refactor almost duplicated code, move to template method.

19
Q

How to refactor long method?

A
To refactor ling method, do one of :
Extract Method
Replace Temp with Query
Replace Method with Method Object
Decompose Conditional
Consolidate Conditional Expression
20
Q

How to refactor complicated conditionals?

A

To refactor complicated conditionals, decompose conditional.

21
Q

How to refactor switch statement/typed conditional?

A

To refactor switch statement/typed conditional, replace conditional with polymorphism.

22
Q

How to refactor one class doing the work of two?

A

To refactor one class doing the work of two, extract class.

23
Q

How to refactor data clump?

A

To refactor data clump, introduce parameter object.

24
Q

How to refactor divergent changes?

A

To extract divergent changes, extract class.

25
Q

How to refactor shotgun surgery?

A

To refactor shotgun surgery, move method/field.

26
Q

How to refactor needing comments to explain the code?

A

To refactor needing comments to explain the code, extract functionality/introduce assertion.
When you feel the need to write a comment first try to refactor the code so that any comment becomes superfluous.

27
Q

Define broken code.

A

If module doesn’t not have one of the following three functions it is broken:

1) To execute according to its purpose
2) To afford change
3) To communicate to its readers

28
Q

Name 3 cases when you don’t need to refactor code.

A

1) When the tests are failing
2) When you should just rewrite the code
3) When you have impending deadlines

29
Q

Name commons code smells.

A
  • Magic Numbers
  • Duplicated Code
  • Long Method
  • Complicated Conditionals
  • Switch Statements/Type Conditionals
  • Large class (doing the work of two)
  • Divergent Change
  • Shotgun Surgery
  • Comments
30
Q

Name 6 project risks.

A

1) User
2) Requirements: continually changing, inadequately identified; unclear, incorrect
3) Project Complexity - new technology, high technical complexity, immature technology, first use of technology
4) Planning and Control - poor process oversight
5) Team - lack of experience
6) Organizational environment - unstable organisation

31
Q

What is a software process?

A

A software process is a structured set of activities to develop a software system.

32
Q

Name and describe software process models.

A

1) Waterfall model - separate and distinct phases of specification and development
2) Spiral - incremental prototyping with risk management
3) Agile models/principles - iterative approach with high customer communication

33
Q

Name steps of waterfall software process model and tell what benefits and drawbacks it has.

A

Waterfall Model:
requirements design coding testing maintenance
Benefits:
- Good for well-understood, complex projects (tackles all planning up front, no midstream changes = efficient process)
- Provides support for an inexperienced team (easy-to-follow model, slow progress, reviews at each step)
Drawbacks:
- Getting requirements right up front
- Hard to manage risks
- Reactive to errors but not to changing requirements.

34
Q

What are the benefits and drawbacks of spiral model?

A

Benefits:
- Manages risk by repeated prototyping
- Requirements changes incorporated iteratively
Drawbacks:
- High administrative overhead
- Can be overly conservative if you have high confidence in the project outcome

35
Q

What is the goal of agility?

A

To develop software in the face of changing environment and constrained resources.

36
Q

What are advantages and disadvantages of Agile models?

A
Advantages:
- Lower risk
- Close customer involvement
- Better visibility
- Compliant with changes
Disadvantages:
- Harder to enforce with inexperienced programmers
- Close customer involvement
- Hard to estimate completion schedule
- Increases the risk of feature creep
- Can be inefficient
37
Q

What are advantages and disadvantages of Test-Driven Development?

A
Advantages:
- Maintainable, Flexible, Easily Extensible
- Clean Interface
Disadvantages:
- Big time investment
- Additional Complexity
- Design Impacts
- Continuous Tweaking
38
Q

Name roles, ceremonies and artifacts of scrum framework.

A
Roles:
- Product Owner
- Scrum Master
- Team
Ceremonies:
- Sprint Planning
- Daily Scrum Meet
- Sprint Review
- Sprint Retrospective
Artifacts:
- Product Backlog
- Sprint Backlog
- Burndown Charts
39
Q

What is the role of product owner in scrum process?

A
  • Defines the features of the product
  • Prioritizes features according to market value
  • Adjusts features and priority every iteration, as needed
40
Q

What is the role of Scrum Master in scrum process?

A
  • Facilitates Scrum process
  • Helps resolve impediments
  • Shields team from external interferences
  • Not a “real manager”, he serves the team