Skip to content
IRC-CodingIRC-Coding
Качество ПОПризнаки качестваTestabilityПоддерживаемостьБезопасностьPerformanceClean Code

Основы качества ПО: определение и практика

Основы качества ПО: определение, признаки, testability, поддерживаемость, безопасность и производительность.

S

schutzgeist

3 min read
Основы качества ПО: определение и практика

Основы качества программного обеспечения

Качество программного обеспечения это не просто отсутствие ошибок. Оно описывает, насколько хорошо программа удовлетворяет требованиям пользователей и как эффективно её можно поддерживать на протяжении всего жизненного цикла. В этой статье я объясню основы качества ПО и покажу, как реализовать его на практике в повседневной разработке.

В эпоху Vibecoding код пишется так быстро, что часто теряется из виду контроль над качеством.

AP1 и AP2 это темы, которые требуют знания ISO 25010 уже на этапе AP1, а позже, когда проект стартует, нужно понимать функциональные и нефункциональные требования. Обычно это можно хорошо выучить и применять на практике. Важен и различие между ISO 9126 и ISO 25010, то есть между старым и новым стандартом. По сути, это просто расширение.

Вкратце: качество программного обеспечения в разработке приложений

  • Качество ПО охватывает функциональные и нефункциональные требования.
  • ISO 25010 определяет восемь основных характеристик: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, Portability.
  • Высокое качество снижает затраты на исправление ошибок, ускоряет разработку и повышает удовлетворённость пользователей.
  • Качество достигается через тестирование, Clean Code, чёткую архитектуру, code review и непрерывный мониторинг метрик.

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

Главные аспекты разбиваются на три группы:

  1. Функциональное качество: корректность, полнота, адекватность функций.
  2. Нефункциональное качество: производительность, безопасность, надёжность, удобство использования.
  3. Структурное качество: поддерживаемость, тестируемость, расширяемость, качество кода.

Основные компоненты качества ПО

  1. Функциональная корректность: программа безошибочно выполняет указанные требования.
  2. Надёжность: система остаётся стабильной под нагрузкой и при сбоях.
  3. Производительность: время отклика, пропускная способность и эффективность ресурсов находятся в целевых диапазонах.
  4. Безопасность: защита от несанкционированного доступа, утечек данных и манипуляций.
  5. Поддерживаемость: код читаем, модульный и легко изменяемый.
  6. Тестируемость: компоненты можно тестировать изолированно и автоматизировано.
  7. Удобство использования: пользователи могут интуитивно и эффективно работать с программой.
  8. Совместимость: взаимодействие с другими системами, браузерами и устройствами.

Практический пример: цели качества для Web-API

Задача: заказной API для интернет-магазина

Functional Suitability:
- Все необходимые endpoint'ы для use case'ов присутствуют и правильно документированы.
- Цена, налог и скидка рассчитываются корректно в 100% случаев.

Performance Efficiency:
- 95-й перцентиль времени отклика ниже 200 миллисекунд при 100 одновременных пользователях.
- Пропускная способность минимум 500 запросов в секунду без нарушения SLA.

Reliability:
- Доступность 99,9% ежемесячно.
- MTTR менее 30 минут при перебоях.

Security:
- Шифрование передачи через TLS 1.3.
- Аутентификация через OIDC с MFA для администраторов.
- Неизменяемый audit log для всех критических изменений.

Maintainability:
- Покрытие кода unit-тестами не менее 70%.
- Отсутствие циклических зависимостей между модулями.
- Feature flags для контролируемых развёртываний.

Преимущества и недостатки

Преимущества

  • Более низкие общие затраты: обнаружение ошибок на ранних стадиях намного дешевле, чем исправления в production.
  • Более высокая скорость разработки: чистый код и хорошее покрытие тестами позволяют быстрее итерировать.
  • Лучшая удовлетворённость пользователей: стабильное, быстрое и интуитивное ПО используется охотнее.
  • Снижение рисков: уязвимости безопасности и перебои можно минимизировать на этапе разработки.

Недостатки

  • Больше времени на входе: тестирование, review и метрики требуют времени в начале проекта.
  • Противоречия целей: максимальная безопасность может снизить производительность, максимальная гибкость может увеличить сложность.
  • Затраты на измерение: качество нужно определить, измерить и контролировать, чтобы оно приносило результаты.

Ключевые моменты к экзамену

  • Определение качества ПО по ISO 25010.
  • Различие между функциональными и нефункциональными требованиями.
  • Восемь основных характеристик ISO 25010 и их значение.
  • Связь между качеством, тестированием и поддерживаемостью.
  • Стоимость исправления ошибок на различных этапах жизненного цикла.
  • Значение Clean Code, code review и статического анализа.

Типичные экзаменационные вопросы (с краткими ответами)

  1. Что такое качество программного обеспечения? Мера того, в какой степени ПО удовлетворяет установленные и неявные требования.

  2. Назовите три нефункциональных характеристики качества. Производительность, безопасность, надёжность.

  3. Что означает поддерживаемость? Способность модифицировать ПО, исправлять и расширять его с приемлемыми затратами.

  4. Почему тестируемость важна? Она позволяет проводить автоматизированные повторяемые тесты и выявлять ошибки на ранних этапах.

  5. В чём различие между ISO 9126 и ISO 25010? ISO 25010 расширяет шесть характеристик ISO 9126 до восьми и добавляет безопасность и совместимость.

Продолжение пути обучения качеству ПО

Следующая статья в пути обучения качеству ПО посвящена качеству программного обеспечения и ISO 25010 восьми характеристикам качества по международному стандарту.

Основные источники

  1. https://iso25000.com
  2. https://www.iso.org/standard/35733.html
  3. https://en.wikipedia.org/wiki/ISO/IEC_25010
Назад к блогу
Share:

Похожие статьи