190 likes | 337 Views
Software Configuration Management. William W. McMillan. 21 March 2013. Goals of Configuration Management. Know state of system. Support quality standards: Documentation Regression testing Work efficiently. Minimize frustration. Archive project versions.
E N D
Software Configuration Management William W. McMillan 21 March 2013
Goals of Configuration Management • Know state of system. • Support quality standards: • Documentation • Regression testing • Work efficiently. • Minimize frustration. • Archive project versions. • Facilitate and control change process. • Deliver versions of system to users.
Included in Configuration Management • Common code storage. • Way to check out code and check back in. • Way to merge modules changed by multiple authors. • Assignment of version identifiers. • Record of component versions included in system versions. • Facilities to build system.
Included in Configuration Management • Testing and reporting facilities. • Method to request and approve changes. • Change history. • Release planning.
What examples can give you give from your own background where configuration management was a challenge?
Version Control • Systems are composed of many interrelated modules. • Team of software developers required. • Members work on different parts and some common parts. • Need “master” copies of modules, e.g., on server. • Developers check out modules and work in own workspace. • Check modified code back in.
What tools exist to support version control?What problems can arise in their use?
Version Control • Changes made might be stored as “deltas”: • List of changes made by developer. • Conflicts if more than one updated version checked in of same module. • Might have to resolve manually. • System version defined as collection of specific versions of components. E.g., • Ver. 1.0 consists of H 1.7, J 2.0, K 1.3, and imports Q2 and Q5
System Builds • Version control specifies components. • Build script, configuration spec., or manifest specifies dependencies and inclusions. • Build server compiles where it needs to and assembles executable. • Target system might be different platform. • Tests run automatically. • Reports and documentation produced.
System Releases • New versions add functionality, • … correct errors, • … improve security, • … adapt to new environments (like OS), • … improve usability and style, • … work better with new tech (like mobile, XML), • … make use of new hardware features (like touch screen, faster external connections).
Give examples of changes across versions of real software products.
System Releases • Need careful definition of component versions included. • Define changes in deployment needs. • Consider pluses and minuses of changed styles, formats, and functions. • Users will do cost-benefit analysis before adopting. • Keep lookout for open-source or low-cost competition. • E.g., IBM-PC Pascal compiler vs. Turbo Pascal
Change Management • New requirement: • Function, data • Performance issue or resource consumption • Interface • Security,… • Corrected requirement: • We got something wrong in the requirements analysis. • Bug report: • We got something wrong in design or implementation.
Change Management • Resource intensive. (Why?) • Changes across a host of artifacts. (Which?) • If things frequently shake off the shelves when a change is made … ? • Process needs to be controlled, with defined and documented authorization chain. • Need as formal a way to request a change as possible.
List some items you would include in a change request web form.Would a bug report be a different form?