Fujitsu объявила о разработке технологии, которая оперативно находит измененные фрагменты исходного кода, включая вновь добавленные функции, для ускорения реализации проектов с использованием открытого программного обеспечения.
Открытое программное обеспечение (ОПО) имеет свободный доступ к своему исходному коду, который может быть многократно изменен с добавлением и удалением функций без точной фиксации переработанных участков кода. ОПО широко применяется в проектах разработки программного обеспечения, в случае если необходимо очень быстро подготовить систему под требования заказчиков. При разработке с использованием ОПО часть изменений может вноситься отдельными пользователями, однако также существует множество правок, которые делаются параллельно большим количеством других разработчиков. Это значит, что пользователь должен подтвердить исправления в исходном коде до и после изменений программного обеспечения. То есть изменения будет необходимо проверить в десятках тысяч файлов исходного кода на предмет обнаружения текстовых различий или путем визуальной проверки различий в структуре вызовов функций, что потребует значительного времени и усилий.
При детальных проверках исходного кода вручную, например, после обнаружения различий, можно указать часть имени функции и сузить области для проверки, используя функцию выборочного поиска, которая отображает варианты, соответствующие этому фрагменту кода для каждого отдельного случая. В крупномасштабном ОПО существует огромное количество функций, которые необходимо проверить, и имеется множество функций с аналогичными именами, в частности, имена методов в классах, и такой поиск занимает слишком много времени.
Fujitsu разработала две ключевых технологии для эффективного отслеживания изменений при обновлении крупномасштабного ПО с отрытым кодом.
При отслеживании изменений исходного кода между различными версиями одного и того же программного обеспечения внимание обращается на путь вызова определенной функции. Основываясь на этой методике, Fujitsu разработала технологию, которая, путем сравнения различий между двумя версиями исходного кода в каждой точке на пути вызова функции, уточняет цели для сравнения и отображает их графически для четкого понимания. Такой подход позволил на 44% сократить время, необходимое для выделения различий, по сравнению с существующими методиками объединенного сравнения.
В крупномасштабном ОПО существует множество функций с одинаковыми именами. При вводе для поиска имени функции появилась возможность осуществлять поиск совпадений для тех частей, которые имеют высокий уровень реагирования. Это стало возможным за счет разработки структуры данных, которая нумерует и заранее хранит соответствующие результаты поиска для различных комбинаций введенных символов.
Благодаря новым разработкам стало возможным систематически выполнять поиск измененных пунктов ОПО на основании соответствующих путей вызова функций. В результате, для программы, содержащей 3,8 млн. строк кода и порядка 400 измененных пунктов, время, потраченное на поиск пунктов, было сокращено в 4 раза по сравнению с предыдущими попытками поиска: с 26 часов до примерно 6,5 часов. Fujitsu надеется, что это поможет не только уменьшить расходы на разработку, но и популяризировать использование ПО с открытым исходным кодом. В будущем значительно расширится количество поддерживаемых языков, включая языки сценариев, а коммерческое распространение технологии Fujitsu планирует начать в 2016 финансовом году.