Some notes
for
Software Engineering
by Herbert J. Bernstein
© Copyright 1999, 2002 Herbert J. Bernstein
Quality Issues
Software has a notorious reputation for poor quality. It is important
to focus on the issues which relate to quality in all aspects of software
engineering.
Quality and Systems
- Software is the result of the operations of software development
systems
- Software can be a component of a system affecting the quality of
its operation and products
- A system may be said to be of high quality when there is a high
probability that the system will perform in the desired manner or
produce the desired product.
- Quality may be tangible, quantifiable and measurable
- Mean time between failures (MTTF), mean time to repair (MTTR),
errors per line of code, errors per correction cycle, ...
- Standards, control theory, feedback, loops, measurement, ...
- Quality may not be quantifiable and may not be measurable
- a "comfortable" user interface, an aesthically pleasing GUI.
- attempt to quantify the unquantifiable by measuring human
reactions.
- Quality issues may result from system failures
- Quality issues may result from human error
- Quality control (QC) -- adjustments to controls of a system to keep
the performace and products of a system in conformance with standards
- Requires measurements within the system as it operates
- Requires that adjustments and corrections be made before
a "bad" result is produced
- Many systems achieve optimal control with "bang-bang" control
- Quality assurance (QA) -- measurement of the performance and products
of a systems to assure that the results conform to standards, and
rejection of performance or products that do not conform.
- Only workable when a the system produces a signficant number
of acceptable results
- Total Quality Management (TQM)
- Formalized in the U.S. Air Force by William Creech, "The Five Pillars
of TQM: How to make Total Quality Management Work for You"
- Product -- breaking rocks vs. building a cathedral
- Process -- quality is needed in all processes that create products
- Organization -- organize small
- Leadership -- as opposed to management
- Commitment -- on all levels, must be fostered, rewards for achieving
desired results
- Measure quality by results delivered to customers
- All members of the organization participate
- Problem solving crosses functional and hierarchical boundaries
- Flattens hierarchies
- Self-managed (leaderless) work-team oriented
- Drives decision making down the hierarchy to the line
- See http://www.hrzone.com/topics/tqm.html
"Total Quality Management,
An Overview,"
by Judith Ann Schlenker
- Software Capability Maturity Model (SEI SW-CMM)
- See http://www.sei.cmu.edu/cmm/cmm.html
- Defines 5 levels of software process maturity
- Initial -- ad hoc processes
- Repeatable -- able to do similar projects succesfully
- Project management processes in place to track cost, schedule and
functionality
- Special attention on Requirements Management, Software Project
Planning,
Software Project Tracking and Oversight, Software
Subcontract Management, Software Quality
Assurance, and Software Configuration Management
- Defined -- documented processes in place
- Organization has a standard software process
- Management and engineering activities documented and
standardized
- All projects use an approved tailored version of the standard
- Special attention on Organization Process Focus, Organization
Process
Definition,
Training Program, Integrated Software Management,
Software Product Engineering, Intergroup
Coordination, and Peer Reviews.
- Managed -- software process and product are measured,
qualitatively understood and controlled
- Special attention on Quantitative Process Management and
Software Quality Management.
- Optimizing -- continuous process improvement using feedback
from processes and using pilot efforts
- Special attention on Defect Prevention,
Technology Change Management, and Process Change
Management
- ISO 9000
- See http://www.praxiom.com/
- A set of process standards
- Attempts to provide a common definition of "quality"
- Based on systems-oriented, customer-oriented approach:
- Focus on customers
- Leadership
- Involve everyone
- Process oriented
- Systems oriented
- Continual improvement
- Make desions based on facts
- Maintain relationship with suppliers
- Used to be very documentation oriented (in practice sufficient for
CMM level 2 or 3)
- Now based on development, documentation, implementation, monitoring
and improvement of each system process (should bring up to CMM level 4 or
5)