Возможно проблемы с формулировкой качества программного обеспечения (ПО) связаны с тем, что не определён предмет. Что понимается под качеством ПО?.. Что такое ПО?.. Казалось бы всё просто - вот программа, и надо сделать заключение о её качестве... Но программа - это результат труда многих и многих людей (включая тех, кто об этой программе даже не слышал!).
Можно попробовать выстроить аналогии с промышленным производством. Например, есть двигатель... что можно сказать о его качестве?.. Первое. Двигатель считается качественным, если его реальные характеристики соответствуют тем, что заявлены (ТТХ - тактико-технические характеристики). Если говорить о ПО, то ПО считается качественным, если функционально соответствует ТЗ (техническому заданию). Однако, ТТХ и ТЗ не "берутся с потолка" - это результат анализа и моделирования определённой предметной области.
Второе. Двигатель считается качественным, если соблюдена технология его изготовления. В общем случае, отмечают четыре категории: 1. качественное сырьё и комплектующие; 2. качественная (квалифицированная) рабочая сила; 3. качественное (настроенное) оборудование и инструмент; 4. формальные технологические регламенты (указания/предписания) на каждую операцию и процесс в целом. Во всех четырёх случаях речь идёт об определении качества, как соответствие некоторым формальнымвходнымпараметрам/показателям. Помимо этого должен быть/возможен контроль качества в процессе выполнения каждой операции и/или выходной контроль качества продукции/полуфабриката. Как это коррелирует с разработкой ПО?.. Какие комплектующие используются при создании программ/систем?.. Какими показателями определяется качество элементов ПО?.. Очевидно, что при построении ПО используются сторонние или собственные компоненты, модули, библиотеки, классы и т.п. Требования к ним, как правило, формулируются на основе заявленных интерфейсов, а также общих требований к любому ПО - производительность, размер памяти, требуемой для работы, сторонние ОС и библиотеки, отсутствие ошибок и пр. В качестве инструментов при разработке используются языковые среды, СУБД, средства проектирования... на компьютере, который, наряду с ОС и сторонним ПО, образует инструментальную среду. Наконец, требования к рабочей (интеллектуальной) силе, мало чем отличается (по сути) от требований к рабочей (физической) силе... всё те же умения и навыки, знания и опыт.
Третье. Качество (промышленной) продукции должно включать (и часто уже включает!) и "послепродажное" обслуживание, под которым понимается организация необходимого сервиса, включая отзыв и замену неисправной продукции. Здесь аналогии с ПО прозрачны и не требуют комментариев.
Почему же качество ПО вызывает столько дискуссий?.. Ответ, по моему мнению, состоит в том, что при разработке ПО нет устойчивого представления ни о продукте/результате, ни (тем более!) о стадиях и процессах его получения. Всё основано на каких-то общих идеях, соображениях... которые дорабатываются/формализуются в процессе... Но как не бывает качества "вообще чего-то там", так не бывает и качественного "вообще что-то такое".
И если пройти по этапам создания ПО (как и того же двигателя), то вполне просто можно сформулировать понятие качества для каждого этапа и... следовательно, продукта (ПО) в целом. Но... нудно это... не творческое это дело... создавать стандарты и следовать им... Не в этом ли проблема?.. И как следствие при разработке ПО, все процессы перемешаны, свалены в кучу... Разработчик, создавая простую форму визуализации информации... размышляет над алгоритмами... мучается вопросами совершенствования языка... или написанием супер-библиотеки/компонентов... или вопросами оценки качества своей работы...