Спецификация программного обеспечения является очень важным элементом документации, выполненной в соответствии со стандартом ГОСТ IEC 62304—2022 (далее – «Стандарт»). В Разделе 3 «Термины и определения» не приводится определения спецификации ПО, однако «спецификация» встречается в тексте стандарта примерно 30 раз, и контекст употребления этого термина примерно одинаковый. «Спецификация» то является «документированной спецификацией», то «спецификацией архитектуры», в стандарте говорится о недопустимости «отклонений от спецификации», она также может быть «функциональной», «проектной» и т.д.
В ЕСПД есть действующие до настоящего времени ГОСТ 19.202-78 «Единая система программной документации. Спецификация. Требования к содержанию и оформлению» и ГОСТ 19.105-78 «Единая система программной документации. Общие требования к программным документам», которые устанавливают правила оформления документации, но для нас эти ГОСТы бесполезны. То есть,
спецификация ПО – это важная составляющая всех этапов жизненного цикла ПО, но как это описать в документации на наше программное обеспечение?
Спецификация необходима для процесса Разработки ПО (Раздел 5 Стандарта), и это должен быть документ, составленный и согласованный всеми участниками процесса разработки. Отсутствие спецификации или устно сформулированные требования – такая ситуация неприемлема для разработчика медицинского ПО. По нашему мнению, главная спецификация для ПО – это функциональная спецификация (модель требований к системе), поэтому далее речь пойдёт о ней.
Здесь я хотел бы обратиться к «Основам тестирования и верификации программного обеспечения» С.М. Старлетова и процитировать:
Существует два критерия, показывающие требования к спецификации:
- полнота, т.е. у заказчика, разработчиков и тестировщиков не должно быть вопросов по описываемому функционалу, такое описание покрывает все возможные действия в программе, кроме, может быть, однозначно понятных всем сторонам действий.
- понятность, т.е. спецификация должна быть понятной всем сторонам, участвующим в разработке (если предметная область, в которой работает программа, сложна, то должно быть представлено описание предметной области, расшифрованы термины и т.д.), кроме того, формат спецификации должен быть понятен всем сторонам
Как правильно составить Спецификацию ПО?
- Всё начинается с момента возникновения запроса на подобное ПО – запрос может исходить от конкретных врачей или пациентов, медицинских или пациентских сообществ, общества в целом.
- Следующий этап – это ответ на запрос: возникновение у Разработчика идеи о создании ПО, способного решить проблему. Здесь важно понимание Разработчиком осуществимости проекта – позволяют ли современные технические средства (компьютеры, языки программирования, нейросети) практически реализовать проект.
- Далее следует этап детального изучения запроса бизнес-аналитиками и маркетологами, изучение зарегистрированных аналогов (если они есть) и их недостатков, анализ рисков, изучение научной и клинической базы.
Функциональная Спецификация ПО составляется с момента возникновения идеи о создании ПО и продолжается на всех этапах, она расширяется и дополняется. Важно то, что спецификация не должна иметь неполных или противоречивых описаний.
Существует несколько подходов к созданию Спецификаций, на наш взгляд, удобным является Спецификация в виде инвариантов, предусловий и постусловий. Это выглядит так:
Предусловие | Постусловие | Инвариант |
Описываются условия, при которых возникает описываемая ситуация в ПО. Например, «Сделан двойной щелчок левой клавиши мыши по ярлыку программы на рабочем столе. Происходит запуск программы, открывается рабочее пространство для работы с изображениями». |
Описывается результат выполнения действия. Например, «В пространстве для работы с изображениями можно отсортировать изображения в хронологическом порядке». Постусловия должны быть проверяемыми! |
Описываются глобальные условия в системе, которые выполняются на протяжении всей работы ПО, либо определенного этапа работы ПО. Например, «ПО запущено, работает, в пространстве для работы с изображениями отображаются все диагностические изображения, нет сообщений об ошибках». |
Таким образом, Спецификация должна охватывать весь функционал программы. А соответствие Спецификации вы подтвердите в ходе тестирования и валидации своего программного обеспечения.