9. Build Release and Dependency Management Flashcards
1
Q
why do we need build release and dependency management
A
- all projects depend on other software
- compiling dependencies may be slow and not completely automatable
- enables caching of ‘oven ready’ components
2
Q
Type of dependencies
A
- 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
- application
3
Q
Types of repositories
A
- public release repositories
- better for distribution to customers and for obtaining standard realise of 3rd party libraries - local
- pre-public stable versions of components
- hard to compile components
- special internal versions of 3rd party compontents
4
Q
why do we need to specify dependencies
A
- project almost always have transitive dependencies
- dependencies may be cyclic
- dependency resolution –> NP complete
- different strategies used to find satisfactory combination of dependencies
5
Q
good practices
A
- dependency resolution optimisation
- under constrained specification may result in incompatible combinations
- over constrained specification limits flexibility, require more effort to maintain - migrate to new release when available
- do not rely on transitive dependencies
6
Q
type of release
A
- composition
- schedule/intent
- snapshot
- incremental
7
Q
release branching
A
- allow team to prepare stable release
- only allowed to fix bugs, merged back to main
- new features to be developed in other branches
8
Q
types of API
A
private
published
public
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
10
Q
deprecating
A
- features left in place for compatibility reasons
2. removed from future releases
11
Q
documenting obsolete features
A
- scope
- release version containing new mechanism
- schedule for when deprecated will be removed
- explanation of why removed
- description of how to change dependant codes
12
Q
migration plan includes
A
- means to estimate duration of migration
summary of know issues with new release - data migration include necessary backups and alterations
- upgrade of dependencies of changed software
- how to adapt existing source code to use new API