5. Time and Change Management Flashcards

1
Q

Describing a task

A
  1. unique identifier
  2. longer label description
  3. list of concrete task outcomes
  4. list of deliverables
  5. task dependencies
  6. estimated duration
  7. task lead, sub-team
  8. risk
  9. history of progress in completing tasks
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Task duration estimation problems

A
  1. complexity of the task
  2. political priority
  3. availability of clear outcome for the task, by which progress is measured
  4. availability of software metrics on which to base estimates
  5. availability of previous similar tasks to base estimates
  6. experience of the team making estimates based on the previous task
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Estimating Task

A
  1. estimating task is dificult
    - some say is fruitless
    - necessary for budgeting and wider planning
    - help identify poorly understood tasks and force
    refinement
  2. various methods for estimation
    - dephi
    - market testing
    - empirical
    - algorithmic
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Estimating difficulty scales

A

linear
fibonacci 1, 2, 3, 5, 8, 13, 21

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

Project velocity

A
  1. amount of work during a single sprint
    - predict the velocity of an iteration
    - estimate the number of iterations
  2. keep track using burndown chart
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Problem: parallel development

A
  1. project team permits uncontrolled change to master copy
  2. no agreed system to preserve a previous working version of master copy
  3. team does not have procedure to notify others on changes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Change control items

A
  1. source code files
  2. configuration files
  3. build scripts
  4. default app config files
  5. user documentation
  6. requirements specifications
  7. version control tool config
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Non-change control items

A
  1. compiled binaries
  2. 3rd party library
  3. compiled document formats eg pdf
  4. auto-generated source code file
  5. client-side IDE config
  6. log files
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Revision/ version/source change/ control system/ repositories

A
  1. software tool for maintaining the history of changes to a set of controlled items
  2. core workflow
    - make local changes
    - receive update from remote repository
    - resolve conflict
  3. submit local change to remote repository
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Types of version control system

A

centralized
distributed

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

commits/ changes/ revisions comprises of:

A
  1. unique id
  2. id of parent commit
  3. changes to a set of changes control items
  4. any added change control items
  5. any removed change control items
  6. meta data –> change author, time stamp, log message
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Why is Commit Id needed

A
  1. need a way to uniquely reference a commit within repository
  2. centralised system like subversion use global revision number that gets incremented after every one commit
  3. distribute system relies on one-way hash function to generate a unique fixed-length Digest of the content of the commit

hash(parent_id, author, timestamp, message, changes) = fixed_length_digest

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

Commit log messages

A
  1. teams agree their own standards
  2. general good practices
    - describe purpose of commit
    - avoid multiple purposes
    - explain why commit is made and link to issue
    - explain how commit addresses the issue
    - short meaningful title
  3. configure message editor in git terminal to implement commit messages for consistency
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is Branching, what is it useful for

A
  1. practice of maintaining multiple development lines based on a common history within single controlled repository
  2. useful for:
    - experimenting with the implementation of new features
    - undertaking a substantial reorganization
    - supporting a specialized variant
    - creation of a release
  3. different branching strategies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Trunk based development

A
  1. clearer visibility of progress
  2. reduce risk of merge conflict
  3. requires developers to break changes to master into smaller increments
  4. increased risk of broken code in master
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Feature branching

A
  1. greater freedom to develop new features in isolation
  2. convenient for managing code reviews
  3. encourage longer period between integration
17
Q

Stage branching

A
  1. allow changes to be tested in UAT environment before going live
  2. change cannot be merged directly to deployment
  3. may configure for every feature branch
18
Q

Naming convention

A
  1. follow convention for common branches
    - master/trunk/main
    - UAT/staging/preproduction
    -deployment/production
  2. use hierarchical naming
    - eg. feature/webapp/spash…
19
Q

Branching strategies

A
  1. collection of branching practices
  2. standard published strategies
    - GitHub Flow
    - Git flow
    - GitLab Flow
  3. managing branch growth
    - delete branch
    - commit squashing
20
Q

Release and dependency management

A

break codes into smaller modules with separate compilation pipelines

agree and configure a release management process for each module using a release repository