Configuration Management and Software Environments
description
Transcript of Configuration Management and Software Environments
Configuration Management
andSoftware Environments
Configuration Management
andSoftware Environments
André van der HoekInstitute for Software ResearchUniversity of California, Irvine
Concerns for Software EnvironmentsConcerns for Software Environments
Large software– Many components– Many artifacts– Many kinds of artifacts
Large teams– Many developers
Long term evolution– Many changes
Critical QuestionsCritical Questions
How do I keep track of changes? How do I put a product together? How do I avoid conflicts? How do I account for what happened? How do I go “back in time”? Etc., etc., …
Configuration ManagementConfiguration Management
“Configuration management (CM) is a discipline whose goal is to control changes to large software through the functions of: component identification, change tracking, version selection and baselining, software manufacture, and managing simultaneous updates (team work).”
Tichy,SCM-1, 1988
Dart,
SCM-3, 1991
Construction•Building•Snapshots•Regeneration•Optimization
Construction•Building•Snapshots•Regeneration•Optimization
Auditing•History•Traceability•Logging
Auditing•History•Traceability•Logging
Components•Versions•Configurations•Baselines•Project contexts
Components•Versions•Configurations•Baselines•Project contexts
Spectrum of FunctionalitySpectrum of Functionality
Accounting•Statistics•Status•Reports
Accounting•Statistics•Status•Reports
Process•Lifecycle•Task mgmt.•Communication•Documentation
Process•Lifecycle•Task mgmt.•Communication•Documentation
Controlling•Access control•Change request•Bug tracking•Partitioning
Controlling•Access control•Change request•Bug tracking•Partitioning
Team•Workspaces•Merging•Families
Team•Workspaces•Merging•Families
Structure•System model•Interfaces•Consistency•Selection
Structure•System model•Interfaces•Consistency•Selection
Many CM SystemsMany CM Systems ClearCase Telelogic Dimensions AllChange ChangeMan Razor BitKeeper Perforce PVCS AccuRev …
CVS RCS Aegis Subversion Keep-It ODE SourceCast …
CM Yellow Pages,www.cmtoday.com, 2002
A History of CM ResearchA History of CM Research
Asgard
ClearCaseCoMaPOEM
PCTE
Damokles
RCS
SCCS
VOODOO Adele II
ICE
P-Edit
PCL
COVAide deCamp
DSEE
ShapeTools InscapeSIO
PIE
Conditionalcompilation
Cedar Adele I
Gandalf
Conradi & Westfechtel,ACM Surveys, 2000
Versioning ParadigmsVersioning Paradigms
Representation
State-based Change-based
Conditionalcompilation
Changesets
Versiontree
Changepackages
Inte
nsion
al
Extens
ional
Sel
ectio
n
Conditional CompilationConditional Compilation
#ifdef UNIX#include <stdio.h>
#endif#ifdef GRAPHICS
#include <graphics.h>#ifdef SMARTGRAPHICS
#include <smart.>#endif
#endif
Inline storage of individual changes with pre-processing
1.0
1.1
2.1
1.2 1.2.1.0
Version TreeVersion Tree
2.0 1.2.1.1 1.2.1.0.1.0
External storage of individual changes with checkout/checkin
Change PackagesChange Packages
1.0
1.1
2.0
1.2
2.1
1.2.1.0
1.2.1.1
1.0
2.0
2.2
2.1
2.3
1.0
1.1
1.3
1.2
2.0
2.0.1.0
Featu
re #
12
Bug fix
#21
Bug fix
#2
External storage of coordinated changes with checkout/checkin
Change SetsChange Sets
Baseline
Bug fix #16
Feature addition#103
Bug fix #17
AVAILABLECHANGE
SETS
ACTUALSYSTEM
SELECTION
Feature#104
Bug fix #8
Bug fix #16
Bug fix #6
Bug fix #21
...
External storage of coordinated changes with merging
Back to CM & EnvironmentsBack to CM & Environments
Integrated in the editor– “Editor is the environment”
A separate tool– “File system is the environment”
An integrated data model– “Data model is the environment”
The environment– “CM tool is the environment”
Critical CM ConsiderationsCritical CM Considerations
What is the CM focus? What versioning paradigms are used? How usable is the resulting
environment?
CM – Integrated in the EditorCM – Integrated in the Editor
Big, Feature-Rich Editor
CM – Integrated in the EditorCM – Integrated in the Editor
PIE– Integrated SmallTalk environment– Change sets as dependent layers
P-Edit/MVPE– Text editor– Simultaneous editing of multiple versions of a
single text source file– Source file is partitioned into fragments– Control constructs are hidden
Word (!) Emacs (!)
CM – Integrated in the EditorCM – Integrated in the Editor
What is the CM focus?– Change tracking
What versioning paradigms are used?– Any
How usable is the resulting environment?– Easy– Only sufficient for a single user
CM – A Separate ToolCM – A Separate Tool
File System
Designtool
CMtool
Testingtool
Analysistool
…
CM – A Separate ToolCM – A Separate Tool
SCCS / RCS / …– Revision control system– Locks prevent conflicts– Access to artifacts via individual workspaces
DSEE– Configuration management system– Access to repository via a virtual file system
Almost all regular CM systems
CM – A Separate ToolCM – A Separate Tool
What is the CM focus?– Change tracking– Conflict avoidance
What versioning paradigms are used?– Any, provided that text files are versioned
How usable is the resulting environment?– Relatively easy to moderately complex– Able to support moderate groups of users
CM – An Integrated Data ModelCM – An Integrated Data Model
Designtool
Testingtool
Analysistool
…
Rich Data Model with Relationships
CM CM CM CM
CM – An Integrated Data ModelCM – An Integrated Data Model
Gandalf / Inscape / Cedar / DAMOKLES / …– System models– Interfaces, pre- and post-conditions, typing, …
PCTE– Software engineering repository– Standardized interface (including CM)
CoMa– Simple versioned hyperweb system– Attribute-based graphs with cross-graph links
Nowadays virtually extinct, except in the field of hypermedia
CM – An Integrated Data ModelCM – An Integrated Data Model
What is the CM focus?– Traceability– Consistency management
What versioning paradigms are used?– State-based extensional– Change-based extensional
How usable is the resulting environment?– Difficult to use– Able to support large groups of users
CM – The EnvironmentCM – The Environment
Designtool
Testingtool
Analysistool
…
CMtool
CM – The EnvironmentCM – The Environment
Asgard– CM-oriented process engine– Mapping of activity-based processes to change
packages Adele
– Configuration management database with process engine
– Object-orientation Popular in high-end CM systems
– ClearCase (Rational Rose)– Continuus (Telelogic IDE)
CM – The EnvironmentCM – The Environment
What is the CM focus?– Process management– Change tracking
What versioning paradigms are used?– Any, provided that text files are versioned
How usable is the resulting environment?– Moderately complex to use– Able to support large groups of users
Current State of the ArtCurrent State of the Art
CM is present in different incarnations virtually everywhere
One billion dollar industry– Over a hundred commercial CM systems– Many additional freeware, public domain, and
open source CM systems Recognized as essential to any successful
project– CMM, ISO 9000
Active community– CM Yellow Pages, CM Today
But Where Do We Go from Here? But Where Do We Go from Here?
?
Some Possible DirectionsSome Possible Directions
Extend to other domains– Web– Product data management– …
Improve CM functionality– Better integrations– More features– …
Useful, but not earth shattering
Today’s Rapidly Changing LandscapeToday’s Rapidly Changing Landscape
Construction by component assembly Integrators and suppliers Multiple organizations and locations Decentralized control Management of changes after development
– Right artifacts to right places at right times
Run-time change management
The very nature of software environments is changingand the nature of CM is changing accordingly!
Critical Questions RevisitedCritical Questions Revisited
How do I keep track of changes…– …if I am not the only one making them?
How do I put a product together…– …if the pieces come from many different places?
How do I avoid conflicts…– …if I am not in control?
How do I account for what happened…– …if users change running applications?
How do I go “back in time”…– …if the original source is somewhere else?
Etc., etc., …
A New Kind of EnvironmentA New Kind of Environment
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)
Continuous Change Management
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)
SRM
xADL
Ménage ArchDiff
Dock
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)
SRM
xADL
Ménage ArchDiff
Dock
Required Modeling ConceptsRequired Modeling Concepts
Components, connectors, interfaces Types & instances
Linear evolution Revisions
Diverging paths of evolution Branches
Alternatives (variation points) Guarded variants
Non-mandatory architectural elements Guarded options
Hierarchical composition Sub-architectures
Implementations Mappings
xADL 2.0xADL 2.0
You know all about it!
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)
SRM
xADL
Ménage ArchDiff
Dock
MénageMénage
MénageMénage
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)xADL
Ménage ArchDiffSRM
Dock
Software Deployment: the ProblemSoftware Deployment: the Problem
Producer Consumer
Software Deployment: the ProblemSoftware Deployment: the Problem
Producer Consumer
Software Deployment: the ProblemSoftware Deployment: the Problem
Producer Consumer
Software Deployment: the ProblemSoftware Deployment: the Problem
Producer Consumer
Software Deployment Life CycleSoftware Deployment Life Cycle
Release
Retire
Reconfig Adapt RemoveUpdate
Install
Producer
Consumer
SRMSRM
SRMSRM
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)xADL
Ménage ArchDiffSRM
Dock
Software DockSoftware Dock
Agent
Agent
Agent
Release Dock
Agent
Agent
EnterpriseDock
Agent
Agent Agent
FieldDock
Agent FieldDock
Wide-AreaEvent Service
Software DockSoftware Dock
Research ProjectsResearch Projects
ImplementationImplementation DeploymentDeploymentSystem TestingSystem Testing Run-TimeRun-TimeDesignDesign
ComponentsComponents Source FilesSource Files FeaturesFeatures SystemsSystems ExecutablesExecutables
Versioned Components (Architecture)xADL
Ménage ArchDiffSRM
Dock
Architectural Differencing / MergingArchitectural Differencing / Merging
Design Time Run Time
deploy/instantiate
Architectural Differencing / MergingArchitectural Differencing / Merging
Design Time Run Time
deploy/instantiate
evo
lve
Architectural Differencing / MergingArchitectural Differencing / Merging
Design Time Run Time
deploy/instantiate
evo
lve
?
?
Architectural Differencing / MergingArchitectural Differencing / Merging
Design Time Run Time
deploy/instantiate
evo
lve
dyn
am
ism
architectural patch
mergediff
Current StatusCurrent Status
Diff representation– Defined as xADL 2.0 extension
Differencing and merging algorithms– Implemented for static operation
To be examined– Dynamic case– Multiplicity– Distribution– Run-time CM system
Configuration ManagementConfiguration Management
“Configuration management (CM) is a discipline whose goal is to control changes to large software through the functions of: component identification, change tracking, version selection and baselining, software manufacture, and managing simultaneous updates (team work).”
Tichy,SCM-1, 1988
ConclusionsConclusions
CM as a discipline is changing– Broader scope– Intermingling with other disciplines
CM tools will be vastly different– What is the right role in a software environment?– Inherently support design, development,
deployment, and run-time
Continuous change management Versioned components are the key