Chapter 9 -Â Software Standards

  • A standard is a rule or basis for comparison that is used to asses the size, content, value or quality of an object or activity.
  • Two types of standards
    1. Describes the nature of the object to be produced
    2. Defines the way the work is to be performed
  • Operational Definitions
    • Term coined by Deming
    • Made of standards and procedures
    • Review Standards – specifies content, preparatory materials, participants, responsibilities and resulting data and reports
    • Review Procedures – describes how the work is actually to be done, by whom, when and what is done with the results
  1. Definitions
    • Authoritative direction
      • Policy – A governing principle, typically used as the basis for regulations, procedures or standard and generally stated by the highest authority in the organization
      • Regulation – A rule, law or instruction, typically established by some legislative or regulator body with penalties for noncompliance
      • Specification – The precise and verifiable description of the characteristics of a product
    • Characterization of how a task is to be performed or the required characteristics of the result
      • Guideline – A suggested practice, method or procedure, typically issued by some authority
      • Procedure – A defined way to do something, generally embodied in a procedures manual
      • Standard – A rule or basis for comparison, typically established by common practice or by a designated standards body
    • The way in which tasks are accomplished
      • Convention – A general agreement on practices, methods or procedures, typically arrived at by explicit agreement
      • Method – A regular, orderly procedure or process for performing a task, typically defined by an expert
      • Practice – A usual procedure or process, typically a matter of habit or tacit agreement
      • Process – A defined way to perform some activity, typically established by technical specialists
  2. The Reasons for Software Standards
    • Standards are needed when many people, products or tools must coexist
    • The fact that everyone knows and understands a common way of doing the same tasks makes it easier for the professionals to move between projects reduces the need for training and permits a uniform method for reviewing the work and its status
    • Standards also promote the consistent use of better tools and methods
    • The lack of an approved standard leaves the organization with no framework to make decisions with
  3. Benefits of Standards
    • While standards alone will not make the difference between project success and failure, they clearly help
  4. Establishing Software Standards
    • While it is important to establish standards, it is also important to concentrate on those standards that can be implemented in a reasonable period and that will provide the most immediate benefit to the organization
    • Organizational standard categories (should have equal mix)
      1. Management and planning standards and procedures
        • Configuration management
        • Estimating and Costing
        • SQA
        • Status reporting
      2. Development process standards and methods
        • Requirements specification
        • Design
        • Documentation
        • Coding
        • Integration and Test
        • Reviews, walkthroughs and inspections
      3. Tool and process standards
        • Product naming
        • Size and cost measurements
        • Defect counting and recording
        • Code entry and editing tools
        • Documentation systems
        • Languages
        • Library system
    • The Standards Development Process
      1. Establish a standards strategy that defines priorities and recognizes prior work
      2. Distribute, review and maintain this strategy
      3. Select individuals or small working groups to develop the top-priority standards
      4. Development effort should build on prior work, define areas of applicability, specify the introduction strategy, and propose an enforment plan
      5. The draft standards should be widely distributes and reviewed
      6. The standards should be revised to incorporate the review comments and the re-reviewed if changes are extensive
      7. The standards should initially be implemented in a limited test environment
      8. Based on this test experience, the standards should again be reviewed and revised
      9. Implement and enforce the standards across the defined areas of applicability
      10. Evaluate the effectiveness of the standards in actual practice
    • If too many people are involved in the creative process, much time will be wasted and the result is likely to lack technical coherence
    • It is rarely wise to adopt another organization’s standard without local customizations
    • Standards should be modified and adjusted based on the experiences in using and enforcing them
    • If standards are not maintained they will become a bureaucratic procedure that takes time without adding value
    • SQA should not be the owner of standards as they are responsible for enforcing them
    • If a standard needs frequent maintenance then the area is likely not ready for standardization
    • Standards should be reviewed at least once every three to five years
    • Use automated tools whenever possible to enforce standards
  5. Standards vs. Guidelines
    • When there is a clear evidence that something is always the right thing to do, use a Standard
    • Lacking this evidence, use a Guideline