Найти тему
Програмпроф

Разработка программного обеспечения в научном контексте

За последние десятилетия общий процесс разработки программного обеспечения (ПО) значительно улучшился. В промышленности такие методы разработки ПО, как системы контроля версий и отслеживания проблем, теперь незаменимы в повседневной работе разработчиков ПО, а также при разработке гибкого и тестированного ПО и непрерывной интеграции.

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

 https://pixabay.com/ru/vectors/программист-программирование-код-1653351/
https://pixabay.com/ru/vectors/программист-программирование-код-1653351/

Разработка программного обеспечения в научном контексте

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

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

Возникают вопросы:

Могут ли современные средства разработки ПО и концепции развития также улучшить работу над исследовательским ПО в области геонаук?

Являются ли такие инструменты и концепции такими же применимыми, как и в обычных программных проектах?

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

Исследователи провели опрос, чтобы выяснить, как ученые разрабатывают и используют научное ПО:

- 84,3% ученых утверждают, что разработка научного ПО имеет важное значение для их исследований;
- 96,6% утверждают, что их знания о разработке ПО поступают в результате самостоятельных исследований;
- значительное число ученых не знакомо со стандартными концепциями программной инженерии;
- важность концепций программной инженерии оценивается как высокая, особенно в крупных проектах.

Также исследовали ключевые характеристики разработки научного программного обеспечения в вычислительной науке и обнаружили ряд причин низкой распространенности методов программной инженерии в научной сфере:

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

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

Разработка ПО в проектах обычно является лишь средством достижения цели проекта, а не самой целью. Это иногда приводит к тому, что разработка ПО не приобретает необходимой важности при проектировании, а необходимые методы не считаются решающими. А также может привести к отсутствию стимула для разработки высококачественного ПО (к сожалению, включая документацию).

Photo by Steve Halama on Unsplash
Photo by Steve Halama on Unsplash

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

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