Научное программное обеспечение
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
- Приходится не только разрабатывать программное обеспечение, но и поддерживать инфраструктуру.