How software doesn’t work
The December 1995 issue
of Byte
included an article on Why software doesn’t work which makes
several points relevant to group projects.
Capability maturity model
- Chaos
- No process in place; ad hoc management is the driving force.
- Repeatable
- Introduces project planning and tracking, and puts project management in place.
- Defined
- Processes become documented and standardized.
Includes requirements management, project planning and project tracking.
- Managed
- Measures project status and feeds that information back to project leaders.
Project managers set targets, plan for desired quality and create a process to meet those targets.
- Optimised
- Continuing improvement.
Key focus areas include defect prevention, technology-change mangement and process-change mangement.
Five easy steps toward disaster
- Pile on the features
- Target heterogeneous environments
- Test inadequately
- Document poorly
- When in doubt, vacillate
Nine ways to write more reliable software
- Fight for a stable design
- Cleanly divide up tasks
- Avoid shortcuts
- Use assertions liberally
- Use tools judiciously
- Rely on fewer programmers
- Diligently fight featuritis
- Use formal methods where appropriate
- Begin testing once you write the first line of code