Как создать модель проекта по разработке программного обеспечения?
В публикации С. Суслова и Д. Каталевского «Имитационное моделирование в управлении проектами» авторы описали модели управления проектом по разработке ПО. Исследователи решали одну из задач с помощью моделирования.
IT-компания должна была разработать проект, оцениваемый в 500 000 строк исходного кода. Три новых сотрудника нанимались в команду разработки в течение месяца. Стажеры получали в команде нужный опыт и после этого становились разработчиками.
На основе этой бизнес-логики были разработаны две модели: с использованием системной динамики и дискретно-событийного подхода.
Для моделирования разработки ПО использовался программный продукт AnyLogic, так как он обладает полным набором инструментов для построения моделей, который включает системную динамику, дискретно-событийный подход, а также агентное моделирование. В этой статье я предлагаю построить модель, используя исходную бизнес-логику, но с применением агентного подхода.
Агентное моделирование: в чем преимущества метода
Агентное моделирование — наиболее современный метод построения моделей. Ранее его практическое применение ограничивалось вычислительными мощностями оборудования, но с развитием технологий ситуация изменилась.
Растущая конкуренция на рынке услуг моделирования стимулирует спрос на инструменты и решения по повышению его эффективности. Чтобы показать ключевые преимущества этого подхода к моделированию, рассмотрим простую агентную модель в сравнении с моделями, основанными на дискретно-событийном моделировании и системной динамике.
Агенты в имитационной модели — это сущности, которые могут иметь поведение, память и свой набор требуемых характеристик. Чем полезны эти свойства при разработке имитационной модели? Для ответа на этот вопрос рассмотрим модель разработки ПО.
В разработке продукта участвуют как опытные разработчики, так и стажеры. Логично предположить, что поведение и производительность труда этих двух групп агентов («популяций») различна. Здесь преимущество агентного подхода состоит в точности, так как каждый тип агента может иметь свою диаграмму состояний и поведение.
На диаграмме состояний, показанной ниже, у разработчиков есть три состояния: Developing (когда они пишут код), AnsweringTraineeQuestions (когда они принимают участие в образовательном процессе своих менее опытных коллег) и Communicating (своеобразное состояние бездействия, когда разработчики не пишут код, но участвуют в обсуждениях с коллегами).
Агенты перемещаются по этим состояниям в соответствии с заданным набором правил, описанных в переходах, например: один разработчик может случайным образом отправить другому сообщение о необходимости обсудить текущее состояние разработки. После обсуждения они должны вернуться к работе.
Каждый агент содержит в себе логику и переменные. Чтобы задать поведение агента, не требуются сложные математические формулы. Все параметры устанавливаются прямо в модели: кто является ментором, насколько опытен стажер, как часто у последнего возникают вопросы.
Кроме более очевидного фактора — опытности работников — агентный подход позволяет учесть и другие особенности. К примеру, каждому стажеру может быть назначен ментор, готовый незамедлительно протянуть руку помощи, что бывает немаловажно. Агенты могут общаться с помощью системы сообщений внутри диаграммы состояний.
Таким образом, можно смоделировать довольно частую ситуацию, когда стажеру нужна помощь, а его наставнику необходимо на время приостановить разработку для участия в процессе обучения.
В определенный момент компания может столкнуться с большим количеством новых кадров. В таком случае групповое обучение будет рациональным решением. Агентное моделирование позволяет отдельным агентам взаимодействовать с группами других агентов, что положительно влияет на масштабируемость подхода.
Вы можете посмотреть агентную модель, открыв её в AnyLogic Cloud, или запустить ниже.
Вывод: агентный подход обеспечивает большую точность, гибкость и масштабируемость
Агентное моделировние — наиболее детализированный подход, позволяющий избегать абстракции, тщательно «программируя» логику поведения агентов. В нем практически не используются формулы, в отличие от системной динамики. Применение агентного подхода позволило с помощью диаграмм состояний напрямую задать различное поведение для каждой из групп: разработчиков и стажеров.
Все агенты в модели уникальны, так как содержат внутри множество переменных, от которых в том числе зависит их состояние. Воспользовавшись этими свойствами, мы смогли назначить каждому стажеру своего ментора. Это позволило добиться большей реалистичности по сравнению с другими подходами, а значит, и более точных результатов моделирования.
Гибкость моделей, предоставляемая агентным подходом, позволяет с равной точностью моделировать разработку как малых проектов, так и крупных. Чем больше проект, тем больше требуется рабочей силы. Используя отношения агент — «популяция», мы можем получить хорошую масштабируемость модели.
Узнайте больше об агентном моделировании и его практическом применении из семинара в НИУ ВШЭ.
Подпишитесь на ежемесячную рассылку AnyLogic, чтобы получать новые статьи прямо на почту.