Агентная модель процесса разработки программного обеспечения

Агентное моделирование

Как создать модель проекта по разработке программного обеспечения?

В публикации С. Суслова и Д. Каталевского «Имитационное моделирование в управлении проектами» авторы описали модели управления проектом по разработке ПО. Исследователи решали одну из задач с помощью моделирования.

IT-компания должна была разработать проект, оцениваемый в 500 000 строк исходного кода. Три новых сотрудника нанимались в команду разработки в течение месяца. Стажеры получали в команде нужный опыт и после этого становились разработчиками.

На основе этой бизнес-логики были разработаны две модели: с использованием системной динамики и дискретно-событийного подхода.


Системная динамика: основная диаграмма потоков и накопителей

Системная динамика: основная диаграмма потоков и накопителей


Cистемная динамика: вложенный объект <i>effective_staff</i>

Cистемная динамика: вложенный объект «effective_staff»


Дискретно-событийное моделирование: диаграмма процесса

Дискретно-событийное моделирование: диаграмма процесса

Для моделирования разработки ПО использовался программный продукт AnyLogic, так как он обладает полным набором инструментов для построения моделей, который включает системную динамику, дискретно-событийный подход, а также агентное моделирование. В этой статье я предлагаю построить модель, используя исходную бизнес-логику, но с применением агентного подхода.

Агентное моделирование: в чем преимущества метода

Агентное моделирование — наиболее современный метод построения моделей. Ранее его практическое применение ограничивалось вычислительными мощностями оборудования, но с развитием технологий ситуация изменилась.

Растущая конкуренция на рынке услуг моделирования стимулирует спрос на инструменты и решения по повышению его эффективности. Чтобы показать ключевые преимущества этого подхода к моделированию, рассмотрим простую агентную модель в сравнении с моделями, основанными на дискретно-событийном моделировании и системной динамике.

Агенты в имитационной модели — это сущности, которые могут иметь поведение, память и свой набор требуемых характеристик. Чем полезны эти свойства при разработке имитационной модели? Для ответа на этот вопрос рассмотрим модель разработки ПО.

В разработке продукта участвуют как опытные разработчики, так и стажеры. Логично предположить, что поведение и производительность труда этих двух групп агентов («популяций») различна. Здесь преимущество агентного подхода состоит в точности, так как каждый тип агента может иметь свою диаграмму состояний и поведение.

На диаграмме состояний, показанной ниже, у разработчиков есть три состояния: Developing (когда они пишут код), AnsweringTraineeQuestions (когда они принимают участие в образовательном процессе своих менее опытных коллег) и Communicating (своеобразное состояние бездействия, когда разработчики не пишут код, но участвуют в обсуждениях с коллегами).

Агенты перемещаются по этим состояниям в соответствии с заданным набором правил, описанных в переходах, например: один разработчик может случайным образом отправить другому сообщение о необходимости обсудить текущее состояние разработки. После обсуждения они должны вернуться к работе.


Диаграмма состояний разработчика

Диаграмма состояний разработчика


Диаграмма состояний стажера

Диаграмма состояний стажера

Каждый агент содержит в себе логику и переменные. Чтобы задать поведение агента, не требуются сложные математические формулы. Все параметры устанавливаются прямо в модели: кто является ментором, насколько опытен стажер, как часто у последнего возникают вопросы.

Кроме более очевидного фактора — опытности работников — агентный подход позволяет учесть и другие особенности. К примеру, каждому стажеру может быть назначен ментор, готовый незамедлительно протянуть руку помощи, что бывает немаловажно. Агенты могут общаться с помощью системы сообщений внутри диаграммы состояний.

Таким образом, можно смоделировать довольно частую ситуацию, когда стажеру нужна помощь, а его наставнику необходимо на время приостановить разработку для участия в процессе обучения.

В определенный момент компания может столкнуться с большим количеством новых кадров. В таком случае групповое обучение будет рациональным решением. Агентное моделирование позволяет отдельным агентам взаимодействовать с группами других агентов, что положительно влияет на масштабируемость подхода.

Вы можете посмотреть агентную модель, открыв её в AnyLogic Cloud, или запустить ниже.


Модель Software Development Process Dynamics AB

Вывод: агентный подход обеспечивает большую точность, гибкость и масштабируемость

Агентное моделировние — наиболее детализированный подход, позволяющий избегать абстракции, тщательно «программируя» логику поведения агентов. В нем практически не используются формулы, в отличие от системной динамики. Применение агентного подхода позволило с помощью диаграмм состояний напрямую задать различное поведение для каждой из групп: разработчиков и стажеров.

Все агенты в модели уникальны, так как содержат внутри множество переменных, от которых в том числе зависит их состояние. Воспользовавшись этими свойствами, мы смогли назначить каждому стажеру своего ментора. Это позволило добиться большей реалистичности по сравнению с другими подходами, а значит, и более точных результатов моделирования.

Гибкость моделей, предоставляемая агентным подходом, позволяет с равной точностью моделировать разработку как малых проектов, так и крупных. Чем больше проект, тем больше требуется рабочей силы. Используя отношения агент — «популяция», мы можем получить хорошую масштабируемость модели.

Узнайте больше об агентном моделировании и его практическом применении из семинара в НИУ ВШЭ.


Подпишитесь на ежемесячную рассылку AnyLogic, чтобы получать новые статьи прямо на почту.

Похожие материалы