Lineart

Conquering Complex and Changing Systems
Object-Oriented Software Engineering
Art for
Chapter 10,
Software Configuration
Management
*
Con trol led item
*
CM Aggr egat e
Con figu rati on i tem
*
Ver sion
Pro moti on
Rel ease
*
Wor kspa ce
Rep osit ory
Figure 10-1. Configuration management concepts (UML class diagram).
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
2
A320:CM Aggregate
Fly-by-wire SW:CI
Fuselage:CI
Landing Gear:CM Aggregate
Wing:CI
Tire:CI
Figure 10-2. An example of CM aggregates and configuration items (UML object diagram).
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
3
A320:Baseline
First release
revised by
derived from
A320-200:Revision
derived from
Improved version
including winglets
A319:Baseline
A321:Baseline
124 seat variant
185 seat variant
Figure 10-3. Examples of baselines, revisions, and variants (UML object diagram). The A319,
A320, and the A321 are all based on the same design. They vary mostly by the length of their
fuselage.
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
4
Three-digit version identification scheme
<version> ::= <configuration item name>.<major>.<minor>.<revision>
<major> ::= <nonnegative integer>
<minor> ::= <nonnegative integer>
<revision> ::= <nonnegative integer>
MUE.0.0.1:Release
Alpha test release
MUE.1.0.0:Release
First major release
MUE.1.2.1:Release
Second minor release
with bug fixes
MUE.2.0.3:Release
Second major
release with three
series of bug fixes
Figure 10-4. Three digit version identification scheme (BNF and UML object diagram).
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
5
Main trunk
MUE.1.1:Release
CVS version identification scheme
<version> ::= <configuration item name>.<version identifier>
<version identifier> ::= <branch>.<revision>
<branch> ::= <version identifier>.<branch number> |
<branch number>
<branch number> ::= <nonnegative integer>
<revision> ::= <nonnegative integer>
revised by
MUE.1.2:Release
revised by
MUE.1.3:Release
merged with
released as
derived from
Branch 1.2.1
1.2.1.1:Release
revised by
1.2.1.2:Release
MUE.2.0:Release
Figure 10-5. CVS version identification scheme (UML object diagram). Branches are identified
with the version they were derived from followed by a unique number.
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
6
MUE .1.0 :Rel ease
app lied to
app lied to
das hedL ineF ix:C hang eSet
emp tyCl assF ix:C hang eSet
res ults in
res ults in
MUE .1.1 a:Re leas e
MUE .1.1 b:Re leas e
app lied to
app lied to
emp tyCl assF ix:C hang eSet
das hedL ineF ix:C hang eSet
res ults in
Figure 10-6. Change set
representation of the MUE
release history (UML object
diagram).
dashedLineFix:ChangeSet and
emptyClassFix:ChangeSet can
be applied to the
MUE.1.0:Release in arbitrary
order because they do not
overlap.
Bernd Bruegge & Allen Dutoit
res ults in
MUE .1.2 :Rel ease
app lied to
int erac tion Diag ram: Chan geSe t
res ults in
MUE .2.0 :Rel ease
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
7
The :DealerPC is the
machine
used by a
The :EClient allows
an expert
to part
order parts.
user to find dealer
parts by
The :DealerPC
make andhas often
The :Server enables identifier, vehicle
a higher
bandwidth
link
year,
and
order
history.
The
The :ServerHost
hosts
client to retrieve lists of
to the server.
high-volume
theparts
partsbycatalog
:HomePC is the
criteria and part :EClient is forThe
e.g.,PC
car
repair used
shops.
server. to order parts, clients,
machine
by a car
:De aler
entries,
owner to order parts.
and to track client
:Se rver Host
The :NClientThe
enables
a novice
:HomePC
is
activity.
:EC
lien
t
user to find
parts by to
description
connected
the server
and, in subsequent
via a releases,
modem. by
:Se rver
clicking on a vehicle map. The
:NClient is for the occasional
:Ho mePC
client, e.g., a car hobbyist.
:NC lien t
Figure 10-7. MyCarParts subsystem decomposition and hardware allocation (UML deployment
diagram).
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
8
NCl ient :CM Agg rega te
RAD :CM Agg rega te
Figure 10-8. Configuration items and CM
aggregates for myCarParts (UML object
diagram).
NCl ient RAD :CI
NCl ient UM: CI
NCL ient ODD :CI
ODD :CM Agg rega te
ECl ient :CM Agg rega te
ECl ient RAD :CI
ECl ient UM: CI
Use r Ma nual :CMAgg rega te
ECl ient ODD :CI
Ser ver: CM Agg rega te
Ser ver ODD: CI
Adm in M anua l:CI
SDD :CM Agg rega te
Pro toco l:CI
Dat a Sc hema :CI
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
9
Se rver Wor kspa ce
NC lien t RA D.2. 0: P romo tion
Te ch W rite r Wo rksp ace
Pr otoc ol.2 .0:P romo tion
NC lien t RA D.2. 0: P romo tion
NC lien t UM .2.0 :Pro moti on
Da ta s chem a.2. 1: P romo tion
Se rver .2.3 :Pro moti on
Ex pert Wor kspa ce
No vice Wor kspa ce
NC lien t RA D.2. 0: P romo tion
Pr otoc ol.2 .0:P romo tion
NC lien t.2. 3:Pr omot ion
Se rver .2.2 :Pro moti on
EC lien t RA D.1. 2: P romo tion
Pr otoc ol.1 .0:P romo tion
EC lien t.1. 5:Pr omot ion
Se rver 1. 4:Pr omot ion
Figure 10-9. Snapshot of the workspaces used by myCarParts developers (UML object diagram).
The Novice Workspace, the Tech Writer Workspace, and the Server Workspace contain promotions
related to the navigation map functionality. The Expert Workspace, however, contains older and
more stable versions. For all configuration items, version numbers of the form 1.x refer to the
promotions without navigation maps functionality whereas version numbers of the form 2.x refer to
the promotions containing partial or complete implementations of the navigation maps.
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
10
Novice Client Team
Server Team
Server.2.3:P
Quality Control
Team
NClient.2.4:P
Documentation
Team
NClientRAD.2.0:P
Test new
functionality
Repair
NClient.2.5:P
NClientUM.2.0:P
Test manual
Repair
NclientUM.2.1:P
Figure 10-10. Release process for the navigation map functionality of myCarParts.2.0 (UML
activity diagram). :P denotes a promotion, :R denotes a release. (continued on next slide)
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
11
Novice Client Team
Server Team
Quality Control
Team
Documentation
Team
NClientUM.2.1:P
Beta test
Repair
Repair
NClient.2.6:P
Server.2.4:P
Retest & Release
myCarParts.2.0:R
Figure 10-10 (continued from previous slide). Release process for the navigation map
functionality of myCarParts.2.0 (UML activity diagram). :P denotes a promotion, :R denotes a
release.
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
12
Ma in t runk
Se rver .1.5 :P
.. .
my CarP arts .2.0 :R
Se rver .2.4 :P
Server.2 .4
Navigatio n map release
Re spon se t ime bran ch
Se rver .1.5 .1.1 :P
.. .
Se rver .1.5 .1.7 :P
Figure 10-11. An example of branch
(UML object diagram, some promotions
Server.2 .5
were omitted for brevity, :P denotes a
Navigatio n map functio nality
promotion, :R denotes a release). On the
and imp rov ed resp on se
main trunk, developers add the
time fo r part retriev al
navigation map functionality to
myCarParts. On a concurrent branch,
Se rver .2.6 :P
developers improve the response time of
the server by integrating a cache between
Server.2 .6
the server and the database. The response
Impro ved respo nse time
time improvement is completed after the
fo r nav igation map
release of the navigation map
functionality and made available as a
patch.
Se rver .2.5 :P
my CarP arts .2.1 :R
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
13
DBI nter face .1.5
rev ises
pro cess Part Req( )
DBI nter face .2.4
Serv er.1 .5
Co mmo n p romo tion
rev ises
DBI nter face .1.5 .1.7
cac he
pro cess Part Req( )
pro cess MapR eq()
Serv er.2 .4
this meth od is added to
pro cess map requests
pro cess Part Req( )
is merg ed i nto
is merg ed i nto
Serv er.1 .5. 1.7
this meth od is changed to
access a cach e in stead
of direct DB accesses
DBI nter face .2.5
cac he
Figure 10-12. An
example of merge for
the DBInterface class
of the myCarParts
system (UML class
diagram).
pro cess Part Req( )
pro cess MapR eq()
rev ises
Serv er.2 .5
pro cessP artReq() is taken from 1 .5. 1.7
pro cessM apReq() is tak en fro m 2. 6
DBI nter face .2.6
Serv er.2 .6
pro cessM apReq() is ch anged to access
.
pro cess Part Req( ) the cache in stead o f th e DB directly
pro cess MapR eq()
cac he
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
14
Redundant team organization
Mac NClient:Variant
PC NClient:Variant
Mac GUI:CI
PC GUI:CI
Mac Parts Catalog:CI
PC Parts Catalog:CI
Mac Server Interface:CI
PC Server Interface:CI
Figure 10-13. Examples of redundant variants (UML object diagram). In the redundant team
organization, the myCarParts NClients for the Macintosh and the PC are realized independently.
(continued on next slide)
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
15
Single project organization
Mac NClient:Variant
PC NClient:Variant
Mac GUI:CI
Windows GUI:CI
Parts Catalog:CI
Mac TCP:CI
Server Interface:CI
PC TCP:CI
Figure 10-13 (continued from previous slide). Example of variants sharing configuration items
(UML object diagram). In the single project organization, the myCarParts NClients for the
Macintosh and the PC differ in their UI.
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
16
Any body
Con trol Boa rd
Dev elop er
Qua lity Con trol
Tea m
Req uest cha nge
Ass ess requ est
[in cons iste nt w ith goal s][co nsis tent wit h go als]
Rej ect requ est
App rove req uest
Ass ign chan ge
Imp leme nt c hang e
Val idat e ch ange
Figure 10-14. An example of change management process (UML activity diagram).
Bernd Bruegge & Allen Dutoit
Object-Oriented Software Engineering: Conquering Complex and Changing Systems
17