What Makes Good Software?
A book that's only pretty, or only crammed with content, isn't a good book — a story about meeting several conditions together.
Every reader wants something different from a book.A good book has to answer all of these readers' wishes at once.
Excelling at just one thing doesn't make a good book.Neither the pretty-but-wrong book nor the correct-but-hard one is a good book.
Good software means meeting several quality conditions together.Excelling at one condition isn't enough — balance among them is the point.
Quality conditions fall into six broad groups.Efficiency and portability are the quieter conditions behind a good book.
Leaning too far either way isn't a good book.Balance among the six conditions is what really makes software good.
Good software means meeting all six quality conditions — functionality, reliability, usability, efficiency, maintainability, and portability — in balance, without neglecting any one of them.
Software quality models like ISO/IEC 9126 and its successor ISO/IEC 25010 break quality down into several characteristics. ISO/IEC 9126 names six: functionality (does it do what's needed), reliability (does it hold up without error), usability (can users work it easily), efficiency (does it use resources well), maintainability (is it easy to change), and portability (is it easy to move to another environment). ISO/IEC 25010 added security and compatibility. Good software balances these characteristics to fit the project's context.
When grown-ups say it
- ISO/IEC 9126 and 25010
- The international standards that lay out these quality conditions. The six conditions come from 9126; its successor 25010 added security and compatibility.
- Functionality
- Whether the book has everything that's needed. The condition people notice first.
- Reliability
- Whether it holds up without error. The area QA/QC directly looks after.
- Usability
- Whether it's easy to read and follow. The one readers feel most directly.
- Efficiency
- Whether it isn't needlessly bloated. The condition about not wasting resources.
- Maintainability
- Whether the next edition is easy to revise. Directly tied to coupling and cohesion. → how tangled the chapters are
- Portability
- Whether it's easy to adapt to another format. Matters especially for things like e-book conversion.
- Architecture Evaluation (ATAM/CBAM)
- Checking the trade-offs among these conditions ahead of time. A method for weighing these conditions at design time. → scenario rehearsal before publication