You are on page 1of 19

0721421 - Software Reengineering

Dr. Said Ghoul,


Professor

Philadelphia University

Copyright © Ali Aryal (2019)


Chapter 2

Software change management/


Software Configurations Management (SCM)

Content
Concepts in SCM
versioning
change control, and
future trends

Note: Methods formalization and code examples are


provided in the classroom
Copyright © Ali Aryal (2019)
Concepts in SCM

Definitions

• Configuration is a set of “software objects” required to build


a software system.

• Version is a configuration item state.


• Release is a delivered (deliverable) version

SCM is a discipline to control and manage the evolving
configuration of software systems.

• Repository. Library of configuration items (e.g. files), providing


version control.

Copyright © Ali Aryal (2019)


Concepts in SCM

• Configuration consists of
a system model (aggregation of components)
version selection rules (appropriate version of each component)

A 1.0 1.1 1.2

B 1.0 1.1

C 1.0 1.1
Copyright © Ali Aryal (2019)
1.2
Versioning

Product space
Software objects
Relationships
Representations

Version space
Versions
Deltas
Version graphs
Interplay with product space

Copyright © Ali Aryal (2019)


Versioning

Product Space

• Software objects are results of development or maintenance


activity.

• Relationships connect software objects


Composition
Dependency

• Representations:
Modules with dependencies
File system structure
Tree structure with typed objects and relationships
Dependency graph
Copyright © Ali Aryal (2019)
Versioning

Representations of Product Space

Copyright © Ali Aryal (2019)


Versioning

Representations of Product Space

Copyright © Ali Aryal (2019)


Versioning

Representations of Product Space

Copyright © Ali Aryal (2019)


Versioning

Representations of Product Space

Copyright © Ali Aryal (2019)


Versioning

Version Space
• Version v represents a state of an evolving item I
Revision (modified) or variant (alternative)

• Difference between two versions is called a “delta”


Symmetric delta between two versions (state-based versioning)

• Directed delta is a sequence of elementary change operations to


Copyright © Ali Aryal (2019)
create a version from another (change-based versioning)
Versioning

One-Level Version Graphs


One level organization
- Each version connected by one single type of relationship
called “successor”

Copyright © Ali Aryal (2019)


Versioning

Multi-Level Version Graphs


• Two-level organizations
- Graph is composed of branches each with a sequence of
revisions
- At least two relationships:
Successor (within a branch)
Offspring (between branches)

Copyright © Ali Aryal (2019)


Versioning

Two-level Version Graph

Copyright © Ali Aryal (2019)


Versioning
Multidimensional Variants

Copyright © Ali Aryal (2019)


Versioning

Interplay of Version/Product Spaces

• Multiple configuration items with multiple versions


- AND/OR graphs provide a general model for integrating
product and version space.
- AND/OR edges come from AND/OR nodes, respectively.
- Product can be represented by only AND nodes/edges.
- Versioning is introduced to product space by adding OR
nodes/edges.

• Selection order
Product first, Version first , Intertwined

Copyright © Ali Aryal (2019)


Versioning
AND/OR Graphs

Copyright © Ali Aryal (2019)


Versioning

AND/OR Graphs
• In intertwined graph, it is easier to add a new version for one of the
items without having to create virtual versions for other items as in
“version first” graph

Copyright © Ali Aryal (2019)


Versioning

Merge Tools and semantics


• Raw merging applies a change in a new context

• Two-way merging compares two alternative versions and combine


them into a new one.

• Three-way merge tool consults a common baseline when difference


is detected

•Textual merging. Only for text files


• Syntactic merging. Needs knowledge of file structure
• Semantic merging. Can find semantic conflicts and fix if possible

Copyright © Ali Aryal (2019)

You might also like