четверг, 25 мая 2017 г.

Определение ошибки программного обеспечения в Википедии неверно

Вот что говорит Википедия на момент написания этой статьи:

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

Я думаю, что это неполно. Это определение полностью исключает «непоследовательные» дефекты, связанные, например, с ремонтопригодностью и возможностью повторного использования.

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

Пользователь может создать отчет в формате PDF.

Если наше программное обеспечение не создает отчет в формате PDF и приводит к сбоям, это функциональная ошибка. Если вместо отчета в формате PDF создается пустая страница или текстовый документ, это функциональная ошибка. Если вообще нет кнопки «генерировать PDF-отчет», и пользователь просто не может запустить процесс создания PDF-файла, это функциональная ошибка.

Вот пример нефункционального требования:

Генерация отчета в формате PDF должна занимать менее 100 мс.

Если наше программное обеспечение генерирует совершенно правильный отчет в формате PDF, но это занимает минуту, это нефункциональная ошибка.

Пока все хорошо, так как определение ошибки, данное Википедии, прекрасно охватывает оба из них - если они произойдут, они заставят наше программное обеспечение «произвести неправильный или неожиданный результат или вести себя непреднамеренно». Акцент здесь делается на словах «производить» и «вести себя». Они предполагают, что программное обеспечение что-то делает, и мы наблюдаем его поведение.

Однако, это еще не все.

Что относительно ремонтопригодности? У меня может быть такое нефункциональное требование:

Исходный код генератора PDF должен быть
Легко поддерживать и продлевать средний
программист Java.
Это довольно неопределенное требование, но вы поняли.

Ремонтопригодность и возможность повторного использования являются очень важными нефункциональными компонентами любой современной программной программы, особенно с учетом очень высокой стоимости рабочей силы на рынке. Очень часто важно убедиться, что программное обеспечение можно поддерживать быстро и легко. 

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

Определение ошибки в программном обеспечении, данное Википедии, не охватывает вообще ремонтопригодность и ошибки повторного использования. Это создает общий источник недоразумений - непоследовательный стиль кода не является ошибкой.

Это не правильно.

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

Я бы переписал абзац определения ошибки в Википедии следующим образом:

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

Это определение выглядит более точным для меня.

Комментариев нет:

Отправить комментарий