04 - agile software configuration management

52
AGILE SOFTWARE CONFIGURATION MANAGEMENT

Upload: sergii-shmarkatiuk

Post on 18-May-2015

1.388 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 04 - Agile Software Configuration Management

AGILE SOFTWARE CONFIGURATION

MANAGEMENT

Page 2: 04 - Agile Software Configuration Management

2

INTRODUCTIONGeneral conventions and ideas

Page 3: 04 - Agile Software Configuration Management

3

𝑠𝑐𝑜𝑝𝑒→∞

Page 4: 04 - Agile Software Configuration Management

4

CONNECTION BETWEEN:1. AGILE-METHODOLOGIES AND CONFIGURATION

MANAGEMENT PRACTICES

2. TOOLS UTILIZED BY SOFTWARE CONFIGURATION MANAGEMENT PRACTICES

GOAL

Version control

Build & deployment manageme

nt

Continuous integration

Release manageme

nt

Versions numbering

scm practices

Agile SCM

Page 5: 04 - Agile Software Configuration Management

5

NARRATION

FROM SIMPLE TO COMPLEX…

Page 6: 04 - Agile Software Configuration Management

6

NARRATION

…WITH SIMULTANEOUS ELIMINATION OF EMERGING

CONTRADICTIONS

Page 7: 04 - Agile Software Configuration Management

7

REPRESENTATION

STREAMLINE DIAGRAMS

Page 8: 04 - Agile Software Configuration Management

8

REPRESENTATION

STREAMLINE DIAGRAMS

Page 9: 04 - Agile Software Configuration Management

9

REPRESENTATION

STREAMLINE DIAGRAMS

Page 10: 04 - Agile Software Configuration Management

10

REPRESENTATION

STREAMLINE DIAGRAMS

Page 11: 04 - Agile Software Configuration Management

11

STREAMLINE DIAGRAMS

branches

tagsbuilds

releases

mergesdirectoriescommits

REPRESENTATION

Page 12: 04 - Agile Software Configuration Management

12

BRANCHES INHERITANCE

/1

/2

/1.1

/2.0/1.0

Page 13: 04 - Agile Software Configuration Management

13

BUILDING FROM BRANCH

1.0 1.1 1.2

/1

Page 14: 04 - Agile Software Configuration Management

14

EXISTING VERSION NUMBERING APPROACH

[major].[minor].[build]

1.2.3

ITERATIONS

ARCHITECTURE

CONCEPTSPORTING

MARKETING

BUILD

Page 15: 04 - Agile Software Configuration Management

15

SIMILAR IDEAS

http://www.cmcrossroads.com/bradapp/acme/branching/

2. Configuration management patterns:

http://www.infoq.com/articles/agile-version-control

1. Version control for multiple agile teams:

Page 16: 04 - Agile Software Configuration Management

16

SIMPLEST SCENARIO«2 days for release »

Page 17: 04 - Agile Software Configuration Management

17

SIMPLEST SCENARIO

After several subsequent commits developers want to build application

Why?1. It implements functional requirements

(bugs/features) or performance requirements

2. Build is accessible by the end user: Building standalone application Deployment of web-application Gathering metrics and statistics (integration

build)

Page 18: 04 - Agile Software Configuration Management

18

SIMPLEST SCENARIO

Then there is need to make a release Why? Release is a special type of a build But it has specific features:

1. Full implementation of requirements set2. Quality3. Usability

Page 19: 04 - Agile Software Configuration Management

19

SIMPLEST SCENARIO

SIMPLEST SCENARIO IS……THE CASE WHEN ALL THESE STEPS DOES

NOT REQUIRE TOO MUCH EFFORT

«2 DAYS FOR RELEASE»

Page 20: 04 - Agile Software Configuration Management

20

SIMPLEST SCENARIO

? ? ?

!release

/trunk

1 2 3 ? ? ?1.0 1.1 1.2

Page 21: 04 - Agile Software Configuration Management

21

MORE COMPLEX EXAMPLEExtending the scope

Page 22: 04 - Agile Software Configuration Management

22

IMAGINE …

YOU NEED TO STABILIZE YOUR RELEASE

and

PROVIDE SIMULTANEOUS DEVELOPMENT OF ANOTHER APPLICATION VERSION

Page 23: 04 - Agile Software Configuration Management

23

?

BRANCHING FOR RELEASE

? ? ?

!release

/trunk

1 2 3

? ? ?1.0 1.1 1.2

!merge

? ? ?2.0 2.1

/1.x

2.32.2

Page 24: 04 - Agile Software Configuration Management

24

BRANCHING FOR RELEASE

DID YOU NOTICE?

INCONSISTENCY IN VERSIONS NUMBERING!

IT MAKES SENSE TO SEPARATE DEVELOPMENT IN TRUNK AND RELEASE STABILIZATION

Page 25: 04 - Agile Software Configuration Management

25

BRANCHING FOR RELEASE

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

? ? ?4 5

/1.x

6

? ?2.0 2.1

? ?7 8

/2.x

Page 26: 04 - Agile Software Configuration Management

26

EXAMPLE EVEN MORE COMPLEXParallel branching

Page 27: 04 - Agile Software Configuration Management

27

BRANCHING FOR RELEASE

YOU WILL NEED TO BE ABLE TO GO TO THE RELEASE STABILIZATION ANYTIME

and

DO NOT INTERRUPT ANY OTHER DEVELOPMENT OR RELEASE STABILIZATION

Page 28: 04 - Agile Software Configuration Management

28

/1.x

/2.x

BRANCHING FOR RELEASE

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

? ? ?4 5 6

? ?2.0 2.1

? ?1.3 2.2

0.1 0.2 0.3 0.4 0.5 0.6

Page 29: 04 - Agile Software Configuration Management

29

BRANCH TYPES

It’s time to think about branch types!

?

Page 30: 04 - Agile Software Configuration Management

30

BRANCH TYPES

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

? ? ?4 5 6

? ?2.0 2.1

? ?1.3 2.2

/1.x

/2.xrelease branch

release branch

no type(it’s just trunk)

x.x

x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8

Page 31: 04 - Agile Software Configuration Management

31

EXAMPLE OF THE CASE, WHEN BRANCHES BEGIN TO GROW BY THEMSELVES.

Page 32: 04 - Agile Software Configuration Management

32

BRANCH TYPES

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

? ? ?4 5 6

? ?2.0 2.1

? ?1.3 2.2

/1.x

/2.x

x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8

incompatible changes

cannot merge

Page 33: 04 - Agile Software Configuration Management

33

BRANCH TYPES

Incompatible changes means:changes cannot be easily merged to

the parent branchExample:

deep refactoring (files hierarchy changes)

serious architecture/application structure modification

rewriting application or its part from scratch

Page 34: 04 - Agile Software Configuration Management

34

BRANCH TYPES

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

?4

? ?2.0 2.1

?1.3

/1.x

/2.x

x.1 x.2 x.3 x.4 x.5

/?

cannot merge

/1.x.x

0.x.x

release branch

release branch

support branch

0.x.1 0.x.2 0.x.3 0.x.4 0.x.5

/0.1.x

/0.2.x

0.1.0 0.1.1 0.1.2

0.2.0 0.2.1

Page 35: 04 - Agile Software Configuration Management

35

BRANCH TYPES

/trunk

/0.1.x

/0.2.x

/1.x.x

/0.3.x

/1.0.x

support branch

release branch

Page 36: 04 - Agile Software Configuration Management

36

SUPPORT VS RELEASE BRANCH

Does not allow merge with parent branch

Exists forever

Child branches are allowed

Cannot have another support branch as child

Deprecates merging with child branch

Allows merge with parent branch

Exists only until stable version is released

Child branches are not allowed

Support branch Release branch

Page 37: 04 - Agile Software Configuration Management

37

x.5x.3

BRANCH TYPES

/trunk

?1x.1

x.0 x.2 x.4

x.7 x.9

x.11

x.6 x.8

x.10experimental branch

Page 38: 04 - Agile Software Configuration Management

38

EXPERIMENTAL VS RELEASE BRANCH

Does not allow child branches

Uses strict branch name. Example: 1.0.x

Uses own scope of builds numbering

Recommended merging approach: after each build/release

Allows any number of child branches

Name is not restricted at all. Example: new_eng_test

Shares scope of builds numbering between all relative branches

No recommended merging approach

Release branch Experimental branch

Page 39: 04 - Agile Software Configuration Management

39

CODEBASE INHERITANCE

/trunk

/0.1.x

/1.x.x

/0.2.x

/2.x.x

0.x.x

latest development

Page 40: 04 - Agile Software Configuration Management

40

CODEBASE INHERITANCE

Latest development should reside in trunk

Page 41: 04 - Agile Software Configuration Management

41

CODEBASE INHERITANCE

/trunk

/1.x.x

/3.x.x

/2.x.x

4.x.x3.x.x2.x.x1.x.x

Page 42: 04 - Agile Software Configuration Management

42

TYPES OF BUILDS

releases

alpha release

(AR)

beta release

(BR)

release candidate

(RC)stable (ST)

builds

pre-alpha (PA) alpha (A) beta (B)

Page 43: 04 - Agile Software Configuration Management

43

SCM IN ACTION

/1.x.x

/1.0.x

1.x.x 2.x.x

1.x.0

1.x.1

1.x.2

1.x.3

1.x.4

2.x.0

2.x.1

1.x.5 2.x.2

/trunk

PA

A

Bbuilds

AR

BR

RC

ST

releases

1.0.0

1.0.1

1.0.2 1.0.3

1.0.4

Page 44: 04 - Agile Software Configuration Management

44

SCRUM AND SCM

1.x.0 1.x.1 1.x.2

/trunk

1.x.3 1.0.0 1.0.1

sprint backlog

user stories

/1.0.x

demoPA/A AR/BR

Page 45: 04 - Agile Software Configuration Management

45

SOURCE CODE REPOSITORY DIRECTORIES HIERARCHY

Page 46: 04 - Agile Software Configuration Management

46

DIRECTORIES HIERARCHYPROJECT

Page 47: 04 - Agile Software Configuration Management

47

DIRECTORIES HIERARCHYTAGS

Page 48: 04 - Agile Software Configuration Management

48

DIRECTORIES HIERARCHYSUPPORT BRANCHES

Page 49: 04 - Agile Software Configuration Management

trunkPA

A

B

/tags/builds

AR

BR

RC

ST

/tags/releases

1.x.0

1.x.1

1.x.2

1.x.3

2.x.1

1.x.5

1.x.4

2.x.2

2.x.0

/branches/maintenance/versions/1.x.x

/branches/releases/1.0.x

1.0.1

1.0.2 1.0.3

1.0.0

1.0.4

1 12 39 52 73 79 93 112 126 139 155 170 193 201 215 230140

1.x.x 2.x.x

Номера ревизий

49

Page 50: 04 - Agile Software Configuration Management

Afterword

AFTERWORD50

Page 51: 04 - Agile Software Configuration Management

51

Thank you for attention!

Page 52: 04 - Agile Software Configuration Management

52

USEFUL LINKS

1. http://www.infoq.com/articles/agile-version-control - agile version control

2. http://svnbook.red-bean.com/ - official subversion reference/book “Version Control with Subversion”

3. http://www.ericsink.com/ - one of the best blogs about version control

4. http://www.versioncontrolblog.com/ - another great blog about version control

5. http://better-scm.berlios.de/comparison/comparison.html - VCS comparison table

6. http://www.cmcrossroads.com/ - biggest resource about SCM

7. http://www.infoq.com/news/2009/03/Continuous-Deployment - about continuous deployment