Север и рынок. 2019, № 1.

Создание таких специализированных проектов позволило структурировать работу, упростив понимание того, как и какие задачи решать первыми, какие задачи требуют дополнительной подготовки, а какие неактуальны. Разработка программного комплекса является постоянным пополнением и модификацией его исходного кода. Для хранения и управления значительным количеством изменений исходного кода применяются системы контроля версий. С их помощью изменения в коде группируются в логические блоки, последовательно фиксируемые во времени. Набор таких блоков формирует цепочку, в соответствии с которой и выполнялась модификация исходного кода. Системы контроля версий позволяют формировать произвольное количество таких цепочек изменений (веток). Каждая такая ветка может быть объединена с одной или несколькими другими ветками. Таким образом, ветка может содержать в себе изменения, относящиеся к отдельно взятой решаемой задаче, либо объединять в себе изменения, соответствующие группе задач или всего проекта в целом. На сегодняшний день это наиболее эффективный метод хранения и управления исходным кодом программного обеспечения, реализованный на практике. На данный момент системы контроля версий уже имеют обширную историю. Также существуют различные подходы к хранению изменений. Исходя из опыта работы с различными системами контроля версий, в качестве наиболее гибкой и подходящей для разработки ГГИС MINEFRAME выбрана система GIT [18]. Одним из ее преимуществ является связь с системой управления проектами, что позволяет связывать решаемые задачи с конкретными изменениями в коде. Тем самым появляется возможность быстро находить не только сделанные изменения (это делается стандартными возможностями системы контроля версий), но и определить, в рамках решения какой задачи эти изменения были внесены. Такая связь позволяет точнее учитывать взаимное влияние отдельных модификаций друг на друга. При разработке системы MINEFRAME за основу ведения БД изменений исходного кода взят подход Gitflow [19]. Данный подход представляет собой набор простых правил использования системы GIT. Они несколько ограничивают возможности использования системы, но технически повышают качество разработки, исключая возможность некорректно реализованным задачам появиться в итоговом программном продукте. Перечисленные выше аспекты дают возможность систематизировать и упорядочить процесс разработки, что в том числе позволяют снизить количество ошибок, неизбежно возникающих в системе ввиду ее сложности. Однако одним из важнейших этапов разработки сложной программной системы является этап ее тестирования. Именно на этом этапе появляется возможность выявления большинства ошибок различного вида. Само по себе тестирование можно подразделить на следующие стадии: • проверка кода; • модульное тестирование; • функциональное тестирование; • регрессионное тестирование. Проверка кода позволяет исключить возможные неточности с помощью ревизии исходного кода, написанного одним программистом, другим программистом. Можно определить несколько целей этой стадии: • нахождение и устранение очевидных неточностей как можно раньше; • проверка кода на самодокументированность, облегчающую его дальнейшее сопровождение; • анализ найденных ошибок для их исключения в подобных ситуациях в дальнейшем. Модульное тестирование подразумевает разработку программного кода, тестирующего блоки системы определенным образом. В качестве примера можно привести модульное тестирование произвольного алгоритма, которое заключается в следующем: на вход подаются заранее подготовленные исходные данные и на выходе результаты работы сравниваются с ожидаемыми. И чем полнее набор таких данных, особенно на граничных значениях входных параметров, тем эффективнее тестирование и выше надежность и корректность работы алгоритма. Модульное тестирование — это своего рода набор диагностических и испытательных стендов для функциональных блоков сложной программной системы, на которых проверяются как сами блоки, так и их взаимодействие. Модульные тесты для системы MINEFRAME разрабатываются с использованием программного компонента DUnitX [20], который обладает тесной интеграцией со средой разработки Delphi. На стадии функционального тестирования выполняется проверка работоспособности системы на уровне пользователя. При этом для автоматизации данного процесса могут использоваться средства автоматического тестирования, позволяющие выполнять заранее определенную последовательность 157

RkJQdWJsaXNoZXIy MTUzNzYz