АННОТАЦИЯ 3
Введение 4
1 Обзор прототипа конструктора практик 6
2 Версионирование методов 9
2.1 Архитектурные особенности версионирования 11
2.2 Шаги алгоритма слияния 13
2.3 Загрузка версий 14
2.3.1 Загрузка версий методов 14
2.3.2 Определение общей версии 15
2.4 Сравнение версий 17
2.4.1 Парообразование 17
2.4.2 Определение состояния с общей версией 18
2.4.3 Определение результирующих состояний 20
2.5 Применение изменений 24
2.6 Генерация новой общей версии 25
2.7 Модели данных и сервисы версионирования 25
3 Права доступа 28
3.1 Реализация прав доступа в прототипе 30
3.2 Модель прав доступа 30
3.3 Особенности доступа на комментирование 31
4 История изменений 33
4.1 Хранение данных об изменениях 33
4.2 Хранение метаданных истории 35
4.3 Восстановление данных из истории 36
4.4 Записывание данных в историю 36
4.5 Сравнение версий 38
4.6 Откат к предыдущему состоянию в истории 38
5 Особенности реализации приложения 40
5.1 Используемые технологии 40
5.2 Разделение серверного приложения по пакетам 40
5.3 Дополнительные архитектурные механизмы 42
5.3.1 Представление практик в виде методов 42
5.3.2 Дублирование кода в истории и версионности 42
5.3.3 Восстановление внешних ключей при удалении в истории ... 43
5.4 Скриншоты приложения 44
Заключение 48
Список литературы
В программной инженерии существует множество различных процессов разработок и методологий таких как: Agile [1], Kanban [2], Feature-driven development [3] и проч. В основном при описании внутренних правил, сущностей и принципов всех этих процессов разработки, авторские коллективы создавали и использовали собственные нотации, термины и правила описания, что создаёт определённые проблемы и трудности для исследователей и методологов, которые пытаются делать сравнительные анализы, или изучать зоны приемлемости описанных процессов разработки.
Для решения этой проблемы был разработан язык Essence [4], который позволяет описывать методологии в единых понятиях и языке. Однако существует единственный инструмент - Practice Workbench [5], который поддерживает эту нотацию, и распространяется на платной основе, что затрудняет развитие и обмен зафиксированными практиками между заинтересованными лицами.
Поэтому разработка бесплатного аналога подобного инструмента, который позволил бы всем заинтересованным в использовании Essence лицам конструировать и обмениваться практиками, является актуальной задачей. Но поскольку подобный инструмент должен включать в себя в первую очередь возможность описывать практики, используя ограничения целостности, заложенные в правилах самого языка, то сначала было необходимо разработать прототип именно с таким функционалом.
Помимо создания самих практик, для конструктора важно предоставлять возможность компоновки практик в методы. Возможность обмениваться практиками и использовать их в создании собственных методов является важной с точки зрения практического применения конструктора.
Из возможности обмена практиками вытекает необходимость поддержания использования конструктора несколькими пользователями, что означает необходимость деления функциональных прав между пользователями, а также возможность отслеживать изменения, которые были выполнены другими пользователями.
Цель данной работы - разработать полноценный конструктор практик Essence.
Задачи работы:
1) провести анализ требований для конструктора;
2) спроектировать и разработать конструкцию методов на основе имеющихся практик;
3) спроектировать и разработать версионирование практик и методов;
4) спроектировать и разработать разделение прав доступа к методам и практикам;