Меня часто просят просмотреть статьи о новых программных инструментах. Это всегда заставляет меня задаться вопросом, как следует рецензировать такую статью, или даже должны ли статьи по программному обеспечению проходить типичный процесс рецензирования вообще?
Мой личный контрольный список обычно состоит из:
Если все работает нормально и дает ожидаемые результаты, мне, честно говоря, больше нечего «требовать» от авторов. Мои судейские отчеты положительны и (смущающе) кратки в таких случаях. Я придерживаюсь мнения, что сообщество пользователей должно «делать все остальное»; оценить программное обеспечение и решить, полезно ли оно в их рабочих процессах.
Одна из точек зрения взята из Журнала программного обеспечения с открытым исходным кодом, в котором четко изложены правила для рецензентов, касающиеся этих вопросов ( http://joss.theoj.org/about#reviewer_guidelines ).
(Слегка отредактированная) цитата требований:
Лицензия на программное обеспечение В репозиторий должна быть включена одобренная OSI лицензия.[...]
Документация У вас, рецензента, должно быть достаточно документации, чтобы понять основные функциональные возможности рецензируемого программного обеспечения.
Заявление о необходимости Авторы должны четко указать, для решения каких проблем предназначено программное обеспечение и кто является целевой аудиторией.
Инструкции по установке Должен быть четко указан список зависимостей. В идеале они должны обрабатываться с помощью автоматизированного решения для управления пакетами.
- Хорошо: файл управления пакетами, такой как Gemfile или package.json или > эквивалентный
- OK: список зависимостей для установки
- Плохо (неприемлемо): зависимость от другого программного обеспечения, не указанного авторами.
Примеры использования Авторы должны включать примеры использования программного обеспечения (в идеале для решения реальных задач анализа).
Документация API Рецензенты должны убедиться, что программный API задокументирован на надлежащем уровне. Это решение в значительной степени остается на усмотрение рецензента и его опыта оценки программного обеспечения. [...]
Тесты Авторам настоятельно рекомендуется включать набор автоматизированных тестов, охватывающий основные функции их программного обеспечения.
- Хорошо: набор автоматизированных тестов, подключенный к внешней службе, такой как Travis-CI или аналогичный.
- OK: задокументированные ручные шаги, которые можно выполнить для проверки ожидаемой функциональности программного обеспечения (например, образец входного файла для проверки поведения)
- Плохо (неприемлемо): у вас, рецензента, нет возможности проверить, работает ли программное обеспечение.
Руководящие принципы сообщества Должны быть четкие руководящие принципы для третьих лиц, желающих: Вносить вклад в программное обеспечение, сообщать о проблемах с программным обеспечением или обращаться за поддержкой.
Это ценный способ рассмотрения программного обеспечения, и я думаю, что мы должны приблизиться к этому. Но это еще не принято! В моей области большинство статей о «методах» даже не включают программное обеспечение, а те, которые включают, почти наверняка не пройдут эти тесты. (Например, до недавнего времени я никогда не слышал о непрерывной интеграции.)
Я никогда не рецензировал статью, но как человек, который производит программное обеспечение (в области биоинформатики), вот что я хотел бы узнать от рецензента, расширяя ваш список:
Можно ли его скачать и есть ли лицензия?
Я изменил ваш первый пункт, потому что код должен быть доступен для других и должен иметь лицензию, чтобы знать, что другие пользователи/разработчики могут делать с этим инструментом.
Это работает хорошо? Приложили ли авторы усилия, чтобы написать лучший инструмент?
Не могли бы вы установить инструмент в своих настройках?
Достаточно ли моих тестов, чтобы убедиться, что программное обеспечение работает должным образом?
Что еще я могу сделать, чтобы убедиться, что он работает хорошо?
Является ли язык инструмента хорошим выбором? Есть ли сообщество пользователей и разработчиков для этой ниши на этом языке?
Он находится под контролем версий? Инструмент находится в стадии версии?
Инструменты обычно разрабатываются, когда есть проблема:
Инструменты обычно тестируются в заданном наборе данных или сравниваются с другими инструментами, как указано в комментарии. Это может быть интересно, если сообщаются и отрицательные результаты.
Программное обеспечение иногда разрабатывается несколькими людьми и несколько лет:
При использовании программного обеспечения возникнут вопросы, вы, как рецензент, можете проверить, как они будут решаться:
Как вы заметили, некоторые из этих вопросов могут решаться сообществом, но вы, как рецензент, имеете возможность проверить, что статья об этом программном обеспечении объясняет и решает проблему для сообщества, что она разумно сделана и хорошо продумана.
Возможно, вы захотите избежать рассмотрения тривиальных и бесполезных вещей. Итак, помимо того, что сказал Ллопис , спросите, решает ли инструмент интересную задачу . Да, это широко и расплывчато сформулированный вопрос, поэтому не стесняйтесь адаптировать его к вашей области. Например, в формальных методах инструменты являются альфой и омегой прогресса, поэтому создатели инструментов должны получить надлежащую академическую оценку за надлежащую работу, например, путем получения лучших результатов в стандартных тестах, чем конкуренты.
Кроме того, имейте в виду, что инструментальные статьи обычно отличаются от исследовательских работ и должны оцениваться по-разному между собой. На некоторых конференциях есть специальные треки с чистыми инструментами. В таких случаях ПК должен предоставить соответствующий шаблон для оценки.
Я только написал, но еще не рецензировал такую статью. Моя личная точка зрения исходит из области сложных систем и научных вычислений, но я предлагаю некоторые общие идеи.
Я структурирую свой ответ по типичным критериям, применяемым к исследовательским работам:
Это, пожалуй, самый трудный для перевода и наиболее зависящий от поля аспект. Например, в области моделирования или эксперимента невозможно полностью проверить результаты исследовательской работы, так как это означало бы полностью переделывать ее с нуля — все, что вы можете сделать (и вас просят сделать как рецензента), это проверьте, подходят ли используемые методы и соответствуют ли результаты. С другой стороны, в некоторых теоретических областях вы можете (и должны) проверять каждое вычисление и доказательство.
Я предлагаю применять к статьям по программному обеспечению тот же стандарт, что и к исследовательским работам и, в частности, к методическим работам в соответствующей области. В конце концов, если статья по программному обеспечению принимается, на нее следует ссылаться как на «доказательство», как на обычную исследовательскую статью и, в частности, на документ по методам: другими словами, цитирования статьи по программному обеспечению должно быть достаточно в качестве доказательства того, что соответствующая задача была выполнена должным образом¹ .
Итак, практический критерий:
Более конкретные критерии включают:
Правильно ли выбраны используемые алгоритмы, библиотеки и т. д., т. е. могут ли они соответствовать одному и тому же стандарту, подходят ли они для приложения и соответствуют ли они уровню техники?
Достаточно ли документ подтверждает заявления о правильности, эффективности и удобстве использования программного обеспечения? Этот пункт может немного отличаться в зависимости от формата публикации. Например, если само программное обеспечение рассматривается как часть публикации: можете ли вы проверить эти утверждения (возможно, используя предоставленные тесты, эталонные тесты, документацию и примеры)?
В достаточной ли степени программное обеспечение соответствует передовым методам разработки программного обеспечения, таким как тесты, которые гарантируют, что оно работает должным образом?
¹ за исключением правильного обращения с программным обеспечением, которое, конечно же, должно быть надлежащим образом описано в цитирующем документе
Если место публикации имеет порог новизны, попробуйте перевести его на софт. С практической точки зрения вы спрашиваете себя, повлияет ли рассматриваемая статья на импакт-фактор журнала (или какой-либо другой показатель). Некоторые конкретные критерии, которые приходят на ум:
² Кому может понадобиться библиотека CAS для Malboge ?
³ Это актуальная проблема: одним из моих мотивов для написания программного обеспечения для конкретной задачи было то, что существующие программы зависели либо от снятых с производства и устаревших библиотек, либо от библиотеки, которая была сильно изменена и несовместима с предыдущими версиями (что, в свою очередь, было возможно, потому что им почти никто не пользовался).
Большинство других критериев должно быть легко перевести, особенно когда вы думаете о методической статье:
Фактический ответ в основном зависит от конкретного журнала/конференции/семинара. Мой собственный опыт связан с высокопроизводительными вычислениями - могут быть некоторые общие практики, зависящие от поля, но я думаю, что большая часть из них будет похожей.
Главное, что я вижу по-другому, это то, что вы просматриваете не инструмент , вы просматриваете статью . Также статья об инструменте — это не то же самое, что документация . Сосредоточьте свой обзор больше на научном вкладе статьи, а не на самом инструменте. В идеале сама бумага должна быть полезной без инструмента. Я бы даже сказал, что документ, описывающий неудачную попытку разработки нового инструмента, может быть ценным вкладом для слегка ограниченной аудитории.
Нет никаких общих ограничений для инструментов с открытым исходным кодом (если, конечно, вы не используете Журнал программного обеспечения с открытым исходным кодом). По крайней мере, для HPC статьи о проприетарных инструментах не редкость. Однако общедоступные инструменты улучшают воспроизводимость бумаги.
В то же время любая научная статья должна включать в себя надлежащее обсуждение смежной работы . В документе должны быть описаны инструменты, которые используют аналогичные методы или решают аналогичные задачи, а также то, чем отличается новый инструмент. Если инструмент использует опубликованную методику, на нее следует сделать ссылку. Связанная работа может также включать ссылки, которые подчеркивают варианты использования.
Инструментальный документ не должен содержать подробное описание того, как использовать инструмент, но должен быть сосредоточен на новых концепциях, применяемых в инструменте, будь то с точки зрения аспектов реализации или функций. Сценарии использования также являются важной частью, но в большей степени они направлены на оценку инструмента (например, сравнение производительности) и его полезность, а не на обучение пользователя тому, как его использовать.
В то время как некоторые мастерские имеют четкую направленность на инструменты, существует не только чистая бумага для инструментов. Инструмент для X-анализа/оптимизации можно представить на семинаре по X. Или, если инструмент активно использует методику из Y, он подойдет для Y-конференции. Этот сдвиг в аудитории должен отражаться в фокусе документа.
ТДК
Остин Хенли
скаймнинген