Как поступить с проектом программного обеспечения низкого качества, который необходимо оценить [закрыто]

Я оценил программный проект, созданный консорциумом ведущих ученых в этой области. Однако сам проект на самом деле не работает, и был разработан только как доказательство концепции, а не как конечный продукт (т.е. он работает только с 2-3 сценариями).

Это программное приложение должно выполнить 4 шага для успешного выполнения. Каждый шаг принимает входной файл и создает выходной файл. Выходной файл с предыдущего шага используется в качестве входного на текущем шаге. Изначально вы начинаете с 1 файла. Этот файл используется в качестве входных данных для шага 1. После шага 1 создается другой файл. Назовем входной файл general_input_fileи выходной файл general_output_file. Когда general_input_fileзагружается в приложение, general_output_fileдолжно производиться. Теперь у меня есть входной файл, который я назову my_input_file. Я ожидаю, что приложение будет производить файлы my_output_file. Однако приложение принимает specific_input_fileи выдает толькоspecific_output_file. Это означает, что он работает только с 2 файлами, которые были созданы ранее. Оба файла существуют в проекте. Когда я смотрю на часть проекта, которая должна обрабатывать general_input_file, я вижу утверждение, которое выглядит так: если имя данного входного файла равно specific_input_file, то вернуть specific_output_file. Это файл внутри проекта. В противном случае попробуйте обработать generate_input_fileи сгенерировать файл general_output_file. В этот момент программное обеспечение ломается. Возникает ряд исключений, и отладка и исправление этого выходит за рамки моей работы.

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

«был разработан только как проверка концепции, а не как конечный продукт» — обычно это самая высокая цель любой разработки программного обеспечения, которая происходит в ходе исследований. Это само по себе не является признаком «низкого качества», это сделано намеренно, поскольку в большинстве случаев исследования не проводятся для производства полноценных, товарных продуктов. И это вполне может распространяться на ваши наблюдения о качестве кодирования, поскольку ремонтопригодность или максимальная производительность не обязательно являются приоритетом.
Я не уверен, что мы можем ответить на этот вопрос без дополнительного контекста, поскольку соответствующий уровень разработки программного обеспечения полностью зависит от целей, связанных с проектом.
Похоже, это зависит как минимум от трех вопросов, о которых вы здесь не говорите: (1) какова цель/аудитория вашей статьи?, (2) что консорциум утверждает, что их реализация может сделать, и как она стек? и (3) почему очевидно и почему это важно, что кодирование было выполнено кем-то неопытным? Для (2), если проект утверждает, что код может преобразовать любой input_file в правильный output_file, а он не может, это часть (2); а для (3), я надеюсь, это больше, чем стиль; но только ты знаешь.
Я все еще не понимаю, почему это действительно важно для вашей статьи или почему вы пишете статью об оценке программного проекта. Может быть, вы каким-то образом рецензируете проект? Если статья по соответствующему проекту уже опубликована, предлагаю написать комментарий/ответ на эту статью, если журнал позволяет это сделать.

Ответы (3)

Когда я смотрю на часть проекта, которая должна обрабатывать файл general_input_file, я вижу утверждение, которое выглядит так: если имя данного входного файла равно определенному_входному_файлу, то вернуть определенный_выходной_файл. [...] В противном случае попробуйте обработать файл generate_input_file и сгенерировать файл general_output_file. В этот момент программное обеспечение ломается.

Судя по вашему описанию, похоже, что код, на который вы смотрите, является жульничеством , возвращая предварительно вычисленный вывод, который, как известно, является правильным, если ввод соответствует одному образцу ввода, который авторы включили в свой код (предположительно, чтобы продемонстрировать его правильность и потому, что включение образца ввода требовалось, чтобы их работа была принята). Для всех экземпляров ввода, кроме этого примера ввода, код делает что-то совершенно другое, что не дает правильных результатов .

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

Теперь я мог бы обсудить ваш фактический вопрос о том, как обсудить эту ситуацию в вашей последующей статье «не оскорбляя авторов», но, честно говоря, я не вижу смысла. Вместо этого я бы спросил, почему вы не хотите оскорблять авторов? Дело не только в том, что алгоритм авторов может быть неправильным, а их код некачественным; они, по-видимому, совершают академическое мошенничество, отправляя неверный алгоритм с кодом, нечестно измененным, чтобы создать впечатление, что алгоритм работает. Я готов оставить 3% шанс, что может быть предложено какое-то другое, более невинное объяснение, но, учитывая описание, которое вы предоставили, я действительно не могу придумать ни одного. Я буду рад пересмотреть свое мнение, если вы предоставите более подробную информацию о том, как авторы

Трудно понять, каково их фактическое заявление о коде. Страница проекта выглядит следующим образом: у них есть куча результатов, в которых они обсуждают подход, который они используют в этом проекте, и представляют несколько примеров (на основе их сценариев?). Другая часть проекта представляет собой код этого проекта (или, по крайней мере, некоторых компонентов проекта). Существует вероятность того, что код может быть устаревшим (т. е. последняя версия может быть не опубликована). Этот проект закончился пару лет назад, и в этом году начался следующий проект (я ожидаю, что они будут развивать/расширять этот проект)
Что ж, описанное вами предложение if, которое сопоставляет конкретный вывод с конкретным образцом входного файла, по своей природе звучит нечестно. Но мы явно упускаем много деталей, поэтому трудно сказать что-то более существенное.
«похоже, что код, на который вы смотрите, обманывает, возвращая предварительно вычисленный вывод, который, как известно, является правильным» - сначала я тоже так думал; но обратите внимание, что согласно вопросу, это только один из четырех шагов. Следовательно, также возможно, что фактическое преобразование этого файла не имеет значения, и программное обеспечение для проверки концепции предназначено только для демонстрации (например, для людей, не разбирающихся в CS, которые не сделают концептуальный скачок, скажем, «открыть файл»). документ набора данных для конкретного приложения» на «открыть файл Word»), что данный формат файла может быть загружен. Следовательно, не ясно, что это мошенничество.
@ORMapper ну да, это не на 100% ясно, как я сказал, нам нужно гораздо больше деталей, чтобы прийти к авторитетному выводу. Но ленивые и нечестные исследователи существуют, и я лично видел примеры статей, пытающихся избежать наказания за откровенно нечестные заявления такого рода. Таким образом, приведенное выше мнение представляет собой мое лучшее предположение о том, что происходит, на основе доступной информации. Конечно, OP должен быть очень осторожным и убедиться, что он уверен (и, возможно, проконсультироваться с коллегой, который может подробно изучить ситуацию) в отношении любых заявлений, которые он делает, обвиняя авторов в нечестности или некомпетентности.
@ORMapper Я должен добавить, что проверка предложения if, чтобы убедиться, что ввод соответствует известному вводу, с которым исследователи «ожидают», что их код будет протестирован, является огромным красным флагом IMO. Это полностью аналогично тому, что сделали люди из Volkswagen в недавнем скандале. Я также где-то читал о том, что некоторые производители чипов делают это, чтобы их чипы хорошо работали в тестах производительности, и, вероятно, сталкивался с подобным поведением во многих других контекстах. Таким образом, такое поведение прямо попадает в категорию «игры с системой». Опять же, я, честно говоря, не могу придумать безобидного объяснения.
Вот некоторая информация о мошенничестве в тестах производительности чипов: bgr.com/2013/11/27/samsung-benchmark-cheating-banned-htc
@DanRomik: Я согласен, что это красный флаг, но я легко могу придумать безобидное объяснение. Предметом исследования может быть, например, конкретный алгоритм обработки определенных данных или извлечения некоторой информации. Входные данные для этого алгоритма могут потребоваться (хотя бы по причинам простой реализации) в определенном пользовательском формате X. Для специалистов по компьютерным технологиям может быть очевидно, что документы Excel можно преобразовать в этот формат, если кто-то напишет конвертер. Однако для нетехнических людей связи такого рода часто не очевидны. Их не устраивает, если они...
... видите, как прототип открывает и обрабатывает файл в формате X, и ему говорят, что можно написать конвертер для обработки документов Excel. Обычно они не имеют представления о сложности (или ее отсутствии) преобразования между структурно-эквивалентными данными. Как ни глупо это может показаться, они хотят видеть , как документ Excel выбирается и обрабатывается. Следовательно, если кто-то не хочет тратить время на обсуждение не относящихся к делу тем, таких как конкретные форматы файлов, прототип будет соответствующим образом адаптирован для демонстрации, фактическая цель которой — показать рабочий процесс и основной алгоритм.
@ORMapper Я больше думал об этом. Это тонкий момент, и вы чуть не довели меня до этого, но я не согласен с тем, что это «безобидно». Если я правильно понимаю, вы говорите, что можно нечестно утверждать, что ваш код включает рабочий преобразователь Excel в формат X, чтобы удовлетворить глупое требование рецензента или редактора, чтобы ваша статья была принята. Ну, на самом деле, нет. Честный исследователь не стал бы так лгать, даже чтобы обойти глупого или некомпетентного рефери. Еще раз, мы возвращаемся к моей точке зрения, что предложение if просто нечестно. Итак: сохраняйте непредвзятость, но попробуйте еще раз...
@DanRomik: я говорю, что можно описать конкретный рабочий процесс, в котором может быть использован вклад, и что для демонстрации этого рабочего процесса не требуется полностью реализованное приложение. Вы можете пойти дальше и заявить, что аудитории демонстрации нужно явно сказать, что реализовано, а что нет, но я думаю, что вы не понимаете свою аудиторию с этим. Для аудитории, не обладающей необходимыми базовыми знаниями, замечания о том, что части системы являются макетами, только добавят путаницы и размывают реальную идею демонстрации. И чтобы было ясно: я был...
... не столько думать о рецензентах и ​​принятии документов, сколько о представителях финансирующих агентств (которые часто имеют только финансовый / административный опыт и нуждаются в объяснении и отображении результатов исследования в (с точки зрения предметной области) термины непрофессионала ), или другие аудитории, которых интересует не столько "как это работает?", сколько "что эти университетские люди делают с нашими деньгами; полезно ли это как-то для реального мира, в том числе для люди, у которых нет докторской степени в этой области?»

Наименее оскорбительный способ указать, что вы пытались использовать system-X (и это не сработало), — сказать что-то вроде

Мы также попытались обработать наши данные с помощью system-X [1023], но не смогли сделать это успешно из-за ошибок во время выполнения.

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

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

Нужно ли работать?

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

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

Поймите контекст, чтобы понять результаты.

Я не верю, что это касается вопроса ОП. Он не спрашивает, нужно ли ему критиковать программное обеспечение, которое он оценивает, а спрашивает, как быть критическим, не оскорбляя никого.
"Не заставляйте исследователей делать инженерную работу, они плохо справляются с ней" - вторую часть этого утверждения я нахожу, как правило, неверной и даже слегка оскорбительной (учитывая, что, по крайней мере, в прикладном КС значительная часть людей переключается в индустрию в качестве профессиональных разработчиков сразу после получения докторской степени). Много исследовательского кода имеет низкое качество (по сравнению с кодом рыночных продуктов) не потому, что его разработчики не могут сделать лучше, а потому, что приоритеты в разработке просто сильно отличаются.
@ORMapper Написание кода сильно отличается от разработки полнофункционального программного обеспечения. И это требует опыта и набора навыков, более широкого, чем просто хорошие навыки программирования. Конечно, вы можете перейти из академии в промышленность и наоборот, но вы не станете кем-то старшим. Обе проблемы более сложны и требуют опыта. Более того, правильное программное обеспечение нуждается в документации, примерах использования и т. д. Для исследователя это было бы колоссальной тратой времени, лучше потратить его на написание статей...
@FábioDias: Итак, вы имели в виду что-то вроде «Не заставляйте исследователей выполнять работу инженеров, они иногда неопытны в этом (подобно инженерам, которые начали работать всего один или два года назад)». В нынешнем виде я сначала прочитал ваше утверждение больше похожее на «Не заставляйте исследователей выполнять работу инженеров, они безнадежно некомпетентны в этом (подобно поварам или садовникам, которых просят разработать программное обеспечение)», отсюда мое небольшое несогласие.
@ORMapper да ... Давайте просто назовем это неудачной и некомпетентной попыткой пошутить :)
Лично я считаю вашу реплику о том, что исследователи «похожи на инженеров, которые только начали работать год или два назад», довольно оскорбительным. Такое мышление делает разработку программного обеспечения менее важной, более тривиальной темой, хотя на самом деле, как сказал Фабио, в ней гораздо больше движущихся частей. Я думаю, что если бы больше исследователей признали свою неспособность писать пригодный для использования код, мир стал бы лучше — а я исследователь!!