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