1. Надо различать внешнее и внутренне качество. Внешнее качество - это как раз те свойства, которые легко наблюдаются и в некоторых случаях легко измеряются. А вот внутреннее качество - именно качество самой проги, тут много вопросов.
Вот абзац из одного моего текста:
> -- Цитата:
> Показатели качества программного продукта можно разделить на две категории: внутренние и внешние  . Внешние факторы качества (корректность, надежность, эффективность, удобство использования) могут быть определены, исходя из поведения программного продукта, и являются видимыми пользователю. В отличие от них внутренние показатели качества (переносимость, понятность, модифицируемость, сопровождаемость) для пользователя не видны и не важны. Однако эти показатели чрезвычайно важны для разработчиков, поскольку в конечном итоге именно они определяют экономические затраты на разработку требуемого программного продукта. Внутренние показатели более важны для проекта, чем внешние, поскольку внешние характеристики практически всегда от них зависят.
2. А вот о показателях качества - из того же текста:
> -- Цитата:
> Среди специалистов отсутствует единое мнение о номенклатуре показателей качества (несмотря на то, что существуют и международные, и российские стандарты  ). Роберт Гласс рассматривает качество ПО как совокупность семи свойств: надежности, переносимости, эффективности, удобства эксплуатации, понятности, тестируемости и модифицируемости. Карло Гецци с соавторами   различают качество продукта и процесса. К качествам продукта они относят следующие: корректность, надежность и устойчивость, производительность, удобство, повторная применимость, верифицируемость, сопровождаемость, понятность, переносимость. Иан Грэхем  , основываясь на исследованиях других авторов, приводит более обширный список критериев качества: корректность, устойчивость и надежность, возможность сопровождения и расширения, способность к взаимодействию, эффективность, возможность повторного использования и универсальность, переносимость, ясность, возможность верификации, безопасность, целостность, дружественность, возможности описания. Кроме того,  он тоже разделяет качество продукта и качество процесса. В стандартах устанавливается более короткий перечень показателей. ГОСТ 28195-89   содержит следующий список комплексных показателей качества программного продукта: надежность, корректность, удобство применения, сопровождаемость, эффективность и универсальность. В международном стандарте ISO 9126   прописаны следующие показатели: эффективность, надежность, сопровождаемость, функциональность, практичность и мобильность. Комплексные показатели называют также факторами качества или характеристиками качества.Каждому из комплексных показателей соответствует определенный набор критериев качества. В свою очередь, каждый из критериев определяется своими метриками, которые составляются из оценочных элементов, определяющих заданное в метрике свойство. На разных этапах ЖЦ для разных классов программных продуктов применяются разные критерии качества.
Ссылки на литературу в данном кусочке:
Крылов Е.В. Техника разработки программ: в 2 кн. Кн. 2. Технология, надежность и качество программного обеспечения: Учебник / Е.В. Крылов, В.А. Острейковский, Н.Г. Типикин. – М.: Высшая школа, 2008. – 469 c.
Гецци К., Джазайери М., Мандриоли Д. Основы инженерии программного обеспечения. 2-е изд.: Пер. с англ. — СПб.: БХВ-Петербург, 2005. – 832 с.
Грэхем И. Объектно-ориентированные методы. Принципы и практика. 3-е издание.: Пер.с англ. — М.: Издательский дом «Вильямс», 2004. – 880 с.
ГОСТ 28195-89. Оценка качества программных средств. Общие положения. — М.: Издательство стандартов, 1989.
Мейер Б. Объектно-ориентированное конструирование программных систем / Пер. с англ. – М.: Издательско-торговый дом «Русская редакция», 2005. – 1232 с.