Быстрая разработка исследовательского программного обеспечения Печать
Задачи

Цель представленных на данном сайте [программных библиотек] – максимальное уменьшение объема работ по созданию конкретной вычислительной программы (программного комплекса). Основной прием достижения этой цели – сборка программы из взаимно согласованных и гибких (подстраиваемых почти под любые условия) повторно используемых библиотек, покрывающих все (даже самые простые) аспекты вычислительной программы – от поддержки форматов хранения исходных данных до редактирования опций графиков. Степень повторного использования кода в программе, собранной из таких компонентов, должна составлять не менее 90% (что является высоким показателем даже для «неинтеллектуальных» программных систем, а в научных программах практически никогда не встречается).

Для большинства исследовательских (в т.ч. научных) программ повышение скорости разработки особенно важно, поскольку они применяются не для того чтобы «упростить рутинные операции» (как подавляющее большинство другого прикладного ПО), а чтобы «попробовать нечто сделать один раз». Имеется ввиду – сделать всего один раз, чтобы написать конкретную научную работу (или отчет); в лучшем случае – чтобы через некоторое время на той же программе по просьбе заказчика повторно получить еще один результат при иных исходных данных. В более типичных случаях к той же программе (независимо от того, «своя» это программа или «чужая») исследователь возвращается лишь с существенно иной задачей. А в худшем случае (тоже достаточно распространенном) исследователь не возвращается к ней никогда (переключившись на другой класс задач или осознав невыгодность использования данной программы или просто разочаровавшись в использовании готового ПО). Очевидно, что принятые в ненаучных областях затраты для разработки такой «почти одноразовой» программы являются неприемлемыми, и их нужно сокращать в несколько раз.

Подробнее: подходы к научному ПО с точки зрения универсальности.

В исследовательском ПО рекомендуется использовать следующий компромисс между «узко предметным» и «максимально универсальным» подходами:        
а) в готовых программах должна быть минимальная степень универсальности (это позволит избежать сложности);  
б) во всех библиотеках-кирпичиках, из которых они построены, должна быть максимальная степень универсальности (это позволит добиться повторного использования 90% кода, в то время как при повторном использовании только «научного» кода этот показатель не бывает выше 40%, даже если речь идет о сугубо научной программе).

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

Подробнее: как реализовать «максимум универсальности» и когда это возможно.

 
Joomla Templates by Joomlashack