software configuration management “the art of progress is to preserve order amid change and to...

19
Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I don't care if it works on your machine! We are not shipping your machine!” -- Vidiu Platon

Upload: allyson-dorsey

Post on 22-Dec-2015

226 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Software Configuration Management

“The art of progress is to preserve order amid change and to preserve change amid order.”

--Alfred North Whitehead

“I don't care if it works on your machine! We are not shipping your machine!”

-- Vidiu Platon

Page 2: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

What is Software Configuration Management (SCM)?

• Software configuration management is the discipline concerned with identifying the important components of software systems and then taking steps to preserve the integrity of these components throughout the software life cycle.

• SCM is much more than just source code control (SVN, CVS, git, etc.).

Page 3: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Problems Avoided by Effective Configuration Management (CM)

• Your company lost the source code to a mission critical program. The CIO wasn’t amused when you quipped, “Hey, at least we didn’t lose the binary as well!”

• Several developers are working on the same module. Changes made by one developer overwrite changes made by another.

• There are multiple versions of a document out for review and no one is quite sure which is the most recent.

• You need to back out source code changes associated with a new feature added last week but you can't remember all of the modules changed and don't have a copy of the system state prior to making the changes. Worse yet, some of the modules have had subsequent changes since you made your change. Help!

• Your project is bogged down in what seems like an endless cycle of integration and testing. The root cause of the problem seems to be related to several small changes made at the last minute. Taken individually none of the changes are destabilizing, but no one considered the combined affects of making all of the changes at once.

• A customer finds a bug which is reported and promptly fixed. The customer later upgrades to a newer release and rediscovers the same bug.

• A customer finds a bug in an older version of your software. You can't fix the bug because you can't duplicate the version of the system which the customer is running. You offer the customer a free upgrade to the latest version, but that is unacceptable because the customer doesn’t have the time to install an upgrade.

Page 4: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Activities that involve Configuration Management

• If you have only worked on small single-person projects, your exposure to SCM is probably minimal. In order to better understand the scope and purpose of configuration management, here are some example day-to-day activities that involve SCM.

Background

Classroom Today is the signature software product from the Acme Corporation. It is an online course management system used by hundreds of schools across the US and around the world. Version 3.0 is currently undergoing system test and is scheduled to be released August 1st. The latest production version is 2.3 but Acme is also offering security and bug fixes for versions 2.2, 2.1 and 2.0.

Page 5: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Day-to-day SCM Activities• A customer reports a problem with using Unicode in bulletin board posts.

Unicode support was added in version 2.0 and there have been several unicode-related bug fixes since it was introduced. Patty, a programmer at Acme, is assigned to work on the issue. The first thing she does is use the SCM system to retrieve records on all fixes since version 2.0 related to problems with unicode characters. She reviews the records to get an idea what has been done in the past. After some investigation she realizes it is a problem in versions 2.0 and 2.1 only. She tracks down the defect to a specific source file. She checks out the version 2.0 version of this file, makes the fix and builds and regression tests a 2.0 version of the system. She checks out the 2.1 version of the same source file and repeats the change and builds and regression tests the 2.1 version of the system. She copies the updated binary components to the patch staging area for versions 2.0 and 2.1. It isn’t a critical error, so the fixes will go out with the next scheduled update for these two versions.

• (Ability to track the status of change requests.) Harry at the help desk gets a call from a customer asking when a certain defect will be fixed. Harry users the SCM system to check the status of the fix. “It has been fixed and the patch will ship with the next update which is scheduled for May 29th.”

Page 6: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

The Ultimate CM Problem

• Developing software for the space shuttle has been described as "the ultimate configuration management problem." [Spector 84]

Page 7: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Standard Practice of Software Configuration Management

• Configuration Identification

• Configuration Control

• Configuration Status Accounting

• Configuration Auditing

Page 8: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Configuration Identification

• Configuration management starts with identifying the work products that will be subject to configuration management and then assigning each one a unique identifier. Items subject to formal configuration management are called configuration items (CI).

• Example items that can benefit from CM: Requirements, design, project plans, source code, test plans, test cases, tools used to build product.

Page 9: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Configuration Control

• Configuration control ensures that changes made to configuration items are reviewed, approved and documented. Many organizations use configuration control boards (CCB) to review and authorize changes to configuration items.

Page 10: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Example change control procedure

Page 11: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Code Lines

• A codeline is a set of work products used for a specific purpose that are bound by the same configuration management policy.

Page 12: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Configuration Status Accounting

• Status accounting is the practice of keeping track of and reporting information on changes made to configuration items (i.e. who made the change, why it was made, when it was made, etc.). Status accounting improves project visibility and control.

Page 13: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Configuration Auditing

• Configuration audits are used to assess compliance with configuration management procedures and to evaluate the degree to which configuration items reflect their requirements and specifications.

• “Independent examinations of work products and activities to assess compliance with designated criteria”

Page 14: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Topics

• Source Code Control/Management

• Builds

• System Integration

• Change Control and Defect Tracking

• Release Management

Page 15: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Version Control Collaboration Models

• The main function of a version control system is to allow collaborative editing and sharing of data.

• There are two main strategies for enabling this:– Lock-Modify-Unlock (aka reserved checkout)– Copy-Modify-Merge (aka unreserved checkout

or optimistic checkout)

Page 16: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Lock-Modify-Unlock

Page 17: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Copy-Modify-Merge

Page 18: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Baseline

• Depending on context, the term baseline may refer to:1. A specification or product that has been

formally reviewed and agreed upon, thereafter serves as the basis for further development, and can be changed only through formal change control procedures [3].

2. A document or a set of such documents formally designated and fixed at a specific time during the lifecycle of a configuration item [3]. (Similar to branch)

Page 19: Software Configuration Management “The art of progress is to preserve order amid change and to preserve change amid order.” --Alfred North Whitehead “I

Misc.