10. Continuous Integration Flashcards

1
Q

problems in integration

A
  1. spend more time integrating than creating new features
  2. problems occur as software evolves due to concurrent development
  3. problems worsen when develop tries to:
    - integrate large change to code base
    - infrequent new feature integration
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

continuous-integration practices

A
  1. change management
    - maintain single source repository
    - everyone commit to main line everyday
    - every commit builds mainline
    - everyone can see what is happening
  2. quality assurance
    - automate the build
    - make build self testing
    - test in a clone of the repository
    - keep the build fast
  3. deployment
    - make it easy for anyone to get latest executable
    - automate deployment
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

late integration

A
  1. working on separate copy of source code for implementation
  2. considerable amount of conflict for merging
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

what is continuous integration

A
  1. split work into small changes
  2. integrate frequently
  3. limit effect of exponential rate of divergence of the trunk
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

feature branching option

A
  1. implement new feature on trunk with frequent small commit
  2. implement new feature on branch and merge frequently
  3. implement feature as a prototype branch, then re-implement feature on the trunk in small changes
  4. implement features as permanent branch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

maintain multiple continuous integration processes

A
  1. main line trunk development
  2. forked development for specified customer/purpose
  3. latest stable release only receive defect fixes
  4. significant feature branch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

monitoring and maintaining software quality

A
  1. detecting broken builds
    - system should be compiled from source in clone repository
    - automated regression test executed on complete system
    - static analysis checks performed to compare with benchmarks
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

preventing broken public builds (trunk)

A

flow…

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

preventing broken public builds (branches)

A

flow…

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

staging environment

A
  1. environment configured to replicate conditions that software will be used in
  2. configured with current hardware software dependencies
  3. changes need to be checked before release
  4. more than 1 staging environment may be needed.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

limitation of staging environment

A
  1. system distributed on too many computing nodes to test realistic scenarios
  2. system has too many simultaneous users
  3. too many diverse user types
  4. only one platform for software is available
  5. software dependencies cannot be accessed outside of production
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

monitoring and visibility

A

push notifications and broadcast mechanism

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

monitoring metrics

A
  1. unsuccessful builds
  2. average unsuccessful test
  3. time to build
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

why are fast build essential

A
  1. delays in completing also delays discovery of problems

2. developers deterred from making frequent commits as waiting for build to complete reduce productivity

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

continuous deployment

A
  1. automate deploying of software
  2. advantages:
    - ensures that deployment process is used regularly
    - different features can be deployed to differentiate users
How well did you know this?
1
Not at all
2
3
4
5
Perfectly