Что понимают под качеством программного продукта?

Ответ

Качество программного продукта — это степень, в которой совокупность его характеристик удовлетворяет установленным и предполагаемым потребностям пользователей и других заинтересованных сторон (стейкхолдеров).

Ключевые характеристики качества (на основе стандарта ISO 25010):

Характеристика Что проверяет Пример метрики/проверки
Функциональная пригодность Соответствие заявленным функциям. assert calculate_sum(2, 2) == 4
Производительность Время отклика, использование ресурсов. Время загрузки страницы < 3 сек.
Совместимость Работа в разных средах. Совместимость с браузерами Chrome, Firefox, Safari.
Удобство использования Простота освоения и использования. Пользователь выполняет задачу за 3 клика.
Надёжность Безотказность, восстановление после сбоев. Доступность системы 99.9% (uptime).
Безопасность Защита от несанкционированного доступа. Отсутствие уязвимостей типа SQLi, XSS.
Сопровождаемость Лёгкость анализа и модификации кода. Наличие документации, покрытие кода тестами.
Переносимость Лёгкость переноса в другую среду. Возможность развертывания в Docker-контейнере.

Как обеспечивается и измеряется качество?

  1. Процессы: Внедрение практик (code review, CI/CD, тест-дизайн).
  2. Тестирование: Все виды тестирования для проверки характеристик.
  3. Метрики:
    • Плотность дефектов (например, багов на 1000 строк кода).
    • Процент успешных тест-кейсов.
    • Среднее время на устранение дефекта (MTTR).
  4. Обратная связь: Отзывы пользователей, мониторинг ошибок в production.

Вывод: Качество — это не только отсутствие багов, но и комплексное соответствие продукта ожиданиям пользователя по всем ключевым атрибутам.

Ответ 18+ 🔞

А, ну вот, опять про качество программного продукта заговорили. Слушай, как будто в первый раз. Ну ладно, раз уж начали, давай разжую, но так, чтобы понятно было, а не как в этих ваших умных книжках, где всё через одно место написано.

Качество программного продукта — это, по сути, ответ на один простой вопрос: «А не говно ли то, что мы сделали?». Если пользователь не хочет тебя послать нахуй, а наоборот, доволен — значит, качество есть. Всё остальное — технические детали для зануд.

Стандарты там, ISO всякие... Ну, в общем, есть у них список, что проверять. Смотри, табличку нарисовали, красота.

Характеристика Что проверяет (простыми словами) Пример (чтобы совсем тупым было понятно)
Функциональная пригодность Работает ли оно вообще так, как обещали? Или мы тут хуйню какую-то продали? Кнопка «купить» — покупает, а не форматирует тебе диск. assert 2+2 == 4, а не assert 2+2 == 5, ёпта.
Производительность Не тормозит ли оно, как говно в проруби? Страница грузится быстрее, чем ты успеваешь матюгнуться, а не пока ты сходишь за чаем, печенькой и вернёшься.
Совместимость А на твоём древнем компе/телефоне/браузере это запустится? Или только у нас в офисе на супер-пупер машине? Работает и в Хроме, и в этом твоём Фаерфоксе, с которого даже бабушка твоя сидит.
Удобство использования Понятно ли, как этим пользоваться, или нужно высшее образование и инструкция на 500 страниц? Чтобы запостить котика, нужно 3 клика, а не пройти квест с ритуальными танцами.
Надёжность Не сдохнет ли оно в самый ответственный момент? Система не падает каждые пятницу в 18:00, когда все пытаются заказать пиццу. «Аптайм 99.9%» — это значит, поспать иногда дают.
Безопасность Не украдут ли через него все твои данные, фотки и пароль от ВК? Злоумышленник не может залогиниться как админ, введя ' OR '1'='1 в поле пароля.
Сопровождаемость А если через полгода надо будет что-то поменять — это будет адский пиздец или норм? Код написан не одной строчкой в 10 тысяч символов, а с комментариями и тестами, чтобы следующий программист не плакал.
Переносимость А можем ли мы это быстро запихнуть на другой сервак или в облако? Или оно прикипело к одной конкретной железяке намертво? Запускается в Docker-контейнере, а не требует установки волшебных библиотек, которые есть только у Васи из соседнего отдела.

А как этого качества добиться, спросишь? Ну, не магией же, блядь.

  1. Процессы. Нужны не хаотичные пляски с бубном, а нормальные практики. Code review, чтобы коллега посмотрел твой код и не сказал «ты что, ебнутый?». CI/CD, чтобы не выяснять в пятницу вечером, что сломалось две недели назад.
  2. Тестирование. Всё и вся. От «а кнопка нажимается?» до «а что будет, если десять тысяч пользователей одновременно начнут тыкать в эту кнопку?». Без тестов — это игра в русскую рулетку, только с рабочим проектом.
  3. Метрики. Цифры, которые показывают, не пиздим ли мы сами себе. Сколько багов нашли? Сколько времени чиним? Если время на починку одного бага — неделя, то тут уже не качество, а натуральный заповедник для дефектов.
  4. Обратная связь. Самый главный показатель. Если пользователи в тикете пишут не «ваше приложение — говно», а «спасибо, всё работает», можно выдохнуть. Немного.

Вывод, блядь: Качество — это не когда багов ноль. Их всегда будет больше нуля, это жизнь. Качество — это когда продукт в целом не вызывает желания запустить его авторам в голову тем же ноутбуком, на котором они это писали. Всё, что сверху — просто способы этого добиться, чтобы не было мучительно больно и стыдно.