Watts Humphrey: Managing the Software Process – Chapter 9
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
- Describes the nature of the object to be produced
- 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
- 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
- Authoritative direction
- 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
- Benefits of Standards
- While standards alone will not make the difference between project success and failure, they clearly help
- 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)
- Management and planning standards and procedures
- Configuration management
- Estimating and Costing
- SQA
- Status reporting
- Development process standards and methods
- Requirements specification
- Design
- Documentation
- Coding
- Integration and Test
- Reviews, walkthroughs and inspections
- Tool and process standards
- Product naming
- Size and cost measurements
- Defect counting and recording
- Code entry and editing tools
- Documentation systems
- Languages
- Library system
- Management and planning standards and procedures
- The Standards Development Process
- Establish a standards strategy that defines priorities and recognizes prior work
- Distribute, review and maintain this strategy
- Select individuals or small working groups to develop the top-priority standards
- Development effort should build on prior work, define areas of applicability, specify the introduction strategy, and propose an enforment plan
- The draft standards should be widely distributes and reviewed
- The standards should be revised to incorporate the review comments and the re-reviewed if changes are extensive
- The standards should initially be implemented in a limited test environment
- Based on this test experience, the standards should again be reviewed and revised
- Implement and enforce the standards across the defined areas of applicability
- 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
- 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