Научное программное обеспечение

Научное программное обеспечение

2021-08-25 · 2 мин. для прочтения

Научное программное обеспечение. Специфика. Назначение.

Содержание

1 Специфика научного программного обеспечения

  • Научное ПО имеет ряд особенностей, которые не встречаются в коммерческом ПО.

1.1 Используемые алгоритмы крайне сложны

  • Зачастую в них разбирается очень узкая группа людей.

1.2 Низкая универсальность

  • Всё, что можно было сделать стандартными методами, уже давно сделано.

1.3 Уникальная модель распространения

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

1.4 Остаточное финансирование

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

1.5 Учёный — не программист

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

1.6 Унаследованный код (legacy)

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

1.7 Фрагментация разработки

  • Разные модули программ пишутся разными людьми (студентами, аспирантами, сотрудниками).
  • Они работают над кодом в течение 2–3 лет, пока это нужно для подготовки диплома или диссертации, или пока есть финансирование.
  • Код бросается в полусыром виде.
  • Из-за отсутствия культуры программирования через несколько лет возникает спагетти-код.

1.8 Сложность отладки и тестирования

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

1.9 Требования к пользователям

  • Трудно отделить ошибки программы от специфики исследуемого объекта.
  • Для интерпретации полученного результата нужна высокая научная квалификация пользователя.

1.10 Идеология DevOps

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