Chapter 12- Software Configuration Management (continued)

  • To preserve the integrity of a software design through it’s useful life, it must be maintained in a Software Configuration Management (SCM) system
  • Second Law of Software Evolution – the entropy of a software system continually increases unless steps are taken to control it. And increasing entroy means increasing chaos
  • The following items need to be controlled for an orderly implementation of a software system
    • Operational Concept
    • Requirements
    • Specification
    • Design Docs
    • Source Code
    • Object Code
    • Test Plans
    • Test Cases / Results
    • Tools
    • Manuals
    • Interface docs
  • Group different items from the above list at different stages to make baselines
  • Control all tools used to specify, design, implement and test your product
  • Control all specialized data (for such things as seeding the database)

Requirements Phase

  • Ensure users’ needs are properly understood
  • Provide a basis for system and acceptance testing
  • The greater the functional change, the less accurate the requirements will be
  • Freeze requirements too early and end up making ill informed design decisions and exessive late changes
  • Need a system for controlling and tracking changes
  • Requirements changes should undergo the same rigor as design changes
  • Tests should map to requirements

Design Phase

  • Change Control Board (CCB) controls design changes
  • SCM maintains complete records of every change and it’s rationale
  • Design is an evolutionary process
  • Have loose control over design changes at first then tighten as the project progresses

Implementation Phase

  • Without a fully controlled design, you can’t start on a solid foundation
  • Any design problems/changes need to be updated in the design docs
  • Ommission of even one simple change will cause a small area of the design to inaccurately represent the code. The inaccuracies snowball until you have to read the code to understand it.

Test Phase

  • Precise and complete records must be maintained of every test run, the data and test cases used, the configurations that were run as well as the results. Or not depending on your environment
  • Change disipline especially important during final implementation and test

Software Configuration Audit

  • Performed periodically to ensure practices and procedures are rigourously followed
  • Ground rules for a successful audit
    • Periodically check the integrity of the baselines
    • A successful audit must occur before every major baseline change
    • Auditors are technical people, but not directly involved in what is being audited
    • Verify changes to baselines have been implmentated. Correctly
  • Conduct Reviews at the following phases
    • Requirements
    • Functional specification
    • High-level design
    • Product implementation
    • Operational launch