9. Build Release and Dependency Management Flashcards

1
Q

why do we need build release and dependency management

A
  1. all projects depend on other software
  2. compiling dependencies may be slow and not completely automatable
  3. enables caching of ‘oven ready’ components
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Type of dependencies

A
  1. environmental
    - explicit
    explicitly documented in in configuration(needs to be known) eg. sdk version
  • implicit
    cannot be checked by the dependency management system eg. system libraries
  1. application
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Types of repositories

A
  1. public release repositories
    - better for distribution to customers and for obtaining standard realise of 3rd party libraries
  2. local
    - pre-public stable versions of components
    - hard to compile components
    - special internal versions of 3rd party compontents
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

why do we need to specify dependencies

A
  1. project almost always have transitive dependencies
  2. dependencies may be cyclic
  3. dependency resolution –> NP complete
  4. different strategies used to find satisfactory combination of dependencies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

good practices

A
  1. dependency resolution optimisation
    - under constrained specification may result in incompatible combinations
    - over constrained specification limits flexibility, require more effort to maintain
  2. migrate to new release when available
  3. do not rely on transitive dependencies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

type of release

A
  1. composition
  2. schedule/intent
    - snapshot
    - incremental
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

release branching

A
  1. allow team to prepare stable release
  2. only allowed to fix bugs, merged back to main
  3. new features to be developed in other branches
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

types of API

A

private
published
public

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

semantic versioning

A

format:
major.minor.incremental.[-tag]
eg. 4.0.3-SNAPSHOT

major: breaking change to published API
minor: non breaking feature addition
patch increase: non breaking bug fix changes
tags: release status

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

deprecating

A
  1. features left in place for compatibility reasons
  2. removed from future releases
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

documenting obsolete features

A
  1. scope
  2. release version containing new mechanism
  3. schedule for when deprecated will be removed
  4. explanation of why removed
  5. description of how to change dependant codes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

migration plan includes

A
  1. means to estimate duration of migration
    summary of know issues with new release
  2. data migration include necessary backups and alterations
  3. upgrade of dependencies of changed software
  4. how to adapt existing source code to use new API
How well did you know this?
1
Not at all
2
3
4
5
Perfectly