Internal And External Quality

Internal quality is about the design of the software. This is purely the interest of development. If Internal quality starts falling the system will be less amenable to change in the future. Hence the need for refactoring, clear coding, relentless testing, and the like. You need to be very careful about letting internal quality slip. Ward has a wonderful DebtAnalogy? that discusses it.

External Quality is the fitness for purpose of the software. It's most obvious measure is the Functional Tests, and some measure of the bugs that are still loose when the product is released. There is more to it than that, however.

In the FourVariables the quality variable is external quality.

InternalQuality is everything the software does not do. It's the implementation, which the customer never directly sees, and often does not want to spend time or money on. Ironically enough, it's often what determines whether projects succeed or not. Take the Web for example - see ImplementationDoesTooMatter.

From GoodCode

Let's divide software quality topics into two areas :

External quality mean all the properties of the software as a product that users can experience and enjoy : Internal quality mean all the properties of the software as seen by the developers that are desirable in order to facilitate the process of creating a good product : From here, I can't find any other property that a GoodCode should hold. Surely there are some.
The wiki pages on quality all focus from a developer's perspective on a single project. They need to also focus on architecture quality issues, which affect operations, deployment, adoption, interoperability, etc. Quality of code, Quality of architecture... See RoyFielding's superb dissertation for a discussion of architectural quality, omitting code quality entirely.
CruftMultiplies and TechnicalDebt deal with internal quality slip. Don't know whether the latter is the DebtAnalogy?. -- MichaelFeathers

"Quality With a Name" by James Shore 2006 gives this definition of "good software design" (which is synonymous with "internal quality", right?):

A good software design minimizes the time required to create, modify, and maintain the software while achieving acceptable run-time performance.

See: NonFunctionalIsNonsense, FixBrokenWindows WhatIsQuality


View edit of June 17, 2010 or FindPage with title or text search