21.01.2022 Views

Sommerville-Software-Engineering-10ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

736 Chapter 25 ■ Configuration management

Codeline (A)

Baseline - V1

A

A1.1

A1.2 A1.3

A B1.2 C1.1

Figure 25.4 Codelines

and baselines

Codeline (B)

B B1.1 B1.2 B1.3

Codeline (C)

C C1.1 C1.2 C1.3

Libraries and external components

L1 L2 Ex1 Ex2

L1 L2 Ex1

Baseline - V2

A1.3 B1.2 C1.2

L1 L2 Ex2

Mainline

2. Change history recording The VC system keeps records of the changes that have

been made to create a new version of a component from an earlier version. In

some systems, these changes may be used to select a particular system version.

This involves tagging components with keywords describing the changes made.

You then use these tags to select the components to be included in a baseline.

3. Independent development Different developers may be working on the same

component at the same time. The version control system keeps track of components

that have been checked out for editing and ensures that changes made to a

component by different developers do not interfere.

4. Project support A version control system may support the development of several

projects, which share components. It is usually possible to check in and

check out all of the files associated with a project rather than having to work

with one file or directory at a time.

5. Storage management Rather than maintain separate copies of all versions of a

component, the version control system may use efficient mechanisms to ensure

that duplicate copies of identical files are not maintained. Where there are only

small differences between files, the VC system may store these differences

rather than maintain multiple copies of files. A specific version may be automatically

re-created by applying the differences to a master version.

Most software development is a team activity, so several team members often

work on the same component at the same time. For example, let’s say Alice is making

some changes to a system, which involves changing components A, B, and C. At

the same time, Bob is working on changes that require making changes to components

X, Y, and C. Both Alice and Bob are therefore changing C. It’s important to

avoid situations where changes interfere with each other—Bob’s changes to C overwriting

Alice’s or vice versa.

To support independent development without interference, all version control

systems use the concept of a project repository and a private workspace. The project

repository maintains the “master” version of all components, which is used to create

baselines for system building. When modifying components, developers copy

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!