Разработка ПО: В чем разница между понятиями «корректность» (правильность расчета налогов) и «полнота» (наличие всех заявленных функций)?
В разработке программного обеспечения понятия «корректность» и «полнота» являются двумя фундаментальными, но принципиально разными характеристиками качества системы. Понимание их различий критически важно для тестирования, приёмки и эксплуатации программных продуктов.
**Корректность (Correctness)**
Корректность — это свойство программы выполнять заявленные функции правильно, то есть в точном соответствии со спецификацией или бизнес-логикой. В контексте налогового программного обеспечения корректность означает, что система правильно рассчитывает суммы налогов, применяет верные ставки, учитывает льготы и вычеты, корректно округляет значения и формирует отчётность без арифметических или логических ошибок.
Пример нарушения корректности: система рассчитывает НДС по ставке 18% вместо актуальной 20%, или неверно применяет налоговый вычет для определённой категории плательщиков. Функция при этом присутствует, но работает неправильно.
Корректность проверяется через:
— модульное тестирование с эталонными значениями;
— граничные и негативные тесты;
— сравнение с ручными расчётами или внешними калькуляторами;
— аудит бизнес-логики совместно с предметными экспертами (бухгалтерами, юристами).
**Полнота (Completeness)**
Полнота — это свойство системы реализовывать весь заявленный в требованиях функционал. Иными словами, полнота отвечает на вопрос: «Всё ли из того, что обещано, присутствует в продукте?»
Пример нарушения полноты: в техническом задании указано, что система должна поддерживать расчёт транспортного налога, налога на имущество и НДФЛ, но в итоговой версии реализован только НДФЛ. Функции транспортного налога и налога на имущество попросту отсутствуют — это нарушение полноты.
Полнота проверяется через:
— трассировку требований (Requirements Traceability Matrix);
— приёмочное тестирование по чек-листу функций;
— сравнение ТЗ с реализованным функционалом;
— демонстрацию продукта заказчику.
**Ключевые отличия**
| Критерий | Корректность | Полнота |
|—|—|—|
| Вопрос | Правильно ли работает? | Всё ли реализовано? |
| Нарушение | Функция есть, но даёт неверный результат | Функция отсутствует вовсе |
| Метод проверки | Тестирование логики и расчётов | Трассировка требований |
| Риск | Финансовые ошибки, штрафы | Неполный продукт, срыв сдачи |
**Почему важно различать эти понятия?**
На практике оба дефекта одинаково опасны, но по-разному влияют на продукт. Некорректный расчёт налогов может привести к штрафам со стороны налоговых органов и судебным претензиям. Неполная система не позволяет закрыть все бизнес-процессы заказчика. При планировании тестирования и приёмке ПО необходимо отдельно верифицировать как корректность каждой реализованной функции, так и полноту покрытия всех требований.
